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
@@ -40,8 +40,8 @@
if(..())
return
var/A
A = input("Area to bombard", "Open Fire", A) in teleportlocs
var/area/thearea = teleportlocs[A]
A = input("Area to bombard", "Open Fire", A) in GLOB.teleportlocs
var/area/thearea = GLOB.teleportlocs[A]
if(usr.stat || usr.restrained())
return
if(reload < reload_cooldown)
@@ -58,8 +58,8 @@
/*/mob/proc/openfire()
var/A
A = input("Area to jump bombard", "Open Fire", A) in teleportlocs
var/area/thearea = teleportlocs[A]
A = input("Area to jump bombard", "Open Fire", A) in GLOB.teleportlocs
var/area/thearea = GLOB.teleportlocs[A]
priority_announce("Bluespace artillery fire detected. Brace for impact.")
spawn(30)
var/list/L = list()
+45 -49
View File
@@ -41,14 +41,15 @@
/obj/item/weapon/twohanded/ctf/process()
if(world.time > reset_cooldown)
forceMove(get_turf(src.reset))
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
to_chat(M, "<span class='userdanger'>\The [src] has been returned to base!</span>")
STOP_PROCESSING(SSobj, src)
/obj/item/weapon/twohanded/ctf/attack_hand(mob/living/user)
if(!user)
if(!is_ctf_target(user))
to_chat(user, "Non players shouldn't be moving the flag!")
return
if(team in user.faction)
to_chat(user, "You can't move your own flag!")
@@ -62,7 +63,7 @@
dropped(user)
return
user.anchored = TRUE
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
to_chat(M, "<span class='userdanger'>\The [src] has been taken!</span>")
@@ -73,7 +74,7 @@
user.anchored = FALSE
reset_cooldown = world.time + 200 //20 seconds
START_PROCESSING(SSobj, src)
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
to_chat(M, "<span class='userdanger'>\The [src] has been dropped!</span>")
@@ -118,7 +119,7 @@
/proc/toggle_all_ctf(mob/user)
var/ctf_enabled = FALSE
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
ctf_enabled = CTF.toggle_ctf()
message_admins("[key_name_admin(user)] has [ctf_enabled? "enabled" : "disabled"] CTF!")
notify_ghosts("CTF has been [ctf_enabled? "enabled" : "disabled"]!",'sound/effects/ghost2.ogg')
@@ -145,11 +146,10 @@
var/ctf_gear = /datum/outfit/ctf
var/instagib_gear = /datum/outfit/ctf/instagib
var/list/obj/effect/ctf/dead_barricade/dead_barricades = list()
var/list/obj/structure/barricade/security/ctf/living_barricades = list()
var/list/dead_barricades = list()
var/static/ctf_object_typecache
var/static/arena_cleared = FALSE
var/static/arena_reset = FALSE
/obj/machinery/capture_the_flag/Initialize()
..()
@@ -163,10 +163,10 @@
/obj/effect/ctf,
/obj/item/weapon/twohanded/ctf
))
poi_list |= src
GLOB.poi_list |= src
/obj/machinery/capture_the_flag/Destroy()
poi_list.Remove(src)
GLOB.poi_list.Remove(src)
..()
/obj/machinery/capture_the_flag/process()
@@ -206,7 +206,7 @@
toggle_all_ctf(user)
return
if(ticker.current_state < GAME_STATE_PLAYING)
if(SSticker.current_state < GAME_STATE_PLAYING)
return
if(user.ckey in team_members)
if(user.ckey in recently_dead_ckeys)
@@ -218,7 +218,7 @@
spawn_team_member(new_team_member)
return
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
if(CTF == src || CTF.ctf_enabled == FALSE)
continue
if(user.ckey in CTF.team_members)
@@ -247,6 +247,7 @@
/obj/machinery/capture_the_flag/proc/spawn_team_member(client/new_team_member)
var/mob/living/carbon/human/M = new/mob/living/carbon/human(get_turf(src))
new_team_member.prefs.copy_to(M)
M.set_species(/datum/species/synth)
M.key = new_team_member.key
M.faction += team
M.equipOutfit(ctf_gear)
@@ -264,7 +265,7 @@
if(flag.team != src.team)
user.transferItemToLoc(flag, get_turf(flag.reset), TRUE)
points++
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
to_chat(M, "<span class='userdanger'>[user.real_name] has captured \the [flag], scoring a point for [team] team! They now have [points]/[points_to_win] points!</span>")
@@ -272,7 +273,7 @@
victory()
/obj/machinery/capture_the_flag/proc/victory()
for(var/mob/M in mob_list)
for(var/mob/M in GLOB.mob_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
to_chat(M, "<span class='narsie'>[team] team wins!</span>")
@@ -280,16 +281,16 @@
for(var/obj/item/weapon/twohanded/ctf/W in M)
M.dropItemToGround(W)
M.dust()
for(var/obj/machinery/control_point/control in machines)
for(var/obj/machinery/control_point/control in GLOB.machines)
control.icon_state = "dominator"
control.controlling = null
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
if(CTF.ctf_enabled == TRUE)
CTF.points = 0
CTF.control_points = 0
CTF.ctf_enabled = FALSE
CTF.team_members = list()
CTF.arena_cleared = FALSE
CTF.arena_reset = FALSE
addtimer(CALLBACK(CTF, .proc/start_ctf), 300)
/obj/machinery/capture_the_flag/proc/toggle_ctf()
@@ -308,27 +309,26 @@
dead_barricades.Cut()
for(var/b in living_barricades)
var/obj/structure/barricade/security/ctf/B = b
B.obj_integrity = B.max_integrity
notify_ghosts("[name] has been activated!", enter_link="<a href=?src=\ref[src];join=1>(Click to join the [team] team!)</a> or click on the controller directly!", source = src, action=NOTIFY_ATTACK)
if(!arena_cleared)
clear_the_arena()
arena_cleared = TRUE
if(!arena_reset)
reset_the_arena()
arena_reset = TRUE
/obj/machinery/capture_the_flag/proc/clear_the_arena()
/obj/machinery/capture_the_flag/proc/reset_the_arena()
var/area/A = get_area(src)
for(var/atm in A)
if(!is_type_in_typecache(atm, ctf_object_typecache))
qdel(atm)
if(istype(atm, /obj/structure))
var/obj/structure/S = atm
S.obj_integrity = S.max_integrity
/obj/machinery/capture_the_flag/proc/stop_ctf()
ctf_enabled = FALSE
arena_cleared = FALSE
arena_reset = FALSE
var/area/A = get_area(src)
for(var/i in mob_list)
for(var/i in GLOB.mob_list)
var/mob/M = i
if((get_area(A) == A) && (M.ckey in team_members))
M.dust()
@@ -337,13 +337,13 @@
recently_dead_ckeys.Cut()
/obj/machinery/capture_the_flag/proc/instagib_mode()
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
if(CTF.ctf_enabled == TRUE)
CTF.ctf_gear = CTF.instagib_gear
CTF.respawn_cooldown = INSTAGIB_RESPAWN
/obj/machinery/capture_the_flag/proc/normal_mode()
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
if(CTF.ctf_enabled == TRUE)
CTF.ctf_gear = initial(ctf_gear)
CTF.respawn_cooldown = DEFAULT_RESPAWN
@@ -433,6 +433,7 @@
/obj/item/projectile/beam/ctf/red
icon_state = "laser"
impact_effect_type = /obj/effect/overlay/temp/impact_effect/red_laser
// BLUE TEAM GUNS
@@ -447,6 +448,7 @@
/obj/item/projectile/beam/ctf/blue
icon_state = "bluelaser"
impact_effect_type = /obj/effect/overlay/temp/impact_effect/blue_laser
/datum/outfit/ctf
name = "CTF"
@@ -485,7 +487,6 @@
shoes = /obj/item/clothing/shoes/jackboots/fast
/datum/outfit/ctf/red
ears = /obj/item/device/radio/headset/syndicate/alt
suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red
r_hand = /obj/item/weapon/gun/ballistic/automatic/laser/ctf/red
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/red
@@ -496,7 +497,6 @@
shoes = /obj/item/clothing/shoes/jackboots/fast
/datum/outfit/ctf/blue
ears = /obj/item/device/radio/headset/headset_cent/commander
suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue
r_hand = /obj/item/weapon/gun/ballistic/automatic/laser/ctf/blue
l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/blue
@@ -509,14 +509,18 @@
/datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H)
..()
var/obj/item/device/radio/R = H.ears
R.set_frequency(SYND_FREQ)
R.freqlock = 1
R.set_frequency(GLOB.REDTEAM_FREQ)
R.freqlock = TRUE
R.independent = TRUE
H.dna.species.stunmod = 0
/datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H)
..()
var/obj/item/device/radio/R = H.ears
R.set_frequency(CENTCOM_FREQ)
R.freqlock = 1
R.set_frequency(GLOB.BLUETEAM_FREQ)
R.freqlock = TRUE
R.independent = TRUE
H.dna.species.stunmod = 0
@@ -534,6 +538,8 @@
return
/obj/structure/trap/ctf/trap_effect(mob/living/L)
if(!is_ctf_target(L))
return
if(!(src.team in L.faction))
to_chat(L, "<span class='danger'><B>Stay out of the enemy spawn!</B></span>")
L.death()
@@ -552,16 +558,6 @@
deploy_time = 0
deploy_message = 0
/obj/structure/barricade/security/ctf/Initialize(mapload)
..()
for(var/obj/machinery/capture_the_flag/CTF in machines)
CTF.living_barricades += src
/obj/structure/barricade/security/ctf/Destroy()
for(var/obj/machinery/capture_the_flag/CTF in machines)
CTF.living_barricades -= src
. = ..()
/obj/structure/barricade/security/ctf/make_debris()
new /obj/effect/ctf/dead_barricade(get_turf(src))
@@ -598,7 +594,7 @@
/obj/effect/ctf/ammo/proc/reload(mob/living/M)
if(!ishuman(M))
return
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
if(M in CTF.spawned_mobs)
var/outfit = CTF.ctf_gear
var/datum/outfit/O = new outfit
@@ -618,7 +614,7 @@
/obj/effect/ctf/dead_barricade/Initialize(mapload)
..()
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
CTF.dead_barricades += src
/obj/effect/ctf/dead_barricade/proc/respawn()
@@ -654,11 +650,11 @@
/obj/machinery/control_point/proc/capture(mob/user)
if(do_after(user, 30, target = src))
for(var/obj/machinery/capture_the_flag/CTF in machines)
for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines)
if(CTF.ctf_enabled && (user.ckey in CTF.team_members))
controlling = CTF
icon_state = "dominator-[CTF.team]"
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
var/area/mob_area = get_area(M)
if(istype(mob_area, /area/ctf))
to_chat(M, "<span class='userdanger'>[user.real_name] has captured \the [src], claiming it for [CTF.team]! Go take it back!</span>")
+11 -18
View File
@@ -22,7 +22,7 @@
anchored = 1
/obj/effect/mob_spawn/attack_ghost(mob/user)
if(ticker.current_state != GAME_STATE_PLAYING || !loc)
if(SSticker.current_state != GAME_STATE_PLAYING || !loc)
return
if(!uses)
to_chat(user, "<span class='warning'>This spawner is out of charges!</span>")
@@ -38,13 +38,13 @@
/obj/effect/mob_spawn/Initialize(mapload)
..()
if(instant || (roundstart && (mapload || (ticker && ticker.current_state > GAME_STATE_SETTING_UP))))
if(instant || (roundstart && (mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP))))
create()
else
poi_list |= src
GLOB.poi_list |= src
/obj/effect/mob_spawn/Destroy()
poi_list.Remove(src)
GLOB.poi_list.Remove(src)
. = ..()
/obj/effect/mob_spawn/proc/special(mob/M)
@@ -67,6 +67,7 @@
M.adjustOxyLoss(oxy_damage)
M.adjustBruteLoss(brute_damage)
equip(M)
if(ckey)
M.ckey = ckey
@@ -77,7 +78,6 @@
MM.objectives += new/datum/objective(objective)
special(M)
MM.name = M.real_name
equip(M)
if(uses > 0)
uses--
if(!permanent && !uses)
@@ -115,13 +115,6 @@
/obj/effect/mob_spawn/human/equip(mob/living/carbon/human/H)
if(mob_species)
H.set_species(mob_species)
else
//If we're a human, we still need to handle our snowflake code anyway I guess.
if (NOAROUSAL in H.dna.species.species_traits)
H.canbearoused = FALSE
else
if(H.client)
H.canbearoused = H.client.prefs.arousable
if(husk)
H.Drain()
@@ -265,7 +258,7 @@
back = /obj/item/weapon/storage/backpack
has_id = 1
id_job = "Operative"
id_access_list = list(access_syndicate)
id_access_list = list(GLOB.access_syndicate)
/obj/effect/mob_spawn/human/syndicatecommando
name = "Syndicate Commando"
@@ -279,7 +272,7 @@
pocket1 = /obj/item/weapon/tank/internals/emergency_oxygen
has_id = 1
id_job = "Operative"
id_access_list = list(access_syndicate)
id_access_list = list(GLOB.access_syndicate)
///////////Civilians//////////////////////
@@ -356,7 +349,7 @@
glasses = /obj/item/clothing/glasses/sunglasses/reagent
has_id = 1
id_job = "Bartender"
id_access_list = list(access_bar)
id_access_list = list(GLOB.access_bar)
/obj/effect/mob_spawn/human/bartender/alive
death = FALSE
@@ -393,7 +386,7 @@
glasses = /obj/item/clothing/glasses/sunglasses
has_id = 1
id_job = "Bridge Officer"
id_access_list = list(access_cent_captain)
id_access_list = list(GLOB.access_cent_captain)
/obj/effect/mob_spawn/human/commander
name = "Commander"
@@ -408,7 +401,7 @@
pocket1 = /obj/item/weapon/lighter
has_id = 1
id_job = "Commander"
id_access_list = list(access_cent_captain)
id_access_list = list(GLOB.access_cent_captain)
/obj/effect/mob_spawn/human/nanotrasensoldier
name = "Nanotrasen Private Security Officer"
@@ -421,7 +414,7 @@
back = /obj/item/weapon/storage/backpack/security
has_id = 1
id_job = "Private Security Force"
id_access_list = list(access_cent_specops)
id_access_list = list(GLOB.access_cent_specops)
/obj/effect/mob_spawn/human/commander/alive
death = FALSE
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/structure/closet/secure_closet/exile
name = "exile implants"
req_access = list(access_hos)
req_access = list(GLOB.access_hos)
/obj/structure/closet/secure_closet/exile/New()
..()
+29 -18
View File
@@ -1,4 +1,4 @@
var/obj/machinery/gateway/centerstation/the_gateway = null
GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway
name = "gateway"
@@ -16,8 +16,13 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
var/can_link = FALSE //Is this the centerpiece?
/obj/machinery/gateway/Initialize()
randomspawns = GLOB.awaydestinations
update_icon()
if(!istype(src, /obj/machinery/gateway/centerstation) && !istype(src, /obj/machinery/gateway/centeraway))
switch(dir)
if(SOUTH,SOUTHEAST,SOUTHWEST)
density = 0
..()
randomspawns = awaydestinations
/obj/machinery/gateway/proc/toggleoff()
for(var/obj/machinery/gateway/G in linked)
@@ -33,7 +38,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
var/turf/T = loc
var/ready = FALSE
for(var/i in alldirs)
for(var/i in GLOB.alldirs)
T = get_step(loc, i)
var/obj/machinery/gateway/G = locate(/obj/machinery/gateway) in T
if(G)
@@ -49,14 +54,6 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
ready = TRUE
return ready
/obj/machinery/gateway/Initialize()
..()
update_icon()
switch(dir)
if(SOUTH,SOUTHEAST,SOUTHWEST)
density = 0
/obj/machinery/gateway/update_icon()
if(active)
icon_state = "on"
@@ -80,12 +77,12 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
/obj/machinery/gateway/centerstation/New()
..()
if(!the_gateway)
the_gateway = src
if(!GLOB.the_gateway)
GLOB.the_gateway = src
/obj/machinery/gateway/centerstation/Destroy()
if(the_gateway == src)
the_gateway = null
if(GLOB.the_gateway == src)
GLOB.the_gateway = null
return ..()
//this is da important part wot makes things go
@@ -209,6 +206,12 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
active = 1
update_icon()
/obj/machinery/gateway/centeraway/proc/check_exile_implant(mob/living/carbon/C)
for(var/obj/item/weapon/implant/exile/E in C.implants)//Checking that there is an exile implant
to_chat(C, "\black The station gate has detected your exile implant and is blocking your entry.")
return TRUE
return FALSE
/obj/machinery/gateway/centeraway/Bumped(atom/movable/AM)
if(!detect())
return
@@ -217,10 +220,18 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
if(!stationgate || QDELETED(stationgate))
return
if(istype(AM, /mob/living/carbon))
var/mob/living/carbon/C = AM
for(var/obj/item/weapon/implant/exile/E in C.implants)//Checking that there is an exile implant
to_chat(AM, "\black The station gate has detected your exile implant and is blocking your entry.")
if(check_exile_implant(AM))
return
else
for(var/mob/living/carbon/C in AM.contents)
if(check_exile_implant(C))
say("Rejecting [AM]: Exile implant detected in contained lifeform.")
return
if(AM.buckled_mobs.len)
for(var/mob/living/carbon/C in AM.buckled_mobs)
if(check_exile_implant(C))
say("Rejecting [AM]: Exile implant detected in close proximity lifeform.")
return
AM.forceMove(get_step(stationgate.loc, SOUTH))
AM.setDir(SOUTH)
if (ismob(AM))
@@ -47,7 +47,7 @@
/obj/structure/academy_wizard_spawner/process()
if(next_check < world.time)
if(!current_wizard)
for(var/mob/living/L in player_list)
for(var/mob/living/L in GLOB.player_list)
if(L.z == src.z && L.stat != DEAD && !(faction in L.faction))
summon_wizard()
break
@@ -93,7 +93,7 @@
var/datum/objective/O = new("Protect Wizard Academy from the intruders")
wizmind.objectives += O
wizmind.transfer_to(wizbody)
ticker.mode.wizards |= wizmind
SSticker.mode.wizards |= wizmind
wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt)
wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile)
@@ -133,7 +133,7 @@
/obj/item/weapon/dice/d20/fate/diceroll(mob/user)
..()
if(!used)
if(!ishuman(user) || !user.mind || (user.mind in ticker.mode.wizards))
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
to_chat(user, "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans!</span>")
return
if(rigged)
@@ -142,7 +142,7 @@
effect(user,result)
/obj/item/weapon/dice/d20/fate/equipped(mob/user, slot)
if(!ishuman(user) || !user.mind || (user.mind in ticker.mode.wizards))
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
to_chat(user, "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans! You should leave it alone.</span>")
user.drop_item()
@@ -160,7 +160,7 @@
user.death()
if(3)
//Swarm of creatures
for(var/direction in alldirs)
for(var/direction in GLOB.alldirs)
var/turf/T = get_turf(src)
new /mob/living/simple_animal/hostile/creature(get_step(T,direction))
if(4)
@@ -180,7 +180,7 @@
//Throw
user.Stun(3)
user.adjustBruteLoss(50)
var/throw_dir = pick(cardinal)
var/throw_dir = pick(GLOB.cardinal)
var/atom/throw_target = get_edge_target_turf(user, throw_dir)
user.throw_at(throw_target, 200, 4)
if(8)
@@ -203,7 +203,7 @@
if(13)
//Mad Dosh
var/turf/Start = get_turf(src)
for(var/direction in alldirs)
for(var/direction in GLOB.alldirs)
var/turf/T = get_step(Start,direction)
if(rand(0,1))
new /obj/item/stack/spacecash/c1000(T)
@@ -284,7 +284,7 @@
if(!target_mob)
return
var/turf/Start = get_turf(user)
for(var/direction in alldirs)
for(var/direction in GLOB.alldirs)
var/turf/T = get_step(Start,direction)
if(!T.density)
target_mob.Move(T)
@@ -303,6 +303,6 @@
user.visible_message("[user] activates \the [src].","<span class='notice'>You activate \the [src].</span>")
/obj/structure/ladder/can_use(mob/user)
if(user.mind in ticker.mode.wizards)
if(user.mind in SSticker.mode.wizards)
return 0
return 1
@@ -117,3 +117,7 @@
/obj/effect/landmark/mapGenerator/snowy
mapGeneratorType = /datum/mapGenerator/snowy
endTurfX = 159
endTurfY = 157
startTurfX = 37
startTurfY = 35
@@ -72,23 +72,23 @@
*/
//These vars hold the code itself, they'll be generated at round-start
var/sc_safecode1 = "[rand(0,9)]"
var/sc_safecode2 = "[rand(0,9)]"
var/sc_safecode3 = "[rand(0,9)]"
var/sc_safecode4 = "[rand(0,9)]"
var/sc_safecode5 = "[rand(0,9)]"
GLOBAL_VAR_INIT(sc_safecode1, "[rand(0,9)]")
GLOBAL_VAR_INIT(sc_safecode2, "[rand(0,9)]")
GLOBAL_VAR_INIT(sc_safecode3, "[rand(0,9)]")
GLOBAL_VAR_INIT(sc_safecode4, "[rand(0,9)]")
GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
//Pieces of paper actually containing the hints
/obj/item/weapon/paper/sc_safehint_paper_prison
name = "smudged paper"
/obj/item/weapon/paper/sc_safehint_paper_prison/New()
info = "<i>The ink is smudged, you can only make out a couple numbers:</i> '[sc_safecode1]**[sc_safecode4]*'"
info = "<i>The ink is smudged, you can only make out a couple numbers:</i> '[GLOB.sc_safecode1]**[GLOB.sc_safecode4]*'"
/obj/item/weapon/paper/sc_safehint_paper_hydro
name = "shredded paper"
/obj/item/weapon/paper/sc_safehint_paper_hydro/New()
info = "<i>Although the paper is shredded, you can clearly see the number:</i> '[sc_safecode2]'"
info = "<i>Although the paper is shredded, you can clearly see the number:</i> '[GLOB.sc_safecode2]'"
/obj/item/weapon/paper/sc_safehint_paper_caf
name = "blood-soaked paper"
@@ -99,7 +99,7 @@ var/sc_safecode5 = "[rand(0,9)]"
name = "hidden paper"
/obj/item/weapon/paper/sc_safehint_paper_bible/New()
info = {"<i>It would appear that the pen hidden with the paper had leaked ink over the paper.
However you can make out the last three digits:</i>'[sc_safecode3][sc_safecode4][sc_safecode5]'
However you can make out the last three digits:</i>'[GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]'
"}
/obj/item/weapon/paper/sc_safehint_paper_shuttle
@@ -123,7 +123,7 @@ var/sc_safecode5 = "[rand(0,9)]"
/obj/item/weapon/storage/secure/safe/sc_ssafe/New()
..()
l_code = "[sc_safecode1][sc_safecode2][sc_safecode3][sc_safecode4][sc_safecode5]"
l_code = "[GLOB.sc_safecode1][GLOB.sc_safecode2][GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]"
l_set = 1
new /obj/item/weapon/gun/energy/mindflayer(src)
new /obj/item/device/soulstone(src)
@@ -64,7 +64,7 @@
if("To Kill")
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
to_chat(user, "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart.")
ticker.mode.traitors += user.mind
SSticker.mode.traitors += user.mind
user.mind.special_role = "traitor"
var/datum/objective/hijack/hijack = new
hijack.owner = user.mind
@@ -75,7 +75,7 @@
if("Peace")
to_chat(user, "<B>Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.</B>")
to_chat(user, "You feel as if you just narrowly avoided a terrible fate...")
for(var/mob/living/simple_animal/hostile/faithless/F in mob_list)
for(var/mob/living/simple_animal/hostile/faithless/F in GLOB.mob_list)
F.death()
+8 -8
View File
@@ -1,33 +1,33 @@
// How much "space" we give the edge of the map
var/global/list/potentialRandomZlevels = generateMapList(filename = "config/awaymissionconfig.txt")
GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "config/awaymissionconfig.txt"))
/proc/createRandomZlevel()
if(awaydestinations.len) //crude, but it saves another var!
if(GLOB.awaydestinations.len) //crude, but it saves another var!
return
if(potentialRandomZlevels && potentialRandomZlevels.len)
if(GLOB.potentialRandomZlevels && GLOB.potentialRandomZlevels.len)
to_chat(world, "<span class='boldannounce'>Loading away mission...</span>")
var/map = pick(potentialRandomZlevels)
var/map = pick(GLOB.potentialRandomZlevels)
load_new_z_level(map)
to_chat(world, "<span class='boldannounce'>Away mission loaded.</span>")
/proc/reset_gateway_spawns(reset = FALSE)
for(var/obj/machinery/gateway/G in world)
if(reset)
G.randomspawns = awaydestinations
G.randomspawns = GLOB.awaydestinations
else
G.randomspawns.Add(awaydestinations)
G.randomspawns.Add(GLOB.awaydestinations)
/obj/effect/landmark/awaystart
name = "away mission spawn"
desc = "Randomly picked away mission spawn points"
/obj/effect/landmark/awaystart/New()
awaydestinations += src
GLOB.awaydestinations += src
..()
/obj/effect/landmark/awaystart/Destroy()
awaydestinations -= src
GLOB.awaydestinations -= src
return ..()
/proc/generateMapList(filename)