diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index bb2de77eb09..bf91c682b69 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -434,6 +434,7 @@ var/global/floorIsLava = 0 dat += {" Fun Secrets

+ Trigger a Virus Outbreak
Turn all humans into monkeys
Make all areas powered
Make all areas unpowered
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 84355ff3f9b..1cbd7bdfe10 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -57,6 +57,30 @@ if(!src.makeDeathsquad()) usr << "Unfortunatly there were not enough candidates available." + if("11") + var/strength = input("Set Blob Strength (1=Weak, 2=Strong, 3=Full)","Set Strength",1) as num + message_admins("[key_name(usr)] spawned a blob with strength [strength].") + log_admin("[key_name(usr)] spawned a blob with strength [strength].") + new/datum/round_event/blob(strength) + + else if(href_list["forceevent"]) + var/datum/round_event_control/E = locate(href_list["forceevent"]) in events.control + if(E) + var/datum/round_event/event = E.runEvent() + if(event.announceWhen>0) + event.processing = 0 + var/prompt = alert(usr, "Would you like to alert the crew?", "Alert", "Yes", "No", "Cancel") + switch(prompt) + if("Cancel") + event.kill() + return + if("No") + event.announceWhen = -1 + event.processing = 1 + message_admins("[key_name_admin(usr)] has triggered an event. ([E.name])", 1) + log_admin("[key_name(usr)] has triggered an event. ([E.name])") + return + else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] @@ -1684,86 +1708,6 @@ message_admins("[key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]", 1) log_admin("[key_name(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]") - if("wave") - var/should_announce = alert(usr, "Meteors will be spawned. Would you like to make an announcement?", "Message", "Yes", "No") == "Yes" - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","MW") - message_admins("[key_name_admin(usr)] has spawned meteors") - E = new /datum/round_event/meteor_wave(should_announce) - if("gravanomalies") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","GA") - message_admins("[key_name_admin(usr)] has spawned a gravitational anomaly") - E = new /datum/round_event/anomaly/anomaly_grav() - if("pyroanomalies") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","PYRO") - message_admins("[key_name_admin(usr)] has spawned a pyroclastic anomaly") - E = new /datum/round_event/anomaly/anomaly_pyro() - if("blackhole") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","BH") - message_admins("[key_name_admin(usr)] has spawned a vortex anomaly") - E = new /datum/round_event/anomaly/anomaly_vortex() - if("timeanomalies") //dear god this code was awful :P Still needs further optimisation - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","STA") - message_admins("[key_name_admin(usr)] has made wormholes") - E = new /datum/round_event/wormholes() - if("goblob") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","BL") - message_admins("[key_name_admin(usr)] has spawned blob", 1) - E = new /datum/round_event/blob() - if("aliens") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","AL") - message_admins("[key_name_admin(usr)] has spawned aliens", 1) - E = new /datum/round_event/alien_infestation() - if("alien_silent") //replaces the spawn_xeno verb - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","ALS") - create_xeno() - if("spiders") - E = new /datum/round_event/spider_infestation() - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","SL") - message_admins("[key_name_admin(usr)] has spawned spiders", 1) - if("bluespaceanomaly") - E = new /datum/round_event/anomaly/anomaly_bluespace() - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","BA") - message_admins("[key_name_admin(usr)] has triggered a bluespace anomaly", 1) - if("comms_blackout") - E = new /datum/round_event/communications_blackout() - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","CB") - message_admins("[key_name_admin(usr)] triggered a communications blackout.", 1) - if("spaceninja") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","SN") - message_admins("[key_name_admin(usr)] has sent in a space ninja", 1) - E = new /datum/round_event/ninja() - if("carp") - E = new /datum/round_event/carp_migration() - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","C") - message_admins("[key_name_admin(usr)] has spawned carp.", 1) - if("radiation") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","R") - message_admins("[key_name_admin(usr)] has has irradiated the station", 1) - E = new /datum/round_event/radiation_storm() - if("immovable") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","IR") - message_admins("[key_name_admin(usr)] has sent an immovable rod to the station", 1) - E = new /datum/round_event/immovable_rod() - if("prison_break") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","PB") - message_admins("[key_name_admin(usr)] has allowed a prison break", 1) - E = new /datum/round_event/prison_break() if("lightsout") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","LO") @@ -1879,26 +1823,11 @@ B.facial_hair_style = "Dward Beard" B.update_hair() message_admins("[key_name_admin(usr)] activated dorf mode") - if("ionstorm") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","I") - message_admins("[key_name_admin(usr)] triggered an ion storm") - E = new /datum/round_event/ion_storm() - if("spacevines") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","K") - message_admins("[key_name_admin(usr)] has spawned spacevines", 1) - E = new /datum/round_event/spacevine() if("onlyone") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","OO") usr.client.only_one() // message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)") - if("energeticflux") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","FLUX") - message_admins("[key_name_admin(usr)] has triggered an energetic flux") - E = new /datum/round_event/anomaly/anomaly_flux() if(E) E.processing = 0 if(E.announceWhen>0) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index c70fed34e0c..b12a431043d 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -16,6 +16,7 @@ client/proc/one_click_antag() Make Revs
Make Cult
Make Malf AI
+ Make Blob
Make Wizard (Requires Ghosts)
Make Nuke Team (Requires Ghosts)
Make Deathsquad (Requires Ghosts)
diff --git a/code/modules/events/anomaly.dm b/code/modules/events/anomaly.dm index 654c227e810..9062ed7e4a3 100644 --- a/code/modules/events/anomaly.dm +++ b/code/modules/events/anomaly.dm @@ -7,6 +7,7 @@ /datum/round_event/anomaly var/area/impact_area var/obj/effect/anomaly/newAnomaly + announceWhen = 1 /datum/round_event/anomaly/setup(loop=0) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 368172ebecd..c678bdab8dc 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -9,9 +9,13 @@ /datum/round_event/blob announceWhen = 12 endWhen = 120 - + var/new_rate = 2 var/obj/effect/blob/core/Blob +/datum/round_event/blob/New(var/strength) + ..() + if(strength) + new_rate = strength /datum/round_event/blob/announce() priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg') @@ -21,7 +25,7 @@ var/turf/T = pick(blobstart) if(!T) return kill() - Blob = new /obj/effect/blob/core(T, 200) + Blob = new /obj/effect/blob/core(T, 200, null, new_rate) for(var/i = 1; i < rand(3, 6), i++) Blob.process() diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index 353b92a78b8..cb55bbbd248 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -3,6 +3,9 @@ typepath = /datum/round_event/communications_blackout weight = 30 +/datum/round_event/communications_blackout + announceWhen = 1 + /datum/round_event/communications_blackout/announce() var/alert = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \ "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v¬-BZZZT", \ diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index d24b6cab401..5c5bdfb596a 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -8,6 +8,7 @@ /datum/round_event/meteor_wave/dust startWhen = 1 endWhen = 2 + announceWhen = 0 /datum/round_event/meteor_wave/dust/announce() return diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 51fa161ef23..4ccd64f5cd9 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -7,7 +7,7 @@ /datum/round_event/electrical_storm var/lightsoutAmount = 1 var/lightsoutRange = 25 - + announceWhen = 1 /datum/round_event/electrical_storm/announce() priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 8b90cb13085..20ec857ef56 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -26,12 +26,14 @@ testing("[time2text(world.time, "hh:mm:ss")] [E.type]") + return E + /datum/round_event //NOTE: Times are measured in master controller ticks! var/processing = 1 var/datum/round_event_control/control var/startWhen = 0 //When in the lifetime to call start(). - var/announceWhen = 0 //When in the lifetime to call announce(). + var/announceWhen = 0 //When in the lifetime to call announce(). Set an event's announceWhen to >0 if there is an announcement. var/endWhen = 0 //When in the lifetime the event should end. var/activeFor = 0 //How long the event has existed. You don't need to change this. @@ -81,7 +83,7 @@ /datum/round_event/proc/process() if(!processing) return - + if(activeFor == startWhen) start() diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 2775524fce3..0174bda76b3 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -109,18 +109,25 @@ var/datum/controller/event/events -//allows a client to trigger an event (For Debugging Purposes) -/client/proc/forceEvent(var/datum/round_event_control/E in events.control) +//allows a client to trigger an event +//aka Badmin Central +/client/proc/forceEvent() set name = "Trigger Event" set category = "Fun" if(!holder ||!check_rights(R_FUN)) return - if(istype(E)) - E.runEvent() - message_admins("[key_name_admin(usr)] has triggered an event. ([E.name])", 1) - log_admin("[key_name(usr)] has triggered an event. ([E.name])") + holder.forceEvent() + +/datum/admins/proc/forceEvent() + var/dat = "" + for(var/datum/round_event_control/E in events.control) + dat += "
[E]" + + var/datum/browser/popup = new(usr, "forceevent", "Force Random Event", 300, 750) + popup.set_content(dat) + popup.open() /* diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm index 9a7945d7719..ad6a82e04df 100644 --- a/code/modules/events/holiday/halloween.dm +++ b/code/modules/events/holiday/halloween.dm @@ -1,5 +1,5 @@ /datum/round_event_control/spooky - name = "2 SPOOKY!" + name = "2 SPOOKY! (Halloween)" holidayID = "Halloween" typepath = /datum/round_event/spooky weight = -1 //forces it to be called, regardless of weight @@ -14,4 +14,4 @@ Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian)) /datum/round_event/spooky/announce() - priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") + priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index d7021e0e12d..3c93432b541 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -1,5 +1,5 @@ /datum/round_event_control/treevenge - name = "Treevenge" + name = "Treevenge (Christmas)" holidayID = "Xmas" typepath = /datum/round_event/treevenge max_occurrences = 1 @@ -16,7 +16,7 @@ //this is an example of a possible round-start event /datum/round_event_control/presents - name = "Presents under Trees" + name = "Presents under Trees (Christmas)" holidayID = "Xmas" typepath = /datum/round_event/presents weight = -1 //forces it to be called, regardless of weight diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index a501be161be..090c7ac85ba 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -11,6 +11,7 @@ var/announceEvent = ION_RANDOM // -1 means don't announce, 0 means have it randomly announce, 1 means var/ionMessage = null var/ionAnnounceChance = 33 + announceWhen = 1 /datum/round_event/ion_storm/New(var/botEmagChance = 10, var/announceEvent = ION_RANDOM, var/ionMessage = null, var/ionAnnounceChance = 33) src.botEmagChance = botEmagChance diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm index d66ef27596f..b45140ad5ee 100644 --- a/code/modules/events/meateor_wave.dm +++ b/code/modules/events/meateor_wave.dm @@ -5,8 +5,7 @@ max_occurrences = 1 /datum/round_event/meteor_wave/meaty/announce() - if(announce) - priority_announce("Meaty ores have been detected on collision course with the station.", "Oh Crap, Get The Mop.",'sound/AI/meteors.ogg') + priority_announce("Meaty ores have been detected on collision course with the station.", "Oh Crap, Get The Mop.",'sound/AI/meteors.ogg') /datum/round_event/meteor_wave/meaty/tick() if(IsMultiple(activeFor, 3)) diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 2063f369194..6effd5fc41f 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -7,15 +7,10 @@ /datum/round_event/meteor_wave startWhen = 6 endWhen = 66 - var/announce = 1 - -/datum/round_event/meteor_wave/New(should_announce = 1) - ..() - announce = should_announce + announceWhen = 1 /datum/round_event/meteor_wave/announce() - if(announce) - priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/AI/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/AI/meteors.ogg') /datum/round_event/meteor_wave/tick() diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 8053cea32db..55b30f45011 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -10,6 +10,7 @@ /datum/round_event/radiation_storm/setup() startWhen = rand(10, 20) endWhen = startWhen + 5 + announceWhen = 1 /datum/round_event/radiation_storm/announce() priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/AI/radiation.ogg') diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index d785caa4292..28587ed7942 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -15,6 +15,7 @@ var/bonus_points = 100 var/thanks_msg = "Have some supply points as thanks (the shuttle will be returned in 5 minutes)." var/dispatched = 0 + announceWhen = 1 /datum/round_event/shuttle_loan/start() dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY) diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index f202148ca29..db410577ab7 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -4,7 +4,7 @@ weight = 35 /datum/round_event/vent_clog - announceWhen = 0 + announceWhen = 1 startWhen = 5 endWhen = 35 var/interval = 2 diff --git a/code/modules/events/weightless.dm b/code/modules/events/weightless.dm index bc1e79f91d9..9d98ca5db59 100644 --- a/code/modules/events/weightless.dm +++ b/code/modules/events/weightless.dm @@ -6,6 +6,7 @@ /datum/round_event/weightless startWhen = 5 endWhen = 65 + announceWhen = 1 /datum/round_event/weightless/setup() startWhen = rand(0,10) @@ -17,7 +18,7 @@ /datum/round_event/weightless/start() for(var/area/A in world) A.gravitychange(0) - + if(control) control.weight *= 2