// This is a tool for me, Cratylus, by me, Cratylus. It's // here because as lib maintainer I reserve the privilege to add // things for me that are to my convenience. You must never, ever // use this, and if you do, I do not want to hear about the // problems it caused. #include #include #include #include inherit LIB_ITEM; static int numstress = 1; string savefile = save_file(SAVE_WEIRDER); string *lib_dirs = ({ "/lib/comp","/lib/daemons","/lib/events/", "/lib/lvs", "/lib/lvs", "/lib/props", "/lib/std", "/lib/user", "/lib/virtual", "/lib","/secure/lib","/secure/lib/net" }); string *daemon_dirs = ({ "/daemon", "/secure/daemon" }); string *cmd_dirs = ({ "/cmds/admins", "/cmds/builders", "/cmds/common", "/cmds/creators", "/cmds/hm", "/cmds/players", "/secure/cmds/admins", "/secure/cmds/builders", "/secure/cmds/common", "/secure/cmds/creators", "/secure/cmds/hm", "/secure/cmds/players" }); string *verb_dirs = ({ "/secure/verbs/creators", "/verbs/admins", "/verbs/builders", "/verbs/common", "/verbs/creators", "/verbs/items", "/verbs/players", "/verbs/rooms", "/verbs/spells", "/verbs/undead" }); string *npc_dirs = ({ "/domains/default/npc", "/domains/town/npc", "/domains/campus/npc", "/domains/cave/npc" }); string *room_dirs = ({ "/domains/campus/room", "/domains/default/room", "/domains/town/room", "/domains/Ylsrim/room", "/domains/Praxis", "/domains/cave/room", "/secure/room", "/domains/town/virtual/sub", "/domains/town/virtual/sky", "/domains/town/virtual/surface", "/domains/town/virtual/bottom", "/domains/town/virtual/forest", "/domains/town/space" }); string *obj_dirs = ({ "/domains/campus/obj", "/domains/default/obj", "/domains/town/obj", "/domains/Ylsrim/obj", "/obj", "/std", "/secure/obj", "/shadows", "/secure/modules", "/domains/cave/obj" }); string *weap_dirs = ({ "/domains/campus/weap", "/domains/default/weap", "/domains/town/weap", "/domains/Ylsrim/weap", "/domains/cave/weap" }); string *armor_dirs = ({ "/domains/campus/armor", "/domains/default/armor", "/domains/town/armor", "/domains/Ylsrim/armor", "/domains/cave/armor" }); string *meals_dirs = ({ "/domains/campus/meals", "/domains/default/meals", "/domains/town/meals", "/domains/Ylsrim/meals", "/domains/cave/meals" }); string *doors_dirs = ({ "/domains/campus/doors", "/domains/default/doors", "/domains/town/doors", "/domains/Ylsrim/doors", "/domains/cave/doors" }); string *powers_dirs = ({ "/powers/spells", "/powers/psionics", "/powers/feats", "/powers/trades" }); string *rooms = ({}); string *obs = ({}); string *npcs = ({}); string *weapons = ({}); string *armors = ({}); string *meals = ({}); string *doors = ({}); string *libs = ({}); string *daemons = ({}); string *cmds = ({}); string *verbs = ({}); string *powers = ({}); int nomore, yeik = 0; string *exceptions = ({}); static private string gstr; void validate(){ if(!this_player() || !archp(this_player())){ error("No."); } } int yeik(string str){ int cout, err; object *blanks; validate(); err=catch(blanks=objects((: base_name($1)==LIB_BLANK :))[0..63000]); if(str){ cout = call_out("yeik",1,"on"); nomore = 0; yeik = 1; if(err){ } if(!environment() || !archp(this_player())){ error("no!"); } for(int i = 400;i>0;i--){ call_out("yeik",1,"on"); new(LIB_BLANK); } } else { if(!nomore) cout = call_out("yeik",2); yeik = 0; if(sizeof(blanks)){ foreach(object blank in blanks){ destruct(blank); } } else nomore = 1; } return cout; } void create(){ ::create(); exceptions = ({ "monty.c","charles.c","charly.c","tree.c","lars.c", "wraith.c", "archwraith.c","drone2.c","beggar.c","drone.c"}); SetKeyName("weirding module"); SetId( ({"module", "box", "weirder"}) ); SetAdjectives( ({"small","featureless","black"}) ); SetShort("a small black box"); SetLong("A small, featureless black box. Whatever it is, " "you are somehow deeply certain it is not your business, " "and you must leave it alone."); SetMass(20); SetBaseCost("silver",10); SetVendorType(VT_TREASURE); } void init(){ ::init(); add_action("stressload","stressload"); add_action("loadrooms","loadrooms"); add_action("loadobs","loadobs"); add_action("loadnpcs","loadnpcs"); add_action("loadweaps","loadweaps"); add_action("loadarmors","loadarmors"); add_action("loadmeals","loadmeals"); add_action("loaddoors","loaddoors"); add_action("loadthings","loadthings"); add_action("loadcmds","loadcmds"); add_action("loaddaemons","loaddaemons"); add_action("loadverbs","loadverbs"); add_action("loadlibs","loadlibs"); add_action("loadsys","loadsys"); add_action("loadall","loadall"); add_action("yeik","yeik"); add_action("yeik2","yeik2"); add_action("vargon","vargon"); add_action("commcheck","commcheck"); add_action("perfcheck","perfcheck"); } static int loadthing(string str){ if(last(str,2) == ".c"){ gstr = str; if(unguarded( (: find_object(truncate(gstr,2)) :)) ) return 1; reset_eval_cost(); catch( update(str) ); } return 1; } int loadrooms(){ validate(); if(!rooms) rooms = ({}); foreach(string roomdir in room_dirs){ string *dir_array = ( get_dir(roomdir+"/") || ({}) ); foreach(string roomfile in dir_array){ string loadee = roomdir+"/"+roomfile; rooms += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadobs(){ validate(); if(!obs) obs = ({}); foreach(string obsdir in obj_dirs){ foreach(string obfile in get_dir(obsdir+"/")){ string loadee = obsdir+"/"+obfile; if(!strsrch(loadee,"/obj/area_room")) continue; if(!strsrch(loadee,"/obj/stargate")) continue; obs += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadnpcs(mixed args){ int i; validate(); if(!args) i = 1; if(intp(args)) i = args; if(stringp(args)) i = atoi(args); if(!npcs) npcs = ({}); foreach(string npcsdir in npc_dirs){ foreach(string npcfile in get_dir(npcsdir+"/")){ string loadee; int x = i; if(member_array(npcfile, exceptions) != -1){ tc("skipping "+npcfile,"green"); continue; } loadee = npcsdir+"/"+npcfile; npcs += ({ loadee }); while(x){ call_out("loadthing", 0, loadee); x--; } } } return 1; } int loadweaps(){ validate(); if(!weapons) weapons = ({}); foreach(string weapsdir in weap_dirs){ mixed wdir = get_dir(weapsdir+"/"); if(!wdir || !sizeof(wdir)) continue; foreach(string weapfile in wdir){ string loadee = weapsdir+"/"+weapfile; weapons += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadarmors(){ validate(); if(!armors) armors = ({}); foreach(string armsdir in armor_dirs){ mixed adir = get_dir(armsdir+"/"); if(!adir || !sizeof(adir)) continue; foreach(string armorfile in adir){ string loadee = armsdir+"/"+armorfile; armors += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadmeals(){ validate(); if(!meals) meals = ({}); foreach(string mealsdir in meals_dirs){ mixed mdir = get_dir(mealsdir+"/"); if(!mdir || !sizeof(mdir)) continue; foreach(string mealfile in mdir){ string loadee = mealsdir+"/"+mealfile; meals += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loaddoors(){ validate(); if(!doors) doors = ({}); foreach(string doorsdir in doors_dirs){ mixed ddir = get_dir(doorsdir+"/"); if(!ddir || !sizeof(ddir)) continue; foreach(string doorfile in ddir){ string loadee = doorsdir+"/"+doorfile; doors += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadverbs(){ validate(); if(!verbs) verbs = ({}); foreach(string verbsdir in verb_dirs){ mixed vdir = get_dir(verbsdir+"/"); if(!vdir || !sizeof(vdir)) continue; foreach(string verbfile in vdir){ string loadee = verbsdir+"/"+verbfile; verbs += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadcmds(){ validate(); if(!cmds) cmds = ({}); foreach(string cmdsdir in cmd_dirs){ mixed cdir = get_dir(cmdsdir+"/"); if(!cdir || !sizeof(cdir)) continue; foreach(string cmdfile in cdir){ string loadee = cmdsdir+"/"+cmdfile; cmds += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loaddaemons(){ validate(); if(!daemons) daemons = ({}); foreach(string daemonsdir in daemon_dirs){ foreach(string daemonfile in get_dir(daemonsdir+"/")){ string loadee = daemonsdir+"/"+daemonfile; daemons += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadlibs(){ validate(); if(!libs) libs = ({}); foreach(string libsdir in lib_dirs){ foreach(string libfile in get_dir(libsdir+"/")){ string loadee = libsdir+"/"+libfile; libs += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadpowers(){ validate(); if(!powers) powers = ({}); foreach(string powersdir in powers_dirs){ foreach(string powerfile in get_dir(powersdir+"/")){ string loadee = powersdir+"/"+powerfile; powers += ({ loadee }); call_out("loadthing", 0, loadee); } } return 1; } int loadthings(){ validate(); call_out("loaddoors",0); call_out("loadmeals",1); call_out("loadarmors",2); call_out("loadweaps",3); call_out("loadobs",4); call_out("loadnpcs",5); call_out("loadrooms",6); return 1; } int loadsys(){ call_out("loadlibs",0); call_out("loaddaemons",1); call_out("loadcmds",2); call_out("loadverbs",3); call_out("loadpowers",4); return 1; } int loadall(){ call_out("loadsys",0); call_out("loadthings",10); return 1; } int stressload(string arg){ int i; if(arg) i = atoi(arg); numstress = (i || 1); tc("numnstress: "+numstress); if(!sizeof(rooms)) call_out("loadrooms", 0); if(!sizeof(npcs)) call_out("loadnpcs", 0); if(sizeof(rooms) && sizeof(npcs)) this_object()->startstress(); else call_out("startstress", 9); return 1; } int startstress(){ object *newbatch = ({}); object *targetrooms = filter(rooms, (: last($1,2) == ".c" && last($1,9) != "furnace.c" && $1->GetMedium() < 2 && !$1->GetProperty("no attack") :) ); int victims; tc("Starting stresstest, multiplier: "+numstress); foreach(string npcfile in npcs){ object npc; int err, x = numstress; if(last(npcfile,2) != ".c") continue; while(x){ err = 0; npc = new(npcfile); newbatch += ({ npc }); while(!err){ object where; if(numstress < 11) reset_eval_cost(); where = targetrooms[abs(random(sizeof(targetrooms))-1)]; catch(err = npc->eventMove(where)); } x--; } } newbatch = filter(newbatch, (: objectp($1) :) ); victims = to_int(to_float(sizeof(newbatch)) * 0.005)+1; tc("newbatch size: "+sizeof(newbatch)); while(victims){ object germ, who; int err, batch = sizeof(newbatch); if(batch){ err = catch(germ = new("/domains/town/obj/rage")); who = newbatch[abs(random(batch))]; if(who && germ) germ->eventInfect(who); victims--; } } npcs->SetWanderSpeed(1); npcs->SetPermitLoad(1); return 1; } int eventDestruct(){ return ::eventDestruct(); } int yeik2(string str){ int dirty; validate(); if(str == "dirty") dirty = 1; if(str){ string file, what = "/lib/blank"; int on=1, clone, i=2100000000; object ob=new(what); write("Starting the bullshit. ob: "+identify(ob)); sscanf(file_name(ob), "%s#%d", file, clone); if(!dirty) destruct(ob); if(on){ call_out("yeik2", 2); } if(!on){ return; } while(i) { i--; ob =new(what); sscanf(file_name(ob), "%s#%d", file, clone); if(!dirty) destruct(ob); } } else { write("Stopping the bullshit."); } return 1; } int vargon(string str){ int waves, win; validate(); win = sscanf(str,"%d",waves); if(!win || !waves) waves = 5; for(win=waves;win > 0;win--){ INTERMUD_D->RawSend(({ "channel-m", 5, mud_name(), this_player()->GetKeyName(), 0, 0, "coffee", this_player()->GetKeyName(), win+" Yes have some." })); } return waves; } int commcheck(){ int i, count = 20; validate(); write("Testing comms..."); write2("\n"); i = time_expression { while(count){ count--; reset_eval_cost(); write2("."); flush_messages(); } }; write2("\n\n"); write("Microseconds: "+i); return 1; } int perfcheck(string foo){ int sauber = 1, i, count = 1000000; validate(); write("Testing performance..."); write("Recorded perfscore: "+MASTER_D->GetPerformanceScore()); if(sizeof(foo)){ int tmp = atoi(foo); sauber = 0; if(tmp) count = tmp; } if(sauber){ i = time_expression { while(count){ count--; } }; } else { i = time_expression { while(count){ count--; } }; } write("Microseconds: "+i); return 1; }