From 3fb538c11e7d5cd9ce9f24ee665717985d6ca71a Mon Sep 17 00:00:00 2001
From: MrGloopy <155857749+MrGloopy@users.noreply.github.com>
Date: Sun, 26 Apr 2026 19:05:02 +1000
Subject: [PATCH] Greyscale robotic tesh fish. I mean fix. (#5493)
## About The Pull Request
fixes https://github.com/Bubberstation/Bubberstation/issues/5489 by
creating wholly new limbs in order to get tesh clothing offsets
## Why It's Good For The Game
Bugfix good merge my eels
## Proof Of Testing
Screenshots/Videos
## Changelog
:cl:
fix: Greyscale robotic tesh limbs not having clothing offsets and custom
sprites.
add: New-Old sprites for the greyscale robotic tesh limbs to work.
/:cl:
---
.../icons/teshari_robotic_greyscale.dmi | Bin 0 -> 2127 bytes
.../modules/tesh_augments/code/limbs.dm | 31 +++++-
.../tesh_augments/code/robot_bodyparts.dm | 96 ++++++++++++++++++
.../datums/robotic_styles/robotic_styles.dm | 5 -
4 files changed, 124 insertions(+), 8 deletions(-)
create mode 100644 modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi
diff --git a/modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi b/modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..9c4732b33b580c1713d7fd91b5a6ea682c017060
GIT binary patch
literal 2127
zcmXw32{hFE7ay-pN|PrIG3E{R=tMjcWf@AOdWcDwEM=W)P=hhHQDonW7HaSxijXz?
zGL|qi5~D0*-%Vo+GlS90?~Q-&-E+S8o_jy{obTt{`#Cqp(%e*B?3fq`1QIv9Y-|Mr
zi5Tv@-MfSpL}PWDFvwb7LtbiXYWn$;Pp1#Y#t}WyA$&eRJ3E_Brwi*Jn-%heZ6dx_
z=GGv?xj}bfG8u@p^)+_Gx;#Yt_@ceNK%js(#MCaaaP`9x-E$`&k6o>B4Dx(`1k91T
zaAw%G88#Tf<(!f__2j6HclnQ{&&MNY@=_xyrBAd^CdW`j
z>>=-(_d%UgAE+pV&zPpgGR3`TV{%1<3ZX&rwbI3REnW{*m^n}puHS3VlgN9Rvp1mh=v=UqoRtCP=@ltCb}
z(yXLvfxlD85f?NAZ{IJe3RW9tx#TsX&9;UiR;PF`m?a)CBsWx3YRvGfvAT~Yntjf)?gq+~Y
z+zIKef^#WL_c#v<|2K=ynjOFnwxq8wRPvPR3;hLPd*zM|vXxT<^RKe-`X2>Nla^x@
zH7>TsDD0v{AuI4Rv{fMrX0$?#tD;em0~hOWnADec$TzoUhCe}YLA0Qa$-MRv3E}>Q
zmfT_w3B^J(vG^|qfCS?Uw1?!}7AuuTc$rVux2?Qw)+VpfhRt(N3d!(x|0){8tMitB
zabI@7WuF#iO8h{WKZRe1kAsMnfNw9%JkH^N1HfYUdeM&<*@fJ#kGKXy
zMEaVUU^G4y6=)Eb%pC7xR$c0nYdr#ZnLE`p>}Cu9)Y&~>y{=_~I=;X`72mA{)D0({
zSB!j?-tZF>RtPM`cYY~q3_IyhzeosI0!!l@{0^}~tkQYPY$q1L()dpI|6o9izuDS5
z{i5M<1y33q3Wui7x=Hr4vh&hXhY(b>pTkEnVfN!-pDtU|38K%a;3@mhtvgWdmeG>E
zTjU-kjRnZw(5Z%*R=BenjmpCtv(|OXL)D1;Uk%lqmHiI5!<#Hh%=stz)n##}<^H1o
z@)3r_mRGuAqJS36-C(>pt361@Hfx%8$eJ@-$hWV|@r21u+_74`-+rPiOVMCcafDVO
zsoVO@EF=C~LE!9ZSXaBX%dn>Q^M}fZHUUU#Las-Zhe5^GWp>TZ{rbQC0N}OP9z|^8
z-t!6y?YVb?+21ex65p5_;s*uc3>K{*14e8=>AQtu^Twu4Vd
z7s|t>?UqlFlK6FzuRN4dHgGxH(CGI<;X{@ff=}=l5O^cVuS52*P?U%icXKtBQ#Ubt
z{v+I-}S72;o{h
zbQd2UO;8#s{J_6xld?D-qwlo@E3-hZ3GN7p!K1^K0=Rc3YrM<#jj;aPe?KK1uL2+o
zh;jh3vg0~opI3lOYx}?xfa*r(I1tDFHrkcu<(hpw*ql9gJfyOM0KBP^opEUKZv^mxSQ`
zpC4IvhhWiI)6y`12OJX>!x^jD<>Z-~#tJOKEbAEL=;2*PwboL6yaBbW;2L}E6mWpb
z7zPw|%g1DTg|wB{AjI4S@EjK~7EFDo-P716C=j038P)I+PstSV+7Uq}#c4)lb_Z8L
z5!9;y?G$n}XP?MsmnCLdR6&QkZThv1$e5yTXE%nR&Dx$jMpvM2k$J2C-q)F-<=4;E
zdT+(uWi}vnAvSsK9-(62pbh6(MPS9=BB~zV2Cw~Wjgj%#WwCfp@2FkcUi(n}s6#}p
z`GJt>$;*i4zI{?Ox5VO-{+_6Vf?cXr)>8}VCTDtb&tMo&f;@6y+76em>z8AFJ=hj2
zgWKUreoF5ni%_8ipGaSCr`c5P>7Y{9C=F*)ob8*U
zb&=^T&N*^u($!09yMq%MxE3-^<9@h+>(Uhe(d*G51IC$ZN|VaCe+Ts5XvF#TpYvG=
z-h|S_q0E=A8rJU0jSHbP!a8bHq(S{NBxLWpuqfu%jlkOXkK!7n~pe12Laao&W#<
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/tesh_augments/code/limbs.dm b/modular_skyrat/modules/tesh_augments/code/limbs.dm
index 759d7b121e5..14e18ebd198 100644
--- a/modular_skyrat/modules/tesh_augments/code/limbs.dm
+++ b/modular_skyrat/modules/tesh_augments/code/limbs.dm
@@ -7,11 +7,21 @@ this goes into the augment preferences section. They do not use the appearance d
path = /obj/item/bodypart/head/robot/teshari
uses_robotic_styles = FALSE
+/datum/augment_item/limb/head/teshari_cyborg_greyscale
+ name = "Greyscale robotic Teshari head"
+ path = /obj/item/bodypart/head/robot/teshari_greyscale
+ uses_robotic_styles = FALSE
+
/datum/augment_item/limb/chest/teshari_cyborg
name = "Raptoral cybernetic chest"
path = /obj/item/bodypart/chest/robot/teshari
uses_robotic_styles = FALSE
+/datum/augment_item/limb/chest/teshari_cyborg_greyscale
+ name = "Greyscale robotic Teshari chest"
+ path = /obj/item/bodypart/chest/robot/teshari_greyscale
+ uses_robotic_styles = FALSE
+
/datum/augment_item/limb/l_arm/teshari_prosthetic
name = "Raptoral prosthetic left forelimb"
path = /obj/item/bodypart/arm/left/robot/teshari_surplus
@@ -23,15 +33,20 @@ this goes into the augment preferences section. They do not use the appearance d
path = /obj/item/bodypart/arm/left/robot/teshari
uses_robotic_styles = FALSE
+/datum/augment_item/limb/l_arm/teshari_cybernetic_greyscale
+ name = "Greyscale robotic Teshari left arm"
+ path = /obj/item/bodypart/arm/left/robot/teshari_greyscale
+ uses_robotic_styles = FALSE
+
/datum/augment_item/limb/r_arm/teshari_prosthetic
name = "Raptoral prototype right forelimb"
path = /obj/item/bodypart/arm/right/robot/teshari_surplus
cost = -1
uses_robotic_styles = FALSE
-/datum/augment_item/limb/r_arm/teshari_cybernetic
- name = "Raptoral cybernetic right forelimb"
- path = /obj/item/bodypart/arm/right/robot/teshari
+/datum/augment_item/limb/r_arm/teshari_cybernetic_greyscale
+ name = "Greyscale robotic Teshari right arm"
+ path = /obj/item/bodypart/arm/right/robot/teshari_greyscale
uses_robotic_styles = FALSE
/datum/augment_item/limb/l_leg/teshari_prosthetic
@@ -45,6 +60,11 @@ this goes into the augment preferences section. They do not use the appearance d
path = /obj/item/bodypart/leg/left/robot/teshari
uses_robotic_styles = FALSE
+/datum/augment_item/limb/l_leg/teshari_cybernetic_greyscale
+ name = "Greyscale robotic Teshari left leg"
+ path = /obj/item/bodypart/leg/left/robot/teshari_greyscale
+ uses_robotic_styles = FALSE
+
/datum/augment_item/limb/r_leg/teshari_prosthetic
name = "Raptoral prosthetic right hindlimb"
path = /obj/item/bodypart/leg/right/robot/teshari_surplus
@@ -55,3 +75,8 @@ this goes into the augment preferences section. They do not use the appearance d
name = "Raptoral cybernetic right hindlimb"
path = /obj/item/bodypart/leg/right/robot/teshari
uses_robotic_styles = FALSE
+
+/datum/augment_item/limb/r_leg/teshari_cybernetic_greyscale
+ name = "Greyscale robotic Teshari right leg"
+ path = /obj/item/bodypart/leg/right/robot/teshari_greyscale
+ uses_robotic_styles = FALSE
diff --git a/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm b/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm
index dc5b35bee2b..417a0c26b56 100644
--- a/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm
+++ b/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm
@@ -96,6 +96,102 @@
head_flags = HEAD_EYESPRITES
+
+
+//Teshari greyscale
+
+/obj/item/bodypart/arm/left/robot/teshari_greyscale
+ name = "cybernetic left raptoral forelimb"
+ desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case."
+ icon = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_static = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_greyscale = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
+ should_draw_greyscale = TRUE
+
+ unarmed_damage_low = TESHARI_PUNCH_LOW
+ unarmed_damage_high = TESHARI_PUNCH_HIGH
+
+ brute_modifier = 1
+ burn_modifier = 0.9
+
+/obj/item/bodypart/arm/right/robot/teshari_greyscale
+ name = "cybernetic right raptoral forelimb"
+ desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case."
+ icon_static = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_greyscale = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
+ should_draw_greyscale = TRUE
+
+ unarmed_damage_low = TESHARI_PUNCH_LOW
+ unarmed_damage_high = TESHARI_PUNCH_HIGH
+
+ brute_modifier = 1
+ burn_modifier = 0.9
+
+/obj/item/bodypart/leg/left/robot/teshari_greyscale
+ name = "cybernetic left raptoral hindlimb"
+ desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case."
+ icon_static = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_greyscale = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
+ should_draw_greyscale = TRUE
+
+ unarmed_damage_low = TESHARI_PUNCH_LOW
+ unarmed_damage_high = TESHARI_PUNCH_HIGH
+
+ brute_modifier = 1
+ burn_modifier = 0.9
+
+/obj/item/bodypart/leg/right/robot/teshari_greyscale
+ name = "cybernetic right raptoral hindlimb"
+ desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case."
+ icon_static = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_greyscale = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
+ should_draw_greyscale = TRUE
+
+ unarmed_damage_low = TESHARI_PUNCH_LOW
+ unarmed_damage_high = TESHARI_PUNCH_HIGH
+
+ brute_modifier = 1
+ burn_modifier = 0.9
+
+/obj/item/bodypart/chest/robot/teshari_greyscale
+ name = "cybernetic raptoral torso"
+ desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell, covered in a layer of membranous feathers."
+ icon_static = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_greyscale = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
+ should_draw_greyscale = TRUE
+
+ brute_modifier = 1
+ burn_modifier = 0.9
+
+ robotic_emp_paralyze_damage_percent_threshold = 0.5
+
+/obj/item/bodypart/head/robot/teshari_greyscale
+ name = "cybernetic raptoral head"
+ desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals. A layer of membranous feathers covers the stark metal."
+ icon_static = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ icon_greyscale = 'modular_skyrat/modules/bodyparts/icons/teshari_robotic_greyscale.dmi'
+ bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM
+ should_draw_greyscale = TRUE
+
+ unarmed_damage_low = TESHARI_PUNCH_LOW
+ unarmed_damage_high = TESHARI_PUNCH_HIGH
+
+ brute_modifier = 1
+ burn_modifier = 0.9
+
+ head_flags = HEAD_EYESPRITES
+
+
// teshari_ surplus
/obj/item/bodypart/arm/left/robot/teshari_surplus
diff --git a/modular_zubbers/code/modules/customization/datums/robotic_styles/robotic_styles.dm b/modular_zubbers/code/modules/customization/datums/robotic_styles/robotic_styles.dm
index 6b6aa4bc8c9..3ae117165b7 100644
--- a/modular_zubbers/code/modules/customization/datums/robotic_styles/robotic_styles.dm
+++ b/modular_zubbers/code/modules/customization/datums/robotic_styles/robotic_styles.dm
@@ -195,11 +195,6 @@ GLOBAL_LIST_EMPTY(robotic_styles_list)
icon = BODYPART_ICON_XENO
limb_id_override = /obj/item/bodypart/chest/mutant/xenohybrid::limb_id
-/datum/robotic_style/dimorphic/teshari
- name = "Teshari (Robotic)"
- icon = BODYPART_ICON_TESHARI
- limb_id_override = /obj/item/bodypart/chest/mutant/teshari::limb_id
-
// kept at the bottom for parity with other augment dropdowns
/datum/robotic_style/none
icon = 'icons/mob/augmentation/augments.dmi'