From e330485c489fcaf79851d6844b5f1f11a97a713e Mon Sep 17 00:00:00 2001 From: Thunder12345 Date: Tue, 28 Sep 2021 23:03:27 +0100 Subject: [PATCH] Replaces CTF hardsuits with new armoured vests (#61716) Co-authored-by: Thunder12345 --- .../config_types/greyscale_configs.dm | 20 ++ .../greyscale/json_configs/ctf_light.json | 15 ++ .../json_configs/ctf_light_worn.json | 15 ++ .../greyscale/json_configs/ctf_standard.json | 15 ++ .../json_configs/ctf_standard_worn.json | 15 ++ code/modules/antagonists/cult/cult_items.dm | 6 +- code/modules/capture_the_flag/ctf_classes.dm | 32 ++-- .../modules/capture_the_flag/ctf_equipment.dm | 180 ++++++------------ code/modules/clothing/spacesuits/hardsuit.dm | 30 +-- code/modules/clothing/suits/_suits.dm | 12 ++ code/modules/clothing/suits/wiz_robe.dm | 6 +- icons/mob/clothing/suits/ctf.dmi | Bin 0 -> 1038 bytes icons/obj/clothing/suits/ctf.dmi | Bin 0 -> 459 bytes 13 files changed, 182 insertions(+), 164 deletions(-) create mode 100644 code/datums/greyscale/json_configs/ctf_light.json create mode 100644 code/datums/greyscale/json_configs/ctf_light_worn.json create mode 100644 code/datums/greyscale/json_configs/ctf_standard.json create mode 100644 code/datums/greyscale/json_configs/ctf_standard_worn.json create mode 100644 icons/mob/clothing/suits/ctf.dmi create mode 100644 icons/obj/clothing/suits/ctf.dmi diff --git a/code/datums/greyscale/config_types/greyscale_configs.dm b/code/datums/greyscale/config_types/greyscale_configs.dm index 4a450ef67d8a9c..4535849fc85032 100644 --- a/code/datums/greyscale/config_types/greyscale_configs.dm +++ b/code/datums/greyscale/config_types/greyscale_configs.dm @@ -392,3 +392,23 @@ /datum/greyscale_config/janicart_upgrade/installed json_config = 'code/datums/greyscale/json_configs/janicart_upgrade_installed.json' + +/datum/greyscale_config/ctf_standard + name = "CTF Standard Vest" + icon_file = 'icons/obj/clothing/suits/ctf.dmi' + json_config = 'code/datums/greyscale/json_configs/ctf_standard.json' + +/datum/greyscale_config/ctf_standard_worn + name = "Worn CTF Standard Vest" + icon_file = 'icons/mob/clothing/suits/ctf.dmi' + json_config = 'code/datums/greyscale/json_configs/ctf_standard_worn.json' + +/datum/greyscale_config/ctf_light + name = "CTF Light Vest" + icon_file = 'icons/obj/clothing/suits/ctf.dmi' + json_config = 'code/datums/greyscale/json_configs/ctf_light.json' + +/datum/greyscale_config/ctf_light_worn + name = "Worn CTF Light Vest" + icon_file = 'icons/mob/clothing/suits/ctf.dmi' + json_config = 'code/datums/greyscale/json_configs/ctf_light_worn.json' diff --git a/code/datums/greyscale/json_configs/ctf_light.json b/code/datums/greyscale/json_configs/ctf_light.json new file mode 100644 index 00000000000000..e48762afa67a28 --- /dev/null +++ b/code/datums/greyscale/json_configs/ctf_light.json @@ -0,0 +1,15 @@ +{ + "light": [ + { + "type": "icon_state", + "icon_state": "light", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "light_colours", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/ctf_light_worn.json b/code/datums/greyscale/json_configs/ctf_light_worn.json new file mode 100644 index 00000000000000..e48762afa67a28 --- /dev/null +++ b/code/datums/greyscale/json_configs/ctf_light_worn.json @@ -0,0 +1,15 @@ +{ + "light": [ + { + "type": "icon_state", + "icon_state": "light", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "light_colours", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/ctf_standard.json b/code/datums/greyscale/json_configs/ctf_standard.json new file mode 100644 index 00000000000000..f56ed5d8c064d9 --- /dev/null +++ b/code/datums/greyscale/json_configs/ctf_standard.json @@ -0,0 +1,15 @@ +{ + "standard": [ + { + "type": "icon_state", + "icon_state": "standard", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "standard_colours", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/ctf_standard_worn.json b/code/datums/greyscale/json_configs/ctf_standard_worn.json new file mode 100644 index 00000000000000..f56ed5d8c064d9 --- /dev/null +++ b/code/datums/greyscale/json_configs/ctf_standard_worn.json @@ -0,0 +1,15 @@ +{ + "standard": [ + { + "type": "icon_state", + "icon_state": "standard", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "standard_colours", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 40f53f4f42bc5c..c166d406ff7a3f 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -429,10 +429,8 @@ armor = list(MELEE = 50, BULLET = 40, LASER = 50,ENERGY = 50, BOMB = 50, BIO = 30, RAD = 30, FIRE = 50, ACID = 60) hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/cult_shield -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/Initialize(mapload) - . = ..() - // note that these charges don't regenerate - AddComponent(/datum/component/shielded, recharge_start_delay = 0, shield_icon_file = 'icons/effects/cult_effects.dmi', shield_icon = "shield-cult", run_hit_callback = CALLBACK(src, .proc/shield_damaged)) +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/setup_shielding() + AddComponent(/datum/component/shielded, recharge_start_delay = 0 SECONDS, shield_icon_file = 'icons/effects/cult_effects.dmi', shield_icon = "shield-cult", run_hit_callback = CALLBACK(src, .proc/shield_damaged)) /// A proc for callback when the shield breaks, since cult robes are stupid and have different effects /obj/item/clothing/suit/hooded/cultrobes/cult_shield/proc/shield_damaged(mob/living/wearer, attack_text, new_current_charges) diff --git a/code/modules/capture_the_flag/ctf_classes.dm b/code/modules/capture_the_flag/ctf_classes.dm index b71ba4d01ba8b0..05a674dc0397c1 100644 --- a/code/modules/capture_the_flag/ctf_classes.dm +++ b/code/modules/capture_the_flag/ctf_classes.dm @@ -4,7 +4,7 @@ name = "CTF Rifleman (Solo)" ears = /obj/item/radio/headset uniform = /obj/item/clothing/under/syndicate - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf + suit = /obj/item/clothing/suit/armor/vest/ctf toggle_helmet = FALSE // see the whites of their eyes shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat @@ -68,7 +68,7 @@ /datum/outfit/ctf/assault name = "CTF Assaulter (Solo)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/light + suit = /obj/item/clothing/suit/armor/vest/ctf/light r_hand = /obj/item/gun/ballistic/shotgun/ctf gloves = /obj/item/clothing/gloves/tackler/rocket l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun @@ -90,7 +90,7 @@ /datum/outfit/ctf/red name = "CTF Rifleman (Red)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red + suit = /obj/item/clothing/suit/armor/vest/ctf/red r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/red l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/red r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/red @@ -105,7 +105,7 @@ /datum/outfit/ctf/assault/red name = "CTF Assaulter (Red)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/red + suit = /obj/item/clothing/suit/armor/vest/ctf/light/red r_hand = /obj/item/gun/ballistic/shotgun/ctf/red l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/red r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/red @@ -114,7 +114,7 @@ /datum/outfit/ctf/marksman/red name = "CTF Marksman (Red)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red + suit = /obj/item/clothing/suit/armor/vest/ctf/red r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/red l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/red r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/red @@ -125,7 +125,7 @@ /datum/outfit/ctf/blue name = "CTF Rifleman (Blue)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue + suit = /obj/item/clothing/suit/armor/vest/ctf/blue r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/blue l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/blue r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/blue @@ -140,7 +140,7 @@ /datum/outfit/ctf/assault/blue name = "CTF Assaulter (Blue)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/blue + suit = /obj/item/clothing/suit/armor/vest/ctf/light/blue r_hand = /obj/item/gun/ballistic/shotgun/ctf/blue l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/blue r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/blue @@ -149,7 +149,7 @@ /datum/outfit/ctf/marksman/blue name = "CTF Marksman (Blue)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue + suit = /obj/item/clothing/suit/armor/vest/ctf/blue r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/blue l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/blue r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/blue @@ -160,7 +160,7 @@ /datum/outfit/ctf/green name = "CTF Rifleman (Green)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/green + suit = /obj/item/clothing/suit/armor/vest/ctf/green r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/green l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/green r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/green @@ -175,7 +175,7 @@ /datum/outfit/ctf/assault/green name = "CTF Assaulter (Green)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/green + suit = /obj/item/clothing/suit/armor/vest/ctf/light/green r_hand = /obj/item/gun/ballistic/shotgun/ctf/green l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/green r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/green @@ -183,8 +183,8 @@ team_radio_freq = FREQ_CTF_GREEN /datum/outfit/ctf/marksman/green - name = "CTF Marksman (Blue)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/green + name = "CTF Marksman (Green)" + suit = /obj/item/clothing/suit/armor/vest/ctf/green r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/green l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/green r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/green @@ -195,7 +195,7 @@ /datum/outfit/ctf/yellow name = "CTF Rifleman (Yellow)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/yellow + suit = /obj/item/clothing/suit/armor/vest/ctf/yellow r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/yellow l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/yellow r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/rifle/yellow @@ -210,7 +210,7 @@ /datum/outfit/ctf/assault/yellow name = "CTF Assaulter (Yellow)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/yellow + suit = /obj/item/clothing/suit/armor/vest/ctf/light/yellow r_hand = /obj/item/gun/ballistic/shotgun/ctf/yellow l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/yellow r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/shotgun/yellow @@ -218,8 +218,8 @@ team_radio_freq = FREQ_CTF_YELLOW /datum/outfit/ctf/marksman/yellow - name = "CTF Marksman (Blue)" - suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/yellow + name = "CTF Marksman (Yellow)" + suit = /obj/item/clothing/suit/armor/vest/ctf/yellow r_hand = /obj/item/gun/ballistic/automatic/laser/ctf/marksman/yellow l_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/yellow r_pocket = /obj/item/ammo_box/magazine/recharge/ctf/marksman/yellow diff --git a/code/modules/capture_the_flag/ctf_equipment.dm b/code/modules/capture_the_flag/ctf_equipment.dm index d438e033f7562c..217e61c4c56c4f 100644 --- a/code/modules/capture_the_flag/ctf_equipment.dm +++ b/code/modules/capture_the_flag/ctf_equipment.dm @@ -189,43 +189,39 @@ target_mob.visible_message(span_danger("[target_mob] explodes into a shower of gibs!")) target_mob.gib() -// SHIELDED HARDSUIT - -/obj/item/clothing/suit/space/hardsuit/shielded/ctf - name = "white shielded hardsuit" - desc = "Standard issue hardsuit for playing capture the flag." - icon_state = "ert_medical" - inhand_icon_state = "ert_medical" - hardsuit_type = "ert_medical" +// SHIELDED VEST + +/obj/item/clothing/suit/armor/vest/ctf + name = "white shielded vest" + desc = "Standard issue vest for playing capture the flag." + icon = 'icons/mob/clothing/suits/ctf.dmi' + worn_icon = 'icons/mob/clothing/suits/ctf.dmi' + icon_state = "standard" // Adding TRAIT_NODROP is done when the CTF spawner equips people - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0) // CTF gear gives no protection outside of the shield allowed = null - slowdown = 0 - max_charges = 150 - recharge_amount = 30 - lose_multiple_charges = TRUE - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf - name = "shielded hardsuit helmet" - desc = "Standard issue hardsuit helmet for playing capture the flag." - icon_state = "hardsuit0-ert_medical" - inhand_icon_state = "hardsuit0-ert_medical" - hardsuit_type = "ert_medical" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0) - -// LIGHT SHIELDED HARDSUIT - -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/light - name = "light white shielded hardsuit" - desc = "Lightweight hardsuit for playing capture the flag." - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light - max_charges = 30 + greyscale_config = /datum/greyscale_config/ctf_standard + greyscale_config_worn = /datum/greyscale_config/ctf_standard_worn + greyscale_colors = "#ffffff" + + ///Icon state to be fed into the shielded component + var/team_shield_icon = "shield-old" + +/obj/item/clothing/suit/armor/vest/ctf/setup_shielding() + AddComponent(/datum/component/shielded, max_charges = 150, recharge_start_delay = 20 SECONDS, charge_increment_delay = 1 SECONDS, charge_recovery = 30, lose_multiple_charges = TRUE, shield_icon = team_shield_icon) + +// LIGHT SHIELDED VEST + +/obj/item/clothing/suit/armor/vest/ctf/light + name = "light white shielded vest" + desc = "Lightweight vest for playing capture the flag." + icon_state = "light" + greyscale_config = /datum/greyscale_config/ctf_light + greyscale_config_worn = /datum/greyscale_config/ctf_light_worn slowdown = -0.25 -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light - name = "light shielded hardsuit helmet" - desc = "Lightweight hardsuit helmet for playing capture the flag." +/obj/item/clothing/suit/armor/vest/ctf/light/setup_shielding() + AddComponent(/datum/component/shielded, max_charges = 30, recharge_start_delay = 20 SECONDS, charge_increment_delay = 1 SECONDS, charge_recovery = 30, lose_multiple_charges = TRUE, shield_icon = team_shield_icon) // RED TEAM GUNS @@ -487,119 +483,63 @@ // RED TEAM SUITS // Regular -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/red - name = "red shielded hardsuit" - icon_state = "ert_security" +/obj/item/clothing/suit/armor/vest/ctf/red + name = "red shielded vest" inhand_icon_state = "ert_security" - hardsuit_type = "ert_security" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red - shield_icon = "shield-red" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red - icon_state = "hardsuit0-ert_security" - inhand_icon_state = "hardsuit0-ert_security" - hardsuit_type = "ert_security" + team_shield_icon = "shield-red" + greyscale_colors = COLOR_VIVID_RED // Light -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/red - name = "light red shielded hardsuit" - icon_state = "ert_security" +/obj/item/clothing/suit/armor/vest/ctf/light/red + name = "light red shielded vest" inhand_icon_state = "ert_security" - hardsuit_type = "ert_security" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/red - shield_icon = "shield-red" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/red - icon_state = "hardsuit0-ert_security" - inhand_icon_state = "hardsuit0-ert_security" - hardsuit_type = "ert_security" + team_shield_icon = "shield-red" + greyscale_colors = COLOR_VIVID_RED // BLUE TEAM SUITS // Regular -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue - name = "blue shielded hardsuit" - icon_state = "ert_command" +/obj/item/clothing/suit/armor/vest/ctf/blue + name = "blue shielded vest" inhand_icon_state = "ert_command" - hardsuit_type = "ert_commander" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/blue - shield_icon = "shield-old" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/blue - icon_state = "hardsuit0-ert_commander" - inhand_icon_state = "hardsuit0-ert_commander" - hardsuit_type = "ert_commander" + team_shield_icon = "shield-old" + greyscale_colors = COLOR_DARK_CYAN // Light -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/blue - name = "light blue shielded hardsuit" - icon_state = "ert_command" +/obj/item/clothing/suit/armor/vest/ctf/light/blue + name = "light blue shielded vest" inhand_icon_state = "ert_command" - hardsuit_type = "ert_commander" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/blue - shield_icon = "shield-old" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/blue - icon_state = "hardsuit0-ert_commander" - inhand_icon_state = "hardsuit0-ert_commander" - hardsuit_type = "ert_commander" + team_shield_icon = "shield-old" + greyscale_colors = COLOR_DARK_CYAN // GREEN TEAM SUITS // Regular -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/green - name = "green shielded hardsuit" - icon_state = "ert_green" +/obj/item/clothing/suit/armor/vest/ctf/green + name = "green shielded vest" inhand_icon_state = "ert_green" - hardsuit_type = "ert_green" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/green - shield_icon = "shield-green" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/green - icon_state = "hardsuit0-ert_green" - inhand_icon_state = "hardsuit0-ert_green" - hardsuit_type = "ert_green" + team_shield_icon = "shield-green" + greyscale_colors = COLOR_LIME // Light -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/green - name = "light green shielded hardsuit" - icon_state = "ert_green" +/obj/item/clothing/suit/armor/vest/ctf/light/green + name = "light green shielded vest" inhand_icon_state = "ert_green" - hardsuit_type = "ert_green" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/green - shield_icon = "shield-green" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/green - icon_state = "hardsuit0-ert_green" - inhand_icon_state = "hardsuit0-ert_green" - hardsuit_type = "ert_green" + team_shield_icon = "shield-green" + greyscale_colors = COLOR_LIME // YELLOW TEAM SUITS // Regular -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/yellow - name = "yellow shielded hardsuit" - icon_state = "ert_engineer" +/obj/item/clothing/suit/armor/vest/ctf/yellow + name = "yellow shielded vest" inhand_icon_state = "ert_engineer" - hardsuit_type = "ert_engineer" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/yellow - shield_icon = "shield-yellow" + team_shield_icon = "shield-yellow" + greyscale_colors = COLOR_VIVID_YELLOW // Light -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/yellow - icon_state = "hardsuit0-ert_engineer" - inhand_icon_state = "hardsuit0-ert_engineer" - hardsuit_type = "ert_engineer" - -/obj/item/clothing/suit/space/hardsuit/shielded/ctf/light/yellow - name = "light yellow shielded hardsuit" - icon_state = "ert_engineer" +/obj/item/clothing/suit/armor/vest/ctf/light/yellow + name = "light yellow shielded vest" inhand_icon_state = "ert_engineer" - hardsuit_type = "ert_engineer" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/yellow - shield_icon = "shield-yellow" - -/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/light/yellow - icon_state = "hardsuit0-ert_engineer" - inhand_icon_state = "hardsuit0-ert_engineer" - hardsuit_type = "ert_engineer" + team_shield_icon = "shield-yellow" + greyscale_colors = COLOR_VIVID_YELLOW diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index fd324f606f50e9..3c43cd097f2368 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -1013,24 +1013,9 @@ allowed = null armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 40, BOMB = 10, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, WOUND = 15) resistance_flags = FIRE_PROOF | ACID_PROOF - /// How many charges total the shielding has - var/max_charges = 3 - /// How long after we've been shot before we can start recharging. - var/recharge_delay = 20 SECONDS - /// How quickly the shield recharges each charge once it starts charging - var/recharge_rate = 1 SECONDS - /// How many charges are recovered on each recharge - var/recharge_amount = 1 - /// Should the shield lose charges equal to the damage dealt by a hit? - var/lose_multiple_charges = FALSE - /// The icon for the shield - var/shield_icon = "shield-old" - -/obj/item/clothing/suit/space/hardsuit/shielded/Initialize(mapload) - . = ..() - if(!allowed) - allowed = GLOB.advanced_hardsuit_allowed - AddComponent(/datum/component/shielded, max_charges = max_charges, recharge_start_delay = recharge_delay, charge_increment_delay = recharge_rate, charge_recovery = recharge_amount, lose_multiple_charges = lose_multiple_charges, shield_icon = shield_icon) + +/obj/item/clothing/suit/space/hardsuit/shielded/setup_shielding() + AddComponent(/datum/component/shielded, max_charges = 3, recharge_start_delay = 20 SECONDS, charge_increment_delay = 1 SECONDS, charge_recovery = 1, lose_multiple_charges = FALSE, shield_icon = "shield-old") /obj/item/clothing/head/helmet/space/hardsuit/shielded resistance_flags = FIRE_PROOF | ACID_PROOF @@ -1046,9 +1031,11 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0 - shield_icon = "shield-red" jetpack = /obj/item/tank/jetpack/suit +/obj/item/clothing/suit/space/hardsuit/shielded/syndi/setup_shielding() + AddComponent(/datum/component/shielded, max_charges = 3, recharge_start_delay = 20 SECONDS, charge_increment_delay = 1 SECONDS, charge_recovery = 1, lose_multiple_charges = FALSE, shield_icon = "shield-red") + /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi name = "blood-red hardsuit helmet" desc = "An advanced hardsuit helmet with built in energy shielding." @@ -1064,14 +1051,15 @@ icon_state = "deathsquad" inhand_icon_state = "swat_suit" hardsuit_type = "syndi" - max_charges = 4 - recharge_delay = 1.5 SECONDS armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, WOUND = 30) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat dog_fashion = /datum/dog_fashion/back/deathsquad +/obj/item/clothing/suit/space/hardsuit/shielded/swat/setup_shielding() + AddComponent(/datum/component/shielded, max_charges = 4, recharge_start_delay = 1.5 SECONDS, charge_increment_delay = 1 SECONDS, charge_recovery = 1, lose_multiple_charges = FALSE, shield_icon = "shield-old") + /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat name = "death commando helmet" desc = "A tactical helmet with built in energy shielding." diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 07011ce65295d2..4c704b8b5b1494 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -12,6 +12,9 @@ var/suittoggled = FALSE limb_integrity = 0 // disabled for most exo-suits +/obj/item/clothing/suit/Initialize(mapload) + . = ..() + setup_shielding() /obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() @@ -37,3 +40,12 @@ if(ismob(loc)) var/mob/M = loc M.update_inv_wear_suit() + +/** + * Wrapper proc to apply shielding through AddComponent(). + * Called in /obj/item/clothing/Initialize(). + * Override with an AddComponent(/datum/component/shielded, args) call containing the desired shield statistics. + * See /datum/component/shielded documentation for a description of the arguments + **/ +/obj/item/clothing/suit/proc/setup_shielding() + return diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index ea548b8b840fd5..b31ae8f9e608b3 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -179,9 +179,6 @@ desc = "Not all wizards are afraid of getting up close and personal." icon_state = "battlemage" inhand_icon_state = "battlemage" - recharge_delay = 0 // no auto-recharge - max_charges = 15 - shield_icon = "shield-red" min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard @@ -189,6 +186,9 @@ slowdown = 0 resistance_flags = FIRE_PROOF | ACID_PROOF +/obj/item/clothing/suit/space/hardsuit/shielded/wizard/setup_shielding() + AddComponent(/datum/component/shielded, max_charges = 15, recharge_start_delay = 0 SECONDS, charge_increment_delay = 1 SECONDS, charge_recovery = 1, lose_multiple_charges = FALSE, shield_icon = "shield-red") + /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard name = "battlemage helmet" desc = "A suitably impressive helmet." diff --git a/icons/mob/clothing/suits/ctf.dmi b/icons/mob/clothing/suits/ctf.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5960b5179aa41b0824042c005b5089fc34f728e2 GIT binary patch literal 1038 zcmV+p1o8WcP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRL zOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DF-B`#KoDCSyT+t#KoCbl$e_eVjH5VicikZ z$uBJ`Ca4<7$V*8qN+DVyA(NFAT>V_Y-U9&l7DJCY>mmyP00Rn1L_t(&f$dl^Zrd;v zC8Y$Skq#0S?~>e3Swt!B0UGoGilUw)n>%u|ym_k&^aSk^_yk#dt5QZ0y-y_$Q~^!U z@&SqQK0hCy6vn`Rj5#>GB1qDwwvZ=hvf<*FfyJfi{`UFAlg z;=omsDh>_lJXW|PR+R*aFujb+6UCDG=Hws)v z9#;_xL~)q(1zyOqt_!IicvP2VC419yk;N4X%vDzO4tRRnl*{J9li|j}5wcmj$ z0Y5PgE|GtF|NaIaxl9}CprHbuac~Ws*U17mgx#6cfoZ}Gi@GL)kx~+P+FcFepz1Ck zdd$ep;EW#dEbI+D%L{bGL!QxlkcAvij1zO+p^zDYEJ4A{7NC}6^W#H7F7gr^cvhBF zpd{;u_u(BASPTUU6bK)FJ>?+7Co-p5kKo|o@bBO=6Sv5Nc1_mXc1t(R+7{`KX)U(M z1rv0OpaR;qFtd0-=|(f6H)CRleA{i^yJH2k{qHeaAebf~ZUgg` zfCz>?L;yCMY#2ZvVz|M$;RoRuUDIJA^VP9^i^KJvT( zZp8eA?)P#AnwNf*r141(JXgS3-sEITG?S#?zyZrcesG%iyvq-IZYEh}PpJhJnHD0KOO%MS+m0ssDET7KY%`)T=s z5tx=AT(C3JFc$uYyZzPCj$`n@{ER)N7nFMD5v<74!QsDzHq$=N0J_T$ zG0I>D0mudeWE&hi8eJV2a0AtH5%E$5 zJPKG{N=jVu$TP5)ySSI*Q@{u`!4aPVR-g%`_!KaOl#~SFQ^24a8mfTA<%D8{6;KQZ zlarGtpqQY<#H4^CFacG56pR8Y0|zAq2P7^tGYBEem$I@JAgSO2mJeJ=@+<K BtK