/** Balefire object for Balefire spell by Malik (mage decimation) **/ inherit "/std/object.c"; #define ROUNDS 5 int damage, round, hb; object target; void setup_balefire(int num, object ob){ damage = num; target = ob; round = 0; target->add_property("BALEFIRE_ON",damage); reset_drop(); reset_get(); set_heart_beat(1); } /* setup_balefire() */ void destruct_balefire(){ if(target) target->remove_property("BALEFIRE_ON"); destruct(this_object()); } void init(){ ::init(); if(!target && this_player()){ if(this_player()->query_property("BALEFIRE_ON")){ target = this_player(); setup_balefire(target->query_property("BALEFIRE_ON"),target); } } } /* init() */ void heart_beat(){ int dam; if(!target){ destruct_balefire(); return; } hb++; if(hb < 2 && round != 0) return; hb = 0; if(round == ROUNDS || target->query_dead() || environment(this_object()) != target){ destruct_balefire(); return; } dam = damage; tell_object(target,"You scream in agony as your flesh drips burning " "from your shriveling body.\n"); tell_room(environment(target),target->query_cap_name()+ " screams in agony as "+target->query_possessive()+ " burning flesh liquifies and drips from " +target->query_possessive()+" withering body.\n",target); dam /= round + 1; if(dam < 20) dam = 20; target->adjust_hp(-dam); round++; } /* heart_beat() */