package com.planet_ink.coffee_mud.Abilities.Spells; import com.planet_ink.coffee_mud.core.interfaces.*; import com.planet_ink.coffee_mud.core.*; 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.Locales.interfaces.*; import com.planet_ink.coffee_mud.MOBS.interfaces.*; import com.planet_ink.coffee_mud.Races.interfaces.*; import java.util.*; /** * <p>Title: False Realities Flavored CoffeeMUD</p> * <p>Description: The False Realities Version of CoffeeMUD</p> * <p>Copyright: Copyright (c) 2003 Jeremy Vyska</p> * <p>Licensed under the Apache License, Version 2.0 (the "License"); * <p>you may not use this file except in compliance with the License. * <p>You may obtain a copy of the License at * * <p> http://www.apache.org/licenses/LICENSE-2.0 * * <p>Unless required by applicable law or agreed to in writing, software * <p>distributed under the License is distributed on an "AS IS" BASIS, * <p>WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * <p>See the License for the specific language governing permissions and * <p>limitations under the License. * <p>Company: http://www.falserealities.com</p> * @author FR - Jeremy Vyska; CM - Bo Zimmerman * @version 1.0.0.0 */ public class Spell_BaseClanEq extends Spell { public String ID() { return "Spell_BaseClanEq"; } public String name(){return "Enchant Clan Equipment Base Model";} protected int canTargetCode(){return CAN_ITEMS;} public int classificationCode(){return Ability.ACODE_SPELL|Ability.DOMAIN_ENCHANTMENT;} public long flags(){return super.flags()|Ability.FLAG_CLANMAGIC;} protected int overrideMana(){return Integer.MAX_VALUE;} protected String type=""; protected boolean disregardsArmorCheck(MOB mob){return true;} public boolean canBeLearnedBy(MOB teacher, MOB student) { if(student!=null) { for(int a=0;a<student.numAbilities();a++) { Ability A=student.fetchAbility(a); if((A!=null)&&(A instanceof Spell_BaseClanEq)) { teacher.tell(student.name()+" already knows '"+A.name()+"', and may not learn another clan enchantment."); student.tell("You may only learn a single clan enchantment."); return false; } } } return super.canBeLearnedBy(teacher,student); } public boolean invoke(MOB mob, Vector commands, Environmental givenTarget, boolean auto, int asLevel) { if(type.length()==0) return false; if((mob.getClanID()==null)||(mob.getClanID().equalsIgnoreCase(""))||(mob.getClanRole()==0)) { mob.tell("You aren't even a member of a clan."); return false; } Clan C=CMLib.clans().getClan(mob.getClanID()); if(C==null) { mob.tell("You aren't even a member of a clan."); return false; } if(C.allowedToDoThis(mob,Clan.FUNC_CLANENCHANT)!=1) { mob.tell("You are not authorized to draw from the power of your "+C.typeName()+"."); return false; } String ClanName=C.clanID(); String ClanType=C.typeName(); // Invoking will be like: // CAST [CLANEQSPELL] ITEM QUANTITY // -2 -1 0 1 if(commands.size()<1) { mob.tell("Enchant which spell onto what?"); return false; } if(commands.size()<2) { mob.tell("Use how much clan enchantment power?"); return false; } Environmental target=mob.location().fetchFromMOBRoomFavorsItems(mob,null,(String)commands.elementAt(0),Item.WORNREQ_UNWORNONLY); if((target==null)||((target!=null)&&(!CMLib.flags().canBeSeenBy(target,mob)))) { mob.tell("You don't see '"+((String)commands.elementAt(0))+"' here."); return false; } // Add clan power check start int points=CMath.s_int((String)commands.elementAt(1)); if(points<=0) { mob.tell("You need to use at least 1 enchantment point."); return false; } long exp=points*CMProps.getIntVar(CMProps.SYSTEMI_CLANENCHCOST); if((C.getExp()<exp)||(exp<0)) { mob.tell("You need "+exp+" to do that, but your "+C.typeName()+" has only "+C.getExp()+" experience points."); return false; } // Add clan power check end if(target.fetchEffect("Prop_ClanEquipment")!=null) { mob.tell(target.name()+" is already clan enchanted."); return false; } // lose all the mana! if(!super.invoke(mob,commands,givenTarget,auto,asLevel)) return false; boolean success=proficiencyCheck(mob,0,auto); C.setExp(C.getExp()-exp); C.update(); if(success) { CMMsg msg=CMClass.getMsg(mob,target,this,verbalCastCode(mob,target,auto),"^S<S-NAME> move(s) <S-HIS-HER> fingers around <T-NAMESELF>, encanting intensely.^?"); if (mob.location().okMessage(mob, msg)) { mob.location().send(mob, msg); Ability A=CMClass.getAbility("Prop_ClanEquipment"); StringBuffer str=new StringBuffer(""); str.append(type); // Type of Enchantment str.append(" "); str.append(""+points); // Power of Enchantment str.append(" \""); str.append(ClanName); // Clan Name str.append("\" \""); str.append(ClanType); // Clan Type str.append("\""); A.setMiscText(str.toString()); target.addEffect(A); } } else beneficialWordsFizzle(mob,target,"<S-NAME> move(s) <S-HIS-HER> fingers around <T-NAMESELF>, encanting intensely, and looking very frustrated."); return success; } }