public Buff(int dur, Buffable b, int stackingType, BuffType buffType){
		this.timeLeft = dur;
		this.duration = dur;
		this.stackingType = stackingType;
		this.buffType = buffType;
		this.owner = b;
		if(b!=null){
			if(stackingType==STACKING_REFRESH){
				ArrayList<Buff> destroy = new ArrayList<Buff>();
				for(Buff buff : b.getBuffs()){
					if(buff.getBuffType().getGroupId() == getBuffType().getGroupId()){
						destroy.add(buff);
					}
				}
				for(Buff buff : destroy){
					buff.destroy();
				}
			}
			if(stackingType==STACKING_DURATION){
				ArrayList<Buff> destroy = new ArrayList<Buff>();
				int bonusDur = 0;
				for(Buff buff : b.getBuffs()){
					if(buff.getBuffType().getGroupId() == getBuffType().getGroupId()){
						destroy.add(buff);
						bonusDur+=buff.getTimeLeft();
					}
				}
				for(Buff buff : destroy){
					buff.destroy();
				}
				this.duration += bonusDur;
				this.timeLeft  = duration;
			}
			b.addBuff(this);
		}
	}