/*** Pacify shadow ***/ /*** By Wonderflug ***/ #include "tweaks.h" object my_player; void destruct_pacify_shadow() { destruct(this_object()); } void setup_shadow(object ob) { shadow(ob,1); my_player = ob; } int check_duration() { if ( my_player->query_dead() ) { my_player->remove_extra_look(this_object()); return 1; } if ( !(my_player->query_timed_property("pacify_on")) ) { tell_object(my_player, "That feeling of goodness surrounding you disappears, and you" " feel violent.\n"); tell_room(environment(my_player), my_player->query_cap_name()+ " gets a nasty gleam in "+my_player->query_possessive()+ " eye, and clenches "+my_player->query_possessive()+ " fists " "slowly.\n", my_player); my_player->remove_extra_look(this_object()); return 1; } else return 0; } int move( mixed dest, mixed messout, mixed messin ) { if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return my_player->move(dest, messout, messin ); } int adjust_hp(int i, object hp_remover) { int j; if ( !previous_object() ) return my_player->adjust_hp(i, hp_remover); if ( interactive( previous_object() ) ) j = 1; else if(environment(previous_object()) && interactive(environment(previous_object())) ) j = 1; if ( j ) { tell_object(previous_object(), "You cannot bring yourself to harm a " "pacified person.\n"); tell_object(my_player, "Being pacified, you take no damage from a " "player.\n"); previous_object()->stop_fight(my_player); my_player->stop_fight(previous_object()); if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return my_player->query_hp(); } if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return my_player->adjust_hp(i, hp_remover); } int query_pacify_spell() { return 1; } object* query_weapons_wielded() { return ({ this_object() }); } int weapon_attack( object him, object me ) { object* ob; int i, dam; if (interactive(him)) { tell_object(me, "You feel too peaceful to attack and don't.\n"); tell_room(environment(me), me->query_cap_name()+" cowers and doesn't " "attack.\n", me); if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return 0; } ob = my_player->query_weapons_wielded(); if (!sizeof(ob)) { if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return my_player->unarmed_attack(him, me); } for (i=0;i<sizeof(ob);i++) dam += ob[i]->weapon_attack(him,me); if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return dam; } int attack_by(object ob) { if (interactive(ob)) { tell_object(ob, my_player->query_cap_name()+" seems far too harmless " "to attack right now. You just can't \nbring yourself to do it.\n"); ob->stop_fight(my_player); my_player->stop_fight(ob); } if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return 0; } int attack_ob(object ob) { if ( interactive(ob) ) { tell_object(my_player, "You don't feel like attacking anything " "right now. Fighting just seems so pointless. Why can't we all " "just be friends?\n"); ob->stop_fight(my_player); my_player->stop_fight(ob); if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return 0; } if ( check_duration() ) call_out("destruct_pacify_shadow",0,0); return my_player->attack_ob(ob); } /* Shouldn't need this with the nocast in place but anyway */ int cast() { tell_object(my_player, "You don't feel like casting spells.. why not go " "sniff a flower instead?\n"); if (check_duration()) call_out("destruct_pacify_shadow",0,0); return 1; } /* for the player's desc. */ string extra_look() { return "Looks incredibly harmless, chasing butterflys.\n"; } /* for an eventual dispel magic spell */ /* We DON'T want this yet. void dispell_me() { tell_object(my_player, "You feel your mean streak come back as the Pacify spell upon you " "is destroyed.\n"); tell_room(environment(my_player), my_player->query_cap_name()+ " gets a mean gleam in "+my_player->query_possessive()+ " eye " "as the magic is destroyed.\n", my_player); my_player->remove_extra_look(this_object()); my_player->remove_timed_property("noguild"); my_player->remove_timed_property("nocast"); destruct(this_object()); } */