A dump of #331 (Staff) @create #59933 named staff:staff @prop #331."accept_gem_payment" 1 rc @prop #331."gem_spells" {} rc ;;#331.("gem_spells") = {"shatter", "harden", "hail", "summon", "appraise"} @prop #331."pearl_spells" {} rc ;;#331.("pearl_spells") = {"waterwhip", "iceshell", "acidrain", "parch"} @prop #331."mounted" #-1 r @prop #331."forcewall_cast_msg" "%N % words of protection while swinging %p %[focus] about %r in a circle. %S then % %d lightly with %p %[focus]." rc @prop #331."enchant_cast_msg" "%N % on %p %[focus], gently caressing it while muttering odd syllables." rc @prop #331."barkskin_cast_msg" "%N % %p %[focus] tightly to %o whilst tracing mystic symbols about %p body and chanting words of change." rc @prop #331."hail_cast_msg" "%N % %p %[focus] forcefully on the ground while shouting words of power to the heavens." rc @prop #331."unwall_cast_msg" "%N % %p hands at %d, intoning words of dispelling." rc @prop #331."shatter_cast_msg" "%N % fiercely, pointing %p %[focus] at %[target] and barking out a short spell." rc @prop #331."unwall_cast_self_msg" "%N % %p hands about %r, intoning words of dispelling." rc @prop #331."forcewall_cast_self_msg" "%N % words of protection while swinging %p %[focus] about %r in a circle." rc @prop #331."harden_cast_msg" "%N % something like `Huge Blooming Cruft' while pointing %p %[focus] and staring cross-eyed at %[target]." rc @prop #331."biting_cloud_cast_msg" "%N % %p %[focus] aloft, chanting a buzzing, clicking sort of spell." rc @prop #331."waterwhip_cast_msg" "%N % %p %[focus] fluidly, speaking some odd syllables." rc @prop #331."conjure_cast_msg" "%N % a strange diagram on the ground with %p %[focus], then % back, % %p arms wide and % reciting weird syllables." rc @prop #331."summon_cast_msg" "%N % arcane symbols on the ground, then % a single arcane word to the wind." rc "#331.("enchantment") => E_PERM (Permission denied) @prop #331."acidrain_cast_msg" "%N % %p %[focus] at the clouds above %d, chanting and cackling evilly." rc @prop #331."appraise_cast_msg" "%N % under %p breath and % intently at %[target]." rc @prop #331."magic_fist_cast_msg" "%N % forward forcefully while shouting, \"Yzor!\"" rc @prop #331."unbark_cast_msg" "%N % %r on the forehead with %p %[focus] while incanting a short rhyme." rc @prop #331."viper_bite_cast_msg" "%N % a sibilant spell, ceasing by spitting." rc @prop #331."unviper_cast_msg" "%N % a sibilant spell, ceasing by sucking in %p spittle." rc @prop #331."stoneflesh_cast_msg" "%N % %p forehead, chest and shoulders, whilst chanting words of change." rc @prop #331."fortify_cast_msg" "%N % %p hands deftly up and down the length of %p %[focus], then % its head to %p %[target]." rc "#331.("bonus") => E_PERM (Permission denied) "#331.("visible_spells") => E_PERM (Permission denied) "#331.("no_imp") => E_PERM (Permission denied) "#331.("dodgable") => E_PERM (Permission denied) "#331.("parryable") => E_PERM (Permission denied) ;;#331.("osheathe") = "puts away" ;;#331.("sheathe") = "put away" "#331.("slowness") => E_PERM (Permission denied) ;;#331.("length") = 30 "#331.("parry") => E_PERM (Permission denied) "#331.("attack") => E_PERM (Permission denied) "#331.("pen") => E_PERM (Permission denied) "#331.("dam") => E_PERM (Permission denied) "#331.("skill") => E_PERM (Permission denied) ;;#331.("hands") = 2 ;;#331.("wooden") = 1 ;;#331.("blunt") = 1 ;;#331.("pierce") = -3 ;;#331.("con") = 3 "#331.("max_str_bonus") => E_PERM (Permission denied) "#331.("can_degrade") => E_PERM (Permission denied) "#331.("track_usage") => E_PERM (Permission denied) ;;#331.("encumbrance") = 4 ;;#331.("manufactured") = 820783482 ;;#331.("worth") = -1 ;;#331.("condition") = 100 ;;#331.("last_action") = 1129633343 ;;#331.("use_spell_msg_db") = 1 ;;#331.("odrop_failed_msg") = "% to drop %t but fails!" ;;#331.("odrop_succeeded_msg") = "% %t." ;;#331.("otake_succeeded_msg") = "% up %t." "#331.("key") => E_PERM (Permission denied) ;;#331.("aliases") = {"staff"} ;;#331.("description") = "A long, straight branch trimmed from a sapient pear tree." ;;#331.("object_size") = {37132, 1141286558} @verb #331:"heal" this none this rd @program #331:heal if (this:check_casting(player, dobj, (rpg = $local.rpg).skills.(verb)) && valid(targ = this:check_live_target(player, dobj, rpg.skills.(verb), peaceful = 1))) if (targ.inj <= 0) player:tell(targ.character.name, " is uninjured."); elseif (doll.paralyzed = rpg.magic_db.iceshell_paralyzed_msg) player:tell("You'll have to get rid of that shell of ice around ", target.character.name, " first."); else this:spell(player, targ, rpg.skills.(verb), 0, peaceful); endif endif . @verb #331:"storm" this none this rd @program #331:storm if (this:check_casting(player, dobjstr, $local.rpg.skills.(verb))) this:spell(player, player.location, $local.rpg.skills.(verb)); endif . @verb #331:"unwall" any with this rxd @program #331:unwall if (this:check_casting(player, dobj, skill = $local.rpg.skills.forcewall) && valid(targ = this:check_live_target(player, dobjstr, skill))) if (!(info = targ:read_misc_note("force_wall"))) player:tell("There is no wall of force around ", targ.character.po, "."); else mod = 20; if (valid(mage_doll = info[1]) && (parent(mage_doll) == $local.rpg.doll)) if (mage_doll.character != player) player:tell("You didn't cast that wall around ", targ.character.name, "; this might be a little difficult. . ."); mod = -info[2]; endif else player:tell("The original caster of that wall is no more, allowing you to easily dispel the magick."); mod = 200; endif this:spell(player, targ, "unwall", mod, 0, skill); endif endif . @verb #331:"forcewall" any with this rxd @program #331:forcewall if (this:check_casting(player, dobjstr, skill = $local.rpg.skills.(verb)) && valid(targ = this:check_live_target(player, dobjstr, skill, peaceful = 1))) this:spell(player, targ, skill, 0, peaceful, skill); endif . @verb #331:"look_self" this none this @program #331:look_self pass(@args); if (valid(this.mounted)) player:tell("Mounted at the tip of the ", this.name, " is a ", this.mounted.name, "."); endif . @verb #331:"enchant" none with this rxd @program #331:enchant if (this:check_casting(player, dobjstr, skill = $local.rpg.skills.(verb))) if (this:enchantment()) player:tell(this:titlec(), " is already enchanted."); else this:spell(player, this, skill, 0, 1); endif endif . @verb #331:"barkskin" none with this rxd @program #331:barkskin rpg = $local.rpg; if (this:check_casting(player, dobjstr, $local.rpg.skills.(verb))) "if ($math_utils:sum($list_utils:map_arg($math_utils, \"sum\", $list_utils:map_prop(rpg:get_doll(player).wearing, \"cover\"))))"; " player:tell(\"You'll have to remove what you're wearing first.\");"; "else"; for item in ($local.rpg:get_doll(player).schedule) if (item[2] in {"unslow", "unspeed"}) player:tell("Your altered metabolism prevents the spell from affecting you."); return; endif endfor this:spell(player, player, $local.rpg.skills.(verb), 0, 1); endif "endif"; "Hydros (#106189) - Fri May 27, 2005 - Removed the armour check. This is already done in $local.rpg.magic_db:barkskin."; . @verb #331:"biting_cloud" any with this rxd @program #331:biting_cloud if (this:check_casting(player, dobjstr, $local.rpg.skills.(verb)) && valid(targ = this:check_live_target(player, dobjstr, $local.rpg.skills.(verb)))) this:spell(player, targ, $local.rpg.skills.(verb)); endif . @verb #331:"claim" any with this rxd @program #331:claim if (this:check_casting(player, dobjstr, (rpg = $local.rpg).skills.(verb)) && valid(targ = this:check_object_target(player, dobjstr))) if (rpg.object_db:is_monster(targ)) rpg:playertell(player, "Sorry, but the LRPG prohibits slavery."); else doll = rpg:get_doll(player); claimed_by = targ:claimed_by(); claimed_objs = doll:claimed_objects(); if (((!valid(claimed_by)) && (length(claimed_objs) < doll.max_claims)) || (targ in claimed_objs)) rpg:playertell(player, "You don't need a spell to accomplish that."); elseif (is_player(targ.location) && (!$object_utils:connected(targ.location))) rpg:playertell(player, "Hold your magic! By edict of the great wizard, bystanders must not be molested."); else this:spell(player, targ, rpg.skills.(verb), 0, 1); endif endif endif . @verb #331:"unbark" none with this rxd @program #331:unbark rpg = $local.rpg; if (this:check_casting(player, dobjstr, rpg.skills.barkskin)) doll = rpg:get_doll(player); if (!(rpg.magic_db.bs_combat_effect in doll.magic_effects)) player:tell("While your skin may be tough and gnarly, it is not the result of magick. Perhaps you should consult a dermatologist."); else player:tell("You try to cast Girdling the Bark."); rpg:say_action(this:casting_msg(player, "unbark", player), player); data = doll.schedule[$list_utils:iassoc("unbark", doll.schedule, 2)]; doll:cancel(data); rpg.toady:call_verb(data[1], data[2], {doll, @data[4]}); doll:check_ins(15); endif endif . @verb #331:"title" this none this @program #331:title name = valid(this.mounted) ? this.mounted.name + "-tipped " | ""; return name + pass(@args); . @verb #331:"mount" any on this rxd @program #331:mount rpg = $local.rpg; if ($command_utils:object_match_failed(what = player:my_match_object(dobjstr), dobjstr)) elseif (what.location != player) rpg:playertell(player, "You have to be holding the ", what.name, " in order to mount it into ", this.name, "."); elseif (this.location != player) rpg:playertell(player, "Hard to do that without holding ", this.name, "."); elseif (!rpg.object_db:is_gem(what)) rpg:playertell(player, "That doesn't seem to be a likely candidate for mounting."); elseif (!valid(doll = rpg:get_doll(player))) rpg:playertell(player, "You haven't the foggiest notion how to accomplish that. Perhaps you should go play with the cows."); elseif (doll.paralyzed) if (typeof(doll.paralyzed) == STR) rpg:playertell(player, doll.paralyzed); else rpg:playertell(player, "Your'e paralyzed. Knock it off."); endif elseif (is_player(player) && (`idle_seconds(player) ! ANY => 500' > (2 * rpg.idle_threshold))) rpg:playertell(player, "You drop your ", what.name, "and lose it."); what:moveto(rpg.cemetery); elseif ($recycler:valid(this.mounted)) rpg:playertell(player, "You'll have to unmount the ", this.mounted.name, " first."); elseif (!doll:long_enough()) rpg:playertell(player, "You're trying to do too many things at once. Take a deep breath and try again."); elseif ((try_ = rpg.skills.gadget:resolve(player, 0)) < 1) rpg:playertell(player, "You fumble around for a bit, but can't seem to manage to get the ", what.name, " mounted on ", this.name, "."); else rpg:say_action(("%N deftly % " + what.name) + " upon the tip of %p %t.", player); what:moveto(this); this.mounted = what; doll.last_attack = time(); endif "Profane (#30788) - Sun Oct 26 14:11:34 1997 PST - Check for paralysis and idleness"; . @verb #331:"unmount" any from this rxd @program #331:unmount what = this:match(dobjstr); rpg = $local.rpg; if (this.location != player) rpg:playertell(player, "Hard to do that while you're not holding ", this.name, "."); elseif ($command_utils:object_match_failed(what, dobjstr)) elseif ((!valid(this.mounted)) || (what != this.mounted)) rpg:playertell(player, "That does not seem to be mounted in ", this.name, "."); elseif (!$recycler:valid(doll = rpg:get_doll(player))) rpg:playertell(player, "You haven't the slightest idea how to do that. Perhaps you should go play with the cows."); else this.mounted:moveto(player); this.mounted = $nothing; rpg:say_action("%N deftly % a %t from %p %i.", player, what); doll.last_attack = time(); endif "Irin Sat Oct 12 15:10:35 1996 PDT -- changed to match this.contents, rather than player.contents."; . @verb #331:"exitfunc" this none this @program #331:exitfunc {what} = args; if (!(rpg = $local.rpg):trusted_efunc()) return E_PERM; elseif (((!$recycler:valid(this.mounted)) || (this.mounted.location != this)) || (this.mounted == what)) this.mounted = $nothing; endif . @verb #331:"shatter" any with this rxd @program #331:shatter if (this:check_casting(player, dobjstr, (rpg = $local.rpg).skills.(verb)) && valid(target = this:check_object_target(player, dobjstr))) db = rpg.object_db; dude = target.location; doll = rpg:get_doll(dude); "if (is_player(dude) && (!(((!valid(doll)) || (dude in connected_players())) || ((idle_seconds(dude) > 180) && ((time() - doll.last_attack) > 180)))))"; if (is_player(dude) && (!valid(this:check_live_target(player, dude, rpg.skills.(verb), 0)))) return; elseif (rpg.magic_db.is_combat_effect in `doll:get_att("freeze_effects") ! E_INVIND => {}') player:tell("You'll have to shatter the shell of ice around ", dude.name, " first."); elseif (((!db:is_monster(target)) && ((db:is_money(target) || db:is_gem(target)) || db:is_metallic(target))) && (`typeof(target.condition) ! ANY' == NUM)) this:spell(player, target, rpg.skills.(verb)); elseif (`target:receive_shatter(target, rpg.skills.(verb)) ! E_VERBNF => 0') "... target handled the attack ..."; else player:tell("My God! ", target:titlec(), " seems to be immune to Terram magic!"); endif endif "Profane 31-MAR-97 1330PST -- no shatter stuff on disconnected players."; "Hydros (#106189) - Sun Apr 17, 2005 - Added :check_live_target line to handle new PKProtection effect, and because it should probably have this check anyway."; . @verb #331:"harden" any with this rxd @program #331:harden if (this:check_casting(player, dobjstr, $local.rpg.skills.(verb)) && valid(target = this:check_object_target(player, dobjstr))) if ((!`target.condition ! ANY => 0') || `target.wooden ! E_PROPNF, E_PERM => `target.leather ! E_PROPNF, E_PERM => 1'') player:tell("My God! ", target:titlec(), " seems to be immune to Terram magic!"); elseif (target.location != player) player:tell("You must hold ", target:title(), " to affect it."); else this:spell(player, target, $local.rpg.skills.(verb), 0, 1); endif endif . @verb #331:"hail" any with this rxd @program #331:hail if (this:check_casting(player, dobjstr, $local.rpg.skills.(verb)) && (targets = this:check_multiple_live_targets(player, dobjstr, $local.rpg.skills.(verb)))) this:spell(player, targets, $local.rpg.skills.(verb)); endif . @verb #331:"iceshell" any with this rxd @program #331:iceshell if (this:check_casting(player, dobjstr, skill = $local.rpg.skills.(verb)) && valid(targ = this:check_live_target(player, dobjstr, skill, peaceful = 0))) if ($local.rpg.magic_db.is_combat_effect in targ:get_att("freeze_effects")) player:tell(targ.character.name, " is already encased in ice."); else this:spell(player, targ, verb, 0, peaceful, skill); endif endif . @verb #331:"waterwhip" none with this rxd @program #331:waterwhip rpg = $local.rpg; if (this:check_casting(player, dobjstr, skill = rpg.skills.(verb))) doll = rpg:get_doll(player); generic = rpg.magic_db.(verb); for t in (generic:get_value("dispellers")) {who, when} = t; if (when < time()) generic:set_value("dispellers", setremove(generic:get_value("dispellers"), t)); elseif (who == player) return rpg:playertell(player, "You recently dispelled a waterwhip and the dessicating energies still swirl around you."); endif endfor whip = $list_utils:iassoc("unwhip", schedule = doll:get_att("schedule"), 2); if (whip && (schedule[whip][4][1].location == player)) player:tell("You already have one."); else this:spell(player, generic, verb, 0, 1, skill); endif endif . @verb #331:"acceptable" this none this @program #331:acceptable return $object_utils:isa(thing = args[1], $local.rpg.gem); . @verb #331:"conjure" any with this rxd @program #331:conjure magic = (rpg = $local.rpg).magic_db; spell = rpg.skills.(verb); if (this:check_casting(player, dobjstr, spell)) if ("submerged" in player.location:get_room_flags()) player:tell("You cannot conjure animals underwater!"); else animal = summoned = 0; for type in (magic.summonable_animals) if (animal) elseif ($sysobj:match(dobjstr, type)) animal = type in magic.summonable_animals; endif endfor for critter in (children(magic.summonable_animal)) if (critter:master() == player) summoned = summoned + 1; endif endfor if ((!animal) && dobjstr) player:tell("I don't think you can conjure a \"", dobjstr, "\"."); else this:spell(player, player.location, spell, -55 * summoned, 1, spell, animal); endif endif endif "Irin Fri Oct 18 16:41:25 1996 PDT -- One animal per person, _please_."; "Profane 2-SEP-97 1706PDT -- no conjure underwater."; . @verb #331:"summon" any with this rxd @program #331:summon "Copied from thin wand (#65144):summon by Griffen (#93228) Sat Sep 7 13:46:25 1996 PDT"; "...usage: summon with ..."; spell = $local.rpg.skills.(verb); if (this:check_casting(player, dobjstr, spell)) this:spell(player, player.location, spell, 0, 1, spell, dobjstr); endif "...Griffen (#93228), 6-11-96. Added..."; . @verb #331:"may_cast" this none this @program #331:may_cast "may_cast(doll, spell) => can we cast the spell?"; {doll, spell} = args; who = doll.character; if (is_player(who) && `$perm_utils:caller()[1]:gem_needed(doll, spell) ! ANY => 1') if (spell in this.gem_spells) if (valid(this.mounted) && (!index(this.mounted.name, "pearl"))) return 1; else who:tell(("You'll have to mount a gem on your " + this.name) + " to cast that spell."); return 0; endif elseif (spell in this.pearl_spells) if (valid(this.mounted) && index(this.mounted.name, "pearl")) return 1; else who:tell(("You'll have to mount a pearl on your " + this.name) + " to cast that spell."); return 0; endif endif endif return 1; . @verb #331:"pay_cost" this none this @program #331:pay_cost ":pay_cost(doll, spell, skill, div) => pay the cost of the casting."; rpg = $local.rpg; if ((caller == this) || (caller.owner in rpg.gms)) {doll, spell, skillobj, costdiv} = args; if (is_player(doll.character) && ((spell in this.gem_spells) || (spell in this.pearl_spells))) if (!$recycler:valid(mounted = this.mounted)) "Hmm, how'd they manage to cast the spell then? Oh well, we'll just skip the gem bit."; return pass(doll, spell, skillobj, costdiv); endif price = (skillobj.diff / (costdiv * 4)) + (length(children(parent(mounted))) / 375); tvalue = mounted:get_true_value(); tvalue = (typeof(tvalue) == NUM) ? tvalue | 0; mounted:set_true_value(tvalue - price); avalue = mounted:get_appraised_value(); if (avalue) mounted:set_appraised_value(max(((avalue - price) + random(20)) - random(20), 1)); endif if (this.mounted:get_true_value() < 1) rpg:say_action(("The " + this.mounted.name) + " mounted on %n's %t shatters into a thousand slivers!", this.location, this); this.mounted = $nothing; fork (rpg.gm_lag) if ($recycler:valid(mounted)) mounted:moveto(rpg.gem_dispenser); endif endfork endif endif pass(doll, spell, skillobj, costdiv); endif "Profane 30-NOV-96 1309PST - move this.mounted=$nothing outside of fork."; "Irin Sun Dec 1 18:45:19 1996 PST -- Changed this.mounted to mounted, inside the fork, so that gems _will_ shatter."; "Profane 7-DEC-96 1234PST -- removed obsolete reference to gem_focus_dispenser"; . @verb #331:"do_enchant" this none this @program #331:do_enchant ":do_enchant(power, end time) => Enchant the item."; if ($local.rpg:trusted(caller_perms())) {power, dur} = args; if (this.enchantment) this.enchantment[1] = max(power, this.enchantment[1]); this.enchantment[2] = max(this.enchantment[2] + (dur / 2), time() + dur); else this.enchantment = {power, time() + dur}; endif endif . @verb #331:"dam" this none this @program #331:dam return pass(@args) + (this:enchantment() / 10); . @verb #331:"con" this none this @program #331:con return max(1, pass(@args) - (this:enchantment() / 50)); "THX (#105941) - Tue Jan 9, 2001 - Made enchantment subtractive. It might actually help now."; . @verb #331:"enchantment" this none this @program #331:enchantment if (enc = this.enchantment) (rpg = $local.rpg):secure(); if (enc[2] < time()) if (valid(x = rpg:get_doll(this.location))) if ((x.body_areas == rpg.magic_db.barkskin_body_areas) && (this in x.wielding)) return enc[1]; endif name = (this.location.name + "'s ") + this:title(); else name = this:title(); endif rpg:say_action(name + " seems to flicker briefly.", this.location, this, this.location.location); this.enchantment = 0; return 0; else return enc[1]; endif endif return 0; "THX (#105941) - Wed Jul 12, 2000 - If the caster is barkskinned, let's let the enchantment stay!"; . @verb #331:"attack parry" this none this @program #331:attack return pass(@args) + (this:enchantment() / 15); . @verb #331:"set_mounted" this none this @program #331:set_mounted ":set_mounted(OBJ gem) => Sets the .mounted value, allowing non G_M code to change this on G_M owned objects. It is the coding GM's responsibility to make sure any already mounted gems are removed, and any unmounted gems are moved to the staff."; if ($local.rpg:trusted(caller_perms())) this.mounted = args[1]; endif . @verb #331:"acidrain" any with this rxd @program #331:acidrain if (this:check_casting(player, dobjstr, skill = $local.rpg.skills.(verb)) && valid(targ = this:check_live_target(player, dobjstr, skill))) storms = $local.rpg.magic_db:storms_active_in(player.location); if (!(targ.character in $list_utils:slice(storms, 2))) player:tell("There's no storm above ", targ.character.name, " to turn into acid."); elseif (targ.character == player) player:tell("Melting yourself with acid is not very comfortable. I don't advise it."); else this:spell(player, targ, skill, 0); endif endif . @verb #331:"appraise" any with this rxd @program #331:appraise skill = $local.rpg.skills.(verb); if (this:check_casting(player, dobjstr, skill) && valid(target = this:check_object_target(player, dobjstr))) if (target.location != player) player:tell("You have to hold something to use this spell on it."); elseif ($local.rpg.object_db:is_money(target)) player:tell("Um, just count it. You don't need a spell."); elseif (parent(target) != $local.rpg.gem) player:tell("The spell only works on gems, pal."); elseif (target:get_appraised_value()) player:tell("The ", target.name, " has already been appraised."); else this:spell(player, target, skill, 0, 1); endif endif . @verb #331:"hidden_verbs" this none this @program #331:hidden_verbs "Swiped from Staff:hidden_verbs by Dagard (#49807) Mon Dec 1 12:00:42 1997 PST"; {who} = args; prev = pass(who); staff = (rpg = $local.rpg).staff; if (valid(this.mounted)) prev = {@prev, {staff, "mount", {"any", "on top of/on/onto/upon", "this"}}}; pearl = index(this.mounted.name, "pearl"); gem = !pearl; else prev = {@prev, {staff, "unmount", {"any", "out of/from inside/from", "this"}}}; pearl = gem = 0; endif pearl || (prev = {@prev, {staff, "iceshell", {"any", "with/using", "this"}}}); pearl || (prev = {@prev, {staff, "waterwhip", {"none", "with/using", "this"}}}); pearl || (prev = {@prev, {staff, "acidrain", {"any", "with/using", "this"}}}); gem || (prev = {@prev, {staff, "shatter", {"any", "with/using", "this"}}}); gem || (prev = {@prev, {staff, "hail", {"any", "with/using", "this"}}}); gem || (prev = {@prev, {staff, "harden", {"any", "with/using", "this"}}}); gem || (prev = {@prev, {staff, "summon", {"any", "with/using", "this"}}}); gem || (prev = {@prev, {staff, "appraise", {"any", "with/using", "this"}}}); if (!this:enchantment()) prev = {@prev, {staff, "magicfist magic*_fist punch", {"any", "with/using", "this"}}}; prev = {@prev, {staff, "firebolt heat", {"any", "with/using", "this"}}}; endif return prev; "THX (#105941) - Wed Feb 16, 2000 - Added removal of pearl-or-gem requiring verbs if not mounted and added removal of verbs that require enchantment if no enchantment is present."; . @verb #331:"break" this none this @program #331:break (rpg = $local.rpg):secure(); mounted = this.mounted; loc = this.location; if (valid(mounted)) mounted:moveto(rpg.cemetery.turf[1]); endif "Moving to nothing is necessary 'cause otherwise it gets offed when the staff itself gets offed."; if ((typeof(pass(@args)) != ERR) && valid(mounted)) if (valid(rpg:get_doll(loc))) mounted:moveto(loc.location); rpg:say_action(("The " + mounted.name) + " from %n's %t tumbles to the ground.", loc); else mounted:moveto(loc); endif else "Ooops, error. move the gem back!"; `mounted:moveto(this) ! E_INVIND'; endif . @verb #331:"magicfist magic*_fist punch" any with this rxd @program #331:magicfist if (this:enchantment()) if (this:check_casting(player, dobjstr, (rpg = $local.rpg).skills.magic_fist) && valid(target = this:check_live_target(player, dobjstr, rpg.skills.magic_fist))) this:spell(player, target, rpg.skills.magic_fist); endif else player:tell((random(3) == 1) ? ("The " + this.name) + " that you are holding might be a focus for that spell if you enchanted it first ..." | "You need to be wielding the proper focus."); endif . @verb #331:"firebolt heat" any with this rxd @program #331:firebolt if (this:enchantment() < 99) player:tell("You try to cast the ", verb, " spell, but realize you lack the proper focus."); elseif (this:check_casting(player, dobjstr, skill = $local.rpg.skills.(verb)) && valid(targ = this:check_live_target(player, dobjstr, skill, peaceful = 0))) this:spell(player, targ, skill, 0); endif . @verb #331:"viper_bite" none with this rxd @program #331:viper_bite rpg = $local.rpg; if (this:check_casting(player, dobjstr, skill = rpg.skills.(verb))) "if (rpg:get_doll(player).natural_weapons != rpg.doll.natural_weapons)"; " player:tell(\"Hmm, you can't get the spell to work.\");"; "else"; this:spell(player, player, skill); "endif"; endif . @verb #331:"unviper" none with this rxd @program #331:unviper rpg = $local.rpg; if (this:check_casting(player, dobj, rpg.skills.viper_bite)) "if (!(rpg.magic_db.viper_bite in (doll = rpg:get_doll(player)).natural_weapons))"; if (!(rpg.magic_db.viper_bite in rpg.object_db.natweap_db:get_all_natweaps(doll = rpg:get_doll(player)))) player:tell("You don't have any dental problems that can be fixed by magick."); else this:spell(player, doll, "unviper", 0, 0, rpg.skills.viper_bite); endif endif . @verb #331:"nickname" this none this @program #331:nickname {nickname} = args; if (children(this) || this.unique) elseif ((this.owner == $local.rpg.owner) && ($code_utils:verb_loc() == parent(this))) $local.rpg:secure(); this.name = nickname; this.aliases = setadd(this.aliases, nickname); endif . @verb #331:"stoneflesh" none with this rxd @program #331:stoneflesh rpg = $local.rpg; if (this:check_casting(player, dobjstr, skill = rpg.skills.harden)) this:spell(player, player, verb, 0, 1, skill); endif . @verb #331:"parch" any with this rxd @program #331:parch if (this:check_casting(player, dobjstr, skill = $local.rpg.skills.(verb)) && valid(targ = this:check_live_target(player, dobjstr, skill, peaceful = 0))) this:spell(player, targ, verb, 0, peaceful, skill); endif . @verb #331:"unstone" none with this rxd @program #331:unstone if (this:check_casting(player, player.location, $local.rpg.skills.harden)) this:spell(player, $local.rpg:get_doll(player), "unstone", 0, 1, $local.rpg.skills.harden); endif . @verb #331:"fortify" any with this rxd @program #331:fortify if (this:enchantment() < 111) player:tell("You try to cast the ", verb, " spell, but realize you lack the proper focus. Your ", this.name, " may not be magickal enough."); elseif (this:check_casting(player, dobjstr, $local.rpg.skills.harden) && valid(target = this:check_object_target(player, dobjstr))) if ((!`target.condition ! ANY => 0') || `!target.wooden ! E_PROPNF, E_PERM => `!target.leather ! E_PROPNF, E_PERM => 1'') player:tell("My God! ", target:titlec(), " seems to be immune to Herbam magic!"); elseif (target.location != player) player:tell("You must hold ", target:title(), " to affect it."); elseif ((doll = (rpg = $local.rpg):get_doll(player)):read_misc_note("Knows_Fortify") == E_PROPNF) player:tell("You lack the knowledge of how to cast this spell."); else this:spell(player, target, verb, doll.herbam, 1, rpg.skills.herbam); endif endif "dalton (#116601) - Wed Jul 9, 2003 - Copied from Hydros' (#106189) prototype "; . "***finished***