Antag loadout refactor, also deathsquads I guess (#7308)

all antags that previously had massive equip chains now use the outfit datum system
    commandos + deathsquad (aka Syndicate Commandos and NT Asset Protection) have been moved out of nested alert menu hell to the new ERT system as admin-spawned ERTs, they do not appear normally
    all outfit datums will now take into account backpack preferences
    made the ERT job announcement / details more obvious
This commit is contained in:
JohnWildkins
2019-11-03 12:49:42 -05:00
committed by Erki
parent b15f676ebd
commit aa5482ca8e
22 changed files with 596 additions and 518 deletions

View File

@@ -2,3 +2,7 @@
name = "Nanotrasen ERT"
chance = 20
spawner = /datum/ghostspawner/human/ert/nanotrasen
/datum/responseteam/deathsquad
name = "Nanotrasen Asset Protection"
spawner = /datum/ghostspawner/human/ert/deathsquad

View File

@@ -1,4 +1,8 @@
/datum/responseteam/mercenary
name = "Independent Mercenaries"
chance = 10
spawner = /datum/ghostspawner/human/ert/mercenary
spawner = /datum/ghostspawner/human/ert/mercenary
/datum/responseteam/syndicate
name = "Syndicate Commandos"
spawner = /datum/ghostspawner/human/ert/commando

View File

@@ -154,3 +154,101 @@
/obj/item/weapon/handcuffs/ziptie = 2,
/obj/item/weapon/shield/energy = 1
)
// Deathsquads -- Admin Spawn Only
/datum/outfit/admin/deathsquad
name = "Asset Protection"
uniform = /obj/item/clothing/under/ert
back = null
belt = /obj/item/weapon/storage/belt/security/tactical
shoes = null
gloves = null
mask = /obj/item/clothing/mask/gas/swat
l_ear = /obj/item/device/radio/headset/ert
glasses = /obj/item/clothing/glasses/sunglasses/sechud/tactical
id = /obj/item/weapon/card/id/asset_protection
l_pocket = /obj/item/weapon/plastique
r_pocket = /obj/item/weapon/melee/energy/sword
l_hand = /obj/item/weapon/gun/energy/rifle/pulse
belt_contents = list(
/obj/item/ammo_magazine/a454 = 2,
/obj/item/weapon/melee/baton/loaded = 1,
/obj/item/weapon/shield/energy = 1,
/obj/item/weapon/grenade/flashbang = 2,
/obj/item/weapon/handcuffs = 2,
/obj/item/weapon/grenade/frag = 1
)
var/syndie = FALSE
/datum/outfit/admin/deathsquad/leader
name = "Asset Protection Lead"
l_pocket = /obj/item/weapon/pinpointer
/datum/outfit/admin/deathsquad/syndicate
name = "Syndicate Commando"
uniform = /obj/item/clothing/under/syndicate
belt = /obj/item/weapon/storage/belt/military/syndicate
mask = /obj/item/clothing/mask/gas/syndicate
l_ear = /obj/item/device/radio/headset/syndicate
glasses = /obj/item/clothing/glasses/thermal
id = /obj/item/weapon/card/id/syndicate_ert
l_pocket = /obj/item/ammo_magazine/c45m
l_hand = /obj/item/weapon/gun/projectile/automatic/rifle/sts35
belt_contents = list(
/obj/item/ammo_magazine/c762 = 3,
/obj/item/weapon/pinpointer = 1,
/obj/item/weapon/shield/energy = 1,
/obj/item/weapon/handcuffs = 1,
/obj/item/weapon/grenade/flashbang = 1,
/obj/item/weapon/grenade/frag = 1,
/obj/item/weapon/plastique = 1
)
syndie = TRUE
/datum/outfit/admin/deathsquad/syndicate/leader
name = "Syndicate Commando Lead"
l_pocket = /obj/item/weapon/pinpointer
/datum/outfit/admin/deathsquad/get_id_access()
return get_all_accesses()
/datum/outfit/admin/deathsquad/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
var/obj/item/clothing/accessory/holster/armpit/hold = new(H)
var/obj/item/weapon/gun/projectile/weapon
if(syndie)
weapon = new /obj/item/weapon/gun/projectile/silenced(H)
else
weapon = new /obj/item/weapon/gun/projectile/revolver/mateba(H)
if(weapon)
hold.contents += weapon
hold.holstered = weapon
var/obj/item/clothing/under/U = H.get_equipped_item(slot_w_uniform)
U.attackby(hold, H)
var/obj/item/weapon/rig/mercrig
if(syndie)
mercrig = new /obj/item/weapon/rig/merc(get_turf(H))
else
mercrig = new /obj/item/weapon/rig/ert/assetprotection(get_turf(H))
if(mercrig)
H.put_in_hands(mercrig)
H.equip_to_slot_or_del(mercrig, slot_back)
addtimer(CALLBACK(mercrig, /obj/item/weapon/rig/.proc/toggle_seals, H, TRUE), 2 SECONDS)

View File

@@ -6,7 +6,7 @@
//If a list of paths is supplied a random item from that list is selected
var/uniform = null
var/suit = null
var/back = null
var/back = null // Mutually exclusive with and will override backpack choices below. Use for RIGs, tanks, etc.
var/belt = null
var/gloves = null
var/shoes = null
@@ -26,6 +26,14 @@
var/id = null
var/pda = null
// Must be paths, used to allow player-pref backpack choice
var/allow_backbag_choice = FALSE
var/backpack = /obj/item/weapon/storage/backpack
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
var/satchel_alt = /obj/item/weapon/storage/backpack/satchel
var/dufflebag = /obj/item/weapon/storage/backpack/duffel
var/messengerbag = /obj/item/weapon/storage/backpack/messenger
var/internals_slot = null //ID of slot containing a gas tank
var/list/backpack_contents = list() //In the list(path=count,otherpath=count) format
var/list/accessory_contents = list()
@@ -34,6 +42,23 @@
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//to be overriden for customization depending on client prefs,species etc
if(allow_backbag_choice)
var/use_job_specific = H.backbag_style == 1
switch(H.backbag)
if (1)
back = null
if (2)
back = use_job_specific ? backpack : /obj/item/weapon/storage/backpack
if (3)
back = use_job_specific ? satchel : /obj/item/weapon/storage/backpack/satchel_norm
if (4)
back = use_job_specific ? satchel_alt : /obj/item/weapon/storage/backpack/satchel
if (5)
back = use_job_specific ? dufflebag : /obj/item/weapon/storage/backpack/duffel
if (6)
back = use_job_specific ? messengerbag : /obj/item/weapon/storage/backpack/messenger
else
back = backpack //Department backpack
return
// Used to equip an item to the mob. Mainly to prevent copypasta for collect_not_del.
@@ -43,8 +68,15 @@
if(isnum(path)) //Check if parameter is not numeric. Must be a path, list of paths or name of a gear datum
CRASH("Outfit [name] - Parameter path: [path] is numeric.")
if(islist(path)) //If its a list, select a random item
var/itempath = pick(path)
if(islist(path)) //If its a list, select a random item; if back, try to use preference
var/list/pathlist = path
var/itempath
if(is_type_in_list(/obj/item/weapon/storage/backpack, pathlist) && H.backbag && pathlist.len == 5)
if(H.backbag < 2)
return // They don't want a backpack
itempath = pathlist[H.backbag - 2]
else
itempath = pick(pathlist)
I = new itempath(H)
else if(gear_datums[path]) //If its something else, we´ll check if its a gearpath and try to spawn it
var/datum/gear/G = gear_datums[path]

View File

@@ -127,138 +127,6 @@
/datum/outfit/admin/lance_operative/get_id_access()
return get_syndicate_access(id_access)
/datum/outfit/admin/syndicate
name = "Syndicate Agent"
uniform = /obj/item/clothing/under/syndicate
back = /obj/item/weapon/storage/backpack
belt = /obj/item/weapon/storage/belt/utility/full
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
l_ear = /obj/item/device/radio/headset/syndicate
id = /obj/item/weapon/card/id/syndicate
r_pocket = /obj/item/device/radio/uplink
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/device/flashlight = 1,
/obj/item/weapon/card/emag = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/device/multitool = 1
)
var/id_access = "Syndicate Operative"
var/uplink_uses = 20
/datum/outfit/admin/syndicate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
var/obj/item/device/radio/uplink/U = H.r_store
if(istype(U))
U.hidden_uplink.uplink_owner = "[H.key]"
U.hidden_uplink.uses = uplink_uses
/datum/outfit/admin/syndicate/get_id_access()
return get_syndicate_access(id_access)
/datum/outfit/admin/syndicate/operative
name = "Syndicate Operative"
suit = /obj/item/clothing/suit/space/void/merc
belt = /obj/item/weapon/storage/belt/military/syndicate
head = /obj/item/clothing/head/helmet/space/void/merc
mask = /obj/item/clothing/mask/gas/syndicate
l_ear = /obj/item/device/radio/headset/syndicate
glasses = /obj/item/clothing/glasses/night
shoes = /obj/item/clothing/shoes/magboots
l_pocket = /obj/item/weapon/pinpointer/nukeop
l_hand = /obj/item/weapon/tank/jetpack/void
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1,
/obj/item/weapon/gun/projectile/automatic/x9 = 1,
/obj/item/ammo_magazine/c45x = 1,
/obj/item/weapon/crowbar/red = 1,
/obj/item/weapon/plastique = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/device/flashlight = 1,
/obj/item/clothing/shoes/combat = 1
)
/datum/outfit/admin/syndicate/officer
name = "Syndicate Officer"
head = /obj/item/clothing/head/beret
mask = /obj/item/clothing/mask/smokable/cigarette/cigar/havana
belt = /obj/item/weapon/gun/projectile/deagle
l_ear = /obj/item/device/radio/headset/syndicate
l_pocket = /obj/item/weapon/pinpointer/advpinpointer
r_pocket = null // stop them getting a radio uplink, they get an implant instead
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/device/flashlight = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/ammo_magazine/a50 = 2,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/weapon/flame/lighter/zippo = 1
)
implants = list(
/obj/item/weapon/implant/explosive
)
id_access = "Syndicate Operative Leader"
/datum/outfit/admin/syndicate/spy
name = "Syndicate Spy"
uniform = /obj/item/clothing/under/suit_jacket/really_black
shoes = /obj/item/clothing/shoes/black/noslip
uplink_uses = 40
id_access = "Syndicate Agent"
implants = list(
/obj/item/weapon/implant/explosive
)
/datum/outfit/admin/syndicate/ninja
name = "Infiltrator"
uniform = /obj/item/clothing/under/syndicate/ninja
back = /obj/item/weapon/rig/light/ninja
belt = /obj/item/weapon/storage/belt/ninja
shoes = /obj/item/clothing/shoes/swat/ert
gloves = /obj/item/clothing/ring/ninja
mask = /obj/item/clothing/mask/balaclava
l_ear = /obj/item/device/radio/headset/ninja
glasses = /obj/item/clothing/glasses/sunglasses/sechud/tactical
id = /obj/item/weapon/card/id/syndicate
l_pocket = null
r_pocket = null
accessory = /obj/item/clothing/accessory/storage/pouches/black
backpack_contents = list()
belt_contents = list(
/obj/item/device/flashlight/maglight = 1,
/obj/item/weapon/crowbar = 1,
/obj/item/weapon/screwdriver = 1,
/obj/item/device/paicard = 1
)
id_access = "Syndicate Agent"
/datum/outfit/admin/syndicate/ninja/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
H.equip_to_slot_or_del(new /obj/item/device/ninja_uplink(H, H.mind), slot_l_store)
/datum/outfit/admin/nt
name = "NanoTrasen Representative"

View File

@@ -0,0 +1,276 @@
// Anything that's coded as an "antagonist" that needs outfits should go here, unless it's an ERT.
/datum/outfit/admin/syndicate
name = "Syndicate Agent"
allow_backbag_choice = TRUE
uniform = /obj/item/clothing/under/syndicate
back = null
backpack = /obj/item/weapon/storage/backpack/syndie
satchel = /obj/item/weapon/storage/backpack/satchel_syndie
satchel_alt = /obj/item/weapon/storage/backpack/satchel
dufflebag = /obj/item/weapon/storage/backpack/duffel/syndie
messengerbag = /obj/item/weapon/storage/backpack/messenger/syndie
belt = /obj/item/weapon/storage/belt/utility/full
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
l_ear = /obj/item/device/radio/headset/syndicate
id = /obj/item/weapon/card/id/syndicate
r_pocket = /obj/item/device/radio/uplink
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/device/flashlight = 1,
/obj/item/weapon/card/emag = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/device/multitool = 1
)
var/id_access = "Syndicate Operative"
var/uplink_uses = DEFAULT_TELECRYSTAL_AMOUNT
/datum/outfit/admin/syndicate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
var/obj/item/device/radio/uplink/U = H.r_store
if(istype(U))
U.hidden_uplink.uplink_owner = "[H.key]"
U.hidden_uplink.uses = uplink_uses
/datum/outfit/admin/syndicate/get_id_access()
return get_syndicate_access(id_access)
/datum/outfit/admin/syndicate/operative
name = "Syndicate Operative"
suit = /obj/item/clothing/suit/space/void/merc
belt = /obj/item/weapon/storage/belt/military/syndicate
head = /obj/item/clothing/head/helmet/space/void/merc
mask = /obj/item/clothing/mask/gas/syndicate
l_ear = /obj/item/device/radio/headset/syndicate
glasses = /obj/item/clothing/glasses/night
shoes = /obj/item/clothing/shoes/magboots
l_pocket = /obj/item/weapon/pinpointer/nukeop
l_hand = /obj/item/weapon/tank/jetpack/void
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1,
/obj/item/weapon/gun/projectile/automatic/x9 = 1,
/obj/item/ammo_magazine/c45x = 1,
/obj/item/weapon/crowbar/red = 1,
/obj/item/weapon/plastique = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/device/flashlight = 1,
/obj/item/clothing/shoes/combat = 1
)
/datum/outfit/admin/syndicate/officer
name = "Syndicate Officer"
head = /obj/item/clothing/head/beret
mask = /obj/item/clothing/mask/smokable/cigarette/cigar/havana
belt = /obj/item/weapon/gun/projectile/deagle
l_ear = /obj/item/device/radio/headset/syndicate
l_pocket = /obj/item/weapon/pinpointer/advpinpointer
r_pocket = null // stop them getting a radio uplink, they get an implant instead
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/device/flashlight = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/ammo_magazine/a50 = 2,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/weapon/flame/lighter/zippo = 1
)
implants = list(
/obj/item/weapon/implant/explosive
)
id_access = "Syndicate Operative Leader"
/datum/outfit/admin/syndicate/spy
name = "Syndicate Spy"
uniform = /obj/item/clothing/under/suit_jacket/really_black
shoes = /obj/item/clothing/shoes/black/noslip
uplink_uses = 40
id_access = "Syndicate Agent"
implants = list(
/obj/item/weapon/implant/explosive
)
// Syndicate Auxiliary Outfits (ninja, merc, etc.)
/datum/outfit/admin/syndicate/ninja
name = "Infiltrator"
uniform = /obj/item/clothing/under/syndicate/ninja
back = /obj/item/weapon/rig/light/ninja
belt = /obj/item/weapon/storage/belt/ninja
shoes = /obj/item/clothing/shoes/swat/ert
gloves = /obj/item/clothing/ring/ninja
mask = /obj/item/clothing/mask/balaclava
l_ear = /obj/item/device/radio/headset/ninja
glasses = /obj/item/clothing/glasses/sunglasses/sechud/tactical
id = /obj/item/weapon/card/id/syndicate
l_pocket = null
r_pocket = null
accessory = /obj/item/clothing/accessory/storage/pouches/black
backpack_contents = list()
belt_contents = list(
/obj/item/device/flashlight/maglight = 1,
/obj/item/weapon/crowbar = 1,
/obj/item/weapon/screwdriver = 1,
/obj/item/device/paicard = 1
)
id_access = "Syndicate Agent"
/datum/outfit/admin/syndicate/ninja/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
H.equip_to_slot_or_del(new /obj/item/device/ninja_uplink(H, H.mind), slot_l_store)
/datum/outfit/admin/syndicate/mercenary
name = "Mercenary"
uniform = /obj/item/clothing/under/syndicate
belt = /obj/item/weapon/storage/belt/military
gloves = /obj/item/clothing/gloves/swat
shoes = /obj/item/clothing/shoes/jackboots
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1
)
/datum/outfit/admin/syndicate/mercenary/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
if(!H.shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots/unathi(H), slot_shoes)
/datum/outfit/admin/syndicate/raider
name = "Raider"
uniform = list(
/obj/item/clothing/under/soviet,
/obj/item/clothing/under/pirate,
/obj/item/clothing/under/redcoat,
/obj/item/clothing/under/serviceoveralls,
/obj/item/clothing/under/captain_fly,
/obj/item/clothing/under/det,
/obj/item/clothing/under/brown,
/obj/item/clothing/under/syndicate/tracksuit
)
suit = list(
/obj/item/clothing/suit/pirate,
/obj/item/clothing/suit/hgpirate,
/obj/item/clothing/suit/storage/toggle/bomber,
/obj/item/clothing/suit/storage/toggle/leather_jacket,
/obj/item/clothing/suit/storage/toggle/brown_jacket,
/obj/item/clothing/suit/unathi/mantle,
/obj/item/clothing/accessory/poncho,
/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/grey
)
shoes = list(
/obj/item/clothing/shoes/jackboots,
/obj/item/clothing/shoes/workboots,
/obj/item/clothing/shoes/brown,
/obj/item/clothing/shoes/laceup
)
glasses = list(
/obj/item/clothing/glasses/thermal,
/obj/item/clothing/glasses/eyepatch/hud/thermal,
/obj/item/clothing/glasses/thermal/plain/monocle,
/obj/item/clothing/glasses/thermal/aviator
)
head = list(
/obj/item/clothing/head/bearpelt,
/obj/item/clothing/head/ushanka,
/obj/item/clothing/head/pirate,
/obj/item/clothing/head/bandana,
/obj/item/clothing/head/hgpiratecap
)
back = null
belt = null
gloves = null
l_ear = /obj/item/device/radio/headset/raider
r_pocket = null
id = /obj/item/weapon/storage/wallet
backpack_contents = list()
/datum/outfit/admin/syndicate/raider/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
if(!H.shoes)
var/fallback_type = pick(/obj/item/clothing/shoes/sandal, /obj/item/clothing/shoes/jackboots/unathi)
H.equip_to_slot_or_del(new fallback_type(H), slot_shoes)
var/obj/item/weapon/storage/wallet/W = H.wear_id
var/obj/item/weapon/card/id/raider/id = new(H)
id.name = "[H.real_name]'s Passport"
if(W)
W.handle_item_insertion(id)
spawn_money(rand(50,150)*10,W)
// Non-syndicate antag outfits
/datum/outfit/admin/highlander
name = "Highlander"
uniform = /obj/item/clothing/under/kilt
head = /obj/item/clothing/head/beret
shoes = /obj/item/clothing/shoes/combat
l_ear = /obj/item/device/radio/headset/heads/captain
l_hand = /obj/item/weapon/material/sword
l_pocket = /obj/item/weapon/pinpointer
id = /obj/item/weapon/card/id/highlander
/datum/outfit/admin/highlander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
var/obj/item/weapon/card/id/W = H.wear_id
if(W)
W.name = "[H.real_name]'s ID"
W.registered_name = H.real_name
/datum/outfit/admin/wizard
name = "Wizard"
allow_backbag_choice = TRUE
uniform = /obj/item/clothing/under/lightpurple
back = null
backpack = /obj/item/weapon/storage/backpack/wizard
satchel = /obj/item/weapon/storage/backpack/satchel_wizard
satchel_alt = /obj/item/weapon/storage/backpack/satchel
dufflebag = /obj/item/weapon/storage/backpack/duffel/wizard
messengerbag = /obj/item/weapon/storage/backpack/messenger/wizard
suit = /obj/item/clothing/suit/wizrobe
head = /obj/item/clothing/head/wizard
shoes = /obj/item/clothing/shoes/sandal
l_ear = /obj/item/device/radio/headset
r_pocket = /obj/item/weapon/teleportation_scroll
l_hand = /obj/item/weapon/spellbook
backpack_contents = list(
/obj/item/weapon/storage/box = 1
)

View File

@@ -6,75 +6,14 @@ var/datum/antagonist/deathsquad/mercenary/commandos
role_text = "Syndicate Commando"
role_text_plural = "Commandos"
welcome_text = "You are in the employ of a criminal syndicate hostile to corporate interests."
id_type = /obj/item/weapon/card/id/ert
id_type = /obj/item/weapon/card/id/syndicate_ert
hard_cap = 4
hard_cap_round = 8
initial_spawn_req = 4
initial_spawn_target = 6
faction = "syndicate"
/datum/antagonist/ert/create_default(var/mob/source)
var/mob/living/carbon/human/M = ..()
if(istype(M)) M.age = rand(25,45)
/datum/antagonist/deathsquad/mercenary/New()
..(1)
commandos = src
/datum/antagonist/deathsquad/mercenary/equip(var/mob/living/carbon/human/player)
var/obj/item/clothing/accessory/holster/armpit/hold = new(player)
var/obj/item/weapon/gun/projectile/silenced/weapon = new(player)
hold.contents += weapon
hold.holstered = weapon
var/obj/item/clothing/under/syndicate/under = new(player)
under.attackby(hold, player)
player.equip_to_slot_or_del(under, slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(player), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(player), slot_wear_mask)
player.equip_to_slot_or_del(new /obj/item/ammo_magazine/c45m(player), slot_l_store)
player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_r_store)
player.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/rifle/sts35(player), slot_l_hand)
var/obj/item/weapon/storage/belt/military/syndie_belt = new(player)
syndie_belt.contents += new /obj/item/ammo_magazine/c762
syndie_belt.contents += new /obj/item/ammo_magazine/c762
syndie_belt.contents += new /obj/item/ammo_magazine/c762
syndie_belt.contents += new /obj/item/weapon/pinpointer
syndie_belt.contents += new /obj/item/weapon/shield/energy
syndie_belt.contents += new /obj/item/weapon/handcuffs
syndie_belt.contents += new /obj/item/weapon/grenade/flashbang
syndie_belt.contents += new /obj/item/weapon/grenade/frag
syndie_belt.contents += new /obj/item/weapon/plastique
player.equip_to_slot_or_del(syndie_belt, slot_belt)
var/obj/item/weapon/rig/merc/mercrig = new(get_turf(player))
mercrig.seal_delay = 0
player.put_in_hands(mercrig)
player.equip_to_slot_or_del(mercrig,slot_back)
if(mercrig)
mercrig.toggle_seals(src,1)
mercrig.seal_delay = initial(mercrig.seal_delay)
if(istype(player.back,/obj/item/weapon/rig))
var/obj/item/weapon/rig/rig = player.back
if(rig.air_supply)
player.internal = rig.air_supply
spawn(10)
if(player.internal)
player.internals.icon_state = "internal1"
else
to_chat(player, "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>")
var/obj/item/weapon/card/id/id = create_id("Commando", player)
id.access |= get_all_accesses()
id.icon_state = "centcom"
create_radio(SYND_FREQ, player)
player.faction = "syndicate"
//gives them a martial art as well
var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null)
F.teach(player)
return 1

View File

@@ -2,95 +2,24 @@ var/datum/antagonist/deathsquad/deathsquad
/datum/antagonist/deathsquad
id = MODE_DEATHSQUAD
role_text = "Death Commando"
role_text_plural = "Death Commandos"
role_text = "Asset Protection Specialist"
role_text_plural = "Asset Protection Specialists"
welcome_text = "You work in the service of corporate Asset Protection, answering directly to the Board of Directors."
landmark_id = "Commando"
id_type = /obj/item/weapon/card/id/asset_protection
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_OVERRIDE_MOB | ANTAG_HAS_NUKE | ANTAG_HAS_LEADER | ANTAG_RANDOM_EXCEPTED | ANTAG_CHOOSE_NAME | ANTAG_SET_APPEARANCE
default_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
antaghud_indicator = "huddeathsquad"
hard_cap = 4
hard_cap_round = 8
initial_spawn_req = 4
initial_spawn_target = 6
var/deployed = FALSE
var/deployed = 0
/datum/antagonist/ert/create_default(var/mob/source)
var/mob/living/carbon/human/M = ..()
if(istype(M)) M.age = rand(25,45)
/datum/antagonist/deathsquad/New(var/no_reference)
..()
deployed = TRUE
if(!no_reference)
deathsquad = src
/datum/antagonist/deathsquad/attempt_spawn()
if(..())
deployed = 1
/datum/antagonist/deathsquad/equip(var/mob/living/carbon/human/player)
if(!..())
return
var/obj/item/clothing/accessory/holster/armpit/hold = new(player)
var/obj/item/weapon/gun/projectile/revolver/mateba/weapon = new(player)
hold.contents += weapon
hold.holstered = weapon
var/obj/item/clothing/under/ert/under = new(player)
under.attackby(hold, player)
player.equip_to_slot_or_del(under, slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/tactical(player), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(player), slot_wear_mask)
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(player), slot_l_ear)
if (player.mind == leader)
player.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(player), slot_l_store)
player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_r_store)
else
player.equip_to_slot_or_del(new /obj/item/weapon/plastique(player), slot_l_store)
player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_r_store)
player.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/rifle/pulse(player), slot_l_hand)
var/obj/item/weapon/storage/belt/security/tactical/commando_belt = new(player)
commando_belt.contents += new /obj/item/ammo_magazine/a454
commando_belt.contents += new /obj/item/ammo_magazine/a454
commando_belt.contents += new /obj/item/weapon/melee/baton/loaded
commando_belt.contents += new /obj/item/weapon/shield/energy
commando_belt.contents += new /obj/item/weapon/grenade/flashbang
commando_belt.contents += new /obj/item/weapon/grenade/flashbang
commando_belt.contents += new /obj/item/weapon/handcuffs
commando_belt.contents += new /obj/item/weapon/handcuffs
commando_belt.contents += new /obj/item/weapon/grenade/frag
player.equip_to_slot_or_del(commando_belt, slot_belt)
var/obj/item/weapon/rig/ert/assetprotection/mercrig = new(get_turf(player))
mercrig.seal_delay = 0
player.put_in_hands(mercrig)
player.equip_to_slot_or_del(mercrig,slot_back)
if(mercrig)
mercrig.toggle_seals(src,1)
mercrig.seal_delay = initial(mercrig.seal_delay)
if(istype(player.back,/obj/item/weapon/rig))
var/obj/item/weapon/rig/rig = player.back
if(rig.air_supply)
player.internal = rig.air_supply
spawn(10)
if(player.internal)
player.internals.icon_state = "internal1"
else
to_chat(player, "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>")
var/obj/item/weapon/card/id/id = create_id("Asset Protection", player)
if(id)
id.access |= get_all_station_access()
id.icon_state = "centcom"
//gives them a martial art as well
var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null)
F.teach(player)
/datum/antagonist/deathsquad/create_antagonist()
if(..() && !deployed)
deployed = 1

View File

@@ -26,38 +26,27 @@ var/datum/antagonist/mercenary/mercs
/datum/antagonist/mercenary/create_global_objectives()
if(!..())
return 0
return FALSE
global_objectives = list()
global_objectives |= new /datum/objective/nuclear
return 1
return TRUE
/datum/antagonist/mercenary/equip(var/mob/living/carbon/human/player)
if(!..())
return 0
return FALSE
player.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(player), slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(player), slot_shoes)
if(!player.shoes) //If equipping shoes failed, fall back to equipping toeless jackboots
var/fallback_type = pick(/obj/item/clothing/shoes/jackboots/unathi)
player.equip_to_slot_or_del(new fallback_type(player), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(player), slot_gloves)
player.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/military(player), slot_belt)
if(player.backbag == 2) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/syndie(player), slot_back)
if(player.backbag == 3) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_syndie(player), slot_back)
if(player.backbag == 4) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(player), slot_back)
if(player.backbag == 5) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/duffel/syndie(player), slot_back)
if(player.backbag == 6) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/syndie(player), slot_back)
player.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(player.back), slot_in_backpack)
player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack)
for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant))
continue
player.drop_from_inventory(I)
if(I.loc != player)
qdel(I)
var/obj/item/device/radio/uplink/U = new(player.loc, player.mind, DEFAULT_TELECRYSTAL_AMOUNT)
player.put_in_hands(U)
player.update_icons()
player.faction = "syndicate"
create_id("Mercenary", player)
create_radio(SYND_FREQ, player)
player.preEquipOutfit(/datum/outfit/admin/syndicate/mercenary, FALSE)
player.equipOutfit(/datum/outfit/admin/syndicate/mercenary, FALSE)
player.force_update_limbs()
player.update_eyes()
player.regenerate_icons()
give_codewords(player)
return 1
return TRUE

View File

@@ -100,7 +100,7 @@ var/datum/antagonist/ninja/ninjas
/datum/antagonist/ninja/equip(var/mob/living/carbon/human/player)
if(!..())
return 0
return FALSE
for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant))
@@ -113,6 +113,7 @@ var/datum/antagonist/ninja/ninjas
player.force_update_limbs()
player.update_eyes()
player.regenerate_icons()
return TRUE
/datum/antagonist/ninja/proc/generate_ninja_directive(side)
var/directive = "[side=="face"?"[current_map.company_name]":"A criminal syndicate"] is your employer. "//Let them know which side they're on.

View File

@@ -20,51 +20,6 @@ var/datum/antagonist/raider/raiders
id_type = /obj/item/weapon/card/id/syndicate
// Heist overrides check_victory() and doesn't need victory or loss strings/tags.
var/list/raider_uniforms = list(
/obj/item/clothing/under/soviet,
/obj/item/clothing/under/pirate,
/obj/item/clothing/under/redcoat,
/obj/item/clothing/under/serviceoveralls,
/obj/item/clothing/under/captain_fly,
/obj/item/clothing/under/det,
/obj/item/clothing/under/brown,
/obj/item/clothing/under/syndicate/tracksuit
)
var/list/raider_shoes = list(
/obj/item/clothing/shoes/jackboots,
/obj/item/clothing/shoes/workboots,
/obj/item/clothing/shoes/brown,
/obj/item/clothing/shoes/laceup
)
var/list/raider_glasses = list(
/obj/item/clothing/glasses/thermal,
/obj/item/clothing/glasses/eyepatch/hud/thermal,
/obj/item/clothing/glasses/thermal/plain/monocle,
/obj/item/clothing/glasses/thermal/aviator
)
var/list/raider_helmets = list(
/obj/item/clothing/head/bearpelt,
/obj/item/clothing/head/ushanka,
/obj/item/clothing/head/pirate,
/obj/item/clothing/head/bandana,
/obj/item/clothing/head/hgpiratecap
)
var/list/raider_suits = list(
/obj/item/clothing/suit/pirate,
/obj/item/clothing/suit/hgpirate,
/obj/item/clothing/suit/storage/toggle/bomber,
/obj/item/clothing/suit/storage/toggle/leather_jacket,
/obj/item/clothing/suit/storage/toggle/brown_jacket,
/obj/item/clothing/suit/unathi/mantle,
/obj/item/clothing/accessory/poncho,
/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/grey
)
var/list/raider_guns = list(
/obj/item/weapon/gun/energy/rifle/laser,
/obj/item/weapon/gun/energy/rifle/laser/xray,
@@ -214,25 +169,21 @@ var/datum/antagonist/raider/raiders
if(!..())
return 0
for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant))
continue
player.drop_from_inventory(I)
if(I.loc != player)
qdel(I)
if(player.species && player.species.get_bodytype() == "Vox")
equip_vox(player)
else
var/new_shoes = pick(raider_shoes)
var/new_uniform = pick(raider_uniforms)
var/new_glasses = pick(raider_glasses)
var/new_helmet = pick(raider_helmets)
var/new_suit = pick(raider_suits)
player.equip_to_slot_or_del(new new_shoes(player),slot_shoes)
if(!player.shoes)
//If equipping shoes failed, fall back to equipping sandals
var/fallback_type = pick(/obj/item/clothing/shoes/sandal, /obj/item/clothing/shoes/jackboots/unathi)
player.equip_to_slot_or_del(new fallback_type(player), slot_shoes)
player.equip_to_slot_or_del(new new_uniform(player),slot_w_uniform)
player.equip_to_slot_or_del(new new_glasses(player),slot_glasses)
player.equip_to_slot_or_del(new new_helmet(player),slot_head)
player.equip_to_slot_or_del(new new_suit(player),slot_wear_suit)
player.preEquipOutfit(/datum/outfit/admin/syndicate/raider, FALSE)
player.equipOutfit(/datum/outfit/admin/syndicate/raider, FALSE)
player.force_update_limbs()
player.update_eyes()
player.regenerate_icons()
equip_weapons(player)
//Try to equip it, del if we fail.
@@ -240,15 +191,6 @@ var/datum/antagonist/raider/raiders
if (!player.equip_to_appropriate_slot(new_uplink))
qdel(new_uplink)
var/obj/item/weapon/card/id/id = create_id("Visitor", player, equip = 0)
id.name = "[player.real_name]'s Passport"
id.assignment = "Visitor"
var/obj/item/weapon/storage/wallet/W = new(player)
W.handle_item_insertion(id)
player.equip_to_slot_or_del(W, slot_wear_id)
spawn_money(rand(50,150)*10,W)
create_radio(RAID_FREQ, player)
give_codewords(player)
return 1

View File

@@ -70,27 +70,23 @@ var/datum/antagonist/wizard/wizards
wizard.current.real_name = "[pick(wizard_first)] [pick(wizard_second)]"
wizard.current.name = wizard.current.real_name
/datum/antagonist/wizard/equip(var/mob/living/carbon/human/wizard_mob)
/datum/antagonist/wizard/equip(var/mob/living/carbon/human/player)
if(!..())
return 0
return FALSE
wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_l_ear)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(wizard_mob), slot_w_uniform)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head)
if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/wizard(wizard_mob), slot_back)
if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_wizard(wizard_mob), slot_back)
if(wizard_mob.backbag == 4) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(wizard_mob), slot_back)
if(wizard_mob.backbag == 5) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/duffel/wizard(wizard_mob), slot_back)
if(wizard_mob.backbag == 6) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/wizard(wizard_mob), slot_back)
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box(wizard_mob), slot_in_backpack)
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
var/obj/item/I = new /obj/item/weapon/spellbook(get_turf(wizard_mob))
wizard_mob.put_in_hands(I)
wizard_mob.update_icons()
return 1
for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant))
continue
player.drop_from_inventory(I)
if(I.loc != player)
qdel(I)
player.preEquipOutfit(/datum/outfit/admin/wizard, FALSE)
player.equipOutfit(/datum/outfit/admin/wizard, FALSE)
player.force_update_limbs()
player.update_eyes()
player.regenerate_icons()
/datum/antagonist/wizard/check_victory()
var/survivor

View File

@@ -30,30 +30,20 @@ var/datum/antagonist/highlander/highlanders
/datum/antagonist/highlander/equip(var/mob/living/carbon/human/player)
if(!..())
return
return FALSE
for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant))
continue
if (istype(I, /obj/item/organ))
continue
qdel(I)
player.drop_from_inventory(I)
if(I.loc != player)
qdel(I)
player.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(player), slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(player), slot_l_ear)
player.equip_to_slot_or_del(new /obj/item/clothing/head/beret(player), slot_head)
player.equip_to_slot_or_del(new /obj/item/weapon/material/sword(player), slot_l_hand)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(player), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(get_turf(player)), slot_l_store)
var/obj/item/weapon/card/id/W = new(player)
W.name = "[player.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_station_access()
W.access += get_all_centcom_access()
W.assignment = "Highlander"
W.registered_name = player.real_name
player.equip_to_slot_or_del(W, slot_wear_id)
player.preEquipOutfit(/datum/outfit/admin/highlander, FALSE)
player.equipOutfit(/datum/outfit/admin/highlander, FALSE)
player.force_update_limbs()
player.update_eyes()
player.regenerate_icons()
/proc/only_one()

View File

@@ -186,7 +186,7 @@
collect_not_del = FALSE
var/allow_loadout = TRUE
var/allow_backbag_choice = TRUE
allow_backbag_choice = TRUE
var/jobtype = null
uniform = /obj/item/clothing/under/color/grey
@@ -196,32 +196,11 @@
shoes = /obj/item/clothing/shoes/black
pda = /obj/item/device/pda
var/backpack = /obj/item/weapon/storage/backpack
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
var/satchel_alt = /obj/item/weapon/storage/backpack/satchel
var/dufflebag = /obj/item/weapon/storage/backpack/duffel
var/messengerbag = /obj/item/weapon/storage/backpack/messenger
var/box = /obj/item/weapon/storage/box/survival
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(allow_backbag_choice)
var/use_job_specific = H.backbag_style == 1
switch(H.backbag)
if (1)
back = null
if (2)
back = use_job_specific ? backpack : /obj/item/weapon/storage/backpack
if (3)
back = use_job_specific ? satchel : /obj/item/weapon/storage/backpack/satchel_norm
if (4)
back = use_job_specific ? satchel_alt : /obj/item/weapon/storage/backpack/satchel
if (5)
back = use_job_specific ? dufflebag : /obj/item/weapon/storage/backpack/duffel
if (6)
back = use_job_specific ? messengerbag : /obj/item/weapon/storage/backpack/messenger
else
back = backpack //Department backpack
if(back)
equip_item(H, back, slot_back)

View File

@@ -206,7 +206,7 @@ var/const/NO_EMAG_ACT = -50
citizenship = H.citizenship
religion = SSrecords.get_religion_record_name(H.religion)
age = H.age
to_chat(user, "<span class='notice'>Biometric Imprinting Successful!.</span>")
to_chat(user, "<span class='notice'>Biometric Imprinting successful!</span>")
return
for(var/mob/O in viewers(user, null))
@@ -340,6 +340,28 @@ var/const/NO_EMAG_ACT = -50
assignment = "Syndicate Overlord"
access = list(access_syndicate, access_external_airlocks)
/obj/item/weapon/card/id/syndicate_ert
name = "\improper Syndicate Commando ID"
assignment = "Commando"
icon_state = "centcom"
/obj/item/weapon/card/id/syndicate_ert/New()
access = get_all_accesses()
..()
/obj/item/weapon/card/id/raider
name = "passport"
assignment = "Visitor"
/obj/item/weapon/card/id/highlander
name = "\improper Highlander ID"
assignment = "Highlander"
icon_state = "centcom"
/obj/item/weapon/card/id/highlander/New()
access = get_all_station_access() | get_all_centcom_access()
..()
/obj/item/weapon/card/id/captains_spare
name = "captain's spare ID"
desc = "The spare ID of the High Lord himself."
@@ -404,6 +426,16 @@ var/const/NO_EMAG_ACT = -50
access = get_all_station_access() + get_centcom_access("Emergency Response Team")
..()
/obj/item/weapon/card/id/asset_protection
name = "\improper Nanotrasen Asset Protection ID"
icon_state = "centcom"
overlay_state = "centcom"
assignment = "Asset Protection"
/obj/item/weapon/card/id/asset_protection/New()
access = get_all_accesses()
..()
/obj/item/weapon/card/id/distress
name = "\improper Freelancer Mercenary ID"
icon_state = "centcom"

View File

@@ -1,12 +0,0 @@
/datum/admin_secret_item/fun_secret/send_strike_team
name = "Send Strike Team"
/datum/admin_secret_item/fun_secret/send_strike_team/can_execute(var/mob/user)
if(!ROUND_IS_STARTED)
return 0
return ..()
/datum/admin_secret_item/fun_secret/send_strike_team/execute(var/mob/user)
. = ..()
if(.)
return user.client.strike_team()

View File

@@ -1,55 +0,0 @@
//STRIKE TEAMS
var/const/commandos_possible = 6 //if more Commandos are needed in the future
/client/proc/strike_team()
set category = "Fun"
set name = "Spawn Strike Team"
set desc = "Spawns a strike team if you want to run an admin event."
if(!src.holder)
to_chat(src, "Only administrators may use this command.")
return
if(!ROUND_IS_STARTED)
to_chat(usr, "<font color='red'>The game hasn't started yet!</font>")
return
if(world.time < 6000)
to_chat(usr, "<font color='red'>There are [(6000-world.time)/10] seconds remaining before it may be called.</font>")
return
var/datum/antagonist/deathsquad/team
var/choice = input(usr, "Select type of strike team:") as null|anything in list("Heavy Asset Protection", "Mercenaries")
if(!choice)
return
switch(choice)
if("Heavy Asset Protection")
team = deathsquad
if("Mercenaries")
team = commandos
else
return
if(team.deployed)
to_chat(usr, "<font color='red'>Someone is already sending a team.</font>")
return
if(alert("Do you want to send in a strike team? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
return
alert("This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle when appropriate. Spawned commandos have internals cameras which are viewable through a monitor inside the Spec. Ops. Office. Assigning the team's detailed task is recommended from there. While you will be able to manually pick the candidates from active ghosts, their assignment in the squad will be random.")
choice = null
while(!choice)
choice = sanitize(input(src, "Please specify which mission the strike team shall undertake.", "Specify Mission", ""))
if(!choice)
if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes")
return
if(team.deployed)
to_chat(usr, "Looks like someone beat you to it.")
return
team.attempt_random_spawn()

View File

@@ -115,7 +115,7 @@
//Proc executed after someone is spawned in
/datum/ghostspawner/proc/post_spawn(mob/user)
if(welcome_message)
to_chat(user, welcome_message)
to_chat(user, span("notice", welcome_message))
return TRUE
//Proc to check if a specific user can edit this spawner (open/close/...)

View File

@@ -1,5 +1,5 @@
/datum/ghostspawner/human/ert
tags = list("External")
tags = list("Response Teams")
enabled = FALSE
req_perms = null
@@ -20,6 +20,11 @@
mob_name = null
/datum/ghostspawner/human/ert/post_spawn(mob/user)
if(name)
to_chat(user, "<span class='danger'><font size=3>You are [max_count > 1 ? "a" : "the"] [name]!</font></span>")
return ..()
//Nanotrasen ERT
/datum/ghostspawner/human/ert/nanotrasen
name = "Nanotrasen Responder"
@@ -100,3 +105,53 @@
max_count = 1
desc = "The leader of the freelancer mercenary team."
outfit = /datum/outfit/admin/ert/mercenary/leader
// Deathsquads, spawn via admin intervention only.
/datum/ghostspawner/human/ert/deathsquad
name = "NT Asset Protection Specialist"
short_name = "ntaps"
max_count = 3
desc = "Protectors of NanoTrasen's bottom line. The last thing you never see."
welcome_message = "The NSS Aurora has been compromised. Recover NanoTrasen assets by any means necessary. Crew expendable."
outfit = /datum/outfit/admin/deathsquad
spawnpoints = list("DeathERTSpawn")
mob_name_prefix = "Spec. "
var/deployed = TRUE
/datum/ghostspawner/human/ert/deathsquad/leader
name = "NT Asset Protection Leader"
short_name = "ntapl"
max_count = 1
desc = "Leader of NT's Asset Protection team."
outfit = /datum/outfit/admin/deathsquad/leader
mob_name_prefix = "Ldr. "
/datum/ghostspawner/human/ert/deathsquad/post_spawn(mob/user)
var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null)
F.teach(user)
return ..()
/datum/ghostspawner/human/ert/commando
name = "Syndicate Commando"
short_name = "syndc"
max_count = 3
desc = "Well-equipped commandos of the criminal Syndicate."
welcome_message = "The order has been given - the Aurora and its crew are to be wiped off the star-charts, by any means necessary."
outfit = /datum/outfit/admin/deathsquad/syndicate
spawnpoints = list("SyndERTSpawn")
/datum/ghostspawner/human/ert/commando/leader
name = "Syndicate Commando Leader"
short_name = "syndl"
max_count = 1
desc = "The leader of the Syndicate's elite commandos."
outfit = /datum/outfit/admin/deathsquad/syndicate/leader
/datum/ghostspawner/human/ert/commando/post_spawn(mob/user)
var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null)
F.teach(user)
return ..()