<NME> Evoker.java
<BEF> package com.planet_ink.coffee_mud.CharClasses;
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.Libraries.interfaces.AbilityMapper.SecretFlag;
import com.planet_ink.coffee_mud.Locales.interfaces.*;
import com.planet_ink.coffee_mud.MOBS.interfaces.*;
import com.planet_ink.coffee_mud.Races.interfaces.*;

/*
   Copyright 2003-2022 Bo Zimmerman

   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.
*/
public class Evoker extends SpecialistMage
{
	@Override
	public String ID()
	{
		return "Evoker";
	}

	private final static String localizedStaticName = CMLib.lang().L("Evoker");

	@Override
	public String name()
	{
		return localizedStaticName;
	}

	@Override
	public int domain()
	{
		return Ability.DOMAIN_EVOCATION;
	}

	@Override
	public int opposed()
	{
		return Ability.DOMAIN_ALTERATION;
	}

	@Override
	public int availabilityCode()
	{
		return Area.THEME_FANTASY;
	}

	@Override
	public void initializeClass()
	{
		super.initializeClass();
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_ProduceFlame",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),3,"Spell_HelpingHand",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),5,"Spell_PurgeInvisibility",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),7,"Spell_ForcefulHand",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),8,"Skill_Spellcraft",false);
		CMLib.ableMapper().addCharAbilityMapping(ID(),9,"Spell_ContinualLight",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),11,"Spell_Shockshield",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),13,"Spell_IceLance",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),14,"Spell_KineticPulse",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),15,"Spell_Ignite",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),16,"Spell_MysticLoom",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),21,"Spell_IceStorm",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),22,"Spell_Shove",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),23,"Spell_Blademouth",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,SecretFlag.SECRET);
		CMLib.ableMapper().addCharAbilityMapping(ID(),26,"Spell_GreaterLevitate",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),35,"Spell_PlanarBurst", 25, "", false, SecretFlag.MASKED, null, "+PLANE \"-Prime Material\"");
	}
}

<MSG> Portal Other spell

git-svn-id: 0cdf8356e41b2d8ccbb41bb76c82068fe80b2514@15533 0d6f1817-ed0e-0410-87c9-987e46238f29

<DFF> @@ -83,6 +83,7 @@ public class Evoker extends SpecialistMage
 		CMLib.ableMapper().addCharAbilityMapping(ID(),21,"Spell_IceStorm",25,true);
 		CMLib.ableMapper().addCharAbilityMapping(ID(),22,"Spell_Shove",25,true);
 		CMLib.ableMapper().addCharAbilityMapping(ID(),23,"Spell_Blademouth",25,true);
+		CMLib.ableMapper().addCharAbilityMapping(ID(),24,"Spell_PortalOther",25,true);
 		CMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,true);
 		CMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);
 		CMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);

{'commit': 'diff --git a/CHANGES b/CHANGES\nindex 7cffb4c5b8..9de5c6c13a 100644\n--- a/CHANGES\n+++ b/CHANGES\n@@ -12,6 +12,7 @@\n   10. "STINK" is now a way to access Hygeine in prompt, stat, and scripting.\n   11. New shopkeeper type: instrument seller\n   12. Mineable dirt and drillable water added to several room types as resources.\n+  13. New spell : Portal Other\n \n # Build 5.9.5 Release 04/10/2017\n    *. Database Schema Updated for CMGRAC.  See the Installation Guide about running DBUpgrade.\ndiff --git a/com/planet_ink/coffee_mud/Abilities/Spells/Spell_PortalOther.java b/com/planet_ink/coffee_mud/Abilities/Spells/Spell_PortalOther.java\nnew file mode 100644\nindex 0000000000..f91838e207\n--- /dev/null\n+++ b/com/planet_ink/coffee_mud/Abilities/Spells/Spell_PortalOther.java\n@@ -0,0 +1,211 @@\n+package com.planet_ink.coffee_mud.Abilities.Spells;\r\n+import com.planet_ink.coffee_mud.core.interfaces.*;\r\n+import com.planet_ink.coffee_mud.core.*;\r\n+import com.planet_ink.coffee_mud.core.collections.*;\r\n+import com.planet_ink.coffee_mud.Abilities.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Areas.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Behaviors.interfaces.*;\r\n+import com.planet_ink.coffee_mud.CharClasses.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Commands.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Common.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Exits.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Items.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Libraries.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Locales.interfaces.*;\r\n+import com.planet_ink.coffee_mud.MOBS.interfaces.*;\r\n+import com.planet_ink.coffee_mud.Races.interfaces.*;\r\n+\r\n+import java.util.*;\r\n+\r\n+/*\r\n+   Copyright 2001-2017 Bo Zimmerman\r\n+\r\n+   Licensed under the Apache License, Version 2.0 (the "License");\r\n+   you may not use this file except in compliance with the License.\r\n+   You may obtain a copy of the License at\r\n+\r\n+\t   http://www.apache.org/licenses/LICENSE-2.0\r\n+\r\n+   Unless required by applicable law or agreed to in writing, software\r\n+   distributed under the License is distributed on an "AS IS" BASIS,\r\n+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+   See the License for the specific language governing permissions and\r\n+   limitations under the License.\r\n+*/\r\n+\r\n+public class Spell_PortalOther extends Spell\r\n+{\r\n+\r\n+\t@Override\r\n+\tpublic String ID()\r\n+\t{\r\n+\t\treturn "Spell_PortalOther";\r\n+\t}\r\n+\r\n+\tprivate final static String localizedName = CMLib.lang().L("Portal Other");\r\n+\r\n+\t@Override\r\n+\tpublic String name()\r\n+\t{\r\n+\t\treturn localizedName;\r\n+\t}\r\n+\r\n+\t@Override\r\n+\tprotected int canTargetCode()\r\n+\t{\r\n+\t\treturn 0;\r\n+\t}\r\n+\r\n+\t@Override\r\n+\tpublic int classificationCode()\r\n+\t{\r\n+\t\treturn Ability.ACODE_SPELL|Ability.DOMAIN_EVOCATION;\r\n+\t}\r\n+\r\n+\t@Override\r\n+\tpublic long flags()\r\n+\t{\r\n+\t\treturn Ability.FLAG_TRANSPORTING;\r\n+\t}\r\n+\r\n+\t@Override\r\n+\tprotected int overrideMana()\r\n+\t{\r\n+\t\treturn Ability.COST_ALL-90;\r\n+\t}\r\n+\r\n+\t@Override\r\n+\tpublic int abstractQuality()\r\n+\t{\r\n+\t\treturn Ability.QUALITY_INDIFFERENT;\r\n+\t}\r\n+\r\n+\tRoom newRoom=null;\r\n+\r\n+\t@Override\r\n+\tpublic void unInvoke()\r\n+\t{\r\n+\t\tif(canBeUninvoked())\r\n+\t\t{\r\n+\t\t\tif(newRoom!=null)\r\n+\t\t\t{\r\n+\t\t\t\tnewRoom.showHappens(CMMsg.MSG_OK_VISUAL,L("The swirling portal closes."));\r\n+\t\t\t\tnewRoom.rawDoors()[Directions.GATE]=null;\r\n+\t\t\t\tnewRoom.setRawExit(Directions.GATE,null);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\tsuper.unInvoke();\r\n+\t}\r\n+\r\n+\t@Override\r\n+\tpublic boolean invoke(MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel)\r\n+\t{\r\n+\t\tnewRoom=null;\r\n+\r\n+\t\tif((auto||mob.isMonster())&&((commands.size()<1)||((commands.get(0)).equals(mob.name()))))\r\n+\t\t{\r\n+\t\t\tcommands.clear();\r\n+\t\t\tif(text().length()>0)\r\n+\t\t\t\tcommands.add(text());\r\n+\t\t\telse\r\n+\t\t\t{\r\n+\t\t\t\tMOB M=null;\r\n+\t\t\t\tint tries=0;\r\n+\t\t\t\twhile(((++tries)<100)&&(M==null))\r\n+\t\t\t\t{\r\n+\t\t\t\t\tfinal Room R=CMLib.map().getRandomRoom();\r\n+\t\t\t\t\tif(R.numInhabitants()>0)\r\n+\t\t\t\t\t\tM=R.fetchRandomInhabitant();\r\n+\t\t\t\t\tif((M!=null)&&(M.name().equals(mob.name())))\r\n+\t\t\t\t\t\tM=null;\r\n+\t\t\t\t}\r\n+\t\t\t\tif(M!=null)\r\n+\t\t\t\t\tcommands.add(M.Name());\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\tif(commands.size()<1)\r\n+\t\t{\r\n+\t\t\tmob.tell(L("Create a portal at whom?"));\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\t\tfinal String areaName=CMParms.combine(commands,0).trim().toUpperCase();\r\n+\t\tif(mob.location().fetchInhabitant(areaName)!=null)\r\n+\t\t{\r\n+\t\t\tmob.tell(L("Better look around first."));\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tnewRoom=null;\r\n+\r\n+\t\tList<MOB> candidates=new Vector<MOB>();\r\n+\t\tMOB target=null;\r\n+\t\ttry\r\n+\t\t{\r\n+\t\t\tcandidates=CMLib.map().findInhabitants(CMLib.map().rooms(), mob, areaName, 10);\r\n+\t\t}\r\n+\t\tcatch(final NoSuchElementException nse)\r\n+\t\t{\r\n+\t\t}\r\n+\t\tRoom newRoom=null;\r\n+\t\tif(candidates.size()>0)\r\n+\t\t{\r\n+\t\t\ttarget=candidates.get(CMLib.dice().roll(1,candidates.size(),-1));\r\n+\t\t\tnewRoom=target.location();\r\n+\t\t}\r\n+\r\n+\t\tif((newRoom==null) || (target == null))\r\n+\t\t{\r\n+\t\t\tmob.tell(L("You can\'t seem to fixate on \'@x1\', perhaps they don\'t exist?",areaName));\r\n+\t\t\treturn false;\r\n+\t\t}\r\n+\r\n+\t\tint adjustment=target.phyStats().level()-(mob.phyStats().level()+(2*getXLEVELLevel(mob)));\r\n+\t\tif(target.isMonster())\r\n+\t\t\tadjustment=adjustment*3;\r\n+\t\t\r\n+\t\tif(!super.invoke(mob,commands,givenTarget,auto,asLevel))\r\n+\t\t\treturn false;\r\n+\r\n+\t\tfinal boolean success=proficiencyCheck(mob,-adjustment,auto);\r\n+\r\n+\t\tif((success)\r\n+\t\t&&((newRoom.getRoomInDir(Directions.GATE)==null)\r\n+\t\t&&(newRoom.getExitInDir(Directions.GATE)==null)))\r\n+\t\t{\r\n+\t\t\tfinal CMMsg msg=CMClass.getMsg(mob,mob.location(),this,verbalCastCode(mob,mob.location(),auto),L("^S<S-NAME> evoke(s) a blinding, swirling portal somewhere.^?"));\r\n+\t\t\tfinal CMMsg msg2=CMClass.getMsg(mob,newRoom,this,verbalCastCode(mob,newRoom,auto),L("A blinding, swirling portal appears here."));\r\n+\t\t\tif((mob.location().okMessage(mob,msg))&&(newRoom.okMessage(mob,msg2)))\r\n+\t\t\t{\r\n+\t\t\t\tmob.location().send(mob,msg);\r\n+\t\t\t\tnewRoom=(Room)msg2.target();\r\n+\t\t\t\tnewRoom.sendOthers(mob,msg2);\r\n+\t\t\t\tfinal Exit e2=CMClass.getExit("GenExit");\r\n+\t\t\t\te2.setDescription(L("A swirling portal to somewhere"));\r\n+\t\t\t\te2.setDisplayText(L("A swirling portal to somewhere"));\r\n+\t\t\t\te2.setDoorsNLocks(false,true,false,false,false,false);\r\n+\t\t\t\te2.setExitParams("portal","close","open","closed.");\r\n+\t\t\t\te2.setName(L("a swirling portal"));\r\n+\t\t\t\tfinal Ability A1=CMClass.getAbility("Prop_RoomView");\r\n+\t\t\t\tif(A1!=null)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tA1.setMiscText(CMLib.map().getExtendedRoomID(newRoom));\r\n+\t\t\t\t\te2.addNonUninvokableEffect(A1);\r\n+\t\t\t\t}\r\n+\t\t\t\tfinal Ability A2=CMClass.getAbility("Prop_RoomView");\r\n+\t\t\t\tif(A2!=null)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tA2.setMiscText(CMLib.map().getExtendedRoomID(mob.location()));\r\n+\t\t\t\t\te2.addNonUninvokableEffect(A2);\r\n+\t\t\t\t}\r\n+\t\t\t\tnewRoom.rawDoors()[Directions.GATE]=mob.location();\r\n+\t\t\t\tnewRoom.setRawExit(Directions.GATE,e2);\r\n+\t\t\t\tbeneficialAffect(mob,e2,asLevel,15);\r\n+\t\t\t}\r\n+\t\t}\r\n+\t\telse\r\n+\t\t\tbeneficialWordsFizzle(mob,null,L("<S-NAME> attempt(s) to evoke a portal somewhere, but fizzle(s) the spell."));\r\n+\r\n+\t\t// return whether it worked\r\n+\t\treturn success;\r\n+\t}\r\n+}\r\ndiff --git a/com/planet_ink/coffee_mud/CharClasses/Evoker.java b/com/planet_ink/coffee_mud/CharClasses/Evoker.java\nindex f3c35e1939..918be1f46a 100644\n--- a/com/planet_ink/coffee_mud/CharClasses/Evoker.java\n+++ b/com/planet_ink/coffee_mud/CharClasses/Evoker.java\n@@ -83,6 +83,7 @@ public class Evoker extends SpecialistMage\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),21,"Spell_IceStorm",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),22,"Spell_Shove",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),23,"Spell_Blademouth",25,true);\r\n+\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),24,"Spell_PortalOther",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);\r\ndiff --git a/resources/help/spell_help.ini b/resources/help/spell_help.ini\nindex 243c44a97a..1b3252cbd2 100644\n--- a/resources/help/spell_help.ini\n+++ b/resources/help/spell_help.ini\n@@ -2006,6 +2006,7 @@ This spell changes the race of the caster into the race specified, for the \\\n duration of the spell.  The difficulty in succeeding will also depend on \\\n how strong or weak the new race is.\n \n+PORTAL=SPELL_PORTAL\n SPELL_PORTAL=<ABILITY>\\\n Usage    : CAST PORTAL [PLACE/ROOM NAME] \\n\\r\\\n Example  : cast portal junction\\n\\r\\\n@@ -2014,6 +2015,16 @@ place named in the spell.  The \'place name\' must be contained in the short \\\n description shown of the place.  The portal will only stay open for a \\\n short time, and may be entered using the "ENTER" command.\n \n+SPELL_PORTAL_OTHER=SPELL_PORTALOTHER\n+PORTAL_OTHER=SPELL_PORTALOTHER\n+SPELL_PORTALOTHER=<ABILITY>\\\n+Usage    : CAST "PORTAL OTHER" [PLAYER/MOB NAME] \\n\\r\\\n+Example  : cast "portal other" bob\\n\\r\\\n+This spell opens a swirling energy portal from the person or mob \\\n+named to the casters current room.  The portal will only stay open for a \\\n+short time, and may be entered using the "ENTER" command.  There is no \\\n+guarentee that the target will enter the portal, unless they want to.\n+\n SPELL_PRAYERSHIELD=SPELL_PRAYER_SHIELD\n SPELL_PRAYER_SHIELD=<ABILITY>\\\n Usage    : CAST "PRAYER SHIELD" [TARGET NAME] \\n\\r\\\n', 'commit_subject': 'Portal Other spell', 'repo_name': 'bozimmerman/CoffeeMud', 'committer': {'name': 'bozimmerman', 'email': 'dc45fe023482b3b890b5e574e53c1d051f45b1ef@zimmers.net', 'time_sec': '1506323035', 'tz_offset': '0', 'date': {'seconds': '1506323035'}}, 'commit_tree': '5456f91b24fb6b91657fb7ed20ed446c6c8f09f5', 'commit_message': 'Portal Other spell\n\ngit-svn-id: 0cdf8356e41b2d8ccbb41bb76c82068fe80b2514@15533 0d6f1817-ed0e-0410-87c9-987e46238f29\n', 'language_name': 'HTML', 'license': 'apache-2.0', 'hunks': '@@ -83,6 +83,7 @@ public class Evoker extends SpecialistMage\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),21,"Spell_IceStorm",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),22,"Spell_Shove",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),23,"Spell_Blademouth",25,true);\r\n+\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),24,"Spell_PortalOther",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);\r\n \t\tCMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);\r\n', 'addition_count': 1, 'deletion_count': 0, 'src_file': 'a/com/planet_ink/coffee_mud/CharClasses/Evoker.java', 'tgt_file': 'b/com/planet_ink/coffee_mud/CharClasses/Evoker.java', 'file_extension': '.java', 'before_file': 'package com.planet_ink.coffee_mud.CharClasses;\nimport com.planet_ink.coffee_mud.core.interfaces.*;\nimport com.planet_ink.coffee_mud.core.*;\nimport com.planet_ink.coffee_mud.core.collections.*;\nimport com.planet_ink.coffee_mud.Abilities.interfaces.*;\nimport com.planet_ink.coffee_mud.Areas.interfaces.*;\nimport com.planet_ink.coffee_mud.Behaviors.interfaces.*;\nimport com.planet_ink.coffee_mud.CharClasses.interfaces.*;\nimport com.planet_ink.coffee_mud.Commands.interfaces.*;\nimport com.planet_ink.coffee_mud.Common.interfaces.*;\nimport com.planet_ink.coffee_mud.Exits.interfaces.*;\nimport com.planet_ink.coffee_mud.Items.interfaces.*;\nimport com.planet_ink.coffee_mud.Libraries.interfaces.*;\nimport com.planet_ink.coffee_mud.Libraries.interfaces.AbilityMapper.SecretFlag;\nimport com.planet_ink.coffee_mud.Locales.interfaces.*;\nimport com.planet_ink.coffee_mud.MOBS.interfaces.*;\nimport com.planet_ink.coffee_mud.Races.interfaces.*;\n\n/*\n   Copyright 2003-2022 Bo Zimmerman\n\n   Licensed under the Apache License, Version 2.0 (the "License");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n\t   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an "AS IS" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\npublic class Evoker extends SpecialistMage\n{\n\t@Override\n\tpublic String ID()\n\t{\n\t\treturn "Evoker";\n\t}\n\n\tprivate final static String localizedStaticName = CMLib.lang().L("Evoker");\n\n\t@Override\n\tpublic String name()\n\t{\n\t\treturn localizedStaticName;\n\t}\n\n\t@Override\n\tpublic int domain()\n\t{\n\t\treturn Ability.DOMAIN_EVOCATION;\n\t}\n\n\t@Override\n\tpublic int opposed()\n\t{\n\t\treturn Ability.DOMAIN_ALTERATION;\n\t}\n\n\t@Override\n\tpublic int availabilityCode()\n\t{\n\t\treturn Area.THEME_FANTASY;\n\t}\n\n\t@Override\n\tpublic void initializeClass()\n\t{\n\t\tsuper.initializeClass();\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_ProduceFlame",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),3,"Spell_HelpingHand",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),5,"Spell_PurgeInvisibility",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),7,"Spell_ForcefulHand",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),8,"Skill_Spellcraft",false);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),9,"Spell_ContinualLight",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),11,"Spell_Shockshield",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),13,"Spell_IceLance",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),14,"Spell_KineticPulse",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),15,"Spell_Ignite",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),16,"Spell_MysticLoom",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),21,"Spell_IceStorm",25,true);\r\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),22,"Spell_Shove",25,true);\r\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),23,"Spell_Blademouth",25,true);\r\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,true);\r\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);\r\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);\r\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),25,"Spell_LimbRack",0,"",false,SecretFlag.SECRET);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),26,"Spell_GreaterLevitate",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),27,"Spell_Lighthouse",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),30,"Spell_MassDisintegrate",25,true);\n\t\tCMLib.ableMapper().addCharAbilityMapping(ID(),35,"Spell_PlanarBurst", 25, "", false, SecretFlag.MASKED, null, "+PLANE \\"-Prime Material\\"");\n\t}\n}\n', 'message': 'Portal Other spell\n\ngit-svn-id: 0cdf8356e41b2d8ccbb41bb76c82068fe80b2514@15533 0d6f1817-ed0e-0410-87c9-987e46238f29\n', 'author_name': 'bozimmerman', 'lang': 'java'}