diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm
index 045c682adef..0779965df33 100644
--- a/code/datums/dog_fashion.dm
+++ b/code/datums/dog_fashion.dm
@@ -140,12 +140,61 @@
name = "Necromancer REAL_NAME"
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
+// CARDBORG OUTFITS
/datum/dog_fashion/head/cardborg
- name = "Borgi"
+ name = "BORGI"
speak = list("Ping!","Beep!","Woof!")
emote_see = list("goes rogue.", "sniffs out non-humans.")
desc = "Result of robotics budget cuts."
+/datum/dog_fashion/head/cardborg/security
+ name = "SECBORGI"
+ speak = list("Ping!", "Beep!", "Woof!", "HALT!", "HALT! HALT! HALT!")
+ emote_see = list("goes rogue.", "sniffs out criminals.")
+ desc = "Result of robotics budget cuts and a ban on the station having real security cyborgs."
+
+/datum/dog_fashion/head/cardborg/engineering
+ name = "ENGI-IAN"
+ speak = list("Ping!", "Beep!", "Woof!")
+ emote_see = list("goes rogue.", "sniffs for wires.", "looks for an autolathe board.")
+ desc = "Result of robotics budget cuts. Knows as much about atmospherics as the average engineer."
+
+/datum/dog_fashion/head/cardborg/mining
+ name = "DIGDOG"
+ speak = list("Ping!", "Beep!", "Woof!")
+ emote_see = list("goes rogue.", "sniffs for ores.", "digs into the floor.")
+ desc = "Result of robotics budget cuts. Has dug up more bones than any other miner!"
+
+/datum/dog_fashion/head/cardborg/service
+ name = "Service dogbot"
+ speak = list("Ping!", "Beep!", "Woof!")
+ emote_see = list("goes rogue.")
+ desc = "Result of robotics budget cuts. Still about as useful as a real service cyborg..."
+
+/datum/dog_fashion/head/cardborg/medical
+ name = "M3D1CAL_IANTERN"
+ speak = list("Ping!", "Beep!", "Woof!")
+ emote_see = list("goes rogue.", "sniffs out the injured.", "analyses your vitals.")
+ desc = "Result of robotics budget cuts. Hopefully medical is more useful."
+
+/datum/dog_fashion/head/cardborg/janitor
+ name = "CLE-IAN-G"
+ speak = list("Ping!", "Beep!", "Woof!")
+ emote_see = list("goes rogue.", "sniffs for messes.", "licks the floor clean.")
+ desc = "Result of robotics budget cuts. More pettable than 9 out of 10 janitors."
+
+/datum/dog_fashion/head/cardborg/xeno
+ name = "BORGIMORPH"
+ speak = list("Ping!", "Beep!", "Woof!", "HISS!", "HISSHISSHISS!")
+ emote_see = list("goes rogue.", "hisses.")
+ desc = "Result of robotics budget cuts. If this is your last line of defence against a xenomorph outbreak, god help you."
+
+/datum/dog_fashion/head/cardborg/deathbot
+ name = "Epsilon-D0G1"
+ speak = list("Ping!", "Beep!", "Woof!")
+ emote_see = list("goes rogue.", "sniffs out survivors.", "prepares to destroy the station.")
+ desc = "Result of robotics budget cuts. Looks just like the cyborg from the Deathsquad TV show!"
+
/datum/dog_fashion/head/ghost
name = "\improper Ghost"
speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index d1b68f4bc9a..48c9450ab8a 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -1,9 +1,10 @@
+#define CRAYON_MESSAGE_MAX_LENGTH 16
+#define CARDBORG_HEAD 1
+#define CARDBORG_BODY 2
+
/*
* Crayons
*/
-
-#define CRAYON_MESSAGE_MAX_LENGTH 16
-
/obj/item/toy/crayon
name = "crayon"
desc = "A colourful crayon. Looks tasty. Mmmm..."
@@ -334,6 +335,9 @@
if(capped)
to_chat(user, "You cannot spray [target] while the cap is still on!")
return
+ if(istype(target, /obj/item/clothing/head/cardborg) || istype(target, /obj/item/clothing/suit/cardborg)) // Spraypainting your cardborg suit for more fashion options.
+ cardborg_recolor(target, user)
+ return
if(iscarbon(target))
if(uses - 10 > 0)
uses = uses - 10
@@ -362,4 +366,43 @@
I.color = colour
. += I
+/obj/item/toy/crayon/spraycan/proc/cardborg_recolor(obj/target, mob/user)
+ var/is_cardborg_head = CARDBORG_BODY
+ if(istype(target, /obj/item/clothing/head/cardborg)) // Differentiating between head and body.
+ is_cardborg_head = CARDBORG_HEAD
+ var/selected_disguise
+ var/static/list/disguise_options = list(
+ "Standard" = image('icons/mob/robots.dmi', "Standard"),
+ "Security" = image('icons/mob/robots.dmi', "security-radial"),
+ "Engineering" = image('icons/mob/robots.dmi', "engi-radial"),
+ "Mining" = image('icons/mob/robots.dmi', "mining-radial"),
+ "Service" = image('icons/mob/robots.dmi', "serv-radial"),
+ "Medical" = image('icons/mob/robots.dmi', "med-radial"),
+ "Janitor" = image('icons/mob/robots.dmi', "jan-radial"),
+ "Hunter" = image('icons/mob/robots.dmi', "xeno-radial"),
+ "Death Bot" = image('icons/mob/robots.dmi', "syndie-bloodhound-preview")
+ )
+ selected_disguise = show_radial_menu(user, target, disguise_options, require_near = TRUE, radius = 42)
+
+ if(!selected_disguise)
+ return
+ var/static/list/disguise_spraypaint_items = list(
+ "Standard" = list(/obj/item/clothing/head/cardborg, /obj/item/clothing/suit/cardborg),
+ "Security" = list(/obj/item/clothing/head/cardborg/security, /obj/item/clothing/suit/cardborg/security),
+ "Engineering" = list(/obj/item/clothing/head/cardborg/engineering, /obj/item/clothing/suit/cardborg/engineering),
+ "Mining" = list(/obj/item/clothing/head/cardborg/mining, /obj/item/clothing/suit/cardborg/mining),
+ "Service" = list(/obj/item/clothing/head/cardborg/service, /obj/item/clothing/suit/cardborg/service),
+ "Medical" = list(/obj/item/clothing/head/cardborg/medical, /obj/item/clothing/suit/cardborg/medical),
+ "Janitor" = list(/obj/item/clothing/head/cardborg/janitor, /obj/item/clothing/suit/cardborg/janitor),
+ "Hunter" = list(/obj/item/clothing/head/cardborg/xeno, /obj/item/clothing/suit/cardborg/xeno),
+ "Death Bot" = list(/obj/item/clothing/head/cardborg/deathbot, /obj/item/clothing/suit/cardborg/deathbot)
+ )
+ selected_disguise = disguise_spraypaint_items[selected_disguise][is_cardborg_head]
+ playsound(user, 'sound/effects/spray.ogg', 5, TRUE, 5)
+ user.unEquip(target)
+ user.put_in_hands(new selected_disguise()) // Spawn the desired cardborg item.
+ qdel(target) // Get rid of the old one.
+
#undef CRAYON_MESSAGE_MAX_LENGTH
+#undef CARDBORG_HEAD
+#undef CARDBORG_BODY
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 9cc9981ea28..524358e00dd 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -5,7 +5,6 @@
* Soviet Hats
* Pumpkin head
* Kitty ears
- * Cardborg Disguise
* Head Mirror
*/
@@ -210,32 +209,6 @@
desc = "A pair of mouse ears. Squeak!"
icon_state = "mousey"
-/obj/item/clothing/head/cardborg
- name = "cardborg helmet"
- desc = "A helmet made out of a box."
- icon_state = "cardborg_h"
- item_state = "cardborg_h"
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
- flags_cover = HEADCOVERSEYES
- species_disguise = "High-tech robot"
- dog_fashion = /datum/dog_fashion/head/cardborg
- sprite_sheets = list(
- "Grey" = 'icons/mob/clothing/species/grey/head.dmi'
- )
-
-
-/obj/item/clothing/head/cardborg/equipped(mob/living/user, slot)
- ..()
- if(ishuman(user) && slot == SLOT_HUD_HEAD)
- var/mob/living/carbon/human/H = user
- if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg))
- var/obj/item/clothing/suit/cardborg/CB = H.wear_suit
- CB.disguise(user, src)
-
-/obj/item/clothing/head/cardborg/dropped(mob/living/user)
- ..()
- user.remove_alt_appearance("standard_borg_disguise")
-
/*
* Head Mirror
*/
diff --git a/code/modules/clothing/suits/cardborg_suit.dm b/code/modules/clothing/suits/cardborg_suit.dm
new file mode 100644
index 00000000000..9a7a214f13b
--- /dev/null
+++ b/code/modules/clothing/suits/cardborg_suit.dm
@@ -0,0 +1,237 @@
+/*
+CONTENTS:
+1. Cardborg Helmets
+2. Cardborg Suits
+3. Disguise code
+*/
+
+/*
+ * Cardborg Helmets.
+*/
+/obj/item/clothing/head/cardborg
+ name = "cardborg helmet"
+ desc = "A helmet made out of a box."
+ icon = 'icons/obj/clothing/head/cardborg.dmi'
+ icon_state = "cardborg_h"
+ item_state = "cardborg_h"
+ icon_override = 'icons/mob/clothing/head/cardborg.dmi'
+ dog_fashion = /datum/dog_fashion/head/cardborg
+ sprite_sheets = list(
+ "Grey" = 'icons/mob/clothing/species/grey/head/cardborg.dmi',
+ "Vox" = 'icons/mob/clothing/species/vox/head/cardborg.dmi'
+ )
+ flags = BLOCKHAIR
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEEARS
+ flags_cover = HEADCOVERSEYES
+ /// You appear to be this when examined instead of your mob's actual species. Also used to verify the helmet and suit are in a matching set.
+ species_disguise = "High-tech robot"
+ /// All the borg skins that this can disguise you as.
+ var/list/available_disguises = list("Standard")
+
+/obj/item/clothing/head/cardborg/examine_more(mob/user)
+ . = ..()
+ . += "For reasons unknown to robotics experts across the galaxy, putting on a costume fashioned out of cardboard with some knobbly bits stuck on, \
+ some buttons drawn on in pen, and moving in a stereotypical 'robotic' fashion causes the wearer to be perceived as being an actual robot by other robots, \
+ cyborgs, and AI systems. The mechanism behind this is not understood, but it is not foolproof, as they may use contextual information and other clues in order to see through the ruse."
+ . += ""
+ . += "The wearer may also hallucinate themselves as being a robot as well."
+
+/obj/item/clothing/head/cardborg/security
+ name = "red cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted red."
+ icon_state = "cardborg_h_security"
+ item_state = "cardborg_h_security"
+ dog_fashion = /datum/dog_fashion/head/cardborg/security
+ available_disguises = list("secborg", "Security", "securityrobot", "bloodhound", "Standard-Secy", "Noble-SEC", "Cricket-SEC", "heavySec")
+ species_disguise = "High-tech security robot"
+
+/obj/item/clothing/head/cardborg/engineering
+ name = "orange cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted orange."
+ icon_state = "cardborg_h_engineering"
+ item_state = "cardborg_h_engineering"
+ dog_fashion = /datum/dog_fashion/head/cardborg/engineering
+ available_disguises = list("Engineering", "engineerrobot", "landmate", "Standard-Engi", "Noble-ENG", "Cricket-ENGI")
+ species_disguise = "High-tech engineering robot"
+
+/obj/item/clothing/head/cardborg/mining
+ name = "brown cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted brown."
+ icon_state = "cardborg_h_mining"
+ item_state = "cardborg_h_mining"
+ dog_fashion = /datum/dog_fashion/head/cardborg/mining
+ available_disguises = list("Miner_old", "droid-miner", "Miner", "Standard-Mine", "Noble-DIG", "Cricket-MINE", "lavaland", "squatminer", "coffinMiner")
+ species_disguise = "High-tech mining robot"
+
+/obj/item/clothing/head/cardborg/service
+ name = "green cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted green."
+ icon_state = "cardborg_h_service"
+ item_state = "cardborg_h_service"
+ dog_fashion = /datum/dog_fashion/head/cardborg/service
+ available_disguises = list("Service", "toiletbot", "Brobot", "maximillion", "Service2", "Standard-Serv", "Noble-SRV", "Cricket-SERV")
+ species_disguise = "High-tech service robot"
+
+/obj/item/clothing/head/cardborg/medical
+ name = "blue cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted blue."
+ icon_state = "cardborg_h_medical"
+ item_state = "cardborg_h_medical"
+ dog_fashion = /datum/dog_fashion/head/cardborg/medical
+ available_disguises = list("Medbot", "surgeon", "droid-medical", "medicalrobot", "Standard-Medi", "Noble-MED", "Cricket-MEDI", "qualified_doctor")
+ species_disguise = "High-tech medical robot"
+
+/obj/item/clothing/head/cardborg/janitor
+ name = "purple cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted purple."
+ icon_state = "cardborg_h_janitor"
+ item_state = "cardborg_h_janitor"
+ dog_fashion = /datum/dog_fashion/head/cardborg/janitor
+ available_disguises = list("JanBot2", "janitorrobot", "mopgearrex", "Standard-Jani", "Noble-CLN", "Cricket-JANI", "custodiborg")
+ species_disguise = "High-tech janitor robot"
+
+/obj/item/clothing/head/cardborg/xeno
+ name = "white cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted white."
+ icon_state = "cardborg_h_xeno"
+ item_state = "cardborg_h_xeno"
+ dog_fashion = /datum/dog_fashion/head/cardborg/xeno
+ available_disguises = list("xenoborg-state-a")
+ species_disguise = "High-tech alien-hunting robot"
+
+/obj/item/clothing/head/cardborg/deathbot
+ name = "black cardborg helmet"
+ desc = "A helmet made out of a box. This one has been spray-painted black."
+ icon_state = "cardborg_h_deathbot"
+ item_state = "cardborg_h_deathbot"
+ dog_fashion = /datum/dog_fashion/head/cardborg/deathbot
+ available_disguises = list("nano_bloodhound", "syndie_bloodhound", "syndi-medi", "syndi-engi", "ertgamma")
+ species_disguise = "High-tech killer robot"
+
+/*
+ * Cardborg Suits.
+*/
+/obj/item/clothing/suit/cardborg
+ name = "cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them."
+ icon = 'icons/obj/clothing/suits/cardborg.dmi'
+ icon_state = "cardborg"
+ item_state = "cardborg"
+ icon_override = 'icons/mob/clothing/suits/cardborg.dmi'
+ dog_fashion = /datum/dog_fashion/back
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO
+ flags_inv = HIDEJUMPSUIT
+ species_disguise = "High-tech robot"
+
+/obj/item/clothing/suit/cardborg/examine_more(mob/user)
+ . = ..()
+ . += "For reasons unknown to robotics experts across the galaxy, putting on a costume fashioned out of cardboard with some knobbly bits stuck on, \
+ some buttons drawn on in pen, and moving in a stereotypical 'robotic' fashion causes the wearer to be perceived as being an actual robot by other robots, \
+ cyborgs, and AI systems. The mechanism behind this is not understood, but it is not foolproof, as they may use contextual information and other clues in order to see through the ruse."
+ . += ""
+ . += "The wearer may also hallucinate themselves as being a robot as well."
+
+/obj/item/clothing/suit/cardborg/security
+ name = "red cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted red."
+ icon_state = "cardborg_security"
+ item_state = "cardborg_security"
+ species_disguise = "High-tech security robot"
+
+/obj/item/clothing/suit/cardborg/engineering
+ name = "orange cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted orange."
+ icon_state = "cardborg_engineering"
+ item_state = "cardborg_engineering"
+ species_disguise = "High-tech engineering robot"
+
+/obj/item/clothing/suit/cardborg/mining
+ name = "brown cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted brown."
+ icon_state = "cardborg_mining"
+ item_state = "cardborg_mining"
+ species_disguise = "High-tech mining robot"
+
+/obj/item/clothing/suit/cardborg/service
+ name = "green cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted green."
+ icon_state = "cardborg_service"
+ item_state = "cardborg_service"
+ species_disguise = "High-tech service robot"
+
+/obj/item/clothing/suit/cardborg/medical
+ name = "blue cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted blue."
+ icon_state = "cardborg_medical"
+ item_state = "cardborg_medical"
+ species_disguise = "High-tech medical robot"
+
+/obj/item/clothing/suit/cardborg/janitor
+ name = "purple cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted purple."
+ icon_state = "cardborg_janitor"
+ item_state = "cardborg_janitor"
+ species_disguise = "High-tech janitor robot"
+
+/obj/item/clothing/suit/cardborg/xeno
+ name = "white cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted white."
+ icon_state = "cardborg_xeno"
+ item_state = "cardborg_xeno"
+ species_disguise = "High-tech alien-hunting robot"
+
+/obj/item/clothing/suit/cardborg/deathbot
+ name = "black cardborg suit"
+ desc = "A full-body suit made out of ordinary cardboard boxes with various holes cut into them. This one has been spray-painted black."
+ icon_state = "cardborg_deathbot"
+ item_state = "cardborg_deathbot"
+ species_disguise = "High-tech killer robot"
+
+/*
+ * Disguise code.
+*/
+/obj/item/clothing/head/cardborg/equipped(mob/living/user, slot)
+ ..()
+ if(ishuman(user) && slot == SLOT_HUD_HEAD)
+ var/mob/living/carbon/human/H = user
+ if(!istype(H.wear_suit, /obj/item/clothing/suit/cardborg))
+ return
+ var/obj/item/clothing/suit/cardborg/CB = H.wear_suit
+ CB.apply_borg_disguise(user, src)
+
+/obj/item/clothing/head/cardborg/dropped(mob/living/user)
+ ..()
+ user.remove_alt_appearance("selected_borg_disguise")
+
+/obj/item/clothing/suit/cardborg/equipped(mob/living/user, slot)
+ ..()
+ if(ishuman(user) && slot == SLOT_HUD_OUTER_SUIT)
+ var/mob/living/carbon/human/H = user
+ if(!istype(H.head, /obj/item/clothing/head/cardborg))
+ return
+ var/obj/item/clothing/head/cardborg/head = H.head
+ apply_borg_disguise(user, head)
+
+/obj/item/clothing/suit/cardborg/dropped(mob/living/user)
+ ..()
+ user.remove_alt_appearance("selected_borg_disguise")
+
+/obj/item/clothing/suit/cardborg/proc/apply_borg_disguise(mob/living/carbon/human/H, obj/item/clothing/head/cardborg/borghead)
+ if(!istype(H) || !istype(borghead))
+ return
+ if(species_disguise != borghead.species_disguise) // Ensure the head and body are the same colour.
+ to_chat(H, "The colours of the cardborg helmet and suit do not match, the disguise is not convincing enough to work!")
+ return
+ var/selected_borg_disguise = pick(borghead.available_disguises)
+ var/selected_borg_eyes
+ var/list/borgs_with_shared_eyes = list("Cricket", "Standard") // Some borg eyes are used by multiple different sprites. These cases require special handling.
+ var/list/skin_to_truncate = splittext(selected_borg_disguise, "-")
+ var/truncated_skin = trim(skin_to_truncate[1]) // Slice off the suffix of the skin variant's name so it matches the name of the eyes it is supposed to pair with.
+ if(truncated_skin in borgs_with_shared_eyes)
+ selected_borg_eyes = truncated_skin
+ else
+ selected_borg_eyes = selected_borg_disguise // Otherwise the eyes are already bespoke for the skin so we just match them.
+ var/image/I = image(icon = 'icons/mob/robots.dmi' , icon_state = selected_borg_disguise, loc = H) // Now you're a robot!
+ I.override = TRUE
+ I.overlays += image(icon = 'icons/mob/robots.dmi', icon_state = "eyes-[selected_borg_eyes]") // Gotta look realistic! Check to see if the borg type has eyes - if yes, apply them.
+ H.add_alt_appearance("selected_borg_disguise", I, GLOB.silicon_mob_list + H) // You look like a robot to robots (including yourself because you're totally a robot)!
diff --git a/code/modules/clothing/suits/misc_suits.dm b/code/modules/clothing/suits/misc_suits.dm
index 0142f525753..2ab7fae0bca 100644
--- a/code/modules/clothing/suits/misc_suits.dm
+++ b/code/modules/clothing/suits/misc_suits.dm
@@ -222,35 +222,6 @@
flags_inv = HIDEJUMPSUIT
allowed = list(/obj/item/storage/bible, /obj/item/nullrod, /obj/item/reagent_containers/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
-/obj/item/clothing/suit/cardborg
- name = "cardborg suit"
- desc = "An ordinary cardboard box with holes cut in the sides."
- icon_state = "cardborg"
- item_state = "cardborg"
- body_parts_covered = UPPER_TORSO|LOWER_TORSO
- flags_inv = HIDEJUMPSUIT
- species_disguise = "High-tech robot"
- dog_fashion = /datum/dog_fashion/back
-
-/obj/item/clothing/suit/cardborg/equipped(mob/living/user, slot)
- ..()
- if(slot == SLOT_HUD_OUTER_SUIT)
- disguise(user)
-
-/obj/item/clothing/suit/cardborg/dropped(mob/living/user)
- ..()
- user.remove_alt_appearance("standard_borg_disguise")
-
-/obj/item/clothing/suit/cardborg/proc/disguise(mob/living/carbon/human/H, obj/item/clothing/head/cardborg/borghead)
- if(istype(H))
- if(!borghead)
- borghead = H.head
- if(istype(borghead, /obj/item/clothing/head/cardborg)) //why is this done this way? because equipped() is called BEFORE THE ITEM IS IN THE SLOT WHYYYY
- var/image/I = image(icon = 'icons/mob/robots.dmi' , icon_state = "robot", loc = H)
- I.override = 1
- I.overlays += image(icon = 'icons/mob/robots.dmi' , icon_state = "eyes-robot") //gotta look realistic
- H.add_alt_appearance("standard_borg_disguise", I, GLOB.silicon_mob_list+H) //you look like a robot to robots! (including yourself because you're totally a robot)
-
/obj/item/clothing/suit/snowman
name = "snowman outfit"
desc = "Two white spheres covered in white glitter. 'Tis the season."
diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi
index b501667f661..5b9df84c18b 100644
Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ
diff --git a/icons/mob/clothing/head/cardborg.dmi b/icons/mob/clothing/head/cardborg.dmi
new file mode 100644
index 00000000000..cf423f71beb
Binary files /dev/null and b/icons/mob/clothing/head/cardborg.dmi differ
diff --git a/icons/mob/clothing/species/grey/head.dmi b/icons/mob/clothing/species/grey/head.dmi
index 1f89a5425a3..0fa1f860ba1 100644
Binary files a/icons/mob/clothing/species/grey/head.dmi and b/icons/mob/clothing/species/grey/head.dmi differ
diff --git a/icons/mob/clothing/species/grey/head/cardborg.dmi b/icons/mob/clothing/species/grey/head/cardborg.dmi
new file mode 100644
index 00000000000..51fab634c28
Binary files /dev/null and b/icons/mob/clothing/species/grey/head/cardborg.dmi differ
diff --git a/icons/mob/clothing/species/vox/head/cardborg.dmi b/icons/mob/clothing/species/vox/head/cardborg.dmi
new file mode 100644
index 00000000000..d08dc4fe40f
Binary files /dev/null and b/icons/mob/clothing/species/vox/head/cardborg.dmi differ
diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi
index b6d7857a195..fa3f0e9e523 100644
Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ
diff --git a/icons/mob/clothing/suits/cardborg.dmi b/icons/mob/clothing/suits/cardborg.dmi
new file mode 100644
index 00000000000..df81dc275c7
Binary files /dev/null and b/icons/mob/clothing/suits/cardborg.dmi differ
diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi
index 2adfc53abe4..3103c01f8db 100644
Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ
diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi
index 60238309b40..badbcbd3b18 100644
Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 0bb2c5da8e4..f1a61147646 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/head/cardborg.dmi b/icons/obj/clothing/head/cardborg.dmi
new file mode 100644
index 00000000000..eeecd83a9c8
Binary files /dev/null and b/icons/obj/clothing/head/cardborg.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index dd7b86e0d1d..10791491d2f 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/suits/cardborg.dmi b/icons/obj/clothing/suits/cardborg.dmi
new file mode 100644
index 00000000000..40cff676f1e
Binary files /dev/null and b/icons/obj/clothing/suits/cardborg.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 1cdbe3bbc9a..d2b2b8a1e51 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1696,6 +1696,7 @@
#include "code\modules\clothing\spacesuits\void.dm"
#include "code\modules\clothing\suits\armor_suits.dm"
#include "code\modules\clothing\suits\bio.dm"
+#include "code\modules\clothing\suits\cardborg_suit.dm"
#include "code\modules\clothing\suits\hood.dm"
#include "code\modules\clothing\suits\job_suits.dm"
#include "code\modules\clothing\suits\labcoat.dm"