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