diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index c68a2d0ca6a..38543abc5a8 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -10,6 +10,66 @@
////////// Usable Items //////////
//////////////////////////////////
+/obj/item/device/fluff/tattoo_gun // Generic tattoo gun, make subtypes for different folks
+ name = "dispoable tattoo pen"
+ desc = "A cheap plastic tattoo application pen."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "tatgun"
+ force = 0
+ throwforce = 0
+ w_class = 1.0
+ var/used = 0
+ var/tattoo_name = "tiger stripe tattoo" // Tat name for visible messages
+ var/tattoo_icon = "Tiger Body" // body_accessory.dmi, new icons defined in sprite_accessories.dm
+ var/tattoo_r = 1 // RGB values for the body markings
+ var/tattoo_g = 1
+ var/tattoo_b = 1
+
+/obj/item/device/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob)
+ if(user.a_intent == "harm")
+ user.visible_message("[user] stabs [M] with the [src]!", "You stab [M] with the [src]!")
+ M << "[user] stabs you with the [src]!
You feel a tiny prick!"
+ return
+
+ if(used)
+ user << "The [src] is out of ink."
+ return
+
+ if(!istype(M, /mob/living/carbon/human))
+ user << "You don't think tattooing [M] is the best idea."
+ return
+
+ var/mob/living/carbon/human/target = M
+
+ if(istype(target.species, /datum/species/machine))
+ user << "[target] has no skin, how do you expect to tattoo them?"
+ return
+
+ if(target.m_style != "None")
+ user << "[target] already has body markings, any more would look silly!"
+ return
+
+ if(target == user)
+ user << "You use the [src] to apply a [tattoo_name] to yourself!"
+
+ else
+ user.visible_message("[user] begins to apply a [tattoo_name] [target] with the [src].", "You begin to tattoo [target] with the [src]!")
+ if(!do_after(user,30, target = M))
+ return
+ user.visible_message("[user] finishes the [tattoo_name] on [target].", "You finish the [tattoo_name].")
+
+ if(!used) // No exploiting do_after to tattoo multiple folks.
+ target.m_style = tattoo_icon
+ target.r_markings = tattoo_r
+ target.g_markings = tattoo_g
+ target.b_markings = tattoo_b
+
+ target.update_markings()
+
+ playsound(src.loc, 'sound/items/Welder2.ogg', 20, 1)
+ icon_state = "tatgun_used"
+ used = 1
+
/obj/item/weapon/claymore/fluff // MrBarrelrolll: Maximus Greenwood
name = "Greenwood's Blade"
desc = "A replica claymore with strange markings scratched into the blade."
@@ -185,17 +245,6 @@
icon_state = "stobarico_jacket"
//////////// Uniforms ////////////
-/obj/item/clothing/under/fluff/WornTurtleneck // DaveTheHeadcrab: Makkota Atani
- name = "Worn Combat Turtleneck"
- desc = "A worn out turtleneck with 'J.C. NSS Regnare' stitched on the inside of the collar. The tag reveals it to be 99% NanoCotton."
- icon= 'icons/obj/clothing/uniforms.dmi'
- icon_state = "syndicate"
- item_state = "bl_suit"
- item_color = "syndicate"
- has_sensor = 1 // Jumpsuit has no sensor by default
- displays_id = 0 // Purely astetic, the ID does not show up on the player sprite when equipped. Examining still reveals it.
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Standard Security jumpsuit stats
-
/obj/item/clothing/under/fluff/kharshai // Kharshai: Athena Castile
name = "Castile formal outfit"
desc = "A white and gold formal uniform, accompanied by a small pin with the numbers '004' etched upon it."
@@ -364,4 +413,26 @@
name = "combat pants"
desc = "Medium style tactical pants, for the fashion aware combat units out there."
icon_state = "chaps"
- item_color = "combat_pants"
\ No newline at end of file
+ item_color = "combat_pants"
+
+/obj/item/clothing/suit/jacket/fluff/windbreaker // DaveTheHeadcrab: Elliot Campbell
+ name = "nylon windbreaker"
+ desc = "A cheap nylon windbreaker, according to the tag it was manufactured in New Chiba, Earth.
The color reminds you of a television tuned to a dead channel."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "elliot_windbreaker"
+ item_state = "elliot_windbreaker"
+ adjust_flavour = "unzip"
+
+/obj/item/clothing/ears/earring/fluff/industrial_piercing
+ name = "industrial piercing and stud earring"
+ desc = "A set of ear piercings containing an industrial rod and a small stud. They appear to be made out of some form of non-magnetic metal."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "elliot_earring"
+
+/obj/item/device/fluff/tattoo_gun/cybernetic_tat
+ desc = "A cheap plastic tattoo application pen.
This one seems to have light blue ink."
+ tattoo_name = "circuitry tattoo"
+ tattoo_icon = "Elliot Circuit Tattoo"
+ tattoo_r = 100
+ tattoo_g = 150
+ tattoo_b = 255
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index b9230c9821f..07fe43107f9 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -389,14 +389,13 @@ var/global/list/damage_icon_parts = list()
//base icons
var/icon/markings_standing = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s")
- if(m_style && (src.species.bodyflags & HAS_MARKINGS))
+ if(m_style && m_style != "None")
var/datum/sprite_accessory/marking_style = marking_styles_list[m_style]
- if(marking_style && marking_style.species_allowed)
- if(src.species.name in marking_style.species_allowed)
- var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
- if(marking_style.do_colouration)
- markings_s.Blend(rgb(r_markings, g_markings, b_markings), ICON_ADD)
- markings_standing.Blend(markings_s, ICON_OVERLAY)
+ if(marking_style)
+ var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
+ if(marking_style.do_colouration)
+ markings_s.Blend(rgb(r_markings, g_markings, b_markings), ICON_ADD)
+ markings_standing.Blend(markings_s, ICON_OVERLAY)
else
//warning("Invalid m_style for [species.name]: [m_style]")
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index 72d35aef201..60b28f69213 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -1809,4 +1809,13 @@
/datum/sprite_accessory/body_markings/tigerheadface_una
name = "Unathi Tiger Body + Head + Face"
species_allowed = list("Unathi")
- icon_state = "markings_tigerheadface_una"
\ No newline at end of file
+ icon_state = "markings_tigerheadface_una"
+
+/datum/sprite_accessory/body_markings/tattoo // Tattoos applied post-round startup with tattoo guns in item_defines.dm
+ name = "base tattoo"
+ species_allowed = list()
+ icon_state = "accessory_none"
+
+/datum/sprite_accessory/body_markings/tattoo/elliot
+ name = "Elliot Circuit Tattoo"
+ icon_state = "campbell_tattoo"
\ No newline at end of file
diff --git a/icons/mob/body_accessory.dmi b/icons/mob/body_accessory.dmi
index 92068cd07ac..1794a4782a3 100644
Binary files a/icons/mob/body_accessory.dmi and b/icons/mob/body_accessory.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 58bfe9fb07e..0b7a5921355 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi
index 5c077de67c9..ffb0f2097f7 100644
Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ