@Override
	public void drinkIfAble(MOB owner, Physical drinkerTarget)
	{
		final List<Ability> spells=getSpells();
		if(owner.isMine(this))
			if((!isDrunk())&&(spells.size()>0))
			{
				final MOB caster=CMLib.map().getFactoryMOB(owner.location());
				final MOB finalCaster=(owner!=drinkerTarget)?owner:caster;
				for(int i=0;i<spells.size();i++)
				{
					final Ability thisOne=(Ability)spells.get(i).copyOf();
					if((drinkerTarget instanceof Item)
					&&((!thisOne.canTarget(drinkerTarget))&&(!thisOne.canAffect(drinkerTarget))))
						continue;
					int level=phyStats().level();
					final int lowest=CMLib.ableMapper().lowestQualifyingLevel(thisOne.ID());
					if(level<lowest)
						level=lowest;
					caster.basePhyStats().setLevel(level);
					caster.phyStats().setLevel(level);
					thisOne.invoke(finalCaster,drinkerTarget,true,level);
					setDrunk(true);
					setLiquidRemaining(0);
				}
				caster.destroy();
			}
	}