Flesh Reshaper | New Genetics Visual Organ Restyler (#89314)

## About The Pull Request
Adds the flesh reshaper! 

https://github.com/user-attachments/assets/ccb79944-5e61-425c-9c9e-b1463ce56013

(The TGUI doesn't render but it's just a dropdown with valid features)

It let's you right click any human mob with visual features to change
them into a different cosmetic variant (within the same pool).

One spawns roundstart in the genetics lab

![image](https://github.com/user-attachments/assets/a578a914-0100-4a97-9ef6-7f3b82bcd115)

More can be made by researching gene engineering, including a medical
variant

![image](https://github.com/user-attachments/assets/74409f04-3162-419c-b8a9-26aa15f84b5f)
This commit is contained in:
Time-Green
2025-02-13 09:46:03 +01:00
committed by GitHub
parent 17a251af3b
commit 9d69f97267
20 changed files with 101 additions and 11 deletions

View File

@@ -9380,6 +9380,9 @@
/obj/machinery/firealarm/directional/north,
/obj/machinery/camera/autoname/directional/north,
/obj/structure/cable,
/obj/item/flesh_shears{
pixel_x = -5
},
/turf/open/floor/iron/dark,
/area/station/science/genetics)
"dtO" = (

View File

@@ -33068,6 +33068,7 @@
dir = 4
},
/obj/machinery/light/directional/east,
/obj/item/flesh_shears,
/turf/open/floor/iron/dark,
/area/station/science/genetics)
"ijm" = (

View File

@@ -5148,9 +5148,9 @@
/obj/item/reagent_containers/spray/cleaner{
pixel_x = 2
},
/obj/item/radio/headset/headset_medsci{
pixel_x = -7;
pixel_y = 6
/obj/item/flesh_shears{
pixel_y = 5;
pixel_x = -10
},
/turf/open/floor/iron/dark,
/area/station/science/genetics)
@@ -31214,6 +31214,10 @@
pixel_x = 2
},
/obj/machinery/firealarm/directional/south,
/obj/item/radio/headset/headset_medsci{
pixel_x = 16;
pixel_y = 8
},
/turf/open/floor/iron/dark,
/area/station/science/genetics)
"iTP" = (

View File

@@ -64308,6 +64308,9 @@
pixel_x = -9
},
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/item/flesh_shears{
pixel_x = 15
},
/turf/open/floor/iron/dark,
/area/station/science/genetics)
"wBs" = (

View File

@@ -141023,9 +141023,12 @@
"uXN" = (
/obj/structure/table/reinforced/rglass,
/obj/item/storage/box/monkeycubes{
pixel_y = 0;
pixel_y = 10;
pixel_x = 0
},
/obj/item/flesh_shears{
pixel_y = -5
},
/turf/open/floor/iron/dark/textured,
/area/station/science/genetics)
"uXR" = (

View File

@@ -63696,6 +63696,7 @@
name = "Genetics Requests Console";
department = "Genetics"
},
/obj/item/flesh_shears,
/turf/open/floor/iron/white,
/area/station/science/genetics)
"vpt" = (

View File

@@ -19270,6 +19270,10 @@
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/item/flesh_shears{
pixel_y = 10;
pixel_x = -5
},
/turf/open/floor/iron/white/textured,
/area/station/science/genetics)
"gOG" = (

View File

@@ -830,12 +830,13 @@ GLOBAL_LIST_INIT(layers_to_offset, list(
#define ALL_EXTERNAL_OVERLAYS EXTERNAL_FRONT | EXTERNAL_ADJACENT | EXTERNAL_BEHIND
// Bitflags for external organs restylability
#define EXTERNAL_RESTYLE_ALL ALL
/// This organ allows restyle through plant restyling (like secateurs)
#define EXTERNAL_RESTYLE_PLANT (1 << 1)
#define EXTERNAL_RESTYLE_PLANT (1 << 0)
/// This organ allows restyling with flesh restyling stuff (surgery or something idk)
#define EXTERNAL_RESTYLE_FLESH (1 << 2)
#define EXTERNAL_RESTYLE_FLESH (1 << 1)
/// This organ allows restyling with enamel restyling (like a fucking file or something?). It's for horns and shit
#define EXTERNAL_RESTYLE_ENAMEL (1 << 3)
#define EXTERNAL_RESTYLE_ENAMEL (1 << 2)
//Mob Overlay Index Shortcuts for alternate_worn_layer, layers
//Because I *KNOW* somebody will think layer+1 means "above"

View File

@@ -172,6 +172,7 @@
dna_block = DNA_FISH_TAIL_BLOCK
wag_flags = NONE
organ_traits = list(TRAIT_FLOPPING)
restyle_flags = EXTERNAL_RESTYLE_FLESH
// Fishlike reagents, you could serve it raw like fish
food_reagents = list(

View File

@@ -264,6 +264,7 @@
/obj/item/tank/internals/emergency_oxygen,
/obj/item/wrench/medical,
/obj/item/knife/ritual,
/obj/item/flesh_shears,
))
/obj/item/storage/belt/medical/paramedic

View File

@@ -230,11 +230,12 @@
hitsound = 'sound/items/weapons/bladeslice.ogg'
///Catch right clicks so we can stylize!
/obj/item/secateurs/pre_attack_secondary(atom/target, mob/living/user, params)
/obj/item/secateurs/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
if(user.combat_mode)
return ..()
restyle(target, user)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
return NONE
restyle(interacting_with, user)
return ITEM_INTERACT_SUCCESS
///Send a signal to whatever we clicked and ask them if they wanna be PLANT RESTYLED YEAAAAAAAH
/obj/item/secateurs/proc/restyle(atom/target, mob/living/user)

View File

@@ -381,6 +381,24 @@
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design/flesh_reshapers
name = "Flesh Reshaper"
desc = "Reshape those external features!"
id = "fleshreshaper"
build_path = /obj/item/flesh_shears
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1, /datum/material/silver =SHEET_MATERIAL_AMOUNT * 1)
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/flesh_reshapers/medical // slight variant with different color palette
name = "Medical Flesh Reshaper"
id = "fleshreshapermed"
build_path = /obj/item/flesh_shears/medical
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/////////////////////////////////////////
//////////Cybernetic Implants////////////
/////////////////////////////////////////

View File

@@ -58,6 +58,8 @@
"dna_disk",
"dnainfuser",
"mod_dna_lock",
"fleshreshaper",
"fleshreshapermed",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
discount_experiments = list(/datum/experiment/scanning/people/mutant = TECHWEB_TIER_4_POINTS)

View File

@@ -81,3 +81,47 @@
)
simple_change_sprite(restyles[new_style]) //turn name to type and pass it on
/// Allows for the restyling of visual organs to other styles within the same pool (if not forbidden)
/obj/item/flesh_shears
name = "flesh reshaper"
desc = "Uses shearing action and growth inducers to reshape your coworkers external features!"
icon_state = "flesh_shaper"
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_angle = 90
inhand_icon_state = "flesh_shaper"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
force = 5
w_class = WEIGHT_CLASS_SMALL
throwforce = 10
attack_verb_continuous = list("shears", "snips")
attack_verb_simple = list("shear", "snip")
sharpness = SHARP_EDGED
obj_flags = CONDUCTS_ELECTRICITY
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*1, /datum/material/silver=SHEET_MATERIAL_AMOUNT*1)
/// How long does it take, after selecting a new style, for the new style to be applied?
var/restyle_speed = 2 SECONDS
///Catch right clicks so we can stylize!
/obj/item/flesh_shears/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(user.combat_mode)
return NONE
restyle(interacting_with, user)
return ITEM_INTERACT_SUCCESS
///Send a signal to whatever we clicked and start RESTYLING
/obj/item/flesh_shears/proc/restyle(atom/target, mob/living/user)
SEND_SIGNAL(target, COMSIG_ATOM_RESTYLE, user, target, user.zone_selected, EXTERNAL_RESTYLE_ALL, restyle_speed)
/obj/item/flesh_shears/medical
icon_state = "flesh_shaper_med"
inhand_icon_state = "flesh_shaper_med"

View File

@@ -157,6 +157,7 @@
preference = "feature_human_tail"
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/cat
restyle_flags = EXTERNAL_RESTYLE_FLESH
wag_flags = WAG_ABLE

View File

@@ -10,6 +10,7 @@
dna_block = DNA_MOTH_WINGS_BLOCK
bodypart_overlay = /datum/bodypart_overlay/mutant/wings/moth
restyle_flags = EXTERNAL_RESTYLE_FLESH
///Are we burned?
var/burnt = FALSE

View File

@@ -154,6 +154,7 @@
damage_multiplier = 2
preference = "feature_human_ears"
restyle_flags = EXTERNAL_RESTYLE_FLESH
dna_block = DNA_EARS_BLOCK

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 11 KiB