Merge pull request #4524 from Ikarrus/eventsprompter

Trigger Events verb will now ask if the admin wants to announce to the crew
This commit is contained in:
Alex
2014-08-30 20:12:46 +01:00
19 changed files with 68 additions and 121 deletions
+1
View File
@@ -434,6 +434,7 @@ var/global/floorIsLava = 0
dat += {"
<B>Fun Secrets</B><BR>
<BR>
<A href='?src=\ref[src];secretsfun=virus'>Trigger a Virus Outbreak</A><BR>
<A href='?src=\ref[src];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
<A href='?src=\ref[src];secretsfun=power'>Make all areas powered</A><BR>
<A href='?src=\ref[src];secretsfun=unpower'>Make all areas unpowered</A><BR>
+24 -95
View File
@@ -57,6 +57,30 @@
if(!src.makeDeathsquad())
usr << "<span class='danger'>Unfortunatly there were not enough candidates available.</span>"
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("<span class='userdanger'>[key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]</span>", 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)
@@ -16,6 +16,7 @@ client/proc/one_click_antag()
<a href='?src=\ref[src];makeAntag=3'>Make Revs</a><br>
<a href='?src=\ref[src];makeAntag=4'>Make Cult</a><br>
<a href='?src=\ref[src];makeAntag=5'>Make Malf AI</a><br>
<a href='?src=\ref[src];makeAntag=11'>Make Blob</a><br>
<a href='?src=\ref[src];makeAntag=6'>Make Wizard (Requires Ghosts)</a><br>
<a href='?src=\ref[src];makeAntag=7'>Make Nuke Team (Requires Ghosts)</a><br>
<a href='?src=\ref[src];makeAntag=10'>Make Deathsquad (Requires Ghosts)</a><br>
+1
View File
@@ -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)
+6 -2
View File
@@ -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()
@@ -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", \
+1
View File
@@ -8,6 +8,7 @@
/datum/round_event/meteor_wave/dust
startWhen = 1
endWhen = 2
announceWhen = 0
/datum/round_event/meteor_wave/dust/announce()
return
+1 -1
View File
@@ -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")
+4 -2
View File
@@ -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()
+13 -6
View File
@@ -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 += "<BR><A href='?src=\ref[src];forceevent=\ref[E]'>[E]</A>"
var/datum/browser/popup = new(usr, "forceevent", "Force Random Event", 300, 750)
popup.set_content(dat)
popup.open()
/*
+2 -2
View File
@@ -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")
+2 -2
View File
@@ -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
+1
View File
@@ -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
+1 -2
View File
@@ -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))
+2 -7
View File
@@ -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()
+1
View File
@@ -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')
+1
View File
@@ -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)
+1 -1
View File
@@ -4,7 +4,7 @@
weight = 35
/datum/round_event/vent_clog
announceWhen = 0
announceWhen = 1
startWhen = 5
endWhen = 35
var/interval = 2
+2 -1
View File
@@ -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