mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Advanced Plastic Surgery 2.0, It's rare now. (#78504)
## About The Pull Request A revival of #76508 which got closed due to it eating up genetics niche. This PR fixess that issue by seperating the surgery into two. the normal roundstart plastic surgery and advanced plastic surgery. both works identically with the one exception being that the advanced one allows the feature that the last PR tried to add. which is to allow surgery to mimic people in photographs. the regular one remains as-is. The disk containing the surgery can be found in a lot of places, a role-restricted item to doctors and roboticists for 1TC, as a rare maint loot and BEPIS technode reward ## Why It's Good For The Game Opportunity for more fun gimmicks, ammo for BB's and paranoia, staple of SS13 gameplay. This also retroactively buffs forensic scanners and records since it really only changes your name and voice. You can change your hair all you want but anything more than that is a trip to genetics. overall allows for more engaging gameplay while not detracting from genetics niche with how niche and rare it would appear in rounds. ## Changelog 🆑 add: Adds an advanced plastic surgery procedure, allowing you to imitate people in pictures. Simply hold a picture in your offhand of the person you wish to imitate as while conducting the surgery! Remember, it's not foolproof, it only changes your name and voice! adds: You can obtain the disk containing the afromentioned surgery. as a role-restricted item to doctors and roboticists for 1TC, as a rare maint loot and BEPIS technode reward /🆑 --------- Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This commit is contained in:
co-authored by
ATH1909
MrMelbert
parent
cf5360acd8
commit
65b3788bcb
@@ -347,6 +347,7 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items
|
||||
/obj/item/book/granter/crafting_recipe/dusting/laser_musket_prime = 1,
|
||||
/obj/item/book/granter/sign_language = 1,
|
||||
/obj/item/disk/nuclear/fake = 1,
|
||||
/obj/item/disk/surgery/advanced_plastic_surgery = 1,
|
||||
/obj/item/skillchip/brainwashing = 1,
|
||||
/obj/item/tattoo_kit = 1,
|
||||
/obj/item/folder/ancient_paperwork = 1,
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
var/list/mobs_seen = list()
|
||||
/// List of weakrefs pointing at dead mobs that appear in this photo
|
||||
var/list/dead_seen = list()
|
||||
/// List of strings of face-visible humans in this photo
|
||||
var/list/names_seen = list()
|
||||
var/caption
|
||||
var/icon/picture_image
|
||||
var/icon/picture_icon
|
||||
@@ -16,7 +18,7 @@
|
||||
///Was this image capable of seeing ghosts?
|
||||
var/see_ghosts = CAMERA_NO_GHOSTS
|
||||
|
||||
/datum/picture/New(name, desc, mobs_spotted, dead_spotted, image, icon, size_x, size_y, bp, caption_, autogenerate_icon, can_see_ghosts)
|
||||
/datum/picture/New(name, desc, mobs_spotted, dead_spotted, names, image, icon, size_x, size_y, bp, caption_, autogenerate_icon, can_see_ghosts)
|
||||
if(!isnull(name))
|
||||
picture_name = name
|
||||
if(!isnull(desc))
|
||||
@@ -27,6 +29,9 @@
|
||||
if(!isnull(dead_spotted))
|
||||
for(var/mob/seen as anything in dead_spotted)
|
||||
dead_seen += WEAKREF(seen)
|
||||
if(!isnull(names))
|
||||
for(var/seen in names)
|
||||
names_seen += seen
|
||||
if(!isnull(image))
|
||||
picture_image = image
|
||||
if(!isnull(icon))
|
||||
|
||||
@@ -188,6 +188,8 @@
|
||||
var/list/mobs = list()
|
||||
var/blueprints = FALSE
|
||||
var/clone_area = SSmapping.request_turf_block_reservation(size_x * 2 + 1, size_y * 2 + 1, 1)
|
||||
///list of human names taken on picture
|
||||
var/list/names = list()
|
||||
|
||||
var/width = size_x * 2 + 1
|
||||
var/height = size_y * 2 + 1
|
||||
@@ -218,8 +220,11 @@
|
||||
var/icon/get_icon = camera_get_icon(turfs, target_turf, psize_x, psize_y, clone_area, size_x, size_y, (size_x * 2 + 1), (size_y * 2 + 1))
|
||||
qdel(clone_area)
|
||||
get_icon.Blend("#000", ICON_UNDERLAY)
|
||||
for(var/mob/living/carbon/human/person in mobs)
|
||||
if(person.is_face_visible())
|
||||
names += "[person.name]"
|
||||
|
||||
var/datum/picture/picture = new("picture", desc.Join(" "), mobs_spotted, dead_spotted, get_icon, null, psize_x, psize_y, blueprints, can_see_ghosts = see_ghosts)
|
||||
var/datum/picture/picture = new("picture", desc.Join(" "), mobs_spotted, dead_spotted, names, get_icon, null, psize_x, psize_y, blueprints, can_see_ghosts = see_ghosts)
|
||||
after_picture(user, picture)
|
||||
SEND_SIGNAL(src, COMSIG_CAMERA_IMAGE_CAPTURED, target, user)
|
||||
blending = FALSE
|
||||
|
||||
@@ -1114,6 +1114,13 @@
|
||||
surgery = /datum/surgery/advanced/wing_reconstruction
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/advanced_plastic_surgery
|
||||
name = "Advanced Plastic Surgery"
|
||||
desc = "An advanced form of the plastic surgery, allowing oneself to remodel someone's face and voice based off a picture of someones face"
|
||||
surgery = /datum/surgery/plastic_surgery/advanced
|
||||
id = "surgery_advanced_plastic_surgery"
|
||||
research_icon_state = "surgery_head"
|
||||
|
||||
/datum/design/surgery/experimental_dissection
|
||||
name = "Experimental Dissection"
|
||||
desc = "An experimental surgical procedure that dissects bodies in exchange for research points at ancient R&D consoles."
|
||||
|
||||
@@ -2367,3 +2367,15 @@
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
hidden = TRUE
|
||||
experimental = TRUE
|
||||
|
||||
/datum/techweb_node/advanced_plastic_surgery
|
||||
id = "plastic_surgery"
|
||||
display_name = "Advanced Plastic Surgery"
|
||||
description = "A Procedure long lost due to licensing problems now once again available."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list(
|
||||
"surgery_advanced_plastic_surgery"
|
||||
)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
hidden = TRUE
|
||||
experimental = TRUE
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/// Disk containing info for doing advanced plastic surgery. Spawns in maint and available as a role-restricted item in traitor uplinks.
|
||||
/obj/item/disk/surgery/advanced_plastic_surgery
|
||||
name = "Advanced Plastic Surgery Disk"
|
||||
desc = "The disk provides instructions on how to do an Advanced Plastic Surgery, this surgery allows one-self to completely remake someone's face with that of another. Provided they have a picture of them in their offhand when reshaping the face. With the surgery long becoming obsolete with the rise of genetics technology. This item became an antique to many collectors, With only the cheaper and easier basic form of plastic surgery remaining in use in most places."
|
||||
surgeries = list(/datum/surgery/plastic_surgery/advanced)
|
||||
|
||||
/datum/surgery/plastic_surgery
|
||||
name = "Plastic surgery"
|
||||
surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB | SURGERY_MORBID_CURIOSITY
|
||||
@@ -9,6 +15,41 @@
|
||||
/datum/surgery_step/close,
|
||||
)
|
||||
|
||||
/datum/surgery/plastic_surgery/advanced
|
||||
name = "advanced plastic surgery"
|
||||
steps = list(
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/insert_plastic,
|
||||
/datum/surgery_step/reshape_face,
|
||||
/datum/surgery_step/close,
|
||||
)
|
||||
|
||||
//Insert plastic step, It ain't called plastic surgery for nothing! :)
|
||||
/datum/surgery_step/insert_plastic
|
||||
name = "insert plastic (plastic)"
|
||||
implements = list(
|
||||
/obj/item/stack/sheet/plastic = 100,
|
||||
/obj/item/stack/sheet/meat = 100)
|
||||
time = 3.2 SECONDS
|
||||
preop_sound = 'sound/effects/blobattack.ogg'
|
||||
success_sound = 'sound/effects/attackblob.ogg'
|
||||
failure_sound = 'sound/effects/blobattack.ogg'
|
||||
|
||||
/datum/surgery_step/insert_plastic/preop(mob/user, mob/living/target, target_zone, obj/item/stack/tool, datum/surgery/surgery)
|
||||
display_results(
|
||||
user,
|
||||
target,
|
||||
span_notice("You begin to insert [tool] into the incision in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to insert [tool] into the incision in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to insert [tool] into the incision in [target]'s [parse_zone(target_zone)]."),
|
||||
)
|
||||
display_pain(target, "You feel something inserting just below the skin in your [parse_zone(target_zone)].")
|
||||
|
||||
/datum/surgery_step/insert_plastic/success(mob/user, mob/living/target, target_zone, obj/item/stack/tool, datum/surgery/surgery, default_display_results)
|
||||
. = ..()
|
||||
tool.use(1)
|
||||
|
||||
//reshape_face
|
||||
/datum/surgery_step/reshape_face
|
||||
name = "reshape face (scalpel)"
|
||||
@@ -43,8 +84,15 @@
|
||||
else
|
||||
var/list/names = list()
|
||||
if(!isabductor(user))
|
||||
for(var/i in 1 to 10)
|
||||
names += target.dna.species.random_name(target.gender, TRUE)
|
||||
var/obj/item/offhand = user.get_inactive_held_item()
|
||||
if(istype(offhand, /obj/item/photo) && istype(surgery, /datum/surgery/plastic_surgery/advanced))
|
||||
var/obj/item/photo/disguises = offhand
|
||||
for(var/namelist as anything in disguises.picture?.names_seen)
|
||||
names += namelist
|
||||
else
|
||||
user.visible_message(span_warning("You have no picture to base the appearance on, reverting to random appearances."))
|
||||
for(var/i in 1 to 10)
|
||||
names += target.dna.species.random_name(target.gender, TRUE)
|
||||
else
|
||||
for(var/_i in 1 to 9)
|
||||
names += "Subject [target.gender == MALE ? "i" : "o"]-[pick("a", "b", "c", "d", "e")]-[rand(10000, 99999)]"
|
||||
|
||||
@@ -173,6 +173,16 @@
|
||||
cost = 5
|
||||
surplus = 50
|
||||
|
||||
/datum/uplink_item/role_restricted/advanced_plastic_surgery
|
||||
name = "Advanced Plastic Surgery Program"
|
||||
desc = "A bootleg copy of an collector item, this disk contains the procedure to perform advanced plastic surgery, allowing you to model someone's face and voice based on a picture taken by a camera on your offhand. \
|
||||
All changes are superficial and does not change ones genetic makeup. \
|
||||
Insert into an Operating Console to enable the procedure."
|
||||
item = /obj/item/disk/surgery/brainwashing
|
||||
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_ROBOTICIST)
|
||||
cost = 1
|
||||
surplus = 50
|
||||
|
||||
/datum/uplink_item/role_restricted/springlock_module
|
||||
name = "Heavily Modified Springlock MODsuit Module"
|
||||
desc = "A module that spans the entire size of the MOD unit, sitting under the outer shell. \
|
||||
|
||||
Reference in New Issue
Block a user