/* basis for a summoned monster */ inherit "inherit/monster"; inherit "inherit/timer"; object master; object query_master() { return master; } void set_master(object m) { master = m; } string short(status wiz) { return (master ? (string)master->query_name() +"'s " : "") + ::short(wiz); } void heart_beat() { object attack; ::heart_beat(); if(!master) { time_out(); return; } attack = (object)master->query_primary_attack(); if(attack == this_object()) { time_out(); return; } if(attack) { if(attack != query_primary_attack()) { add_secondary_attacker(attack); set_primary_attack(attack); } if((object)attack->query_primary_attack() == this_object()) { attack->add_secondary_attacker(master); attack->set_primary_attack(master); } } if(!attack) { if(attack = query_primary_attack()) { tell_room(environment(),query_name() +" stops fighting.\n"); stop_fight(attack); attack->stop_fight(this_object()); } set_heart_beat(1); } } status cast_spell(object caster,object target,object prev,int level) { master = caster; adj_time(level * 30); set_heart_beat(1); if(this_object()->id("summoned")) tell_room(environment(),"The "+ query_name() +" arrives in a flurry.\n"); else if(this_object()->id("animated")) tell_room(environment(),"The "+ query_name() +" starts to move!\n"); else if(this_object()->id("conjured")) tell_room(environment(),"The "+ query_name() + " appears in a flash of light.\n"); else tell_room(environment(),query_name() +" arrives\n"); return 1; } void time_out() { if(this_object()->id("summoned")) tell_room(environment(),query_name() +" flees...\n"); else if(this_object()->id("animated")) tell_room(environment(),query_name() +" crumbles to dust!\n"); else if(this_object()->id("conjured")) tell_room(environment(),query_name() +" disappears...\n"); else tell_room(environment(),query_name() +" fades away...\n"); ::time_out(); } status dispel_magic() { time_out(); } status monster_died() { object corpse; remove_call_out("time_out"); if((corpse = present("corpse", environment()))) destruct(corpse); tell_room(environment(),"The corpse disappears.\n"); } /* Native Mode Move */ #include <move.h>