+m(HG&%?0
z_I*b!imPRlT}=BCK~>YD?_Cxkvf_jO*Eb3M;wamCi2XQs%Ox*Y%VlxZ;;It(uWe=q
z7H!@w*w_0Puj{t58B3!57-&H$V~2y7stN^7u_2rt=(_0f6k2w4wHNUaS{8YYWL222
z+7t^kq>$}iqhe+i+rFf{`yT}P@v)u
z;-*218;Nb-zhpMR&9LV~N1xwcZo7&|EfGp4cR!fwsii!I`bfLOGur0;b026nzQqA8
zK2VCyNsI&wQ|3l<+sp*hJtrRDyZUcsc2BBnLHg$pa1`H5CqAg!5f%F)W9udv}}tfaVQCHwoZ^?v`h?qtjM
zcHq{Nq9XXg11}R~`13R7PvpqxtJTI+?EaYE)pbY99ZWU8CLeN!HHMO#_MBbDiuY=S
z6Ps8=G@pdXVo$d!+o>V8s`BI_LWhMzBb+9Su;GNTYXB9RHcmrNA~q|Ju~lMl#z!
zC#yb`J|f#RekV$)rOP9@va>yEHye%*8Fc6GH4)%Q?L#@dM<@vlJ-9e5K~(%3L?u)7
zd@+DJELaC?+@^amEOloHE(sdO8}-h;c8;3;1-^d(DQ%y)I~eylSjXbWhK=%Z*rC*!
z-G+2WL1pfNDwZM2uk8=7$I6_oT^>VjWwFm<+8}ZJxD0mxfZj?Di?>d7|R5Z?RZJbyTFzMFP)^30E
zOE2AR5X&WWNC8sbpe|ASSe)Hf)&q|6HKSnJbvtj@p8kG1nD4cVb~5J+eFHOM_uM$x%kOcxAH#9cD?bl#0p-g*Y}>h0w8
z8LZx(E=|Ms^GTGe#WlQ-|85_mtF}F|7iP(5ZL4_uj3R1lpV@j#xXcZ!B}3U0&wTKl
zYc}r>&S6;}=Iuz}d-1*cH90-LR_W7Ywdg78;k0^YWn-fqkC5CX1xLC@i!Oe5?hZ7H
z43iX;ZcK9QyM7MENTO|V_|F7^^S5%vC3M=TJ*TW|ZNfBjsMN$H(W8q`Vk16(3DR6K
zOgWDhinHve)tGTVEusIdj#TXmt7J9GVir3a4E*rB0$)OK09UHx&D`&tCiXgQY-cz-
zhs3sbNr1+DQ(VQnHUitWFH>t45e$9cl(UG?7*&DdYP#Db`(s$MUe_{SXlf5u
zVvbQlB|#8hD@R4v&aN1VrKhD$tF2||=;+WZGx=ay
zs2)fy*EaiZu!Idre1XoR{T7wHr55Kd<6yU(aV91v9{pivW}ZtSBsvoV;@C(YwKT5o
z20G>bH|=tt{LhHdlgkzu*8vF7Zwvzqf;@O(?XJ~HPWjESysnFR6}<0|AuT^*I!ehy
z1g&u~UU|dmX=mcwfF7V52;tzGB1ia8sQiE5UHU)8-LUM>_wQHs%<@-)FVg`^FI8U@
I%NhIsKg=$BivR!s
literal 14100
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
O@bt;^$CXNEA^#1MejVHZ
From 787edfb2a7ba9b45da0f545b0241527a15ad4c20 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Sun, 1 Mar 2020 08:16:39 -0500
Subject: [PATCH 008/124] Update recipes_clothing.dm
---
.../crafting/recipes/recipes_clothing.dm | 42 ++-----------------
1 file changed, 3 insertions(+), 39 deletions(-)
diff --git a/code/datums/components/crafting/recipes/recipes_clothing.dm b/code/datums/components/crafting/recipes/recipes_clothing.dm
index 9bc3165121..7848295ea7 100644
--- a/code/datums/components/crafting/recipes/recipes_clothing.dm
+++ b/code/datums/components/crafting/recipes/recipes_clothing.dm
@@ -42,22 +42,12 @@
result = /obj/item/clothing/glasses/hud/security/sunglasses
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- blacklist = list(/obj/item/clothing/glasses/hud/security/prescription)
+ parts = list(obj/item/clothing/glasses/hud/security = 1)
reqs = list(/obj/item/clothing/glasses/hud/security = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/stack/cable_coil = 5)
category = CAT_CLOTHING
-/datum/crafting_recipe/hudsunsec_p
- name = "Security Prescription HUDsunglasses"
- result = /obj/item/clothing/glasses/hud/security/sunglasses/prescription
- time = 20
- tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- reqs = list(/obj/item/clothing/glasses/hud/security/prescription = 1,
- /obj/item/clothing/glasses/sunglasses = 1,
- /obj/item/stack/cable_coil = 5)
- category = CAT_CLOTHING
-
/datum/crafting_recipe/hudsunsecremoval
name = "Security HUD removal"
result = /obj/item/clothing/glasses/sunglasses
@@ -71,22 +61,12 @@
result = /obj/item/clothing/glasses/hud/health/sunglasses
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- blacklist = list(/obj/item/clothing/glasses/hud/health/prescription)
+ parts = list(obj/item/clothing/glasses/hud/health = 1)
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/stack/cable_coil = 5)
category = CAT_CLOTHING
-/datum/crafting_recipe/hudsunmed_p
- name = "Medical Prescription HUDsunglasses"
- result = /obj/item/clothing/glasses/hud/health/sunglasses/prescription
- time = 20
- tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- reqs = list(/obj/item/clothing/glasses/hud/health/prescription = 1,
- /obj/item/clothing/glasses/sunglasses = 1,
- /obj/item/stack/cable_coil = 5)
- category = CAT_CLOTHING
-
/datum/crafting_recipe/hudsunmedremoval
name = "Medical HUD removal"
result = /obj/item/clothing/glasses/sunglasses
@@ -118,21 +98,12 @@
result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
+ parts = list(obj/item/clothing/glasses/hud/diagnostic = 1)
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/stack/cable_coil = 5)
category = CAT_CLOTHING
-/datum/crafting_recipe/diagnostic_sunglasses_prescription
- name = "Diagnostic Prescription HUDsunglasses"
- result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses/prescription
- time = 20
- tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- reqs = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses/prescription = 1,
- /obj/item/clothing/glasses/sunglasses = 1,
- /obj/item/stack/cable_coil = 5)
- category = CAT_CLOTHING
-
/datum/crafting_recipe/diagnostic_singlasses_removal
name = "Diagnostic HUDsunglasses removal"
result = /obj/item/clothing/glasses/sunglasses
@@ -141,7 +112,6 @@
reqs = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses = 1)
category = CAT_CLOTHING
-
/* //Kevinz doesn't want it as a recipe for now, leaving it in if anything ever changes to let it in
/datum/crafting_recipe/stunglasses
name = "Stunglasses"
@@ -186,7 +156,6 @@
reqs = list(/obj/item/stack/sheet/durathread = 7,
/obj/item/stack/sheet/leather = 3)
time = 70
- always_availible = TRUE
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_toolbelt
@@ -195,7 +164,6 @@
reqs = list(/obj/item/stack/sheet/durathread = 5,
/obj/item/stack/sheet/leather = 2)
time = 30
- always_availible = TRUE
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_bandolier
@@ -204,7 +172,6 @@
reqs = list(/obj/item/stack/sheet/durathread = 6,
/obj/item/stack/sheet/leather = 2)
time = 50
- always_availible = TRUE
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_helmet
@@ -213,7 +180,6 @@
reqs = list(/obj/item/stack/sheet/durathread = 4,
/obj/item/stack/sheet/leather = 2)
time = 30
- always_availible = TRUE
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_vest
@@ -222,7 +188,6 @@
reqs = list(/obj/item/stack/sheet/durathread = 6,
/obj/item/stack/sheet/leather = 3)
time = 50
- always_availible = TRUE
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_wintercoat
@@ -239,5 +204,4 @@
reqs = list(/obj/item/clothing/suit/hooded/wintercoat = 1,
/obj/item/bedsheet/cosmos = 1)
time = 60
- always_availible = TRUE
category = CAT_CLOTHING
From 684b7714dbe0fec29d5c839a69841b4ce070dd14 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Sun, 1 Mar 2020 08:21:25 -0500
Subject: [PATCH 009/124] Update hud.dm
---
code/modules/clothing/glasses/hud.dm | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index fc5156bc45..c7bd4ef0d2 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -4,6 +4,16 @@
flags_1 = null //doesn't protect eyes because it's a monocle, duh
var/hud_type = null
+/obj/item/clothing/glasses/hud/CheckParts(list/parts_list)
+ . = ..()
+ if(vision_correction)
+ return
+ for(var/obj/item/clothing/glasses/G in parts_list)
+ if(G.vision_correction)
+ vision_correction = TRUE
+ name = "prescription [name]"
+ return
+
/obj/item/clothing/glasses/hud/equipped(mob/living/carbon/human/user, slot)
..()
if(hud_type && slot == SLOT_GLASSES)
From da48f95de7a83be124648aa0348696ba00485201 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Mon, 2 Mar 2020 00:11:54 -0500
Subject: [PATCH 010/124] Update hud.dm
---
code/modules/clothing/glasses/hud.dm | 5 -----
1 file changed, 5 deletions(-)
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index c7bd4ef0d2..c0505ea61e 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -103,11 +103,6 @@
flash_protect = 1
tint = 1
-/obj/item/clothing/glasses/hud/diagnostic/sunglasses/prescription
- name = "diagnostic HUDSunglasses"
- desc = "Sunglasses with a diagnostic HUD and a second layer of normal prescription glasses."
- vision_correction = 1
-
/obj/item/clothing/glasses/hud/diagnostic/prescription
name = "prescription diagnostic HUD"
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits. This one has a prescription lens."
From c6be46c6bdb3f344d2f13ad6f795487c8d1a574c Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Mon, 2 Mar 2020 00:22:46 -0500
Subject: [PATCH 011/124] Update recipes_clothing.dm
---
.../components/crafting/recipes/recipes_clothing.dm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/code/datums/components/crafting/recipes/recipes_clothing.dm b/code/datums/components/crafting/recipes/recipes_clothing.dm
index 7848295ea7..89cd27541b 100644
--- a/code/datums/components/crafting/recipes/recipes_clothing.dm
+++ b/code/datums/components/crafting/recipes/recipes_clothing.dm
@@ -42,7 +42,7 @@
result = /obj/item/clothing/glasses/hud/security/sunglasses
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- parts = list(obj/item/clothing/glasses/hud/security = 1)
+ parts = list(/obj/item/clothing/glasses/hud/security = 1)
reqs = list(/obj/item/clothing/glasses/hud/security = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/stack/cable_coil = 5)
@@ -61,9 +61,9 @@
result = /obj/item/clothing/glasses/hud/health/sunglasses
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- parts = list(obj/item/clothing/glasses/hud/health = 1)
- reqs = list(/obj/item/clothing/glasses/hud/health = 1,
+ parts = list(/obj/item/clothing/glasses/hud/health = 1)
/obj/item/clothing/glasses/sunglasses = 1,
+ reqs = list(/obj/item/clothing/glasses/hud/health = 1,
/obj/item/stack/cable_coil = 5)
category = CAT_CLOTHING
@@ -98,7 +98,7 @@
result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- parts = list(obj/item/clothing/glasses/hud/diagnostic = 1)
+ parts = list(/obj/item/clothing/glasses/hud/diagnostic = 1)
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/stack/cable_coil = 5)
From 9540c47adf6b5b81e3b4827169f8e9207759ea0a Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Mon, 2 Mar 2020 00:24:36 -0500
Subject: [PATCH 012/124] Update recipes_clothing.dm
---
code/datums/components/crafting/recipes/recipes_clothing.dm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/datums/components/crafting/recipes/recipes_clothing.dm b/code/datums/components/crafting/recipes/recipes_clothing.dm
index 89cd27541b..85d8dae78b 100644
--- a/code/datums/components/crafting/recipes/recipes_clothing.dm
+++ b/code/datums/components/crafting/recipes/recipes_clothing.dm
@@ -62,9 +62,9 @@
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
parts = list(/obj/item/clothing/glasses/hud/health = 1)
- /obj/item/clothing/glasses/sunglasses = 1,
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
- /obj/item/stack/cable_coil = 5)
+ /obj/item/clothing/glasses/sunglasses = 1,
+ /obj/item/stack/cable_coil = 5)
category = CAT_CLOTHING
/datum/crafting_recipe/hudsunmedremoval
From 9efdad1d6b980d4b6e237c360835649c1aebfff8 Mon Sep 17 00:00:00 2001
From: deathride58
Date: Tue, 3 Mar 2020 13:55:33 -0500
Subject: [PATCH 013/124] Initial commit - lays out the foundation for a more
robust limb icon override system. You're welcome.
---
code/__DEFINES/mobs.dm | 2 +
code/game/machinery/limbgrower.dm | 3 +-
.../mob/living/carbon/human/species.dm | 2 +-
.../carbon/human/species_types/bugmen.dm | 2 +-
.../carbon/human/species_types/furrypeople.dm | 4 +-
.../living/carbon/human/species_types/ipc.dm | 2 +-
code/modules/surgery/bodyparts/bodyparts.dm | 54 ++++++++-----------
7 files changed, 30 insertions(+), 39 deletions(-)
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index dc67de3150..c1686560d6 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -58,8 +58,10 @@
#define BODYPART_DISABLED_DAMAGE 1
#define BODYPART_DISABLED_PARALYSIS 2
+#define DEFAULT_BODYPART_ICON 'icons/mob/human_parts.dmi'
#define DEFAULT_BODYPART_ICON_ORGANIC 'icons/mob/human_parts_greyscale.dmi'
#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi'
+#define DEFAULT_BODYPART_ICON_CITADEL 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
#define MONKEY_BODYPART "monkey"
#define ALIEN_BODYPART "alien"
diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm
index 28afea817b..f77cf3adfb 100644
--- a/code/game/machinery/limbgrower.dm
+++ b/code/game/machinery/limbgrower.dm
@@ -138,7 +138,8 @@
limb = new buildpath(loc)
if(selected_category=="human" || selected_category=="lizard") //Species with greyscale parts should be included here
limb.icon = 'icons/mob/human_parts_greyscale.dmi'
- limb.should_draw_greyscale = TRUE
+ limb.base_bp_icon = DEFAULT_BODYPART_ICON_ORGANIC
+ limb.color_src = MUTCOLORS
else
limb.icon = 'icons/mob/human_parts.dmi'
// Set this limb up using the specias name and body zone
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index b1bc47ea4a..917317262c 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -104,7 +104,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/fixed_mut_color3 = ""
var/whitelisted = 0 //Is this species restricted to certain players?
var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both.
- var/should_draw_citadel = FALSE
+ var/icon_limbs //Overrides the icon used for the limbs of this species. Mainly for downstream, and also because hardcoded icons disgust me. Implemented and maintained as a favor in return for a downstream's implementation of synths.
///////////
// PROCS //
diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm
index e2e41330fb..6bd8a44e0a 100644
--- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm
@@ -13,7 +13,7 @@
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/insect
liked_food = MEAT | FRUIT
disliked_food = TOXIC
- should_draw_citadel = TRUE
+ icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
/datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H)
if(H)
diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
index ab86b2cc5d..608d71e2c5 100644
--- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
@@ -2,7 +2,7 @@
name = "Anthromorph"
id = "mammal"
default_color = "4B4B4B"
- should_draw_citadel = TRUE
+ icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BEAST
mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "deco_wings", "taur", "horns", "legs")
@@ -55,7 +55,7 @@
id = "xeno"
say_mod = "hisses"
default_color = "00FF00"
- should_draw_citadel = TRUE
+ icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
species_traits = list(MUTCOLORS,EYECOLOR,LIPS)
mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "mam_body_markings", "taur", "legs")
default_features = list("xenotail"="Xenomorph Tail","xenohead"="Standard","xenodorsal"="Standard", "mam_body_markings" = "Xeno","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None", "legs" = "Digitigrade")
diff --git a/code/modules/mob/living/carbon/human/species_types/ipc.dm b/code/modules/mob/living/carbon/human/species_types/ipc.dm
index add0e17c43..b7305a9228 100644
--- a/code/modules/mob/living/carbon/human/species_types/ipc.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ipc.dm
@@ -3,7 +3,7 @@
id = "ipc"
say_mod = "beeps"
default_color = "00FF00"
- should_draw_citadel = TRUE
+ icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
blacklisted = 0
sexes = 0
species_traits = list(MUTCOLORS,NOEYES,NOTRANSSTING)
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index c9affe92f9..b3d55f9af4 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -41,9 +41,9 @@
var/skin_tone = ""
var/body_gender = ""
var/species_id = ""
- var/should_draw_citadel = FALSE
+ var/color_src
+ var/base_bp_icon //Overrides the icon being used for this limb. This is mainly for downstreams, implemented and maintained as a favor in return for implementing synths. And also because should_draw_* for icon overrides was pretty messy. You're welcome.
var/should_draw_gender = FALSE
- var/should_draw_greyscale = FALSE
var/species_color = ""
var/mutation_color = ""
var/no_update = 0
@@ -283,9 +283,9 @@
if(change_icon_to_default)
if(status == BODYPART_ORGANIC)
- icon = DEFAULT_BODYPART_ICON_ORGANIC
+ icon = base_bp_icon ? base_bp_icon : DEFAULT_BODYPART_ICON_ORGANIC
else if(status == BODYPART_ROBOTIC)
- icon = DEFAULT_BODYPART_ICON_ROBOTIC
+ icon = base_bp_icon ? base_bp_icon : DEFAULT_BODYPART_ICON_ROBOTIC
if(owner)
owner.updatehealth()
@@ -313,7 +313,8 @@
species_id = "husk" //overrides species_id
dmg_overlay_type = "" //no damage overlay shown when husked
should_draw_gender = FALSE
- should_draw_greyscale = FALSE
+ color_src = FALSE
+ base_bp_icon = DEFAULT_BODYPART_ICON
no_update = TRUE
body_markings = "husk" // reeee
aux_marking = "husk"
@@ -323,11 +324,11 @@
if(!animal_origin)
var/mob/living/carbon/human/H = C
- should_draw_greyscale = FALSE
+ color_src = FALSE
var/datum/species/S = H.dna.species
+ base_bp_icon = S.icon_limbs ? S.icon_limbs : DEFAULT_BODYPART_ICON
species_id = S.limbs_id
- should_draw_citadel = S.should_draw_citadel // Citadel Addition
species_flags_list = H.dna.species.species_traits
//body marking memes
@@ -342,7 +343,7 @@
if(S.use_skintones)
skin_tone = H.skin_tone
- should_draw_greyscale = TRUE
+ base_bp_icon = (base_bp_icon == DEFAULT_BODYPART_ICON) ? DEFAULT_BODYPART_ICON_ORGANIC : base_bp_icon
else
skin_tone = ""
@@ -354,9 +355,12 @@
species_color = S.fixed_mut_color
else
species_color = H.dna.features["mcolor"]
- should_draw_greyscale = TRUE
+ base_bp_icon = (base_bp_icon == DEFAULT_BODYPART_ICON) ? DEFAULT_BODYPART_ICON_ORGANIC : base_bp_icon
else
species_color = ""
+
+ if(base_bp_icon != DEFAULT_BODYPART_ICON)
+ color_src = MUTCOLORS //TODO - Add color matrix support to base limbs
if("legs" in S.default_features)
if(body_zone == BODY_ZONE_L_LEG || body_zone == BODY_ZONE_R_LEG)
@@ -462,32 +466,16 @@
should_draw_gender = FALSE
if(is_organic_limb())
- if(should_draw_greyscale)
- limb.icon = 'icons/mob/human_parts_greyscale.dmi'
- if(should_draw_gender)
- limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
- else if(use_digitigrade)
+ limb.icon = base_bp_icon ? base_bp_icon : 'icons/mob/human_parts.dmi'
+ if(should_draw_gender)
+ limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
+ else if (use_digitigrade)
+ if(base_bp_icon == DEFAULT_BODYPART_ICON_ORGANIC) //Compatibility hack for the current iconset.
limb.icon_state = "[digitigrade_type]_[use_digitigrade]_[body_zone]"
else
- limb.icon_state = "[species_id]_[body_zone]"
+ limb.icon_state = "[species_id]_[digitigrade_type]_[use_digitigrade]_[body_zone]"
else
- limb.icon = 'icons/mob/human_parts.dmi'
- if(should_draw_gender)
- limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
- else if(use_digitigrade)
- limb.icon_state = "[species_id]_[digitigrade_type]_[use_digitigrade]_[body_zone]"
- else
- limb.icon_state = "[species_id]_[body_zone]"
-
- // Citadel Start
- if(should_draw_citadel)
- limb.icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
- if(should_draw_gender)
- limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
- else if(use_digitigrade)
- limb.icon_state = "[species_id]_[digitigrade_type]_[use_digitigrade]_[body_zone]"
- else
- limb.icon_state = "[species_id]_[body_zone]"
+ limb.icon_state = "[species_id]_[body_zone]"
// Body markings
if(!isnull(body_markings))
@@ -555,7 +543,7 @@
. += marking
return
- if(should_draw_greyscale)
+ if(color_src) //TODO - add color matrix support for base species limbs
var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone))
if(draw_color)
limb.color = "#[draw_color]"
From 560192c45aa862c2bc22c1f1c0b9c352b98a276b Mon Sep 17 00:00:00 2001
From: deathride58
Date: Tue, 3 Mar 2020 15:49:25 -0500
Subject: [PATCH 014/124] Does the thing - PORTS THE BEEPERS! also fixes a bug
where body markings dont render if their name doesnt match the iconstate
---
.../new_player/sprite_accessories/synthliz.dm | 114 ++++++++++++++++++
.../carbon/human/species_types/synthliz.dm | 51 ++++++++
code/modules/surgery/bodyparts/bodyparts.dm | 4 +-
config/game_options.txt | 1 +
.../icons/mob/mutant_bodyparts.dmi | Bin 7023 -> 8936 bytes
.../icons/mob/synthliz_antennas.dmi | Bin 0 -> 1534 bytes
.../icons/mob/synthliz_body_markings.dmi | Bin 0 -> 1567 bytes
modular_citadel/icons/mob/synthliz_snouts.dmi | Bin 0 -> 781 bytes
modular_citadel/icons/mob/synthliz_tails.dmi | Bin 0 -> 1888 bytes
tgstation.dme | 2 +
10 files changed, 170 insertions(+), 2 deletions(-)
create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
create mode 100644 code/modules/mob/living/carbon/human/species_types/synthliz.dm
create mode 100644 modular_citadel/icons/mob/synthliz_antennas.dmi
create mode 100644 modular_citadel/icons/mob/synthliz_body_markings.dmi
create mode 100644 modular_citadel/icons/mob/synthliz_snouts.dmi
create mode 100644 modular_citadel/icons/mob/synthliz_tails.dmi
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm b/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
new file mode 100644
index 0000000000..21ba17cf40
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
@@ -0,0 +1,114 @@
+//Synth snouts (This is the most important part)
+/datum/sprite_accessory/mam_snouts/synthliz/synthliz_basic
+ icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Snout"
+ icon_state = "synthliz_basic"
+
+/datum/sprite_accessory/mam_snouts/synthliz/synthliz_under
+ icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
+ color_src = MATRIXED
+ name = "Synthetic Lizard - Snout Under"
+ icon_state = "synthliz_under"
+
+/datum/sprite_accessory/mam_snouts/synthliz/synthliz_tert
+ icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
+ color_src = MATRIXED
+ name = "Synthetic Lizard - Snout Tertiary"
+ icon_state = "synthliz_tert"
+
+/datum/sprite_accessory/mam_snouts/synthliz/synthliz_tertunder
+ icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
+ color_src = MATRIXED
+ name = "Synthetic Lizard - Snout Tertiary Under"
+ icon_state = "synthliz_tertunder"
+
+//Synth body markings
+/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_scutes
+ icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
+ name = "Synthetic Lizard - Plates"
+ icon_state = "synthlizscutes"
+
+/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_pecs
+ icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
+ name = "Synthetic Lizard - Pecs"
+ icon_state = "synthlizpecs"
+
+/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_pecslight
+ icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
+ name = "Synthetic Lizard - Pecs Light"
+ icon_state = "synthlizpecslight"
+
+//Synth tails
+/datum/sprite_accessory/mam_tails/synthliz/synthliz_tail
+ icon = 'modular_citadel/icons/mob/synthliz_tails.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard"
+ icon_state = "synthliz"
+
+/datum/sprite_accessory/mam_tails_animated/synthliz/synthliz_tail
+ icon = 'modular_citadel/icons/mob/synthliz_tails.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard"
+ icon_state = "synthliz"
+
+//Synth Antennae
+/datum/sprite_accessory/antenna/synthliz/synthliz_none
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "None"
+ icon_state = "None"
+
+/datum/sprite_accessory/antenna/synthliz/synthliz_antennae
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Antennae"
+ icon_state = "synth_antennae"
+
+/datum/sprite_accessory/antenna/synthliz/synthliz_curled
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Curled"
+ icon_state = "synth_curled"
+
+/datum/sprite_accessory/antenna/synthliz/synthliz_thick
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Thick"
+ icon_state = "synth_thick"
+
+/datum/sprite_accessory/antenna/synthliz/synth_thicklight
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MATRIXED
+ name = "Synthetic Lizard - Thick Light"
+ icon_state = "synth_thicklight"
+
+/datum/sprite_accessory/antenna/synthliz/synth_short
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Short"
+ icon_state = "synth_short"
+
+/datum/sprite_accessory/antenna/synthliz/synth_sharp
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Sharp"
+ icon_state = "synth_sharp"
+
+/datum/sprite_accessory/antenna/synthliz/synth_sharplight
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MATRIXED
+ name = "Synthetic Lizard - Sharp Light"
+ icon_state = "synth_sharplight"
+
+/datum/sprite_accessory/antenna/synthliz/synth_horns
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MUTCOLORS
+ name = "Synthetic Lizard - Horns"
+ icon_state = "synth_horns"
+
+/datum/sprite_accessory/antenna/synthliz/synth_hornslight
+ icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
+ color_src = MATRIXED
+ name = "Synthetic Lizard - Horns Light"
+ icon_state = "synth_hornslight"
diff --git a/code/modules/mob/living/carbon/human/species_types/synthliz.dm b/code/modules/mob/living/carbon/human/species_types/synthliz.dm
new file mode 100644
index 0000000000..47bd3cdaf5
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/synthliz.dm
@@ -0,0 +1,51 @@
+/datum/species/synthliz
+ name = "Synthetic Lizardperson"
+ id = "synthliz"
+ icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
+ say_mod = "beeps"
+ default_color = "00FF00"
+ species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR)
+ inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
+ mutant_bodyparts = list("ipc_antenna","mam_tail", "mam_snouts","legs", "mam_body_markings")
+ default_features = list("ipc_antenna" = "Synthetic Lizard - Antennae","mam_tail" = "Synthetic Lizard", "mam_snouts" = "Synthetic Lizard - Snout", "legs" = "Digitigrade", "mam_body_markings" = "Synthetic Lizard - Plates")
+ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc
+ gib_types = list(/obj/effect/gibspawner/ipc, /obj/effect/gibspawner/ipc/bodypartless)
+ mutanttongue = /obj/item/organ/tongue/robot/ipc
+ //Just robo looking parts.
+ mutant_heart = /obj/item/organ/heart/ipc
+ mutantlungs = /obj/item/organ/lungs/ipc
+ mutantliver = /obj/item/organ/liver/ipc
+ mutantstomach = /obj/item/organ/stomach/ipc
+ mutanteyes = /obj/item/organ/eyes/ipc
+
+
+/datum/species/synthliz/qualifies_for_rank(rank, list/features)
+ return TRUE
+
+//I wag in death
+/datum/species/synthliz/spec_death(gibbed, mob/living/carbon/human/H)
+ if(H)
+ stop_wagging_tail(H)
+
+/datum/species/synthliz/spec_stun(mob/living/carbon/human/H,amount)
+ if(H)
+ stop_wagging_tail(H)
+ . = ..()
+
+/datum/species/synthliz/can_wag_tail(mob/living/carbon/human/H)
+ return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
+
+/datum/species/synthliz/is_wagging_tail(mob/living/carbon/human/H)
+ return ("mam_waggingtail" in mutant_bodyparts)
+
+/datum/species/synthliz/start_wagging_tail(mob/living/carbon/human/H)
+ if("mam_tail" in mutant_bodyparts)
+ mutant_bodyparts -= "mam_tail"
+ mutant_bodyparts |= "mam_waggingtail"
+ H.update_body()
+
+/datum/species/synthliz/stop_wagging_tail(mob/living/carbon/human/H)
+ if("mam_waggingtail" in mutant_bodyparts)
+ mutant_bodyparts -= "mam_waggingtail"
+ mutant_bodyparts |= "mam_tail"
+ H.update_body()
\ No newline at end of file
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index b3d55f9af4..76beea5082 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -375,8 +375,8 @@
if(Smark)
body_markings_icon = Smark.icon
if(H.dna.features["mam_body_markings"] != "None")
- body_markings = lowertext(H.dna.features["mam_body_markings"])
- aux_marking = lowertext(H.dna.features["mam_body_markings"])
+ body_markings = Smark.icon_state ? Smark.icon_state : lowertext(H.dna.features["mam_body_markings"])
+ aux_marking = Smark.icon_state ? Smark.icon_state : lowertext(H.dna.features["mam_body_markings"])
else
body_markings = "plain"
aux_marking = "plain"
diff --git a/config/game_options.txt b/config/game_options.txt
index b2b0ac0abd..26c55a0c43 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -421,6 +421,7 @@ ROUNDSTART_RACES human
## Races that are strictly worse than humans that could probably be turned on without balance concerns
ROUNDSTART_RACES lizard
+ROUNDSTART_RACES synthliz
#ROUNDSTART_RACES fly
#ROUNDSTART_RACES insect
ROUNDSTART_RACES plasmaman
diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi
index 8ff4a3ddb57bd498850bbdabcaea94bd2770e557..f2787db632fd8f57895738f3e4b5a734f3cd7647 100644
GIT binary patch
literal 8936
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
Sc#{6wl%cM%PPMjk^nU=fdvPBC
literal 7023
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
NuFhUgWQWVy{{iT5`s@Gz
literal 0
HcmV?d00001
diff --git a/modular_citadel/icons/mob/synthliz_body_markings.dmi b/modular_citadel/icons/mob/synthliz_body_markings.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..52f9027f03b113795fc8dd7e581af43244d769f9
GIT binary patch
literal 1567
zcmYjP3pCSv9RKZ-*P&EOv2&5sbwnhOl4dnF9Z9(2+%`(lqRlg}HRVxWA%+^l^%zMm
z$@`UiS@K-dydSk9(^~V|->}^|w|nmWo%1{2@9*<{obTuR`@}ogqm>lY6aWB9wiuKn
z05Hw1D<=g2(8l7bCC1dj&e^)Xy&VhzPz!)q0*OHl0NDWKOZ;xI2tb*{`2c_rv;r^=
zKr#R`KvHtr6J{cbz=9m@oq*Nsh?nFs5bo?6gt{K+8G!c-!V?JqgyytRsfO({?aUHXDiqp)Veef_!>hjsafdt1}@(byeVlJ<6=ARsp%rQ1C5pzPiix>~4f
z8m_>pDJ?&6;OZi&iS_tl$@9|1d8{Q&YERtK5h$$#0O@916w)~~hdap)C^S^Gx@b|q
z-F!1#Ov9dSG|sg<(y;RxK4Ks!T|@cPFEWkRNG-`Wz#j=TrmpA%L^bbp6_1)8%N^^n
zXBMy@Eb}Y1PMGj31bOD2;>;rlAGFx
zFOUy8ic(;%ug8Q}@`(5yer3AKICvdYB7ZGDuXduhtR+3;R)T5|@FCMyRq{A!&6e;<
zdXeJoPSq6T)s5wO{)_ta{%oyw!_GR`NHW8um7+OrU>cslQ*l3+3Kv)Fe0hhvvTTr9
z2lZt&(TBYUN3gz-n_Vt)-Ht!~`
zIbF8wv!K^$L~~|3nKAwe<#f$C=wz@^S1%~nDi-^N$&Q2mVF|$3xgf{ZJw8Lft`A=B
zz8vY9)JE2YMuo*Q(2)t(f|sU64b)enF15&%$_%=7{R(Psj}G3%Y4f2G`3{jO^z0sN
zRN_v-ImNb#FBX$z-CJ54REMRxhS7FO{6Ji0*7fd+?Cek3a}giYRGE`ll*Q1rE5+4`
z66o9VI$()(;ki7^E0xP>i!~yz)t^YzM|Q1C#di(ludJSBNy|5l>_Eu8XOj9yZ&R~E
zs(fzTN{Ddr8~w=h6Bh=nlbas*zueG^8Rm-6l_j^n`bFnUMN|+6GV?fQhfAAd>mFIi
z{hT4cY8tWO%O~Wi<^=%c(1?o)*Zibv$!-q`Zy0!yy()?>~AI|2$qVfcwUN#mrH9
zylXP};G0(>n|K7yt@^l?K&Y-G3f1YkRNM1PRMK#Y9PV3DjhW0_WO%0@>r8Zn4`yi=
zwDbooOLt2Rafsn@D`w|5_%+zxCXr1d;_}6=Ic#KMr^W@{WdF*x6D0p+(^EWQb~Fu*
z-cgPuX+DhA)gh`O%!
z*X>L3uPS3$V&4Z)a<1&^JmOGrirR#@_XbVmxub4)kr(N8yixo(f>h4fq))Ja%LwHn
zSPBk=r#vGQbbuu4e445~y6f5v{@j$f7qft1J;{Htp3)#d7^_c4_FA-#ei3;}6lNpP
z2uvZGN?L`GUP@a1H{x=je)5_UCiTGBO*GlE!hB}Hi9=LAW{f$Mm1R}dcF!epX%4?)
y_Fa;-4U@uv35gj3hW7vY0dgt-GlITvYXKbyTB>#i+}V9?E5p{>9`)jkN7Ub0p!}x*
literal 0
HcmV?d00001
diff --git a/modular_citadel/icons/mob/synthliz_snouts.dmi b/modular_citadel/icons/mob/synthliz_snouts.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..908ac583d09bbece754a410eb1a58389713cc185
GIT binary patch
literal 781
zcmV+o1M>WdP)