// File : /cmds/xtra/_halt.c // Creator : Watcher@TMI (04/04/93) // // This command allows a wizard to halt the battle // of various object depending on input. #include <mudlib.h> inherit DAEMON ; #define SYNTAX "Syntax: halt [object | all]\n" int cmd_halt(string str) { mixed *attackers; object who, whoenv; int loop; if(!str || str == "" || str == "me") str = (string)this_player()->query("name"); str = lower_case( str ); // If a total end of battle is requested ... stop all battles // presently active within this room. if(str == "all" || str == "here" || str == "env") { // Get all objects in the user's environment. attackers = all_inventory(environment(this_player())); // Loop through and end all battles within the room. for(loop=0; loop<sizeof(attackers); loop++) attackers[loop]->cease_all_attacks(); write("Halt: You end the battle.\n"); tell_room(environment(this_player()), "There is a flash of lightning as " + (string)this_player()->query("cap_name") + " ends the battle.\n", ({ this_player() })); return 1; } // Find the requested object within the user's environment. whoenv = environment(this_player()); if (!whoenv) { notify_fail("Who are you fighting in the void?!\n"); return 0; } who = present(str, whoenv); if(str == (string)this_player()->query("name")) who = this_player(); // If the requested user isn't here ... tell em so. if(!who || !living(who)) { write("Halt: No such living object is here.\n"); return 1; } // Confirm the requested object is actually in a battle. if(!who->query_attacker()) { if(this_player() == who) write("Halt: You are not presently in a battle.\n"); else write("Halt: That object is not presently in a battle.\n"); return 1; } // Get a list of all the object's attackers. attackers = who->query_attackers(); // Loop through and remove the object's id from their attack array. for(loop=0; loop<sizeof(attackers); loop++) attackers[loop]->remove_attacker(this_player()); // And stop the specified object's attacks. who->cease_all_attacks(); if(who == this_player()) write("Halt: You halt your battle.\n"); else write("Halt: You halt " + capitalize(str) + "'s battle.\n"); tell_room(environment(this_player()), "There is a flash of lightning as " + (string)this_player()->query("cap_name") + " ends " + possessive((string)this_player()->query("gender")) + " battle.\n", ({ this_player() })); return 1; } int help() { write( SYNTAX + "\n" + "This command allows a wizard to end their own battle, or any present\n"+ "living object's battles by using the object's name as an argument.\n" + "All battles can be ended within the room by using \"halt all\".\n"); return 1; }