mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 09:42:29 +00:00
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  More can be made by researching gene engineering, including a medical variant 
This commit is contained in:
@@ -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" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -63696,6 +63696,7 @@
|
||||
name = "Genetics Requests Console";
|
||||
department = "Genetics"
|
||||
},
|
||||
/obj/item/flesh_shears,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/genetics)
|
||||
"vpt" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user