mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
adds preferences to transhumanist (#82435)
## About The Pull Request You may remember this, that's because I accidentally deleted it before while trying to change things. Anyways! Adds drop-down selections and new options to transhumanist. also fixes a minor typo Previously, you could choose your replaced limb by taking prosthetic limb, setting what you want changed, and then switching to transhumanist, since they used the same preference previously. ## Why It's Good For The Game Transhumanist felt strange because it was hypothetically a voluntary operation, but the augmentation clinic just spun the wheel on what you got replaced. From a role-playing perspective, being unable to choose is uninteresting and confusing. Also it always says your limb being was being replaced with a robotic arm and that annoyed me. Now that you are able to select your replacement part, I've added two new options, the robotic voice box, good for a more prominent change then a limb that will be hidden for most of a round, and flashlight eyes, for when you are truly committed to being rushed directly to robotics seeing the bright future ahead of humanity! ## Changelog 🆑 add: Transhumanist now allows you to select your augmentation add: Transhumanist can now provide a robotic voice box, or flashlight eyes spellcheck: Transhumanist's roundstart text has been re-written to not be wrong /🆑 --------- Co-authored-by: san7890 <the@san7890.com>
This commit is contained in:
co-authored by
san7890
parent
b602a8138c
commit
da3294d896
@@ -18,13 +18,17 @@ GLOBAL_LIST_INIT(limb_choice, list(
|
||||
"Right Leg" = /obj/item/bodypart/leg/right/robot/surplus,
|
||||
))
|
||||
|
||||
|
||||
///Transhumanist quirk
|
||||
GLOBAL_LIST_INIT(limb_choice_transhuman, list(
|
||||
GLOBAL_LIST_INIT(part_choice_transhuman, list(
|
||||
"Left Arm" = /obj/item/bodypart/arm/left/robot,
|
||||
"Right Arm" = /obj/item/bodypart/arm/right/robot,
|
||||
"Left Leg" = /obj/item/bodypart/leg/left/robot,
|
||||
"Right Leg" = /obj/item/bodypart/leg/right/robot,
|
||||
"Robotic Voice Box" = /obj/item/organ/internal/tongue/robot,
|
||||
"Flashlights for Eyes" = /obj/item/organ/internal/eyes/robotic/flashlight,
|
||||
))
|
||||
|
||||
///Hemiplegic Quirk
|
||||
GLOBAL_LIST_INIT(side_choice_hemiplegic, list(
|
||||
"Left Side" = /datum/brain_trauma/severe/paralysis/hemiplegic/left,
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/datum/quirk/transhumanist
|
||||
name = "Transhumanist"
|
||||
desc = "You see silicon life as the perfect lifeform and despise organic flesh. You are happier around silicons, but get frustrated when around organics. You seek to replace your fleshy limbs with their silicon counterparts. You start with a robotic limb."
|
||||
desc = "You see silicon life as the perfect lifeform and despise organic flesh. You are happier around silicons, but get frustrated when around organics. You seek to replace your failing flesh with perfect silicon. You start with a robotic augmentation."
|
||||
icon = FA_ICON_ROBOT
|
||||
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES|QUIRK_MOODLET_BASED
|
||||
value = 0
|
||||
@@ -29,7 +29,8 @@
|
||||
/obj/item/toy/figure/borg,
|
||||
)
|
||||
var/slot_string
|
||||
var/obj/item/bodypart/old_limb
|
||||
var/obj/item/old_part
|
||||
|
||||
|
||||
/datum/quirk/transhumanist/add(client/client_source)
|
||||
RegisterSignal(quirk_holder, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(calculate_bodypart_score))
|
||||
@@ -100,27 +101,59 @@
|
||||
if(-INFINITY to 0)
|
||||
quirk_holder.add_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART, /datum/mood_event/very_organic)
|
||||
|
||||
/datum/quirk_constant_data/transhumanist
|
||||
associated_typepath = /datum/quirk/transhumanist
|
||||
customization_options = list(/datum/preference/choiced/trans_prosthetic)
|
||||
|
||||
/datum/quirk/transhumanist/add_unique(client/client_source)
|
||||
var/limb_type = GLOB.limb_choice_transhuman[client_source?.prefs?.read_preference(/datum/preference/choiced/prosthetic)]
|
||||
if(isnull(limb_type)) //Client gone or they chose a random prosthetic
|
||||
limb_type = GLOB.limb_choice_transhuman[pick(GLOB.limb_choice_transhuman)]
|
||||
var/part_type = GLOB.part_choice_transhuman[client_source?.prefs?.read_preference(/datum/preference/choiced/trans_prosthetic)]
|
||||
if(isnull(part_type)) //Client gone or they chose a random part
|
||||
part_type = GLOB.part_choice_transhuman[pick(GLOB.part_choice_transhuman)]
|
||||
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
var/obj/item/bodypart/new_part = new limb_type()
|
||||
|
||||
slot_string = "[new_part.plaintext_zone]"
|
||||
old_limb = human_holder.return_and_replace_bodypart(new_part, special = TRUE)
|
||||
var/obj/item/new_part = new part_type()
|
||||
if(isbodypart(new_part))
|
||||
var/obj/item/bodypart/new_bodypart = new_part
|
||||
slot_string = new_bodypart.plaintext_zone
|
||||
old_part = human_holder.return_and_replace_bodypart(new_bodypart, special = TRUE)
|
||||
else if(isorgan(new_part))
|
||||
var/obj/item/organ/new_organ = new_part
|
||||
old_part = human_holder.get_organ_slot(new_organ.slot)
|
||||
if(new_organ.Insert(human_holder, special = TRUE))
|
||||
old_part.moveToNullspace()
|
||||
STOP_PROCESSING(SSobj, old_part)
|
||||
slot_string = new_organ.name
|
||||
|
||||
/datum/quirk/transhumanist/post_add()
|
||||
if(slot_string)
|
||||
to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a robot arm. You need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes."))
|
||||
if(!slot_string)
|
||||
return
|
||||
if(isbodypart(old_part))
|
||||
to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a robotic limb. You need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes."))
|
||||
else if (old_part.name == "eyes")
|
||||
to_chat(quirk_holder, span_boldannounce("You replaced your eyes with flashlights, not cameras. You can't see a thing!"))
|
||||
else if (isorgan(old_part))
|
||||
to_chat(quirk_holder, span_boldannounce("Your [slot_string] brings you one step closer to silicon perfection, but you feel you're not quite there yet."))
|
||||
|
||||
/datum/quirk/transhumanist/remove()
|
||||
if(old_limb)
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
human_holder.del_and_replace_bodypart(old_limb, special = TRUE)
|
||||
old_limb = null
|
||||
if(isnull(old_part))
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART)
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_PEOPLE)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
if(isbodypart(old_part))
|
||||
var/obj/item/bodypart/old_bodypart = old_part
|
||||
human_holder.del_and_replace_bodypart(old_bodypart, special = TRUE)
|
||||
old_bodypart = null
|
||||
else if(isorgan(old_part))
|
||||
var/obj/item/organ/old_organ = old_part
|
||||
old_part = human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
|
||||
old_organ.Insert(quirk_holder, special = TRUE)
|
||||
old_part.moveToNullspace()
|
||||
STOP_PROCESSING(SSobj, old_part)
|
||||
old_organ = null
|
||||
old_part = null
|
||||
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART)
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_PEOPLE)
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/preference/choiced/trans_prosthetic
|
||||
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
|
||||
savefile_key = "trans_prosthetic"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
|
||||
/datum/preference/choiced/trans_prosthetic/init_possible_values()
|
||||
return list("Random") + GLOB.part_choice_transhuman
|
||||
|
||||
/datum/preference/choiced/trans_prosthetic/is_accessible(datum/preferences/preferences)
|
||||
. = ..()
|
||||
if (!.)
|
||||
return FALSE
|
||||
|
||||
return "Transhumanist" in preferences.all_quirks
|
||||
|
||||
/datum/preference/choiced/trans_prosthetic/apply_to_human(mob/living/carbon/human/target, value)
|
||||
return
|
||||
@@ -3665,6 +3665,7 @@
|
||||
#include "code\modules\client\preferences\statpanel.dm"
|
||||
#include "code\modules\client\preferences\tgui.dm"
|
||||
#include "code\modules\client\preferences\tooltips.dm"
|
||||
#include "code\modules\client\preferences\trans_prosthetic.dm"
|
||||
#include "code\modules\client\preferences\ui_style.dm"
|
||||
#include "code\modules\client\preferences\underwear_color.dm"
|
||||
#include "code\modules\client\preferences\uplink_location.dm"
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import { FeatureChoiced, FeatureDropdownInput } from '../base';
|
||||
|
||||
export const trans_prosthetic: FeatureChoiced = {
|
||||
name: 'Augment',
|
||||
component: FeatureDropdownInput,
|
||||
};
|
||||
Reference in New Issue
Block a user