mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-25 09:31:13 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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]
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
276
code/datums/outfits/outfit_antag.dm
Normal file
276
code/datums/outfits/outfit_antag.dm
Normal 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
|
||||
)
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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/...)
|
||||
|
||||
@@ -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 ..()
|
||||
Reference in New Issue
Block a user