--- ds3.1a10-stock/lib/verbs/players/cast.c 2009-12-30 08:55:05.000000000 -0600 +++ ds3.1a10/lib/verbs/players/cast.c 2010-12-17 20:19:07.000000000 -0600 @@ -14,16 +14,31 @@ verb::create(); SetVerb("cast"); SetRules("STR", "STR on OBJ", "STR on STR", "STR on STR of OBJ", - "STR against STR"); + "STR against STR", ""); SetErrorMessage("Cast what spell? On whom?"); SetHelp("Syntax: cast <SPELL>\n" + " cast\n" " cast <SPELL> on <LIMB>\n" " cast <SPELL> against <STRING>\n" " cast <SPELL> on <TARGET>\n" " cast <SPELL> on <LIMB> of <TARGET>\n\n" "Allows you to cast any spell using whatever syntax the " - "spell in question requires. To heal someone, for example, " - "\"cast heal on descartes\"."); + "spell in question requires. If the syntax you use does not " + "require a spell, the spell you have readied (see \"Help ready\") " + "is used. To heal someone, for example, \"cast heal on descartes\"."); +} + +int has_readied_spell() +{ + if (!(this_player()->GetProperty("readied spell") == 0)) + return 1; + return 0; +} + +string readied_spell() +{ + /*Please have called has_readied_spell first*/ + return this_player()->GetProperty("readied spell"); } mixed can_cast_str(string spell) { @@ -55,6 +70,10 @@ return can_cast_str(spell); } +mixed can_cast(string spell) { + return has_readied_spell() && can_cast_str(readied_spell()); +} + mixed do_cast_str(string spell) { return this_player()->eventPrepareCast(spell); } @@ -74,3 +93,8 @@ mixed do_cast_str_on_str_of_obj(string spell, string limb, object target) { return this_player()->eventPrepareCast(spell, limb, target); } + +mixed do_cast() { + return this_player()->eventPrepareCast(readied_spell()); +} +