/*** PACIFY ***/ /*** By Wonderflug ***/ #include "tweaks.h" #define PACIFY_DURATION_BONUS 1 #define PACIFY_DURATION_BASE 50 #define PACIFY_DURATION_LEVELX 2 #define PACIFY_SHADOW "/std/spells/cleric/pacify_sh.c" #define OMIQ_HAND "/global/omiq" inherit "/std/spells/base.c"; void setup() { set_spell_name("Pacify"); set_spell_level(5); set_sphere("plant"); set_target_type("one"); set_range(0); set_help_desc("This spell pacifies the target, and causes the target to " "radiate an aura of good-will, so that no other players may " "attack him/her. All fights with the target are stopped, and " "none may be started either by the target or another player " "until the spell wears off. NPC combat will still go on with the " "target, however, the target will be unable to cast spells or " "use guild commands, and must rely on normal weapon combat. " "The duration for this spell is long, and hokemj priests get a bonus " "to the duration.\nThis spell will (somewhat) protect a " "newbie from being pk'd, and stop a pk'er from pk'ing."); set_gp_cost(10); set_casting_time(1); set_rounds( ({"round2"}) ); } int round1(object caster, mixed target, mixed out_range, int time, int quiet) { tell_room(environment(caster), "A feeling of peacefulness and serenity " "fills the area.\n", ({ }) ); return 0; } int round2(object caster, mixed target, mixed out_range, int time, int quiet) { int duration, level; object* ob; object* atts_list; object* call_outed; object shad; int i; if(caster->query_guild_name() == "paladin" && target == caster) { tell_object(caster,"Craven coward, thou shalt NOT!\n"); return -1; } if(OMIQ_HAND->flag_in_progress()) { tell_object(caster,"Not during an omiq, sorry.\n"); return -1; } if ( wrong_alignment(caster) ) { punish_align(caster); return 0; } if ( !target || !interactive(target) ) { tell_object(caster,"There is no player of that name here.\n"); return -1; } /* Taniwha 1997, allow self as target if ( target == caster ) { tell_object(caster,"You may not cast this spell on yourself.\n"); return -1; } */ if ( target->query_hold_spell() || target->query_pacify_spell() ) { tell_object(caster,"Your target has some enchantment " "already that disrupts your spell.\n"); return -1; } if ( target->query_time_spell() ) target->dispell_time_spell(); level = (int)caster->query_level(); duration = 0; if ( (string)caster->query_guild_name() == "hokemj" ) duration = level*PACIFY_DURATION_BONUS; duration += PACIFY_DURATION_BASE+(level*PACIFY_DURATION_LEVELX); if ( !quiet ) { tell_room(environment(caster), caster->query_cap_name()+ " chants, 'aztak pacifus'.\n", caster); tell_object(caster, "You chant, 'aztak pacifus'.\n"); } tell_object(caster, "You pacify "+target->query_cap_name()+".\n"); tell_object(target, "You feel the violence drain out of you, leaving " "a feeling of utter peace \nand calm.\n"); tell_room(environment(caster), caster->query_cap_name()+ " finishes a spell with a gesture at "+target->query_cap_name()+ ", and "+target->query_pronoun()+" gets a look of sublime peace " "on "+target->query_possessive()+" face.\n", ({caster, target}) ); target->add_timed_property("pacify_on", 1, duration); target->add_timed_property("noguild", 1, duration); target->add_timed_property("nocast", 1, duration); target->add_timed_property("nosteal",1,duration); shad = clone_object(PACIFY_SHADOW); shad->setup_shadow(target); target->add_extra_look(shad); atts_list = target->query_attacker_list(); for (i=0;i<sizeof(atts_list);i++) { target->stop_fight(atts_list[i]); atts_list[i]->stop_fight(target); } call_outed = target->query_call_outed(); for (i=0;i<sizeof(call_outed);i++) { target->stop_fight(call_outed[i]); call_outed[i]->stop_fight(target); } return 0; }