package com.planet_ink.coffee_mud.Abilities.Prayers;
import com.planet_ink.coffee_mud.core.interfaces.*;
import com.planet_ink.coffee_mud.core.*;
import com.planet_ink.coffee_mud.core.collections.*;
import com.planet_ink.coffee_mud.Abilities.interfaces.*;
import com.planet_ink.coffee_mud.Areas.interfaces.*;
import com.planet_ink.coffee_mud.Behaviors.interfaces.*;
import com.planet_ink.coffee_mud.CharClasses.interfaces.*;
import com.planet_ink.coffee_mud.Commands.interfaces.*;
import com.planet_ink.coffee_mud.Common.interfaces.*;
import com.planet_ink.coffee_mud.Exits.interfaces.*;
import com.planet_ink.coffee_mud.Items.interfaces.*;
import com.planet_ink.coffee_mud.Libraries.interfaces.*;
import com.planet_ink.coffee_mud.Locales.interfaces.*;
import com.planet_ink.coffee_mud.MOBS.interfaces.*;
import com.planet_ink.coffee_mud.Races.interfaces.*;
import java.util.*;
/**
* Title: False Realities Flavored CoffeeMUD
* Description: The False Realities Version of CoffeeMUD
* Copyright: Copyright (c) 2004 Jeremy Vyska
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Company: http://www.falserealities.com
* @author FR - Jeremy Vyska; CM - Bo Zimmerman
* @version 1.0.0.0
*/
public class Prayer_Regrowth extends Prayer implements MendingSkill
{
@Override public String ID() { return "Prayer_Regrowth"; }
private final static String localizedName = CMLib.lang().L("Regrowth");
@Override public String name() { return localizedName; }
@Override public int abstractQuality(){ return Ability.QUALITY_BENEFICIAL_OTHERS;}
@Override public int classificationCode(){return Ability.ACODE_PRAYER|Ability.DOMAIN_HEALING;}
@Override public long flags(){return Ability.FLAG_HOLY|Ability.FLAG_HEALINGMAGIC;}
@Override protected int overrideMana(){return Ability.COST_ALL;}
private static Vector<String> limbsToRegrow = null;
public Prayer_Regrowth()
{
super();
if(limbsToRegrow==null)
{
limbsToRegrow = new Vector<String>();
limbsToRegrow.addElement("EYE");
limbsToRegrow.addElement("LEG");
limbsToRegrow.addElement("FOOT");
limbsToRegrow.addElement("ARM");
limbsToRegrow.addElement("HAND");
limbsToRegrow.addElement("EAR");
limbsToRegrow.addElement("NOSE");
limbsToRegrow.addElement("TAIL");
limbsToRegrow.addElement("WING");
limbsToRegrow.addElement("ANTENEA");
}
}
@Override
public boolean supportsMending(Physical item)
{
if(!(item instanceof MOB))
return false;
return (item.fetchEffect("Amputation")!=null);
}
@Override
public int castingQuality(MOB mob, Physical target)
{
if(mob!=null)
{
if(target instanceof MOB)
{
if(!supportsMending(target))
return Ability.QUALITY_INDIFFERENT;
}
}
return super.castingQuality(mob,target);
}
@Override
public boolean invoke(MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel)
{
final MOB target=getTarget(mob,commands,givenTarget);
if(target==null)
return false;
if(!super.invoke(mob,commands,givenTarget,auto,asLevel))
return false;
final boolean success=proficiencyCheck(mob,0,auto);
if(success)
{
final CMMsg msg=CMClass.getMsg(mob,target,this,verbalCastCode(mob,target,auto),auto?L("<T-NAME> become(s) surrounded by a bright light."):L("^S<S-NAME> @x1 over <T-NAMESELF> for restorative healing.^?",prayWord(mob)));
if(mob.location().okMessage(mob,msg))
{
mob.location().send(mob,msg);
final LimbDamage ampuA=(LimbDamage)target.fetchEffect("Amputation");
if(ampuA!=null)
{
final List<String> missing = ampuA.affectedLimbNameSet();
String LookingFor = null;
boolean found = false;
String missLimb=null;
for(int i=0;i<limbsToRegrow.size();i++)
{
LookingFor = limbsToRegrow.elementAt(i);
for(int j=0;j<missing.size();j++)
{
missLimb = missing.get(j);
if(missLimb.toUpperCase().indexOf(LookingFor)>=0)
{
found = true;
break;
}
}
if(found)
break;
}
if((found)&&(missLimb!=null))
ampuA.restoreLimb(missLimb.toLowerCase());
target.recoverCharStats();
target.recoverPhyStats();
target.recoverMaxState();
}
mob.location().recoverRoomStats();
}
}
else
beneficialWordsFizzle(mob,target,L("<S-NAME> @x1 over <T-NAMESELF>, but @x2 does not heed.",prayWord(mob),hisHerDiety(mob)));
// return whether it worked
return success;
}
}