April sync (#360)

* Maps and things no code/icons

* helpers defines globalvars

* Onclick world.dm orphaned_procs

* subsystems

Round vote and shuttle autocall done here too

* datums

* Game folder

* Admin - chatter modules

* clothing - mining

* modular computers - zambies

* client

* mob level 1

* mob stage 2 + simple_animal

* silicons n brains

* mob stage 3 + Alien/Monkey

* human mobs

* icons updated

* some sounds

* emitter y u no commit

* update tgstation.dme

* compile fixes

* travis fixes

Also removes Fast digest mode, because reasons.

* tweaks for travis Mentors are broke again

Also fixes Sizeray guns

* oxygen loss fix for vore code.

* removes unused code

* some code updates

* bulk fixes

* further fixes

* outside things

* whoops.

* Maint bar ported

* GLOBs.
This commit is contained in:
Poojawa
2017-04-13 23:37:00 -05:00
committed by GitHub
parent cdc32c98fa
commit 7e9b96a00f
1322 changed files with 174827 additions and 23888 deletions
+6 -6
View File
@@ -15,7 +15,7 @@
var/max_occurrences = 20 //The maximum number of times this event can occur (naturally), it can still be forced.
//By setting this to 0 you can effectively disable an event.
var/holidayID = "" //string which should be in the SSevents.holidays list if you wish this event to be holiday-specific
var/holidayID = "" //string which should be in the SSeventss.holidays list if you wish this event to be holiday-specific
//anything with a (non-null) holidayID which does not match holiday, cannot run.
var/wizardevent = 0
@@ -43,7 +43,7 @@
return FALSE
if(earliest_start >= world.time)
return FALSE
if(wizardevent != SSevent.wizardmode)
if(wizardevent != SSevents.wizardmode)
return FALSE
if(players_amt < min_players)
return FALSE
@@ -51,7 +51,7 @@
return FALSE
if(gamemode_whitelist.len && !(gamemode in gamemode_whitelist))
return FALSE
if(holidayID && (!SSevent.holidays || !SSevent.holidays[holidayID]))
if(holidayID && (!SSevents.holidays || !SSevents.holidays[holidayID]))
return FALSE
return TRUE
@@ -78,7 +78,7 @@
triggering = FALSE
message_admins("[key_name_admin(usr)] cancelled event [name].")
log_admin_private("[key_name(usr)] cancelled event [name].")
feedback_add_details("admin_verb","CancelEvent: [typepath]")
feedback_add_details("admin_verb","Cancel Event: [typepath]")
/datum/round_event_control/proc/runEvent(random)
var/datum/round_event/E = new typepath()
@@ -175,12 +175,12 @@
//which should be the only place it's referenced.
//Called when start(), announce() and end() has all been called.
/datum/round_event/proc/kill()
SSevent.running -= src
SSevents.running -= src
//Sets up the event then adds the event to the the list of running events
/datum/round_event/New(my_processing = TRUE)
setup()
processing = my_processing
SSevent.running += src
SSevents.running += src
return ..()
+6 -6
View File
@@ -19,11 +19,11 @@
return NOT_ENOUGH_PLAYERS
//Oh god why we can't have static functions
// I feel your pain, bro
var/number = ticker.mode.abductor_teams + 1
var/number = SSticker.mode.abductor_teams + 1
var/datum/game_mode/abduction/temp
if(ticker.mode.config_tag == "abduction")
temp = ticker.mode
if(SSticker.mode.config_tag == "abduction")
temp = SSticker.mode
else
temp = new
@@ -47,10 +47,10 @@
temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind)
temp.post_setup_team(number)
ticker.mode.abductor_teams++
SSticker.mode.abductor_teams++
if(ticker.mode.config_tag != "abduction")
ticker.mode.abductors |= temp.abductors
if(SSticker.mode.config_tag != "abduction")
SSticker.mode.abductors |= temp.abductors
spawned_mobs += list(agent, scientist)
return SUCCESSFUL_SPAWN
+1 -1
View File
@@ -36,7 +36,7 @@
/datum/round_event/ghost_role/alien_infestation/spawn_role()
var/list/vents = list()
for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in machines)
for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in GLOB.machines)
if(QDELETED(temp_vent))
continue
if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded)
+3 -3
View File
@@ -24,14 +24,14 @@
/datum/round_event/ghost_role/blob/spawn_role()
if(!blobstart.len)
if(!GLOB.blobstart.len)
return MAP_ERROR
var/list/candidates = get_candidates("blob", null, ROLE_BLOB)
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
var/mob/dead/observer/new_blob = pick(candidates)
var/obj/structure/blob/core/BC = new/obj/structure/blob/core(pick(blobstart), new_blob.client, new_rate)
BC.overmind.blob_points = min(20 + player_list.len, BC.overmind.max_blob_points)
var/obj/structure/blob/core/BC = new/obj/structure/blob/core(pick(GLOB.blobstart), new_blob.client, new_rate)
BC.overmind.blob_points = min(20 + GLOB.player_list.len, BC.overmind.max_blob_points)
spawned_mobs += BC.overmind
message_admins("[key_name_admin(BC.overmind)] has been made into a blob overmind by an event.")
log_game("[key_name(BC.overmind)] was spawned as a blob overmind by an event.")
+1 -1
View File
@@ -26,7 +26,7 @@
/datum/round_event/brand_intelligence/start()
for(var/obj/machinery/vending/V in machines)
for(var/obj/machinery/vending/V in GLOB.machines)
if(V.z != 1)
continue
vendingMachines.Add(V)
+2 -2
View File
@@ -12,10 +12,10 @@
/datum/round_event/camera_failure/tick()
var/iterations = 1
var/obj/machinery/camera/C = pick(cameranet.cameras)
var/obj/machinery/camera/C = pick(GLOB.cameranet.cameras)
while(prob(round(100/iterations)))
while(!("SS13" in C.network))
C = pick(cameranet.cameras)
C = pick(GLOB.cameranet.cameras)
if(C.status)
C.toggle_cam(null, 0)
iterations *= 2.5
+1 -1
View File
@@ -18,7 +18,7 @@
/datum/round_event/carp_migration/start()
for(var/obj/effect/landmark/C in landmarks_list)
for(var/obj/effect/landmark/C in GLOB.landmarks_list)
if(C.name == "carpspawn")
if(prob(95))
new /mob/living/simple_animal/hostile/carp(C.loc)
@@ -8,13 +8,13 @@
/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", \
"Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v-BZZZT", \
"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \
"Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \
"Ionospheri:%£ MCayj^j<.3-BZZZZZZT", \
"#4nd%;f4y6,>£%-BZZZZZZZT")
"Ionospheri:% MCayj^j<.3-BZZZZZZT", \
"#4nd%;f4y6,>%-BZZZZZZZT")
for(var/mob/living/silicon/ai/A in ai_list) //AIs are always aware of communication blackouts.
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)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
@@ -22,5 +22,5 @@
/datum/round_event/communications_blackout/start()
for(var/obj/machinery/telecomms/T in telecomms_list)
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
T.emp_act(1)
+4 -4
View File
@@ -14,7 +14,7 @@
/datum/round_event/ghost_role/devil/spawn_role()
//selecting a spawn_loc
var/list/spawn_locs = latejoin
var/list/spawn_locs = GLOB.latejoin
var/spawn_loc = pick(spawn_locs)
if(!spawn_loc)
return MAP_ERROR
@@ -32,8 +32,8 @@
var/mob/living/carbon/human/devil = create_event_devil(spawn_loc)
Mind.transfer_to(devil)
ticker.mode.finalize_devil(Mind, FALSE)
ticker.mode.add_devil_objectives(src, 2)
SSticker.mode.finalize_devil(Mind, FALSE)
SSticker.mode.add_devil_objectives(src, 2)
Mind.announceDevilLaws()
Mind.announce_objectives()
@@ -58,5 +58,5 @@
var/datum/mind/Mind = new /datum/mind(key)
Mind.assigned_role = "devil"
Mind.special_role = "devil"
ticker.mode.devils |= Mind
SSticker.mode.devils |= Mind
return Mind
+1 -1
View File
@@ -21,7 +21,7 @@
if(!virus_type)
virus_type = pick(/datum/disease/dnaspread, /datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis)
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
var/turf/T = get_turf(H)
if(!T)
continue
+2 -2
View File
@@ -12,7 +12,7 @@
announceWhen = 0
/datum/round_event/space_dust/start()
spawn_meteors(1, meteorsC)
spawn_meteors(1, GLOB.meteorsC)
/datum/round_event_control/sandstorm
name = "Sandstorm"
@@ -27,4 +27,4 @@
announceWhen = 0
/datum/round_event/sandstorm/tick()
spawn_meteors(10, meteorsC)
spawn_meteors(10, GLOB.meteorsC)
+2 -2
View File
@@ -3,7 +3,7 @@
typepath = /datum/round_event/electrical_storm
earliest_start = 6000
min_players = 5
weight = 5
weight = 15
alertadmins = 0
/datum/round_event/electrical_storm
@@ -20,7 +20,7 @@
for(var/i=1, i <= lightsoutAmount, i++)
var/list/possibleEpicentres = list()
for(var/obj/effect/landmark/newEpicentre in landmarks_list)
for(var/obj/effect/landmark/newEpicentre in GLOB.landmarks_list)
if(newEpicentre.name == "lightsout" && !(newEpicentre in epicentreList))
possibleEpicentres += newEpicentre
if(possibleEpicentres.len)
+16 -12
View File
@@ -4,25 +4,18 @@
weight = 20
max_occurrences = 5
/datum/round_event_control/falsealarm/canSpawnEvent(players_amt, gamemode)
return ..() && length(gather_false_events())
/datum/round_event/falsealarm
announceWhen = 0
endWhen = 1
/datum/round_event/falsealarm/announce()
var/list/events_list = list()
var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
var/gamemode = ticker.mode.config_tag
for(var/datum/round_event_control/E in SSevent.control)
if(!E.canSpawnEvent(players_amt, gamemode))
continue
var/datum/round_event/event = E.typepath
if(initial(event.announceWhen) <= 0)
continue
events_list += E
var/gamemode = SSticker.mode.config_tag
var/events_list = gather_false_events(players_amt, gamemode)
var/datum/round_event_control/event_control = pick(events_list)
if(event_control)
var/datum/round_event/Event = new event_control.typepath()
@@ -30,4 +23,15 @@
Event.kill() //do not process this event - no starts, no ticks, no ends
Event.announce() //just announce it like it's happening
/proc/gather_false_events(players_amt, gamemode)
. = list()
for(var/datum/round_event_control/E in SSevents.control)
if(istype(E,/datum/round_event_control/falsealarm))
continue
if(!E.canSpawnEvent(players_amt, gamemode))
continue
var/datum/round_event/event = E.typepath
if(initial(event.announceWhen) <= 0)
continue
. += E
+1 -1
View File
@@ -13,7 +13,7 @@
/datum/round_event/grid_check/start()
for(var/P in apcs_list)
for(var/P in GLOB.apcs_list)
var/obj/machinery/power/apc/C = P
if(C.cell && C.z == ZLEVEL_STATION)
C.energy_fail(rand(30,120))
+7 -7
View File
@@ -8,7 +8,7 @@
/datum/round_event/spooky/start()
..()
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
var/obj/item/weapon/storage/backpack/b = locate() in H.contents
new /obj/item/weapon/storage/spooky(b)
if(ishuman(H) || islizard(H))
@@ -17,9 +17,9 @@
else
H.set_species(/datum/species/zombie)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in mob_list)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_list)
Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian))
for(var/mob/living/simple_animal/parrot/Poly/Poly in mob_list)
for(var/mob/living/simple_animal/parrot/Poly/Poly in GLOB.mob_list)
new /mob/living/simple_animal/parrot/Poly/ghost(Poly.loc)
qdel(Poly)
@@ -35,7 +35,7 @@
earliest_start = 0
/datum/round_event/carp_migration/eyeballs/start()
for(var/obj/effect/landmark/C in landmarks_list)
for(var/obj/effect/landmark/C in GLOB.landmarks_list)
if(C.name == "carpspawn")
new /mob/living/simple_animal/hostile/carp/eyeball(C.loc)
@@ -52,7 +52,7 @@
/datum/round_event/meteor_wave/spooky/tick()
if(IsMultiple(activeFor, 4))
spawn_meteors(3, meteorsSPOOKY) //meteor list types defined in gamemode/meteor/meteors.dm
spawn_meteors(3, GLOB.meteorsSPOOKY) //meteor list types defined in gamemode/meteor/meteors.dm
//Creepy clown invasion
/datum/round_event_control/creepy_clowns
@@ -66,7 +66,7 @@
endWhen = 40
/datum/round_event/creepy_clowns/start()
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
if(!H.client || !istype(H))
return
to_chat(H, "<span class='danger'>Honk...</span>")
@@ -77,7 +77,7 @@
/datum/round_event/creepy_clowns/tick()
if(IsMultiple(activeFor, 4))
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
if (prob(66))
playsound(H.loc, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 100, 1)
if (prob(33))
+4 -4
View File
@@ -14,14 +14,14 @@
/datum/round_event/valentines/start()
..()
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
H.put_in_hands(new /obj/item/weapon/valentine)
var/obj/item/weapon/storage/backpack/b = locate() in H.contents
new /obj/item/weapon/reagent_containers/food/snacks/candyheart(b)
var/list/valentines = list()
for(var/mob/living/M in player_list)
for(var/mob/living/M in GLOB.player_list)
if(!M.stat && M.client && M.mind)
valentines |= M
@@ -45,12 +45,12 @@
to_chat(L, "<span class='warning'><B>You didn't get a date! They're all having fun without you! you'll show them though...</B></span>")
var/datum/objective/martyr/normiesgetout = new
normiesgetout.owner = L.mind
ticker.mode.traitors |= L.mind
SSticker.mode.traitors |= L.mind
L.mind.objectives += normiesgetout
/proc/forge_valentines_objective(mob/living/lover,mob/living/date)
ticker.mode.traitors |= lover.mind
SSticker.mode.traitors |= lover.mind
lover.mind.special_role = "valentine"
var/datum/objective/protect/protect_objective = new /datum/objective/protect
+5 -5
View File
@@ -30,9 +30,9 @@
for(var/turf/open/floor/T in orange(1,xmas))
for(var/i=1,i<=rand(1,5),i++)
new /obj/item/weapon/a_gift(T)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in mob_list)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_list)
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian))
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in machines)
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in GLOB.machines)
Monitor.icon_state = "entertainment_xmas"
/datum/round_event/presents/announce()
@@ -60,7 +60,7 @@
"What do you get from eating tree decorations?\n\n<i>Tinsilitis!</i>",
"What do snowmen wear on their heads?\n\n<i>Ice caps!</i>",
"Why is Christmas just like life on ss13?\n\n<i>You do all the work and the fat guy gets all the credit.</i>",
"Why doesnt Santa have any children?\n\n<i>Because he only comes down the chimney.</i>")
"Why doesnt Santa have any children?\n\n<i>Because he only comes down the chimney.</i>")
new /obj/item/clothing/head/festive(target.loc)
user.update_icons()
cracked = 1
@@ -103,11 +103,11 @@
priority_announce("Santa is coming to town!", "Unknown Transmission")
/datum/round_event/santa/start()
for(var/mob/M in dead_mob_list)
for(var/mob/M in GLOB.dead_mob_list)
spawn(0)
var/response = alert(M, "Santa is coming to town! Do you want to be santa?", "Ho ho ho!", "Yes", "No")
if(response == "Yes" && M && M.client && M.stat == DEAD && !santa)
santa = new /mob/living/carbon/human(pick(blobstart))
santa = new /mob/living/carbon/human(pick(GLOB.blobstart))
santa.key = M.key
qdel(M)
+3 -3
View File
@@ -20,7 +20,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
priority_announce("What the fuck was that?!", "General Alert")
/datum/round_event/immovable_rod/start()
var/startside = pick(cardinal)
var/startside = pick(GLOB.cardinal)
var/turf/startT = spaceDebrisStartLoc(startside, 1)
var/turf/endT = spaceDebrisFinishLoc(startside, 1)
new /obj/effect/immovablerod(startT, endT)
@@ -47,7 +47,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
notify_ghosts("\A [src] is inbound!",
enter_link="<a href=?src=\ref[src];orbit=1>(Click to orbit)</a>",
source=src, action=NOTIFY_ORBIT)
poi_list += src
GLOB.poi_list += src
if(end && end.z==z_original)
walk_towards(src, destination, 1)
@@ -58,7 +58,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
ghost.ManualFollow(src)
/obj/effect/immovablerod/Destroy()
poi_list -= src
GLOB.poi_list -= src
. = ..()
/obj/effect/immovablerod/Move()
+2 -2
View File
@@ -32,7 +32,7 @@
/datum/round_event/ion_storm/start()
//AI laws
for(var/mob/living/silicon/ai/M in living_mob_list)
for(var/mob/living/silicon/ai/M in GLOB.living_mob_list)
M.laws_sanity_check()
if(M.stat != 2 && M.see_in_dark != 0)
if(prob(replaceLawsetChance))
@@ -55,7 +55,7 @@
M.post_lawchange()
if(botEmagChance)
for(var/mob/living/simple_animal/bot/bot in living_mob_list)
for(var/mob/living/simple_animal/bot/bot in GLOB.living_mob_list)
if(prob(botEmagChance))
bot.emag_act()
+1 -1
View File
@@ -6,5 +6,5 @@
min_players = 1
/datum/round_event/mass_hallucination/start()
for(var/mob/living/carbon/C in living_mob_list)
for(var/mob/living/carbon/C in GLOB.living_mob_list)
C.hallucination += rand(20, 50)
+5 -5
View File
@@ -27,15 +27,15 @@
"catastrophic" = 10))
switch(wave_name)
if("normal")
wave_type = meteors_normal
wave_type = GLOB.meteors_normal
if("threatening")
wave_type = meteors_threatening
wave_type = GLOB.meteors_threatening
if("catastrophic")
wave_type = meteors_catastrophic
wave_type = GLOB.meteors_catastrophic
if("meaty")
wave_type = meteorsB
wave_type = GLOB.meteorsB
if("space dust")
wave_type = meteorsC
wave_type = GLOB.meteorsC
else
WARNING("Wave name of [wave_name] not recognised.")
kill()
+3 -3
View File
@@ -16,7 +16,7 @@
var/mob/dead/selected = pick_n_take(candidates)
var/list/spawn_locs = list()
for(var/obj/effect/landmark/L in landmarks_list)
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
if(L.name in list("ninjaspawn","carpspawn"))
spawn_locs += L.loc
if(!spawn_locs.len)
@@ -32,10 +32,10 @@
var/datum/mind/Mind = new /datum/mind(selected.key)
Mind.assigned_role = "Lone Operative"
Mind.special_role = "Lone Operative"
ticker.mode.traitors |= Mind
SSticker.mode.traitors |= Mind
Mind.active = 1
var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in machines
var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in GLOB.machines
if(nuke)
var/nuke_code
if(!nuke.r_code || nuke.r_code == "ADMIN")
+2 -2
View File
@@ -50,14 +50,14 @@
for(var/hostile in hostile_types)
number_of_hostiles += hostile_types[hostile]
var/list/b_spawns = generic_event_spawns.Copy()
var/list/b_spawns = GLOB.generic_event_spawns.Copy()
while(number_of_bosses > boss_spawn.len)
var/turf/F = get_turf(pick_n_take(b_spawns))
if(!F)
F = safepick(get_area_turfs(pick(station_areas)))
boss_spawn += F
var/list/h_spawns = generic_event_spawns.Copy()
var/list/h_spawns = GLOB.generic_event_spawns.Copy()
while(number_of_hostiles > hostiles_spawn.len)
var/turf/T = get_turf(pick_n_take(h_spawns))
if(!T)
+2 -2
View File
@@ -15,7 +15,7 @@
"Exospheri:%£ QCbyj^j</.3-BZZZZZZT", \
"!!hy%;f3l7e,<$^-BZZZZZZZT")
for(var/mob/living/silicon/ai/A in ai_list)
for(var/mob/living/silicon/ai/A in GLOB.ai_list)
//AIs are always aware of processor overload
to_chat(A, "<br><span class='warning'><b>[alert]</b></span><br>")
@@ -27,7 +27,7 @@
/datum/round_event/processor_overload/start()
for(var/obj/machinery/telecomms/T in telecomms_list)
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
if(istype(T, /obj/machinery/telecomms/processor))
var/obj/machinery/telecomms/processor/P = T
if(prob(10))
+6 -4
View File
@@ -29,11 +29,11 @@
// find our chosen mob to breathe life into
// Mobs have to be simple animals, mindless and on station
var/list/potential = list()
for(var/mob/living/simple_animal/L in living_mob_list)
for(var/mob/living/simple_animal/L in GLOB.living_mob_list)
var/turf/T = get_turf(L)
if(T.z != ZLEVEL_STATION)
continue
if(!(L in player_list) && !L.mind)
if(!(L in GLOB.player_list) && !L.mind)
potential += L
if(!potential.len)
@@ -49,8 +49,10 @@
spawned_animals++
SA.key = SG.key
SA.languages_spoken |= HUMAN
SA.languages_understood |= HUMAN
SA.grant_language(/datum/language/common)
SET_SECONDARY_FLAG(SA, OMNITONGUE)
SA.sentience_act()
SA.maxHealth = max(SA.maxHealth, 200)
+4 -4
View File
@@ -434,14 +434,14 @@
var/list/growth_queue = list()
var/spread_multiplier = 5
var/spread_cap = 30
var/list/mutations_list = list()
var/list/GLOB.mutations_list = list()
var/mutativeness = 1
/obj/effect/spacevine_controller/New(loc, list/muts, potency, production)
add_atom_colour("#ffffff", FIXED_COLOUR_PRIORITY)
spawn_spacevine_piece(loc, , muts)
START_PROCESSING(SSobj, src)
init_subtypes(/datum/spacevine_mutation/, mutations_list)
init_subtypes(/datum/spacevine_mutation/, GLOB.mutations_list)
if(potency != null)
mutativeness = potency / 10
if(production != null)
@@ -476,7 +476,7 @@
var/parentcolor = parent.atom_colours[FIXED_COLOUR_PRIORITY]
SV.add_atom_colour(parentcolor, FIXED_COLOUR_PRIORITY)
if(prob(mutativeness))
var/datum/spacevine_mutation/randmut = pick(mutations_list - SV.mutations)
var/datum/spacevine_mutation/randmut = pick(GLOB.mutations_list - SV.mutations)
randmut.add_mutation_to_vinepiece(SV)
for(var/datum/spacevine_mutation/SM in SV.mutations)
@@ -547,7 +547,7 @@
buckle_mob(V, 1)
/obj/structure/spacevine/proc/spread()
var/direction = pick(cardinal)
var/direction = pick(GLOB.cardinal)
var/turf/stepturf = get_step(src,direction)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_spread(src, stepturf)
@@ -7,7 +7,7 @@
min_players = 5 // To make your chance of getting help a bit higher.
/datum/round_event/spontaneous_appendicitis/start()
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
var/foundAlready = 0 //don't infect someone that already has the virus
for(var/datum/disease/D in H.viruses)
foundAlready = 1
+2 -3
View File
@@ -10,8 +10,7 @@
var/interval = 2
var/list/vents = list()
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",
"aphro","aphro+","anaphro","anaphro+","semen")
"plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid")
/datum/round_event/vent_clog/announce()
priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert")
@@ -19,7 +18,7 @@
/datum/round_event/vent_clog/setup()
endWhen = rand(25, 100)
for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in machines)
for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in GLOB.machines)
if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded)
var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1
if(temp_vent_parent.other_atmosmch.len > 20)
+2 -2
View File
@@ -9,7 +9,7 @@
/datum/round_event/wizard/robelesscasting/start()
for(var/mob/living/L in mob_list) //Hey if a corgi has magic missle he should get the same benifit as anyone
for(var/mob/living/L in GLOB.mob_list) //Hey if a corgi has magic missle he should get the same benifit as anyone
if(L.mind && L.mind.spell_list.len != 0)
var/spell_improved = 0
for(var/obj/effect/proc_holder/spell/S in L.mind.spell_list)
@@ -29,7 +29,7 @@
earliest_start = 0
/datum/round_event/wizard/improvedcasting/start()
for(var/mob/living/L in mob_list)
for(var/mob/living/L in GLOB.mob_list)
if(L.mind && L.mind.spell_list.len != 0)
for(var/obj/effect/proc_holder/spell/S in L.mind.spell_list)
S.name = initial(S.name)
+1 -1
View File
@@ -7,5 +7,5 @@
/datum/round_event/wizard/blobies/start()
for(var/mob/living/carbon/human/H in dead_mob_list)
for(var/mob/living/carbon/human/H in GLOB.dead_mob_list)
new /mob/living/simple_animal/hostile/blob/blobspore(H.loc)
+3 -3
View File
@@ -37,10 +37,10 @@
ruins_spaceworthiness = 1
ruins_wizard_loadout = 1
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
if(ruins_spaceworthiness && (H.z != 1 || isspaceturf(H.loc) || isplasmaman(H)))
continue //#savetheminers
if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)))
if(ruins_wizard_loadout && H.mind && ((H.mind in SSticker.mode.wizards) || (H.mind in SSticker.mode.apprentices)))
continue
if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry
H.gender = FEMALE
@@ -54,7 +54,7 @@
I.flags |= NODROP
I.name = "cursed " + I.name
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
@@ -35,14 +35,14 @@
nation += pick("stan", "topia", "land", "nia", "ca", "tova", "dor", "ador", "tia", "sia", "ano", "tica", "tide", "cis", "marea", "co", "taoide", "slavia", "stotzka")
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.mind)
var/datum/mind/M = H.mind
if(M.assigned_role && !(M in ticker.mode.traitors))
if(M.assigned_role && !(M in SSticker.mode.traitors))
for(var/job in jobs_to_revolt)
if(M.assigned_role == job)
citizens += H
ticker.mode.traitors += M
SSticker.mode.traitors += M
M.special_role = "separatist"
H.log_message("<font color='red'>Was made into a separatist, long live [nation]!</font>", INDIVIDUAL_ATTACK_LOG)
to_chat(H, "<B>You are a separatist! [nation] forever! Protect the soverignty of your newfound land with your comrades in arms!</B>")
+2 -2
View File
@@ -6,6 +6,6 @@
earliest_start = 0
/datum/round_event/wizard/fake_explosion/start()
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
M << 'sound/machines/Alarm.ogg'
addtimer(CALLBACK(ticker, /datum/controller/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
addtimer(CALLBACK(SSticker, /datum/controller/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
+1 -1
View File
@@ -20,7 +20,7 @@
earliest_start = 0
/datum/round_event/wizard/possession/start()
for(var/mob/dead/observer/G in player_list)
for(var/mob/dead/observer/G in GLOB.player_list)
G.verbs += /mob/dead/observer/verb/boo
G.verbs += /mob/dead/observer/verb/possess
to_chat(G, "You suddenly feel a welling of new spooky powers...")
+6 -6
View File
@@ -7,7 +7,7 @@
/datum/round_event/wizard/greentext/start()
var/list/holder_canadates = player_list.Copy()
var/list/holder_canadates = GLOB.player_list.Copy()
for(var/mob/M in holder_canadates)
if(!ishuman(M))
holder_canadates -= M
@@ -33,7 +33,7 @@
/obj/item/weapon/greentext/New()
..()
poi_list |= src
GLOB.poi_list |= src
/obj/item/weapon/greentext/equipped(mob/living/user as mob)
to_chat(user, "<font color='green'>So long as you leave this place with greentext in hand you know will be happy...</font>")
@@ -60,8 +60,8 @@
/obj/item/weapon/greentext/process()
if(new_holder && new_holder.z == ZLEVEL_CENTCOM)//you're winner!
to_chat(new_holder, "<font color='green'>At last it feels like victory is assured!</font>")
if(!(new_holder in ticker.mode.traitors))
ticker.mode.traitors += new_holder.mind
if(!(new_holder in SSticker.mode.traitors))
SSticker.mode.traitors += new_holder.mind
new_holder.mind.special_role = "winner"
var/datum/objective/O = new /datum/objective("Succeed")
O.completed = 1 //YES!
@@ -82,8 +82,8 @@
return QDEL_HINT_LETMELIVE
. = ..()
poi_list.Remove(src)
for(var/mob/M in mob_list)
GLOB.poi_list.Remove(src)
for(var/mob/M in GLOB.mob_list)
var/message = "<span class='warning'>A dark temptation has passed from this world"
if(M in color_altered_mobs)
message += " and you're finally able to forgive yourself"
+3 -3
View File
@@ -7,7 +7,7 @@
/datum/round_event/wizard/imposter/start()
for(var/datum/mind/M in ticker.mode.wizards)
for(var/datum/mind/M in SSticker.mode.wizards)
if(!ishuman(M.current))
continue
var/mob/living/carbon/human/W = M.current
@@ -43,7 +43,7 @@
I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null))
I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null))
ticker.mode.apprentices += I.mind
SSticker.mode.apprentices += I.mind
I.mind.special_role = "imposter"
var/datum/objective/protect/protect_objective = new /datum/objective/protect
@@ -51,7 +51,7 @@
protect_objective.target = W.mind
protect_objective.explanation_text = "Protect [W.real_name], the wizard."
I.mind.objectives += protect_objective
ticker.mode.update_wiz_icons_added(I.mind)
SSticker.mode.update_wiz_icons_added(I.mind)
I.log_message("<font color='red'>Is an imposter!</font>", INDIVIDUAL_ATTACK_LOG)
to_chat(I, "<B>You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!</B>")
+1 -1
View File
@@ -7,6 +7,6 @@
/datum/round_event/wizard/invincible/start()
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs)
to_chat(H, "<span class='notice'>You feel invincible, nothing can hurt you!</span>")
+1 -1
View File
@@ -16,7 +16,7 @@
priority_announce("Unknown magical entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
/datum/round_event/wizard/magicarp/start()
for(var/obj/effect/landmark/C in landmarks_list)
for(var/obj/effect/landmark/C in GLOB.landmarks_list)
if(C.name == "carpspawn")
if(prob(5))
new /mob/living/simple_animal/hostile/carp/ranged/chaos(C.loc)
+1 -1
View File
@@ -12,6 +12,6 @@
/datum/round_event/wizard/petsplosion/tick()
if(activeFor >= 30 * countdown) // 0 seconds : 2 animals | 30 seconds : 4 animals | 1 minute : 8 animals
countdown += 1
for(var/mob/living/simple_animal/F in living_mob_list) //If you cull the heard before the next replication, things will be easier for you
for(var/mob/living/simple_animal/F in GLOB.living_mob_list) //If you cull the heard before the next replication, things will be easier for you
if(!ishostile(F))
new F.type(F.loc)
+1 -1
View File
@@ -20,7 +20,7 @@
if(prob(50))
all_the_same = 1
for(var/mob/living/carbon/human/H in mob_list) //yes, even the dead
for(var/mob/living/carbon/human/H in GLOB.mob_list) //yes, even the dead
H.set_species(new_species)
H.real_name = new_species.random_name(H.gender,1)
H.dna.unique_enzymes = H.dna.generate_unique_enzymes()
+7 -7
View File
@@ -12,7 +12,7 @@
var/list/moblocs = list()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
if(H.z != 1)
continue //lets not try to strand people in space or stuck in the wizards den
moblocs += H.loc
@@ -30,7 +30,7 @@
do_teleport(H, moblocs[moblocs.len])
moblocs.len -= 1
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
@@ -48,7 +48,7 @@
var/list/mobnames = list()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
mobnames += H.real_name
mobs += H
@@ -64,7 +64,7 @@
H.real_name = mobnames[mobnames.len]
mobnames.len -= 1
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
@@ -81,8 +81,8 @@
/datum/round_event/wizard/shuffleminds/start()
var/list/mobs = list()
for(var/mob/living/carbon/human/H in living_mob_list)
if(H.stat || !H.mind || (H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices))
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
if(H.stat || !H.mind || (H.mind in SSticker.mode.wizards) || (H.mind in SSticker.mode.apprentices))
continue //the wizard(s) are spared on this one
mobs += H
@@ -98,7 +98,7 @@
swapper.cast(list(H), mobs[mobs.len], 1)
mobs -= mobs[mobs.len]
for(var/mob/living/carbon/human/H in living_mob_list)
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, H.loc)
smoke.start()
+3 -3
View File
@@ -39,7 +39,7 @@
O.loc = T
/datum/round_event/wormholes/end()
portals.Remove(wormholes)
GLOB.portals.Remove(wormholes)
for(var/obj/effect/portal/wormhole/O in wormholes)
O.loc = null
wormholes.Cut()
@@ -67,8 +67,8 @@
if(istype(M, /atom/movable))
var/turf/target
if(portals.len)
var/obj/effect/portal/P = pick(portals)
if(GLOB.portals.len)
var/obj/effect/portal/P = pick(GLOB.portals)
if(P && isturf(P.loc))
target = P.loc
if(!target)