/* /daemon/war.c * From Nightmare LPMud * A daemon to manage who can kill whom * Created by Descartes of Borg 961117 * Version: %A% * Last modified: %D% */ #include <lib.h> #include <war.h> inherit LIB_DAEMON; #if 0 private int LastWar = 0; private class war War = 0; static void create() { daemon::create(); SetNoClean(1); } varargs int GetAtWar(object agent, object target) { string name; if( !War ) { return 0; } if( !agent ) { return 1; } name = agent->GetKeyName(); /* * This is why classes suck. * * if( member_array(name, War->aggressor->members) == -1 ) { * if( member_array(name, War->enemy->members) == -1 ) { * return 0; * } * } */ if( !target ) { return 1; } name = target->GetKeyName(); /* * This is why classes suck. * * if( member_array(name, War->aggressor->members) == -1 ) { * if( member_array(name, War->enemy->members) == -1 ) { * return 0; * } * } */ return 1; } mixed eventDeclareWar(object who, string victim, string reason) { if( GetAtWar() ) { return "There is already a war raging between " + item_list(map(GetEnemies(), (: capitalize :))) + "."; } if( !leaderp(who) ) { return "You do not have the power to declare war."; } if( time() - WAR_INTERVAL < LastWar ) { return "Let the dust settle from the last war!"; } obs = filter(users(), function(object ob, string victim) { if( !leaderp(ob) ) { return 0; } return ob->ClassMember(victim); }, victim); obs -= ({ who }); if( !sizeof(obs) ) { return "The enemy must have a leader online for a declaration of war."; } War = new(class war); War->start = time(); War->reason = reason; War->aggressor = new(class team); War->aggressor->name = who->GetClass(); // multi-class??? War->aggressor->leader = who->GetKeyName(); War->aggressor->points = 0; War->aggressor->war_chest = 0; War->aggressor->members = ({ who->GetKeyName() }); War->enemy = new(class team); War->enemy->name = victim; War->enemy->leader = enemy->GetKeyName(); War->enemy->points = 0; War->enemy->war_chest = 0; War->enemy->members = ({ enemy->GetKeyName() }); users()->eventPrint("%^BOLD%^GREEN%^" + who->GetCapName() + " has declared war on " + pluralize(victim) + "!"); } #endif #endif