/* Makes the corpse twitch a bit, then ressurects it as a vampire. * * When the corpse is ressurected it will drop all its inventory * * to the floor and clone its own clothing. * * * * I wouldn't try applying this effect to anything other than a * * corpse. Bad Things would happen. * * * * Arguements are: ({ the name of the creature killed, * * player->gender(), * * player->level(), * * 0 }) * * See also "vampirebite_effect.c" and "corpse_vampire.c" * * * * Lemming, 03/07/2000 */ #include <effect.h> /** @ignore yes */ string query_classification() { return "corpse.transformation.vampire"; } /** @ignore yes */ void beginning( object corpse, mixed *args ) { corpse->add_extra_look( this_object() ); corpse->submit_ee( "corpse_action", 10, EE_CONTINUOUS ); } /* beginning() */ /** @ignore yes */ mixed *merge_effect( object corpse, mixed *old_args, mixed *new_args ) { return new_args; } /* merge_effect() */ /** @ignore yes */ void end( object corpse, mixed *args ) { object ob, vampire; tell_room( environment(corpse), "The corpse's eyes snap open, and a " "vicious grin spreads across its face. It rises upwards without " "bothering to push away from the ground, standing upright, its eyes " "flashing. You notice that the fangs of the corpse look considerably " "longer than they used to.\n" ); vampire = clone_object( "/d/ram/chars/Uberwald/corpse_vampire" ); vampire->setup_vampire( args[0], args[1] ); vampire->move( environment( corpse ), vampire->the_short() + " glances " "down at " + vampire->query_objective() + "self and grimaces. " + capitalize( vampire->query_pronoun() ) + " waves one arm and is " "instantly clothed in more fitting garments.\n" ); vampire->do_command( "grin viciously" ); corpse->clear_armours(); foreach( ob in all_inventory( corpse ) ) { ob->move( environment( corpse ) ); } corpse->remove_extra_look( this_object() ); corpse->move( "/room/rubbish" ); } /* end() */ /** @ignore yes */ void corpse_action( object corpse, mixed *args ) { int rate; object *stuff; stuff = all_inventory (corpse); rate = (int) (corpse->query_decay()); if( sizeof( stuff ) ) { tell_room( environment(corpse), corpse->one_short() + " twitches " "slightly.\n" ); if (rate < 20) { tell_room( environment(corpse), corpse->one_short() + " seems to " "arch its back, and a faint gasp comes from its mouth.\n" ); //tell_creator("archana","Yes I'm being called "); corpse->submit_ee( 0, 1, EE_REMOVE ); } return; } switch( args[3] ) { case 0 : tell_room( environment(corpse), corpse->one_short() + " twitches " "slightly.\n" ); break; case 1 : tell_room( environment(corpse), corpse->one_short() + " jerks " "violently, its limbs quivering.\n" ); break; case 2 : tell_room( environment(corpse), corpse->one_short() + " seems to " "arch its back, and a faint gasp comes from its mouth.\n" ); //tell_creator("archana","Yes I'm being called "); corpse->submit_ee( 0, 1, EE_REMOVE ); break; } args[3]++; } /* corpse_action() */ /** @ignore yes */ string extra_look( object corpse, mixed *args ) { return "It seems to be twitching slightly, almost as if it's still " "alive. You probably shouldn't get too close.\n"; } /* extra_look() */ /** @ignore yes */ int query_theft_command() { return -1; }