Skin Masquerade: Epidermal Applicator, Lifelike Quirk, and the Skinmonger Implant (#31185)

* adds the epidermal applicator, lifelike quirk, and skinmonger traitor implant

* lint

* lint

* attack chain fix

* more linty fixes

* more lint

* fix some buggy bugs, synthetic skinned body parts recolor to their host

* make emp on skinmonger work, fix a skinmonger bug

* make bruising / denting examine text not betray the masquerade

* burn away synthetic skin with acid

* comment / code structure / description tweaks

* i sell pharmaceuticals and pharmaceutical accessories

* code review comments

* oops

* god damn it

* god damn it (x2)

* Update code/modules/surgery/organs/augments_internal.dm

Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>

* lower syndi level for implant

* Update code/modules/research/designs/medical_designs.dm

Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com>
Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>

* Update code/game/objects/items/tools/epidermal_applicator.dm

Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com>
Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>

* Update code/modules/surgery/organs/organ_external.dm

Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com>
Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>

* Update code/modules/surgery/organs/organ_external.dm

Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com>
Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>

* tweaks for review

* Update code/__DEFINES/dcs/datum_signals.dm

Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>

---------

Signed-off-by: Pooble <90473506+poobsie@users.noreply.github.com>
Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
Co-authored-by: JimKil3 <47290811+JimKil3@users.noreply.github.com>
Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
This commit is contained in:
Pooble
2026-03-22 18:08:25 -04:00
committed by GitHub
parent 11486a2245
commit aaeb5fdf28
18 changed files with 679 additions and 8 deletions
@@ -1964,6 +1964,9 @@
if(status == "cybernetic")
I.robotize()
// Send signal that robotic limbs have been applied
SEND_SIGNAL(character, COMSIG_HUMAN_ROBOTIC_LIMBS_APPLIED)
character.dna.blood_type = b_type
// Wheelchair necessary?
@@ -36,6 +36,50 @@
trait_to_apply = TRAIT_GLUTTON
species_flags = QUIRK_MACHINE_INCOMPATIBLE
/datum/quirk/lifelike
name = "Lifelike"
desc = "Your prosthetic limbs have been fitted with a synthetic epidermis, making them appear natural. \
For IPCs, this covers all body parts, making them look human (except monitor-shaped heads). \
For all others, it covers prosthetic limbs."
cost = 4
/datum/quirk/lifelike/apply_quirk_effects(mob/living/carbon/human/target, character)
. = ..(target, character)
// Apply synthetic skin after robotic limbs are applied or the quirk doesn't work very well
RegisterSignal(target, COMSIG_HUMAN_ROBOTIC_LIMBS_APPLIED, PROC_REF(apply_synthetic_skin_on_signal))
/datum/quirk/lifelike/proc/apply_synthetic_skin_on_signal(mob/living/carbon/human/target)
SIGNAL_HANDLER // COMSIG_HUMAN_ROBOTIC_LIMBS_APPLIED
for(var/obj/item/organ/external/limb as anything in target.bodyparts)
if(!limb)
continue
// Skip monitor heads
if(limb.limb_name == "head" && limb.model)
var/datum/robolimb/R = GLOB.all_robolimbs[limb.model]
if(R && R.is_monitor)
continue
if(ismachineperson(target) || limb.is_robotic())
limb.has_synthetic_skin = TRUE
// Apply owner's skin color to synthetic skin
limb.synthetic_skin_colour = target.skin_colour
// Set real identity for head
if(limb.limb_name == "head")
limb.synthetic_skin_identity = target.dna.real_name
// Clear cached limb icon because otherwise it's sticky
limb.force_icon = null
// Force mob icon regeneration
limb.mob_icon = null
limb.compile_icon()
// Now rebuild appearance
target.update_body(rebuild_base = TRUE)
// Unregister the signal since we're done with it
UnregisterSignal(target, COMSIG_HUMAN_ROBOTIC_LIMBS_APPLIED)
/obj/item/storage/box/papersack/prepped_meal
name = "packed meal"
var/list/entree_options = list(