"A dump of #331 on Sun Dec 17 13:46:17 1995 PST @create #82 named staff:staff,weapon @prop #331."db" #328 rc ;;#331.("osheathe") = "puts away" ;;#331.("sheathe") = "put away" ;;#331.("length") = 30 ;;#331.("parry") = 20 ;;#331.("attack") = 10 ;;#331.("pen") = 35 ;;#331.("dam") = 8 ;;#331.("skill") = #7144 ;;#331.("hands") = 2 ;;#331.("encumbrance") = 4 ;;#331.("condition") = 100 ;;#331.("odrop_failed_msg") = "% to drop %t but fails!" ;;#331.("odrop_succeeded_msg") = "% %t." ;;#331.("otake_succeeded_msg") = "% up %t." ;;#331.("key") = 0 ;;#331.("aliases") = {"staff", "weapon"} ;;#331.("description") = "A long, straight branch trimmed from a sapient pear tree." ;;#331.("object_size") = {8542, 819192237} @verb #331:"firebolt" any with this rxd @program #331:firebolt if ((#46:get_doll(dobj) == #-1) || (dobj == player)) player:tell("That isn't a sensible target for a firebolt."); else this:spell(player, dobj, #6275); endif . @verb #331:"spell" this none this @program #331:spell rpg = $local.rpg; if (!rpg:trust()) return E_PERM; endif by = args[1]; target = args[2]; spell = args[3]; mod = (length(args) > 3) ? args[4] | 0; area = by.location; if (this.location != by) by:tell("You don't have the ", this.name); return; elseif (((target < #0) || (target.location != by.location)) && (target != by.location)) by:tell("I can't see ", dobjstr, " here."); return; elseif (((target != area) && (!valid(rpg:get_doll(target)))) || (is_player(target) && (!(target in connected_players())))) by:tell("Hold your magic! By the edict of the great wizard, bystanders must not be molested."); return; else if (!valid(doll = rpg:get_doll(by))) by:tell("You don't know how to cast spells -- perhaps the Bovine Illuminati could help."); return; else if (doll:long_enough()) doll.last_attack = time(); else doll.character:tell(this.name, " seems to fizzle, as tho it hadn't had enough time to gather magickal energies to itself."); return; endif if (doll.(spell.aliases[1]) <= 0) by:tell("You don't know that spell."); return; elseif (!(this in doll.wielding)) by:tell("You must wield the ", this.name, " first."); return; endif endif endif by:tell("You try to cast ", spell.name, "."); area:announce_all_but({by}, ((by.name + " waves ") + by.pp) + " arms and mutters weird syllables."); qual = spell:resolve(by, (-spell.diff) + mod); if (qual <= 0) area:announce_all("Nothing happens."); if (qual < -50) by:tell("Disturbed demons buffet your mind. You feel like your soul is being put through the wringer."); doll:check_ins(spell.sane); else doll:check_ins(spell.sane / 3); endif else if (rpg:trusted_verb(area, "magic_effect")) if (typeof(effect = area:magic_effect(doll, qual, spell, target)) != NUM) return effect; else if (effect && (((time() - doll.last_action) > 10) || (random(20) == 1))) by:tell(area.name, " seems to affect the flow of mystical energies."); endif qual = qual - effect; endif endif if (qual > 0) this.db:(spell.aliases[1])(doll, rpg:get_doll(target), qual, spell); endif doll:check_ins(spell.sane); endif doll:invite(spell.slow + doll.slowness, {2}); "Profane 4-MAR-95 13:26EST -- Modified so a non-numeric room :magic_effect terminates a spell."; . @verb #331:"slow" any with this rxd @program #331:slow if ((#46:get_doll(dobj) == #-1) || (dobj == player)) player:tell("That is not sensible target for a slow spell."); else this:spell(player, dobj, #6564); endif . @verb #331:"heal" any with this rxd @program #331:heal if ($command_utils:object_match_failed(dobj, dobjstr)) elseif (dobj.location != player.location) player:tell("Bit hard to lay on hands from here, hotshot."); elseif ((doll = #46:get_doll(dobj)) == #-1) player:tell(dobj.name, " hardly seems worth the bother of healing to you."); elseif (doll:get_att("inj") <= 0) player:tell(dobj.name, " is uninjured."); else this:spell(player, dobj, #32773); endif . @verb #331:"storm" none from this rxd @program #331:storm this:spell(player, player.location, #9097); . @verb #331:"recall" any with this rxd @program #331:recall dobj = dobjstr ? player:my_match_object(dobjstr) | player; if ($command_utils:object_match_failed(dobj, dobjstr)) "..."; elseif (dobj.location != player.location) player:tell("You can't even see ", dobj:title(), " from here."); elseif ((doll = $local.rpg:get_doll(dobj)) == $nothing) player:tell("My God! ", dobj:title(), " seems to be immune to Illuminati magic."); else this:spell(player, dobj, $local.rpg.skills.recall, (dobj != player) ? is_player(dobj) ? doll.wil * 3 | 100 | 0); endif . @verb #331:"wall(old)" any with this @program #331:wall(old) dobj = dobjstr ? player:my_match_object(dobjstr) | player; if ((player != caller) && (!$local.rpg:trusted(caller_perms()))) return E_PERM; elseif ($command_utils:object_match_failed(dobj, dobjstr)) "..."; elseif (dobj.location != player.location) player:tell("You can't even see ", dobj:title(), " from here."); elseif ((doll = $local.rpg:get_doll(dobj)) == $nothing) player:tell("My God! ", dobj:title(), " seems to be immune to Illuminati magic."); else player:tell("You see the image of Quinn hammering at some odd mass of tangled machinery. He looks at you and cringes. \"I'm working on it already. Piss off!\" He then winks amiably and returns to work. The image fades."); return "E_NOT_DONE_YET"; this:spell(player, dobj, $local.rpg.skills.forcewall, $list_utils:count(playe r, this.db.wallers) * 10); endif . @verb #331:"wall" any with this rxd @program #331:wall "wall with staff"; "wall with staff"; ""; "The first command encloses the caster in a wall of force, which acts as a type of magic armour. The second encloses the given character in same."; "The caster must hold the wall for it to stay 'solid'; making spell skill and fatigue checks each time it takes an attack."; RPG = $local.rpg; dobj = dobjstr ? player:my_match_object(dobjstr) | player; if ((player != caller) && (!RPG:trusted(caller_perms()))) return E_PERM; elseif ($command_utils:object_match_failed(dobj, dobjstr)) "..."; elseif (dobj.location != player.location) player:tell("You can't see ", dobj:title(), " from here."); elseif ((doll = RPG:get_doll(dobj)) == $nothing) player:tell("My God! ", dobj:title(), " seems to be immune to Illuminati magic."); else this:spell(player, dobj, RPG.skills.forcewall, 10); endif . @verb #331:"unwall" any with this rxd @program #331:unwall "unwall with staff"; ""; "If you were the caster of the wall around the given creature, this will bring that wall down."; RPG = $local.rpg; dobj = dobjstr ? player:my_match_object(dobjstr) | player; if ((player != caller) && (!RPG:trusted(caller_perms()))) return E_PERM; elseif ($command_utils:object_match_failed(dobj, dobjstr)) "..."; elseif (dobj.location != player.location) player:tell("You can't see ", dobj:title(), " from here."); elseif ((doll = RPG:get_doll(dobj)) == $nothing) player:tell("My God! ", dobj:title(), " seems to be immune to Illuminati magic."); elseif (!(info = doll:read_misc_note("force_wall"))) player:tell("There is no wall of force around ", dobj.po, "."); elseif (valid(mage_doll = info[1]) && (parent(mage_doll) == RPG.doll)) if (mage_doll.character != player) player:tell("You didn't cast that wall around ", dobj.name, "! You can't just wave your hands and make it go away."); else this.db:unwall(doll, @info); endif else player:tell("The original caster of that wall is no more, allowing you to easily dispel the magic."); this.db:unwall(doll, @info); endif . "***finished***