Adds a Chameleon Armor-kit to antag uplinks. (#21221)

Adds a full armor-kit that is capable of changing its appearance while
offering slightly worse protection than heavy armor.

Here's a demonstration of how it works.
<img width="187" height="183" alt="NotEvilGuyAnymore"
src="https://github.com/user-attachments/assets/0c9aaf92-e364-4bc7-9242-58b367016e1f"
/>
<img width="186" height="186" alt="Evilguy"
src="https://github.com/user-attachments/assets/c9567aa2-735a-4b27-be2b-849be1452484"
/>

---------

Signed-off-by: Birigilis <kavbest10@gmail.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
This commit is contained in:
Birigilis
2025-09-15 12:13:06 +00:00
committed by GitHub
co-authored by Matt Atlas
parent 8b9d512906
commit e9e1e923f5
5 changed files with 173 additions and 0 deletions
+99
View File
@@ -165,6 +165,105 @@
disguise(clothing_choices[picked])
update_clothing_icon() //so our overlays update.
//*******************
//**Chameleon Plate Carrier**
//*******************
/obj/item/clothing/suit/armor/chameleon
name = "standard plate carrier"
icon = 'icons/obj/clothing/suits.dmi'
contained_sprite = TRUE
icon_state = "plate_chameleon"
item_state = "plate_chameleon"
w_class = WEIGHT_CLASS_NORMAL
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
armor = list(
MELEE = ARMOR_MELEE_KEVLAR,
BULLET = ARMOR_BALLISTIC_MEDIUM,
LASER = ARMOR_LASER_KEVLAR,
ENERGY = ARMOR_ENERGY_SMALL,
BOMB = ARMOR_BOMB_PADDED
)
desc = "A standard plate carrier that upon closer inspection reveal a holographic cloaker that allows it to change its appearance. It seems to have a small dial inside."
origin_tech = list(TECH_ILLEGAL = 3)
var/global/list/clothing_choices
/obj/item/clothing/suit/armor/chameleon/Initialize()
. = ..()
if(!clothing_choices)
var/blocked = list(src.type, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice)
clothing_choices = generate_chameleon_choices(/obj/item/clothing/suit, blocked)
/obj/item/clothing/suit/armor/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
. = ..()
name = "plate carrier"
desc = "A generic plate carrier."
icon_state = "carrier_chameleon"
update_icon()
update_clothing_icon()
/obj/item/clothing/suit/armor/chameleon/verb/change()
set name = "Change Oversuit Appearance"
set category = "Chameleon Items"
set src in usr
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
if(!picked)
return
disguise(clothing_choices[picked])
update_clothing_icon() //so our overlays update.
//*******************
//**Chameleon Helmet**
//*******************
/obj/item/clothing/head/helmet/chameleon
name = "standard helmet"
desc = "A standard helmet that upon closer inspection reveal a holographic cloaker that allows it to change its appearance. It seems to have a small dial on the inside."
icon = 'icons/obj/item/clothing/head/modular_armor_helmets.dmi'
icon_state = "helm_generic"
item_state = "helm_generic"
contained_sprite = TRUE
origin_tech = list(TECH_ILLEGAL = 3)
armor = list(
MELEE = ARMOR_MELEE_KEVLAR,
BULLET = ARMOR_BALLISTIC_MEDIUM,
LASER = ARMOR_LASER_KEVLAR,
ENERGY = ARMOR_ENERGY_SMALL,
BOMB = ARMOR_BOMB_PADDED
)
var/global/list/clothing_choices
/obj/item/clothing/head/helmet/chameleon/Initialize()
. = ..()
if(!clothing_choices)
var/blocked = list(src.type, /obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats.
clothing_choices = generate_chameleon_choices(/obj/item/clothing/head, blocked)
/obj/item/clothing/head/helmet/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown.
. = ..()
name = "standard helmet"
desc = "A generic helmet."
icon_state = initial(icon_state)
update_icon()
update_clothing_icon()
/obj/item/clothing/head/helmet/chameleon/verb/change()
set name = "Change Hat/Helmet Appearance"
set category = "Chameleon Items"
set src in usr
var/picked = tgui_input_list(usr, "Select disguise.", "Disguise", clothing_choices)
if(!picked)
return
disguise(clothing_choices[picked])
update_clothing_icon() //so our overlays update.
//*******************
//**Chameleon Shoes**