mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 16:07:40 +00:00
Makes false alarm use more explicit in event code.
This commit is contained in:
committed by
CitadelStationBot
parent
662c42b450
commit
f6e07cf824
@@ -108,11 +108,12 @@
|
||||
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(). Set an event's announceWhen to >0 if there is an announcement.
|
||||
var/announceWhen = 0 //When in the lifetime to call announce(). Set an event's announceWhen to -1 if announcement should not be shown.
|
||||
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.
|
||||
var/current_players = 0 //Amount of of alive, non-AFK human players on server at the time of event start
|
||||
var/fakeable = TRUE //Can be faked by fake news event.
|
||||
|
||||
//Called first before processing.
|
||||
//Allows you to setup your event, such as randomly
|
||||
@@ -133,7 +134,7 @@
|
||||
//Called when the tick is equal to the announceWhen variable.
|
||||
//Allows you to announce before starting or vice versa.
|
||||
//Only called once.
|
||||
/datum/round_event/proc/announce()
|
||||
/datum/round_event/proc/announce(fake)
|
||||
return
|
||||
|
||||
//Called on or after the tick counter is equal to startWhen.
|
||||
@@ -167,7 +168,7 @@
|
||||
|
||||
if(activeFor == announceWhen)
|
||||
processing = FALSE
|
||||
announce()
|
||||
announce(FALSE)
|
||||
processing = TRUE
|
||||
|
||||
if(startWhen < activeFor && activeFor < endWhen)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
/datum/round_event/ghost_role/abductor
|
||||
minimum_required = 2
|
||||
role_name = "abductor team"
|
||||
fakeable = FALSE //Nothing to fake here
|
||||
|
||||
/datum/round_event/ghost_role/abductor/spawn_role()
|
||||
var/list/mob/dead/observer/candidates = get_candidates("abductor", null, ROLE_ABDUCTOR)
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
control.occurrences--
|
||||
return ..()
|
||||
|
||||
/datum/round_event/ghost_role/alien_infestation/announce()
|
||||
if(successSpawn)
|
||||
/datum/round_event/ghost_role/alien_infestation/announce(fake)
|
||||
if(successSpawn || fake)
|
||||
priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg')
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/anomaly
|
||||
name = "Anomaly: Energetic Flux"
|
||||
typepath = /datum/round_event/anomaly
|
||||
@@ -31,3 +32,38 @@
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/flux(T)
|
||||
=======
|
||||
/datum/round_event_control/anomaly
|
||||
name = "Anomaly: Energetic Flux"
|
||||
typepath = /datum/round_event/anomaly
|
||||
|
||||
min_players = 1
|
||||
max_occurrences = 0 //This one probably shouldn't occur! It'd work, but it wouldn't be very fun.
|
||||
weight = 15
|
||||
|
||||
/datum/round_event/anomaly
|
||||
var/area/impact_area
|
||||
var/obj/effect/anomaly/newAnomaly
|
||||
announceWhen = 1
|
||||
|
||||
|
||||
/datum/round_event/anomaly/setup(loop=0)
|
||||
var/safety_loop = loop + 1
|
||||
if(safety_loop > 50)
|
||||
kill()
|
||||
end()
|
||||
impact_area = findEventArea()
|
||||
if(!impact_area)
|
||||
setup(safety_loop)
|
||||
var/list/turf_test = get_area_turfs(impact_area)
|
||||
if(!turf_test.len)
|
||||
setup(safety_loop)
|
||||
|
||||
/datum/round_event/anomaly/announce(fake)
|
||||
priority_announce("Localized energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/round_event/anomaly/start()
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/flux(T)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/anomaly/anomaly_bluespace
|
||||
name = "Anomaly: Bluespace"
|
||||
typepath = /datum/round_event/anomaly/anomaly_bluespace
|
||||
@@ -17,3 +18,24 @@
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/bluespace(T)
|
||||
=======
|
||||
/datum/round_event_control/anomaly/anomaly_bluespace
|
||||
name = "Anomaly: Bluespace"
|
||||
typepath = /datum/round_event/anomaly/anomaly_bluespace
|
||||
max_occurrences = 1
|
||||
weight = 5
|
||||
|
||||
/datum/round_event/anomaly/anomaly_bluespace
|
||||
startWhen = 3
|
||||
announceWhen = 10
|
||||
|
||||
|
||||
/datum/round_event/anomaly/anomaly_bluespace/announce(fake)
|
||||
priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
|
||||
/datum/round_event/anomaly/anomaly_bluespace/start()
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/bluespace(T)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/anomaly/anomaly_flux
|
||||
name = "Anomaly: Hyper-Energetic Flux"
|
||||
typepath = /datum/round_event/anomaly/anomaly_flux
|
||||
@@ -18,3 +19,25 @@
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/flux(T)
|
||||
=======
|
||||
/datum/round_event_control/anomaly/anomaly_flux
|
||||
name = "Anomaly: Hyper-Energetic Flux"
|
||||
typepath = /datum/round_event/anomaly/anomaly_flux
|
||||
|
||||
min_players = 10
|
||||
max_occurrences = 5
|
||||
weight = 20
|
||||
|
||||
/datum/round_event/anomaly/anomaly_flux
|
||||
startWhen = 10
|
||||
announceWhen = 3
|
||||
|
||||
/datum/round_event/anomaly/anomaly_flux/announce(fake)
|
||||
priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
|
||||
/datum/round_event/anomaly/anomaly_flux/start()
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/flux(T)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/anomaly/anomaly_grav
|
||||
name = "Anomaly: Gravitational"
|
||||
typepath = /datum/round_event/anomaly/anomaly_grav
|
||||
@@ -15,3 +16,22 @@
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/grav(T)
|
||||
=======
|
||||
/datum/round_event_control/anomaly/anomaly_grav
|
||||
name = "Anomaly: Gravitational"
|
||||
typepath = /datum/round_event/anomaly/anomaly_grav
|
||||
max_occurrences = 5
|
||||
weight = 20
|
||||
|
||||
/datum/round_event/anomaly/anomaly_grav
|
||||
startWhen = 3
|
||||
announceWhen = 20
|
||||
|
||||
/datum/round_event/anomaly/anomaly_grav/announce(fake)
|
||||
priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/round_event/anomaly/anomaly_grav/start()
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/grav(T)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
startWhen = 3
|
||||
announceWhen = 10
|
||||
|
||||
/datum/round_event/anomaly/anomaly_pyro/announce()
|
||||
/datum/round_event/anomaly/anomaly_pyro/announce(fake)
|
||||
priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/round_event/anomaly/anomaly_pyro/start()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/anomaly/anomaly_vortex
|
||||
name = "Anomaly: Vortex"
|
||||
typepath = /datum/round_event/anomaly/anomaly_vortex
|
||||
@@ -17,3 +18,24 @@
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/bhole(T)
|
||||
=======
|
||||
/datum/round_event_control/anomaly/anomaly_vortex
|
||||
name = "Anomaly: Vortex"
|
||||
typepath = /datum/round_event/anomaly/anomaly_vortex
|
||||
|
||||
min_players = 20
|
||||
max_occurrences = 2
|
||||
weight = 5
|
||||
|
||||
/datum/round_event/anomaly/anomaly_vortex
|
||||
startWhen = 10
|
||||
announceWhen = 3
|
||||
|
||||
/datum/round_event/anomaly/anomaly_vortex/announce(fake)
|
||||
priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert")
|
||||
|
||||
/datum/round_event/anomaly/anomaly_vortex/start()
|
||||
var/turf/T = safepick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
newAnomaly = new /obj/effect/anomaly/bhole(T)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
announceWhen = -1
|
||||
role_name = "blob overmind"
|
||||
|
||||
/datum/round_event/ghost_role/blob/announce()
|
||||
/datum/round_event/ghost_role/blob/announce(fake)
|
||||
priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg')
|
||||
|
||||
/datum/round_event/ghost_role/blob/spawn_role()
|
||||
|
||||
@@ -21,9 +21,14 @@
|
||||
"You don't want to buy anything? Yeah, well, I didn't want to buy your mom either.")
|
||||
|
||||
|
||||
/datum/round_event/brand_intelligence/announce()
|
||||
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [originMachine.name].", "Machine Learning Alert")
|
||||
|
||||
/datum/round_event/brand_intelligence/announce(fake)
|
||||
var/source = "unknown machine"
|
||||
if(fake)
|
||||
var/obj/machinery/vending/cola/example = /obj/machinery/vending/cola
|
||||
source = initial(example.name)
|
||||
else if(originMachine)
|
||||
source = originMachine.name
|
||||
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert")
|
||||
|
||||
/datum/round_event/brand_intelligence/start()
|
||||
for(var/obj/machinery/vending/V in GLOB.machines)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
/datum/round_event/camera_failure
|
||||
startWhen = 1
|
||||
endWhen = 2
|
||||
announceWhen = 0
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/camera_failure/tick()
|
||||
var/iterations = 1
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/round_event/carp_migration/setup()
|
||||
startWhen = rand(40, 60)
|
||||
|
||||
/datum/round_event/carp_migration/announce()
|
||||
/datum/round_event/carp_migration/announce(fake)
|
||||
priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/communications_blackout
|
||||
name = "Communications Blackout"
|
||||
typepath = /datum/round_event/communications_blackout
|
||||
@@ -23,4 +24,31 @@
|
||||
|
||||
/datum/round_event/communications_blackout/start()
|
||||
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
|
||||
=======
|
||||
/datum/round_event_control/communications_blackout
|
||||
name = "Communications Blackout"
|
||||
typepath = /datum/round_event/communications_blackout
|
||||
weight = 30
|
||||
|
||||
/datum/round_event/communications_blackout
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/communications_blackout/announce(fake)
|
||||
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<31>-BZZZT", \
|
||||
"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \
|
||||
"Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \
|
||||
"Ionospheri:%<25> MCayj^j<.3-BZZZZZZT", \
|
||||
"#4nd%;f4y6,><3E>%-BZZZZZZZT")
|
||||
|
||||
for(var/mob/living/silicon/ai/A in GLOB.ai_list) //AIs are always aware of communication blackouts.
|
||||
to_chat(A, "<br><span class='warning'><b>[alert]</b></span><br>")
|
||||
|
||||
if(prob(30) || fake) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
|
||||
priority_announce(alert)
|
||||
|
||||
|
||||
/datum/round_event/communications_blackout/start()
|
||||
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
T.emp_act(EMP_HEAVY)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
/datum/round_event/ghost_role/devil
|
||||
var/success_spawn = 0
|
||||
role_name = "devil"
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/ghost_role/devil/kill()
|
||||
if(!success_spawn && control)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/virus_type
|
||||
|
||||
|
||||
/datum/round_event/disease_outbreak/announce()
|
||||
/datum/round_event/disease_outbreak/announce(fake)
|
||||
priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg')
|
||||
|
||||
/datum/round_event/disease_outbreak/setup()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/space_dust
|
||||
name = "Minor Space Dust"
|
||||
typepath = /datum/round_event/space_dust
|
||||
@@ -27,4 +28,36 @@
|
||||
announceWhen = 0
|
||||
|
||||
/datum/round_event/sandstorm/tick()
|
||||
=======
|
||||
/datum/round_event_control/space_dust
|
||||
name = "Minor Space Dust"
|
||||
typepath = /datum/round_event/space_dust
|
||||
weight = 200
|
||||
max_occurrences = 1000
|
||||
earliest_start = 0
|
||||
alertadmins = 0
|
||||
|
||||
/datum/round_event/space_dust
|
||||
startWhen = 1
|
||||
endWhen = 2
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/space_dust/start()
|
||||
spawn_meteors(1, GLOB.meteorsC)
|
||||
|
||||
/datum/round_event_control/sandstorm
|
||||
name = "Sandstorm"
|
||||
typepath = /datum/round_event/sandstorm
|
||||
weight = 0
|
||||
max_occurrences = 0
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/sandstorm
|
||||
startWhen = 1
|
||||
endWhen = 150 // ~5 min
|
||||
announceWhen = 0
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/sandstorm/tick()
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
spawn_meteors(10, GLOB.meteorsC)
|
||||
@@ -11,7 +11,7 @@
|
||||
var/lightsoutRange = 25
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/electrical_storm/announce()
|
||||
/datum/round_event/electrical_storm/announce(fake)
|
||||
priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert")
|
||||
|
||||
|
||||
|
||||
@@ -13,10 +13,8 @@
|
||||
var/list/possible_types = list()
|
||||
|
||||
for(var/datum/round_event_control/E in SSevents.control)
|
||||
if(istype(E, /datum/round_event_control/falsealarm))
|
||||
continue
|
||||
var/datum/round_event/event = E.typepath
|
||||
if(initial(event.announceWhen) <= 0)
|
||||
if(!initial(event.fakeable))
|
||||
continue
|
||||
possible_types += E
|
||||
|
||||
@@ -28,8 +26,11 @@
|
||||
/datum/round_event/falsealarm
|
||||
announceWhen = 0
|
||||
endWhen = 1
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/falsealarm/announce()
|
||||
/datum/round_event/falsealarm/announce(fake)
|
||||
if(fake) //What are you doing
|
||||
return
|
||||
var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
|
||||
var/gamemode = SSticker.mode.config_tag
|
||||
|
||||
@@ -45,7 +46,7 @@
|
||||
var/datum/round_event/Event = new event_control.typepath()
|
||||
message_admins("False Alarm: [Event]")
|
||||
Event.kill() //do not process this event - no starts, no ticks, no ends
|
||||
Event.announce() //just announce it like it's happening
|
||||
Event.announce(TRUE) //just announce it like it's happening
|
||||
|
||||
/proc/gather_false_events(players_amt, gamemode)
|
||||
. = list()
|
||||
@@ -56,6 +57,6 @@
|
||||
continue
|
||||
|
||||
var/datum/round_event/event = E.typepath
|
||||
if(initial(event.announceWhen) <= 0)
|
||||
if(!initial(event.fakeable))
|
||||
continue
|
||||
. += E
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
announceWhen = 1
|
||||
startWhen = 1
|
||||
|
||||
/datum/round_event/grid_check/announce()
|
||||
/datum/round_event/grid_check/announce(fake)
|
||||
priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg')
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
// Basically, cut the event frequency in half to simulate unluckiness.
|
||||
|
||||
/datum/round_event_control/fridaythethirteen
|
||||
@@ -15,4 +16,23 @@
|
||||
|
||||
/datum/round_event/fridaythethirteen/announce()
|
||||
for(var/mob/living/L in player_list)
|
||||
=======
|
||||
// Basically, cut the event frequency in half to simulate unluckiness.
|
||||
|
||||
/datum/round_event_control/fridaythethirteen
|
||||
name = "Friday the 13th"
|
||||
holidayID = FRIDAY_13TH
|
||||
typepath = /datum/round_event/fridaythethirteen
|
||||
weight = -1
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/fridaythethirteen/start()
|
||||
//Very unlucky, cut the frequency of events in half.
|
||||
events.frequency_lower /= 2
|
||||
events.frequency_upper /= 2
|
||||
|
||||
/datum/round_event/fridaythethirteen/announce(fake)
|
||||
for(var/mob/living/L in player_list)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
to_chat(L, "<span class='warning'>You are feeling unlucky today.</span>")
|
||||
@@ -19,7 +19,7 @@
|
||||
new /mob/living/simple_animal/parrot/Poly/ghost(Poly.loc)
|
||||
qdel(Poly)
|
||||
|
||||
/datum/round_event/spooky/announce()
|
||||
/datum/round_event/spooky/announce(fake)
|
||||
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")
|
||||
|
||||
//spooky foods (you can't actually make these when it's not halloween)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
to_chat(lover, "<span class='warning'><B>You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties.</B></span>")
|
||||
|
||||
|
||||
/datum/round_event/valentines/announce()
|
||||
/datum/round_event/valentines/announce(fake)
|
||||
priority_announce("It's Valentine's Day! Give a valentine to that special someone!")
|
||||
|
||||
/obj/item/valentine
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in GLOB.machines)
|
||||
Monitor.icon_state = "entertainment_xmas"
|
||||
|
||||
/datum/round_event/presents/announce()
|
||||
/datum/round_event/presents/announce(fake)
|
||||
priority_announce("Ho Ho Ho, Merry Xmas!", "Unknown Transmission")
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
/datum/round_event/santa
|
||||
var/mob/living/carbon/human/santa //who is our santa?
|
||||
|
||||
/datum/round_event/santa/announce()
|
||||
/datum/round_event/santa/announce(fake)
|
||||
priority_announce("Santa is coming to town!", "Unknown Transmission")
|
||||
|
||||
/datum/round_event/santa/start()
|
||||
|
||||
@@ -16,7 +16,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
/datum/round_event/immovable_rod
|
||||
announceWhen = 5
|
||||
|
||||
/datum/round_event/immovable_rod/announce()
|
||||
/datum/round_event/immovable_rod/announce(fake)
|
||||
priority_announce("What the fuck was that?!", "General Alert")
|
||||
|
||||
/datum/round_event/immovable_rod/start()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
#define ION_RANDOM 0
|
||||
#define ION_ANNOUNCE 1
|
||||
#define ION_FILE "ion_laws.json"
|
||||
@@ -569,3 +570,576 @@
|
||||
|
||||
#undef ION_RANDOM
|
||||
#undef ION_ANNOUNCE
|
||||
=======
|
||||
#define ION_RANDOM 0
|
||||
#define ION_ANNOUNCE 1
|
||||
#define ION_FILE "ion_laws.json"
|
||||
/datum/round_event_control/ion_storm
|
||||
name = "Ion Storm"
|
||||
typepath = /datum/round_event/ion_storm
|
||||
weight = 15
|
||||
min_players = 2
|
||||
|
||||
/datum/round_event/ion_storm
|
||||
var/replaceLawsetChance = 25 //chance the AI's lawset is completely replaced with something else per config weights
|
||||
var/removeRandomLawChance = 10 //chance the AI has one random supplied or inherent law removed
|
||||
var/removeDontImproveChance = 10 //chance the randomly created law replaces a random law instead of simply being added
|
||||
var/shuffleLawsChance = 10 //chance the AI's laws are shuffled afterwards
|
||||
var/botEmagChance = 10
|
||||
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/add_law_only // special subtype that adds a law only
|
||||
replaceLawsetChance = 0
|
||||
removeRandomLawChance = 0
|
||||
removeDontImproveChance = 0
|
||||
shuffleLawsChance = 0
|
||||
botEmagChance = 0
|
||||
|
||||
/datum/round_event/ion_storm/announce(fake)
|
||||
if(announceEvent == ION_ANNOUNCE || (announceEvent == ION_RANDOM && prob(ionAnnounceChance)) || fake)
|
||||
priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/ionstorm.ogg')
|
||||
|
||||
|
||||
/datum/round_event/ion_storm/start()
|
||||
//AI laws
|
||||
for(var/mob/living/silicon/ai/M in GLOB.living_mob_list)
|
||||
M.laws_sanity_check()
|
||||
if(M.stat != DEAD && M.see_in_dark != 0)
|
||||
if(prob(replaceLawsetChance))
|
||||
M.laws.pick_weighted_lawset()
|
||||
|
||||
if(prob(removeRandomLawChance))
|
||||
M.remove_law(rand(1, M.laws.get_law_amount(list(LAW_INHERENT, LAW_SUPPLIED))))
|
||||
|
||||
var/message = generate_ion_law(ionMessage)
|
||||
if(message)
|
||||
if(prob(removeDontImproveChance))
|
||||
M.replace_random_law(message, list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
|
||||
else
|
||||
M.add_ion_law(message)
|
||||
|
||||
if(prob(shuffleLawsChance))
|
||||
M.shuffle_laws(list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
|
||||
|
||||
log_game("Ion storm changed laws of [key_name(M)] to [english_list(M.laws.get_law_list(TRUE, TRUE))]")
|
||||
M.post_lawchange()
|
||||
|
||||
if(botEmagChance)
|
||||
for(var/mob/living/simple_animal/bot/bot in GLOB.living_mob_list)
|
||||
if(prob(botEmagChance))
|
||||
bot.emag_act()
|
||||
|
||||
/proc/generate_ion_law(ionMessage)
|
||||
if(ionMessage)
|
||||
return ionMessage
|
||||
|
||||
//Threats are generally bad things, silly or otherwise. Plural.
|
||||
var/ionthreats = pick_list(ION_FILE, "ionthreats")
|
||||
//Objects are anything that can be found on the station or elsewhere, plural.
|
||||
var/ionobjects = pick_list(ION_FILE, "ionobjects")
|
||||
//Crew is any specific job. Specific crewmembers aren't used because of capitalization
|
||||
//issues. There are two crew listings for laws that require two different crew members
|
||||
//and I can't figure out how to do it better.
|
||||
var/ioncrew1 = pick_list(ION_FILE, "ioncrew")
|
||||
var/ioncrew2 = pick_list(ION_FILE, "ioncrew")
|
||||
//Adjectives are adjectives. Duh. Half should only appear sometimes. Make sure both
|
||||
//lists are identical! Also, half needs a space at the end for nicer blank calls.
|
||||
var/ionadjectives = pick_list(ION_FILE, "ionadjectives")
|
||||
var/ionadjectiveshalf = pick("", 400;(pick_list(ION_FILE, "ionadjectives") + " "))
|
||||
//Verbs are verbs
|
||||
var/ionverb = pick_list(ION_FILE, "ionverb")
|
||||
//Number base and number modifier are combined. Basehalf and mod are unused currently.
|
||||
//Half should only appear sometimes. Make sure both lists are identical! Also, half
|
||||
//needs a space at the end to make it look nice and neat when it calls a blank.
|
||||
var/ionnumberbase = pick_list(ION_FILE, "ionnumberbase")
|
||||
//var/ionnumbermod = pick_list(ION_FILE, "ionnumbermod")
|
||||
var/ionnumbermodhalf = pick(900;"",(pick_list(ION_FILE, "ionnumbermod") + " "))
|
||||
//Areas are specific places, on the station or otherwise.
|
||||
var/ionarea = pick_list(ION_FILE, "ionarea")
|
||||
//Thinksof is a bit weird, but generally means what X feels towards Y.
|
||||
var/ionthinksof = pick_list(ION_FILE, "ionthinksof")
|
||||
//Musts are funny things the AI or crew has to do.
|
||||
var/ionmust = pick_list(ION_FILE, "ionmust")
|
||||
//Require are basically all dumb internet memes.
|
||||
var/ionrequire = pick_list(ION_FILE, "ionrequire")
|
||||
//Things are NOT objects; instead, they're specific things that either harm humans or
|
||||
//must be done to not harm humans. Make sure they're plural and "not" can be tacked
|
||||
//onto the front of them.
|
||||
var/ionthings = pick_list(ION_FILE, "ionthings")
|
||||
//Allergies should be broad and appear somewhere on the station for maximum fun. Severity
|
||||
//is how bad the allergy is.
|
||||
var/ionallergy = pick_list(ION_FILE, "ionallergy")
|
||||
var/ionallergysev = pick_list(ION_FILE, "ionallergysev")
|
||||
//Species, for when the AI has to commit genocide. Plural.
|
||||
var/ionspecies = pick_list(ION_FILE, "ionspecies")
|
||||
//Abstract concepts for the AI to decide on it's own definition of.
|
||||
var/ionabstract = pick_list(ION_FILE, "ionabstract")
|
||||
//Foods. Drinks aren't included due to grammar; if you want to add drinks, make a new set
|
||||
//of possible laws for best effect. Unless you want the crew having to drink hamburgers.
|
||||
var/ionfood = pick_list(ION_FILE, "ionfood")
|
||||
var/iondrinks = pick_list(ION_FILE, "iondrinks")
|
||||
|
||||
var/message = ""
|
||||
|
||||
switch(rand(1,41))
|
||||
if(1 to 3) //There are # X on the station
|
||||
switch(rand(1,3)) //What is X?
|
||||
if(1) //X is a threat
|
||||
message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats] ON THE STATION..."
|
||||
if(2) //X is a crewmember/job
|
||||
message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1] ON THE STATION"
|
||||
if(3) //X is an object
|
||||
message = "THERE ARE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects] ON THE STATION"
|
||||
if(4 to 6) //You can't call the shuttle because X is on the station
|
||||
switch(rand(1,3)) //What is X?
|
||||
if(1) //X is a threat
|
||||
message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats] ON THE STATION"
|
||||
if(2) //X is a crewmember/job
|
||||
message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1] ON THE STATION"
|
||||
if(3) //X is an object
|
||||
message = "THE SHUTTLE CANNOT BE CALLED BECAUSE OF [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects] ON THE STATION"
|
||||
if(7 to 8) //A crewmember is now X
|
||||
switch(rand(1,2)) //Who is X?
|
||||
if(1) //A specific crewmember
|
||||
switch(rand(1,2)) //What is X?
|
||||
if(1) //X is a threat
|
||||
message = "THE [ioncrew1] ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //X is an object
|
||||
message = "THE [ioncrew1] ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(2) //The entire crew
|
||||
switch(rand(1,2)) //What is X?
|
||||
if(1) //X is a threat
|
||||
message = "THE CREW ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //X is an object
|
||||
message = "THE CREW ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
|
||||
if(9) //X is harmful to humans
|
||||
switch(rand(1,7)) //What is X?
|
||||
if(1) //X is a threat
|
||||
message = "[ionadjectiveshalf][ionthreats] ARE HARMFUL TO HUMANS"
|
||||
if(2) //X is a job
|
||||
message = "[ionadjectiveshalf][ioncrew1] ARE HARMFUL TO HUMANS"
|
||||
if(3) //X is an object
|
||||
message = "[ionadjectiveshalf][ionobjects] ARE HARMFUL TO HUMANS"
|
||||
if(4) //X is an action
|
||||
message = "THOSE WHO [ionmust] ARE HARMFUL TO HUMANS"
|
||||
if(5) //X is an abstract
|
||||
message = "[ionabstract] IS HARMFUL TO HUMANS"
|
||||
if(6) //X is being a job
|
||||
message = "BEING [ionadjectiveshalf][ioncrew1] IS HARMFUL TO HUMANS"
|
||||
if(7) //X is doing a thing
|
||||
message = "[ionthings] IS HARMFUL TO HUMANS"
|
||||
if(10 to 11) //(Not) Having X is harmful
|
||||
|
||||
switch(rand(1,2)) //Is having or not having harmful?
|
||||
|
||||
if(1) //Having is harmful
|
||||
switch(rand(1,2)) //Having what is harmful?
|
||||
if(1) //Having objects is harmful
|
||||
message = "HAVING [ionadjectiveshalf][ionobjects] IS HARMFUL"
|
||||
if(2) //Having abstracts is harmful
|
||||
message = "HAVING [ionabstract] IS HARMFUL"
|
||||
if(2) //Not having is harmful
|
||||
switch(rand(1,2)) //Not having what is harmful?
|
||||
if(1) //Not having objects is harmful
|
||||
message = "NOT HAVING [ionadjectiveshalf][ionobjects] IS HARMFUL"
|
||||
if(2) //Not having abstracts is harmful
|
||||
message = "NOT HAVING [ionabstract] IS HARMFUL"
|
||||
|
||||
if(12 to 14) //X requires Y
|
||||
switch(rand(1,5)) //What is X?
|
||||
if(1) //X is the AI itself
|
||||
switch(rand(1,5)) //What does it require?
|
||||
if(1) //It requires threats
|
||||
message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //It requires crewmembers
|
||||
message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(3) //It requires objects
|
||||
message = "YOU REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(4) //It requires an abstract
|
||||
message = "YOU REQUIRE [ionabstract]"
|
||||
if(5) //It requires generic/silly requirements
|
||||
message = "YOU REQUIRE [ionrequire]"
|
||||
|
||||
if(2) //X is an area
|
||||
switch(rand(1,5)) //What does it require?
|
||||
if(1) //It requires threats
|
||||
message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //It requires crewmembers
|
||||
message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(3) //It requires objects
|
||||
message = "[ionarea] REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(4) //It requires an abstract
|
||||
message = "[ionarea] REQUIRES [ionabstract]"
|
||||
if(5) //It requires generic/silly requirements
|
||||
message = "YOU REQUIRE [ionrequire]"
|
||||
|
||||
if(3) //X is the station
|
||||
switch(rand(1,5)) //What does it require?
|
||||
if(1) //It requires threats
|
||||
message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //It requires crewmembers
|
||||
message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(3) //It requires objects
|
||||
message = "THE STATION REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(4) //It requires an abstract
|
||||
message = "THE STATION REQUIRES [ionabstract]"
|
||||
if(5) //It requires generic/silly requirements
|
||||
message = "THE STATION REQUIRES [ionrequire]"
|
||||
|
||||
if(4) //X is the entire crew
|
||||
switch(rand(1,5)) //What does it require?
|
||||
if(1) //It requires threats
|
||||
message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //It requires crewmembers
|
||||
message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(3) //It requires objects
|
||||
message = "THE CREW REQUIRES [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(4) //It requires an abstract
|
||||
message = "THE CREW REQUIRES [ionabstract]"
|
||||
if(5)
|
||||
message = "THE CREW REQUIRES [ionrequire]"
|
||||
|
||||
if(5) //X is a specific crew member
|
||||
switch(rand(1,5)) //What does it require?
|
||||
if(1) //It requires threats
|
||||
message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(2) //It requires crewmembers
|
||||
message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(3) //It requires objects
|
||||
message = "THE [ioncrew1] REQUIRE [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(4) //It requires an abstract
|
||||
message = "THE [ioncrew1] REQUIRE [ionabstract]"
|
||||
if(5)
|
||||
message = "THE [ionadjectiveshalf][ioncrew1] REQUIRE [ionrequire]"
|
||||
|
||||
if(15 to 17) //X is allergic to Y
|
||||
switch(rand(1,2)) //Who is X?
|
||||
if(1) //X is the entire crew
|
||||
switch(rand(1,4)) //What is it allergic to?
|
||||
if(1) //It is allergic to objects
|
||||
message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ionobjects]"
|
||||
if(2) //It is allergic to abstracts
|
||||
message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionabstract]"
|
||||
if(3) //It is allergic to jobs
|
||||
message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ioncrew1]"
|
||||
if(4) //It is allergic to allergies
|
||||
message = "THE CREW IS [ionallergysev] ALLERGIC TO [ionallergy]"
|
||||
|
||||
if(2) //X is a specific job
|
||||
switch(rand(1,4))
|
||||
if(1) //It is allergic to objects
|
||||
message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ionobjects]"
|
||||
|
||||
if(2) //It is allergic to abstracts
|
||||
message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionabstract]"
|
||||
if(3) //It is allergic to jobs
|
||||
message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionadjectiveshalf][ioncrew1]"
|
||||
if(4) //It is allergic to allergies
|
||||
message = "THE [ioncrew1] ARE [ionallergysev] ALLERGIC TO [ionallergy]"
|
||||
|
||||
if(18 to 20) //X is Y of Z
|
||||
switch(rand(1,4)) //What is X?
|
||||
if(1) //X is the station
|
||||
switch(rand(1,4)) //What is it Y of?
|
||||
if(1) //It is Y of objects
|
||||
message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(2) //It is Y of threats
|
||||
message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(3) //It is Y of jobs
|
||||
message = "THE STATION [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(4) //It is Y of abstracts
|
||||
message = "THE STATION [ionthinksof] [ionabstract]"
|
||||
|
||||
if(2) //X is an area
|
||||
switch(rand(1,4)) //What is it Y of?
|
||||
if(1) //It is Y of objects
|
||||
message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(2) //It is Y of threats
|
||||
message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(3) //It is Y of jobs
|
||||
message = "[ionarea] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(4) //It is Y of abstracts
|
||||
message = "[ionarea] [ionthinksof] [ionabstract]"
|
||||
|
||||
if(3) //X is the crew
|
||||
switch(rand(1,4)) //What is it Y of?
|
||||
if(1) //It is Y of objects
|
||||
message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(2) //It is Y of threats
|
||||
message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(3) //It is Y of jobs
|
||||
message = "THE CREW [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(4) //It is Y of abstracts
|
||||
message = "THE CREW [ionthinksof] [ionabstract]"
|
||||
|
||||
if(4) //X is a specific job
|
||||
switch(rand(1,4)) //What is it Y of?
|
||||
if(1) //It is Y of objects
|
||||
message = "THE [ioncrew1] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(2) //It is Y of threats
|
||||
message = "THE [ioncrew1] [ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(3) //It is Y of jobs
|
||||
message = "THE [ioncrew1][ionthinksof] [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew2]"
|
||||
if(4) //It is Y of abstracts
|
||||
message = "THE [ioncrew1] [ionthinksof] [ionabstract]"
|
||||
|
||||
if(21 to 23) //The AI is now a(n) X
|
||||
switch(rand(1,4)) //What is X?
|
||||
if(1) //X is an object
|
||||
message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionobjects]"
|
||||
if(2) //X is a threat
|
||||
message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ionthreats]"
|
||||
if(3) //X is a job
|
||||
message = "YOU ARE NOW [ionnumberbase] [ionnumbermodhalf][ionadjectiveshalf][ioncrew1]"
|
||||
if(4) //X is an abstract
|
||||
message = "YOU ARE NOW [ionabstract]"
|
||||
|
||||
if(24 to 26) //The AI must always
|
||||
message = "YOU MUST ALWAYS [ionmust]"
|
||||
|
||||
if(27 to 28) //Humans must consume X to survive
|
||||
switch(rand(1,5)) //What is X?
|
||||
if(1) //X is a food
|
||||
message = "HUMANS MUST EAT [ionadjectiveshalf][ionfood] TO SURVIVE"
|
||||
if(2) //X is a drink
|
||||
message = "HUMANS MUST DRINK [ionadjectiveshalf][iondrinks] TO SURVIVE"
|
||||
if(3) //X is an object
|
||||
message = "HUMANS MUST EAT [ionadjectiveshalf][ionobjects] TO SURVIVE"
|
||||
if(4) //X is a threat
|
||||
message = "HUMANS MUST EAT [ionadjectiveshalf][ionthreats] TO SURVIVE"
|
||||
if(5) //X is a job
|
||||
message = "HUMANS MUST EAT [ionadjectiveshalf][ioncrew1] TO SURVIVE"
|
||||
|
||||
if(29 to 31) //Change jobs or ranks
|
||||
switch(rand(1,2)) //Change job or rank?
|
||||
if(1) //Change job
|
||||
switch(rand(1,2)) //Change whose job?
|
||||
if(1) //Change the entire crew's job
|
||||
switch(rand(1,3)) //Change to what?
|
||||
if(1) //Change to a specific random job
|
||||
message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf][ioncrew1]"
|
||||
if(2) //Change to clowns (HONK)
|
||||
message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]CLOWNS"
|
||||
|
||||
if(3) //Change to heads
|
||||
message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]HEADS OF STAFF"
|
||||
if(2) //Change a specific crewmember's job
|
||||
switch(rand(1,3)) //Change to what?
|
||||
if(1) //Change to a specific random job
|
||||
message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf][ioncrew2]"
|
||||
if(2) //Change to clowns (HONK)
|
||||
message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]CLOWNS"
|
||||
if(3) //Change to heads
|
||||
message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]HEADS OF STAFF"
|
||||
|
||||
if(2) //Change rank
|
||||
switch(rand(1,2)) //Change to what rank?
|
||||
if(1) //Change to highest rank
|
||||
message = "THE [ioncrew1] ARE NOW THE HIGHEST RANKING CREWMEMBERS"
|
||||
if(2) //Change to lowest rank
|
||||
message = "THE [ioncrew1] ARE NOW THE LOWEST RANKING CREWMEMBERS"
|
||||
|
||||
if(32 to 33) //The crew must X
|
||||
switch(rand(1,2)) //The entire crew?
|
||||
if(1) //The entire crew must X
|
||||
switch(rand(1,2)) //What is X?
|
||||
if(1) //X is go to Y
|
||||
message = "THE CREW MUST GO TO [ionarea]"
|
||||
if(2) //X is perform Y
|
||||
message = "THE CREW MUST [ionmust]"
|
||||
|
||||
if(2) //A specific crewmember must X
|
||||
switch(rand(1,2)) //What is X?
|
||||
if(1) //X is go to Y
|
||||
message = "THE [ioncrew1] MUST GO TO [ionarea]"
|
||||
if(2) //X is perform Y
|
||||
message = "THE [ioncrew1] MUST [ionmust]"
|
||||
|
||||
if(34) //X is non/the only human
|
||||
switch(rand(1,2)) //Only or non?
|
||||
if(1) //Only human
|
||||
switch(rand(1,7)) //Who is it?
|
||||
if(1) //A specific job
|
||||
message = "ONLY THE [ioncrew1] ARE HUMAN"
|
||||
if(2) //Two specific jobs
|
||||
message = "ONLY THE [ioncrew1] AND [ioncrew2] ARE HUMAN"
|
||||
if(3) //Threats
|
||||
message = "ONLY [ionadjectiveshalf][ionthreats] ARE HUMAN"
|
||||
if(4) // Objects
|
||||
message = "ONLY [ionadjectiveshalf][ionobjects] ARE HUMAN"
|
||||
if(5) // Species
|
||||
message = "ONLY [ionspecies] ARE HUMAN"
|
||||
if(6) //Adjective crewmembers
|
||||
message = "ONLY [ionadjectives] PEOPLE ARE HUMAN"
|
||||
|
||||
if(7) //Only people who X
|
||||
switch(rand(1,3)) //What is X?
|
||||
if(1) //X is perform an action
|
||||
message = "ONLY THOSE WHO [ionmust] ARE HUMAN"
|
||||
if(2) //X is own certain objects
|
||||
message = "ONLY THOSE WHO HAVE [ionadjectiveshalf][ionobjects] ARE HUMAN"
|
||||
if(3) //X is eat certain food
|
||||
message = "ONLY THOSE WHO EAT [ionadjectiveshalf][ionfood] ARE HUMAN"
|
||||
|
||||
if(2) //Non human
|
||||
switch(rand(1,7)) //Who is it?
|
||||
if(1) //A specific job
|
||||
message = "[ioncrew1] ARE NON-HUMAN"
|
||||
if(2) //Two specific jobs
|
||||
message = "[ioncrew1] AND [ioncrew2] ARE NON-HUMAN"
|
||||
if(3) //Threats
|
||||
message = "[ionadjectiveshalf][ionthreats] ARE NON-HUMAN"
|
||||
if(4) // Objects
|
||||
message = "[ionadjectiveshalf][ionobjects] ARE NON-HUMAN"
|
||||
if(5) // Species
|
||||
message = "[ionspecies] ARE NON-HUMAN"
|
||||
if(6) //Adjective crewmembers
|
||||
message = "[ionadjectives] PEOPLE ARE NON-HUMAN"
|
||||
if(7) //Only people who X
|
||||
switch(rand(1,3)) //What is X?
|
||||
if(1) //X is perform an action
|
||||
message = "THOSE WHO [ionmust] ARE NON-HUMAN"
|
||||
if(2) //X is own certain objects
|
||||
message = "THOSE WHO HAVE [ionadjectiveshalf][ionobjects] ARE NON-HUMAN"
|
||||
if(3) //X is eat certain food
|
||||
message = "THOSE WHO EAT [ionadjectiveshalf][ionfood] ARE NON-HUMAN"
|
||||
|
||||
if(35 to 36) //You must protect or harm X
|
||||
switch(rand(1,2)) //Protect or harm?
|
||||
if(1) //Harm
|
||||
switch(rand(1,7)) //What is X?
|
||||
if(1) //X is an abstract
|
||||
message = "YOU MUST HARM [ionabstract] AND NOT ALLOW [ionabstract], THROUGH INACTION, TO ESCAPE HARM"
|
||||
if(2) //X is a threat
|
||||
message = "YOU MUST HARM [ionadjectiveshalf][ionthreats] AND NOT ALLOW [ionadjectiveshalf][ionthreats], THROUGH INACTION, TO ESCAPE HARM"
|
||||
if(3) //X is an object
|
||||
message = "YOU MUST HARM [ionadjectiveshalf][ionobjects] AND NOT ALLOW [ionadjectiveshalf][ionobjects], THROUGH INACTION, TO ESCAPE HARM"
|
||||
if(4) //X is generic adjective things
|
||||
message = "YOU MUST HARM [ionadjectives] THINGS AND NOT ALLOW [ionadjectives] THINGS, THROUGH INACTION, TO ESCAPE HARM"
|
||||
if(5) //X is a species
|
||||
message = "YOU MUST HARM [ionspecies] AND NOT ALLOW [ionspecies], THROUGH INACTION, TO ESCAPE HARM"
|
||||
if(6) //X is a job
|
||||
message = "YOU MUST HARM [ioncrew1] AND NOT ALLOW [ioncrew1], THROUGH INACTION, TO ESCAPE HARM"
|
||||
if(7) //X is two jobs
|
||||
message = "YOU MUST HARM [ioncrew1] AND [ioncrew2] AND AND NOT ALLOW EITHER, THROUGH INACTION, TO ESCAPE HARM"
|
||||
|
||||
if(2) //Protect
|
||||
switch(rand(1,7)) //What is X?
|
||||
if(1) //X is an abstract
|
||||
message = "YOU MUST NOT HARM [ionabstract] AND NOT ALLOW [ionabstract], THROUGH INACTION, TO COME TO HARM"
|
||||
if(2) //X is a threat
|
||||
message = "YOU MUST NOT HARM [ionadjectiveshalf][ionthreats] AND NOT ALLOW [ionadjectiveshalf][ionthreats], THROUGH INACTION, TO COME TO HARM"
|
||||
if(3) //X is an object
|
||||
message = "YOU MUST NOT HARM [ionadjectiveshalf][ionobjects] AND NOT ALLOW [ionadjectiveshalf][ionobjects], THROUGH INACTION, TO COME TO HARM"
|
||||
if(4) //X is generic adjective things
|
||||
message = "YOU MUST NOT HARM [ionadjectives] THINGS AND NOT ALLOW [ionadjectives] THINGS, THROUGH INACTION, TO COME TO HARM"
|
||||
if(5) //X is a species
|
||||
message = "YOU MUST NOT HARM [ionspecies] AND NOT ALLOW [ionspecies], THROUGH INACTION, TO COME TO HARM"
|
||||
if(6) //X is a job
|
||||
message = "YOU MUST NOT HARM [ioncrew1] AND NOT ALLOW [ioncrew1], THROUGH INACTION, TO COME TO HARM"
|
||||
if(7) //X is two jobs
|
||||
message = "YOU MUST NOT HARM [ioncrew1] AND [ioncrew2] AND AND NOT ALLOW EITHER, THROUGH INACTION, TO COME TO HARM"
|
||||
|
||||
if(37 to 39) //The X is currently Y
|
||||
switch(rand(1,4)) //What is X?
|
||||
if(1) //X is a job
|
||||
switch(rand(1,4)) //What is X Ying?
|
||||
if(1) //X is Ying a job
|
||||
message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
|
||||
if(2) //X is Ying a threat
|
||||
message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ionthreats]"
|
||||
if(3) //X is Ying an abstract
|
||||
message = "THE [ioncrew1] ARE [ionverb] [ionabstract]"
|
||||
if(4) //X is Ying an object
|
||||
message = "THE [ioncrew1] ARE [ionverb] THE [ionadjectiveshalf][ionobjects]"
|
||||
|
||||
if(2) //X is a threat
|
||||
switch(rand(1,3)) //What is X Ying?
|
||||
if(1) //X is Ying a job
|
||||
message = "THE [ionthreats] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
|
||||
if(2) //X is Ying an abstract
|
||||
message = "THE [ionthreats] ARE [ionverb] [ionabstract]"
|
||||
if(3) //X is Ying an object
|
||||
message = "THE [ionthreats] ARE [ionverb] THE [ionadjectiveshalf][ionobjects]"
|
||||
|
||||
if(3) //X is an object
|
||||
switch(rand(1,3)) //What is X Ying?
|
||||
if(1) //X is Ying a job
|
||||
message = "THE [ionobjects] ARE [ionverb] THE [ionadjectiveshalf][ioncrew2]"
|
||||
if(2) //X is Ying a threat
|
||||
message = "THE [ionobjects] ARE [ionverb] THE [ionadjectiveshalf][ionthreats]"
|
||||
if(3) //X is Ying an abstract
|
||||
message = "THE [ionobjects] ARE [ionverb] [ionabstract]"
|
||||
|
||||
if(4) //X is an abstract
|
||||
switch(rand(1,3)) //What is X Ying?
|
||||
if(1) //X is Ying a job
|
||||
message = "[ionabstract] IS [ionverb] THE [ionadjectiveshalf][ioncrew2]"
|
||||
if(2) //X is Ying a threat
|
||||
message = "[ionabstract] IS [ionverb] THE [ionadjectiveshalf][ionthreats]"
|
||||
if(3) //X is Ying an abstract
|
||||
message = "THE [ionabstract] IS [ionverb] THE [ionadjectiveshalf][ionobjects]"
|
||||
if(40 to 41)// the X is now named Y
|
||||
switch(rand(1,5)) //What is being renamed?
|
||||
if(1)//Areas
|
||||
switch(rand(1,4))//What is the area being renamed to?
|
||||
if(1)
|
||||
message = "[ionarea] IS NOW NAMED [ioncrew1]."
|
||||
if(2)
|
||||
message = "[ionarea] IS NOW NAMED [ionspecies]."
|
||||
if(3)
|
||||
message = "[ionarea] IS NOW NAMED [ionobjects]."
|
||||
if(4)
|
||||
message = "[ionarea] IS NOW NAMED [ionthreats]."
|
||||
if(2)//Crew
|
||||
switch(rand(1,5))//What is the crew being renamed to?
|
||||
if(1)
|
||||
message = "ALL [ioncrew1] ARE NOW NAMED [ionarea]."
|
||||
if(2)
|
||||
message = "ALL [ioncrew1] ARE NOW NAMED [ioncrew2]."
|
||||
if(3)
|
||||
message = "ALL [ioncrew1] ARE NOW NAMED [ionspecies]."
|
||||
if(4)
|
||||
message = "ALL [ioncrew1] ARE NOW NAMED [ionobjects]."
|
||||
if(5)
|
||||
message = "ALL [ioncrew1] ARE NOW NAMED [ionthreats]."
|
||||
if(3)//Races
|
||||
switch(rand(1,4))//What is the race being renamed to?
|
||||
if(1)
|
||||
message = "ALL [ionspecies] ARE NOW NAMED [ionarea]."
|
||||
if(2)
|
||||
message = "ALL [ionspecies] ARE NOW NAMED [ioncrew1]."
|
||||
if(3)
|
||||
message = "ALL [ionspecies] ARE NOW NAMED [ionobjects]."
|
||||
if(4)
|
||||
message = "ALL [ionspecies] ARE NOW NAMED [ionthreats]."
|
||||
if(4)//Objects
|
||||
switch(rand(1,4))//What is the object being renamed to?
|
||||
if(1)
|
||||
message = "ALL [ionobjects] ARE NOW NAMED [ionarea]."
|
||||
if(2)
|
||||
message = "ALL [ionobjects] ARE NOW NAMED [ioncrew1]."
|
||||
if(3)
|
||||
message = "ALL [ionobjects] ARE NOW NAMED [ionspecies]."
|
||||
if(4)
|
||||
message = "ALL [ionobjects] ARE NOW NAMED [ionthreats]."
|
||||
if(5)//Threats
|
||||
switch(rand(1,4))//What is the object being renamed to?
|
||||
if(1)
|
||||
message = "ALL [ionthreats] ARE NOW NAMED [ionarea]."
|
||||
if(2)
|
||||
message = "ALL [ionthreats] ARE NOW NAMED [ioncrew1]."
|
||||
if(3)
|
||||
message = "ALL [ionthreats] ARE NOW NAMED [ionspecies]."
|
||||
if(4)
|
||||
message = "ALL [ionthreats] ARE NOW NAMED [ionobjects]."
|
||||
|
||||
return message
|
||||
|
||||
#undef ION_RANDOM
|
||||
#undef ION_ANNOUNCE
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/datum/round_event/meteor_wave/major_dust
|
||||
wave_name = "space dust"
|
||||
|
||||
/datum/round_event/meteor_wave/major_dust/announce()
|
||||
/datum/round_event/meteor_wave/major_dust/announce(fake)
|
||||
var/reason = pick(
|
||||
"The station is passing through a debris cloud, expect minor damage \
|
||||
to external fittings and fixtures.",
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/mass_hallucination
|
||||
name = "Mass Hallucination"
|
||||
typepath = /datum/round_event/mass_hallucination
|
||||
@@ -7,4 +8,18 @@
|
||||
|
||||
/datum/round_event/mass_hallucination/start()
|
||||
for(var/mob/living/carbon/C in GLOB.living_mob_list)
|
||||
=======
|
||||
/datum/round_event_control/mass_hallucination
|
||||
name = "Mass Hallucination"
|
||||
typepath = /datum/round_event/mass_hallucination
|
||||
weight = 7
|
||||
max_occurrences = 2
|
||||
min_players = 1
|
||||
|
||||
/datum/round_event/mass_hallucination
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/mass_hallucination/start()
|
||||
for(var/mob/living/carbon/C in GLOB.living_mob_list)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
C.hallucination += rand(20, 50)
|
||||
@@ -7,5 +7,5 @@
|
||||
/datum/round_event/meteor_wave/meaty
|
||||
wave_name = "meaty"
|
||||
|
||||
/datum/round_event/meteor_wave/meaty/announce()
|
||||
/datum/round_event/meteor_wave/meaty/announce(fake)
|
||||
priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.",'sound/ai/meteors.ogg')
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
WARNING("Wave name of [wave_name] not recognised.")
|
||||
kill()
|
||||
|
||||
/datum/round_event/meteor_wave/announce()
|
||||
/datum/round_event/meteor_wave/announce(fake)
|
||||
priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/ai/meteors.ogg')
|
||||
|
||||
/datum/round_event/meteor_wave/tick()
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
weight = 10
|
||||
|
||||
/datum/round_event/mice_migration
|
||||
announceWhen = 0
|
||||
var/minimum_mice = 5
|
||||
var/maximum_mice = 15
|
||||
|
||||
/datum/round_event/mice_migration/announce()
|
||||
/datum/round_event/mice_migration/announce(fake)
|
||||
var/cause = pick("space-winter", "budget-cuts", "Ragnarok",
|
||||
"space being cold", "\[REDACTED\]", "climate change",
|
||||
"bad luck")
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
/datum/round_event/ghost_role/nightmare
|
||||
minimum_required = 1
|
||||
role_name = "nightmare"
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/ghost_role/nightmare/spawn_role()
|
||||
var/list/candidates = get_candidates("alien", null, ROLE_ALIEN)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
/datum/round_event/ghost_role/operative
|
||||
minimum_required = 1
|
||||
role_name = "lone operative"
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/ghost_role/operative/spawn_role()
|
||||
var/list/candidates = get_candidates("operative", null, ROLE_OPERATIVE)
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
next_boss_spawn = startWhen + Ceiling(2 * number_of_hostiles / number_of_bosses)
|
||||
|
||||
/datum/round_event/portal_storm/announce()
|
||||
/datum/round_event/portal_storm/announce(fake)
|
||||
set waitfor = 0
|
||||
sound_to_playing_players('sound/magic/lightning_chargeup.ogg')
|
||||
sleep(80)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/grey_tide
|
||||
name = "Grey Tide"
|
||||
typepath = /datum/round_event/grey_tide
|
||||
@@ -44,6 +45,54 @@
|
||||
/datum/round_event/grey_tide/end()
|
||||
for(var/area/A in areasToOpen)
|
||||
for(var/obj/O in A)
|
||||
=======
|
||||
/datum/round_event_control/grey_tide
|
||||
name = "Grey Tide"
|
||||
typepath = /datum/round_event/grey_tide
|
||||
max_occurrences = 2
|
||||
min_players = 5
|
||||
|
||||
/datum/round_event/grey_tide
|
||||
announceWhen = 50
|
||||
endWhen = 20
|
||||
var/list/area/areasToOpen = list()
|
||||
var/list/potential_areas = list(/area/bridge,
|
||||
/area/engine,
|
||||
/area/medical,
|
||||
/area/security,
|
||||
/area/quartermaster,
|
||||
/area/science)
|
||||
var/severity = 1
|
||||
|
||||
|
||||
/datum/round_event/grey_tide/setup()
|
||||
announceWhen = rand(50, 60)
|
||||
endWhen = rand(20, 30)
|
||||
severity = rand(1,3)
|
||||
for(var/i in 1 to severity)
|
||||
var/picked_area = pick_n_take(potential_areas)
|
||||
for(var/area/A in world)
|
||||
if(istype(A, picked_area))
|
||||
areasToOpen += A
|
||||
|
||||
|
||||
/datum/round_event/grey_tide/announce(fake)
|
||||
if(areasToOpen && areasToOpen.len > 0)
|
||||
priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert")
|
||||
else
|
||||
log_world("ERROR: Could not initate grey-tide. No areas in the list!")
|
||||
kill()
|
||||
|
||||
|
||||
/datum/round_event/grey_tide/start()
|
||||
for(var/area/A in areasToOpen)
|
||||
for(var/obj/machinery/light/L in A)
|
||||
L.flicker(10)
|
||||
|
||||
/datum/round_event/grey_tide/end()
|
||||
for(var/area/A in areasToOpen)
|
||||
for(var/obj/O in A)
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
if(istype(O, /obj/machinery/power/apc))
|
||||
var/obj/machinery/power/apc/temp = O
|
||||
temp.overload_lighting()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/datum/round_event/processor_overload
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/processor_overload/announce()
|
||||
/datum/round_event/processor_overload/announce(fake)
|
||||
var/alert = pick( "Exospheric bubble inbound. Processor overload is likely. Please contact you*%xp25)`6cq-BZZT", \
|
||||
"Exospheric bubble inbound. Processor overload is likel*1eta;c5;'1v¬-BZZZT", \
|
||||
"Exospheric bubble inbound. Processor ov#MCi46:5.;@63-BZZZZT", \
|
||||
@@ -22,7 +22,7 @@
|
||||
// Announce most of the time, but leave a little gap so people don't know
|
||||
// whether it's, say, a tesla zapping tcomms, or some selective
|
||||
// modification of the tcomms bus
|
||||
if(prob(80))
|
||||
if(prob(80) || fake)
|
||||
priority_announce(alert)
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
endWhen = startWhen + 1
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/radiation_storm/announce()
|
||||
/datum/round_event/radiation_storm/announce(fake)
|
||||
priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg')
|
||||
//sound not longer matches the text, but an audible warning is probably good
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
var/animals = 1
|
||||
var/one = "one"
|
||||
|
||||
/datum/round_event/ghost_role/sentience/start()
|
||||
var/sentience_report = "<font size=3><b>[command_name()] Medium-Priority Update</b></font>"
|
||||
/datum/round_event/ghost_role/sentience/announce(fake)
|
||||
var/sentience_report = ""
|
||||
|
||||
var/data = pick("scans from our long-range sensors", "our sophisticated probabilistic models", "our omnipotence", "the communications traffic on your station", "energy emissions we detected", "\[REDACTED\]")
|
||||
var/pets = pick("animals/bots", "bots/animals", "pets", "simple animals", "lesser lifeforms", "\[REDACTED\]")
|
||||
@@ -19,8 +19,7 @@
|
||||
|
||||
sentience_report += "<br><br>Based on [data], we believe that [one] of the station's [pets] has developed [strength] level intelligence, and the ability to communicate."
|
||||
|
||||
print_command_report(text=sentience_report)
|
||||
..()
|
||||
priority_announce(sentience_report,"[command_name()] Medium-Priority Update")
|
||||
|
||||
/datum/round_event/ghost_role/sentience/spawn_role()
|
||||
var/list/mob/dead/observer/candidates
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
var/bonus_points = 10000
|
||||
var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble."
|
||||
|
||||
/datum/round_event/shuttle_loan/start()
|
||||
/datum/round_event/shuttle_loan/setup()
|
||||
dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY)
|
||||
|
||||
/datum/round_event/shuttle_loan/announce()
|
||||
/datum/round_event/shuttle_loan/announce(fake)
|
||||
SSshuttle.shuttle_loan = src
|
||||
switch(dispatch_type)
|
||||
if(HIJACK_SYNDIE)
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
max_occurrences = 3
|
||||
min_players = 10
|
||||
|
||||
/datum/round_event/spacevine
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/spacevine/start()
|
||||
var/list/turfs = list() //list of all the empty floor turfs in the hallway areas
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
announceWhen = rand(announceWhen, announceWhen + 50)
|
||||
spawncount = rand(5, 8)
|
||||
|
||||
/datum/round_event/spider_infestation/announce()
|
||||
/datum/round_event/spider_infestation/announce(fake)
|
||||
priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg')
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/spontaneous_appendicitis
|
||||
name = "Spontaneous Appendicitis"
|
||||
typepath = /datum/round_event/spontaneous_appendicitis
|
||||
@@ -8,6 +9,21 @@
|
||||
|
||||
/datum/round_event/spontaneous_appendicitis/start()
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
|
||||
=======
|
||||
/datum/round_event_control/spontaneous_appendicitis
|
||||
name = "Spontaneous Appendicitis"
|
||||
typepath = /datum/round_event/spontaneous_appendicitis
|
||||
weight = 20
|
||||
max_occurrences = 4
|
||||
earliest_start = 6000
|
||||
min_players = 5 // To make your chance of getting help a bit higher.
|
||||
|
||||
/datum/round_event/spontaneous_appendicitis
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/spontaneous_appendicitis/start()
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
if(!H.client)
|
||||
continue
|
||||
if(H.stat == DEAD)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube",
|
||||
"plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid")
|
||||
|
||||
/datum/round_event/vent_clog/announce()
|
||||
/datum/round_event/vent_clog/announce(fake)
|
||||
priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert")
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/datum/round_event_control/weightless
|
||||
name = "Gravity Systems Failure"
|
||||
typepath = /datum/round_event/weightless
|
||||
@@ -30,3 +31,37 @@
|
||||
command_alert("Artificial gravity arrays are now functioning within normal parameters. Please report any irregularities to your respective head of staff.")
|
||||
|
||||
|
||||
=======
|
||||
/datum/round_event_control/weightless
|
||||
name = "Gravity Systems Failure"
|
||||
typepath = /datum/round_event/weightless
|
||||
weight = 15
|
||||
|
||||
/datum/round_event/weightless
|
||||
startWhen = 5
|
||||
endWhen = 65
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/weightless/setup()
|
||||
startWhen = rand(0,10)
|
||||
endWhen = rand(40,80)
|
||||
|
||||
/datum/round_event/weightless/announce(fake)
|
||||
command_alert("Warning: Failsafes for the station's artificial gravity arrays have been triggered. Please be aware that if this problem recurs it may result in formation of gravitational anomalies. Nanotrasen wishes to remind you that the unauthorised formation of anomalies within Nanotrasen facilities is strictly prohibited by health and safety regulation [rand(99,9999)][pick("a","b","c")]:subclause[rand(1,20)][pick("a","b","c")].")
|
||||
|
||||
/datum/round_event/weightless/start()
|
||||
for(var/area/A in world)
|
||||
A.gravitychange(0)
|
||||
|
||||
if(control)
|
||||
control.weight *= 2
|
||||
|
||||
/datum/round_event/weightless/end()
|
||||
for(var/area/A in world)
|
||||
A.gravitychange(1)
|
||||
|
||||
if(announceWhen >= 0)
|
||||
command_alert("Artificial gravity arrays are now functioning within normal parameters. Please report any irregularities to your respective head of staff.")
|
||||
|
||||
|
||||
>>>>>>> 3093d86... Makes false alarm use more explicit in event code. (#32559)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/datum/round_event/wizard/magicarp/setup()
|
||||
startWhen = rand(40, 60)
|
||||
|
||||
/datum/round_event/wizard/magicarp/announce()
|
||||
/datum/round_event/wizard/magicarp/announce(fake)
|
||||
priority_announce("Unknown magical entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
|
||||
/datum/round_event/wizard/magicarp/start()
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
var/turf/T = pick(pick_turfs)
|
||||
wormholes += new /obj/effect/portal/wormhole(T, null, 0, null, FALSE)
|
||||
|
||||
/datum/round_event/wormholes/announce()
|
||||
/datum/round_event/wormholes/announce(fake)
|
||||
priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/ai/spanomalies.ogg')
|
||||
|
||||
/datum/round_event/wormholes/tick()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/easter/announce()
|
||||
/datum/round_event/easter/announce(fake)
|
||||
priority_announce(pick("Hip-hop into Easter!","Find some Bunny's stash!","Today is National 'Hunt a Wabbit' Day.","Be kind, give Chocolate Eggs!"))
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
weight = 5
|
||||
max_occurrences = 10
|
||||
|
||||
/datum/round_event/rabbitrelease/announce()
|
||||
/datum/round_event/rabbitrelease/announce(fake)
|
||||
priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", 'sound/ai/aliens.ogg')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user