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:
@@ -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()
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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,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()
|
||||
..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user