mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Adds BS12 dismemberment. Not all features of it are implemented yet, but it should be equal to our previous system. Adds greater changeling code, but doesn't change the genome count yet on it. Renames registered to registered_name on IDs because bs12 had it and it seemed like a good idea to do last night. For some reason. Adds an afterattack to mobs that can be used. (In fairness, lots of shit in attack_hand should be in there instead, like stungloves and stuff, to minimize duplicated code) Revision: r3537 Author: VivianFoxfoot
141 lines
4.0 KiB
Plaintext
141 lines
4.0 KiB
Plaintext
/*
|
|
/datum/game_mode/ctf
|
|
name = "ctf"
|
|
config_tag = "ctf"
|
|
|
|
/datum/game_mode/ctf/announce()
|
|
world << "<B>The current game mode is - Capture the Flag!</B>"
|
|
world << "<B>Capture the other teams flag and bring it back to your base!</B>"
|
|
world << "Respawn is on"
|
|
|
|
/datum/game_mode/ctf/pre_setup()
|
|
|
|
config.allow_ai = 0
|
|
var/list/mobs = list()
|
|
var/total_mobs
|
|
for(var/mob/living/carbon/human/M in world)
|
|
if (M.client)
|
|
mobs += M
|
|
total_mobs++
|
|
|
|
var/obj/R = locate("landmark*Red-Spawn")
|
|
var/obj/G = locate("landmark*Green-Spawn")
|
|
|
|
var/mob_check
|
|
for(var/mob/living/carbon/human/M in mobs)
|
|
if(!M)
|
|
continue
|
|
mob_check++
|
|
if(mob_check <= total_mobs/2) //add to red team else to green
|
|
spawn()
|
|
if(M.client)
|
|
M << "You are in the Red Team!"
|
|
del(M.wear_suit)
|
|
M.w_uniform = new /obj/item/clothing/under/color/red(M)
|
|
M.w_uniform.layer = 20
|
|
del(M.shoes)
|
|
M.wear_suit = new /obj/item/clothing/suit/armor/tdome/red(M)
|
|
M.wear_suit.layer = 20
|
|
M.shoes = new /obj/item/clothing/shoes/black(M)
|
|
M.shoes.layer = 20
|
|
M.wear_mask = new /obj/item/clothing/mask/gas/emergency(M)
|
|
M.wear_mask.layer = 20
|
|
M.gloves = new /obj/item/clothing/gloves/swat(M)
|
|
M.gloves.layer = 20
|
|
M.glasses = new /obj/item/clothing/glasses/thermal(M)
|
|
M.glasses.layer = 20
|
|
var/obj/item/device/radio/headset/H = new /obj/item/device/radio/headset(M)
|
|
H.set_frequency(1465)
|
|
M.w_radio = H
|
|
M.w_radio.layer = 20
|
|
var/obj/item/weapon/tank/air/O = new /obj/item/weapon/tank/air(M)
|
|
M.back = O
|
|
M.back.layer = 20
|
|
M.internal = O
|
|
|
|
del(M.wear_id)
|
|
var/obj/item/weapon/card/id/W = new(M)
|
|
W.name = "[M.real_name]'s ID card (Red Team)"
|
|
W.access = access_red
|
|
W.assignment = "Red Team"
|
|
W.registered_name = M.real_name
|
|
M.wear_id = W
|
|
M.wear_id.layer = 20
|
|
if(R)
|
|
M.loc = R.loc
|
|
else
|
|
world << "No red team spawn point detected"
|
|
M.client.team = "Red"
|
|
else
|
|
spawn()
|
|
if(M.client)
|
|
M << "You are in the Green Team!"
|
|
del(M.wear_suit)
|
|
M.w_uniform = new /obj/item/clothing/under/color/green(M)
|
|
M.w_uniform.layer = 20
|
|
del(M.shoes)
|
|
M.wear_suit = new /obj/item/clothing/suit/armor/tdome/green(M)
|
|
M.wear_suit.layer = 20
|
|
M.shoes = new /obj/item/clothing/shoes/black(M)
|
|
M.shoes.layer = 20
|
|
M.wear_mask = new /obj/item/clothing/mask/gas/emergency(M)
|
|
M.wear_mask.layer = 20
|
|
M.gloves = new /obj/item/clothing/gloves/swat(M)
|
|
M.gloves.layer = 20
|
|
M.glasses = new /obj/item/clothing/glasses/thermal(M)
|
|
M.glasses.layer = 20
|
|
var/obj/item/device/radio/headset/H = new /obj/item/device/radio/headset(M)
|
|
H.set_frequency(1449)
|
|
M.w_radio = H
|
|
M.w_radio.layer = 20
|
|
var/obj/item/weapon/tank/air/O = new /obj/item/weapon/tank/air(M)
|
|
M.back = O
|
|
M.back.layer = 20
|
|
M.internal = O
|
|
|
|
del(M.wear_id)
|
|
var/obj/item/weapon/card/id/W = new(M)
|
|
W.name = "[M.real_name]'s ID card (Green Team)"
|
|
W.access = access_green
|
|
W.assignment = "Green Team"
|
|
W.registered_name = M.real_name
|
|
M.wear_id = W
|
|
M.wear_id.layer = 20
|
|
if(G)
|
|
M.loc = G.loc
|
|
else
|
|
world << "No green team spawn point detected"
|
|
M.client.team = "Green"
|
|
|
|
|
|
/datum/game_mode/ctf/post_setup()
|
|
abandon_allowed = 1
|
|
setup_game()
|
|
|
|
spawn (50)
|
|
var/obj/L = locate("landmark*Red-Flag")
|
|
if (L)
|
|
new /obj/item/weapon/ctf_flag/red(L.loc)
|
|
else
|
|
world << "No red flag spawn point detected"
|
|
|
|
L = locate("landmark*Green-Flag")
|
|
if (L)
|
|
new /obj/item/weapon/ctf_flag/green(L.loc)
|
|
else
|
|
world << "No green flag spawn point detected"
|
|
|
|
L = locate("landmark*The-Red-Team")
|
|
if (L)
|
|
new /obj/machinery/red_injector(L.loc)
|
|
else
|
|
world << "No red team spawn injector point detected"
|
|
|
|
L = locate("landmark*The-Green-Team")
|
|
if (L)
|
|
new /obj/machinery/green_injector(L.loc)
|
|
else
|
|
world << "No green team injector spawn point detected"
|
|
..()
|
|
|
|
*/ |