mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 00:27:31 +01:00
Add: Cybernetic Tongue & Augments Tweak (#17561)
* Add cybernetic tongue organ with new sprite * Add cybernetic tongue to techweb designs and Augment+ menu. Add changes to tgstation.dme * Add cybernetic tongue to /datum/techweb_node/cyber_organs * Update Cybernetic Tongue sprite and description. * Change cybernetic tongue design to use '4 SECONDS' instead of 40 * Change default organ augment name to 'Default' * Rename Organic Tongue to Human Tongue * Change augment limbs and organs to use intended names * Rename Human tongue augment_item to Organic tongue * Add defines LIMBS_DEFAULT_NAME and ORGANS_DEFAULT_NAME to limbs_and_markings.dm
This commit is contained in:
@@ -1349,6 +1349,7 @@
|
||||
"cybernetic_liver_tier2",
|
||||
"cybernetic_lungs_tier2",
|
||||
"cybernetic_stomach_tier2",
|
||||
"cybernetic_tongue", //SKYRAT EDIT ADDITION
|
||||
)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
|
||||
|
||||
+32
-22
@@ -1,3 +1,6 @@
|
||||
#define ORGANS_DEFAULT_NAME "Default"
|
||||
#define LIMBS_DEFAULT_NAME "None"
|
||||
|
||||
/datum/preference_middleware/limbs_and_markings/post_set_preference(mob/user, preference, value)
|
||||
preferences.character_preview_view.update_body()
|
||||
. = ..()
|
||||
@@ -56,7 +59,7 @@
|
||||
/datum/preference_middleware/limbs_and_markings/proc/set_limb_aug(list/params, mob/user)
|
||||
var/limb_slot = params["limb_slot"]
|
||||
var/augment_name = params["augment_name"]
|
||||
if(augment_name == "None")
|
||||
if(augment_name == LIMBS_DEFAULT_NAME)
|
||||
preferences.augments -= limbs_to_process[limb_slot]
|
||||
else
|
||||
preferences.augments[limbs_to_process[limb_slot]] = augment_to_path[augment_name]
|
||||
@@ -66,7 +69,7 @@
|
||||
/datum/preference_middleware/limbs_and_markings/proc/set_limb_aug_style(list/params, mob/user)
|
||||
var/limb_slot = params["limb_slot"]
|
||||
var/style_name = params["style_name"]
|
||||
if(style_name == "None")
|
||||
if(style_name == LIMBS_DEFAULT_NAME)
|
||||
preferences.augment_limb_styles -= limbs_to_process[limb_slot]
|
||||
else
|
||||
preferences.augment_limb_styles[limbs_to_process[limb_slot]] = style_name
|
||||
@@ -176,7 +179,7 @@
|
||||
/datum/preference_middleware/limbs_and_markings/proc/set_organ_aug(list/params, mob/user)
|
||||
var/organ_slot = params["organ_slot"]
|
||||
var/augment_name = params["augment_name"]
|
||||
if(augment_name == "Organic")
|
||||
if(augment_name == ORGANS_DEFAULT_NAME)
|
||||
preferences.augments -= organs_to_process[organ_slot]
|
||||
else
|
||||
preferences.augments[organs_to_process[organ_slot]] = augment_to_path[augment_name]
|
||||
@@ -204,23 +207,25 @@
|
||||
for(var/limb in limbs_to_process)
|
||||
if(!nice_aug_names[limb])
|
||||
nice_aug_names[limb] = list()
|
||||
for(var/augments in GLOB.augment_slot_to_items[limbs_to_process[limb]])
|
||||
var/obj/item/aug = augments
|
||||
for(var/augment in GLOB.augment_slot_to_items[limbs_to_process[limb]])
|
||||
var/obj/item/aug = augment
|
||||
var/datum/augment_item/expensive_augment = GLOB.augment_items[augment]
|
||||
var/cost = 0
|
||||
if(GLOB.augment_items[augments])
|
||||
var/datum/augment_item/expensive_augment = GLOB.augment_items[augments]
|
||||
var/name = initial(aug.name)
|
||||
if (expensive_augment)
|
||||
cost = expensive_augment.cost
|
||||
name = expensive_augment.name
|
||||
// To display the cost of the limb, if it's anything aside from 0.
|
||||
var/aug_name = cost != 0 ? initial(aug.name) + " ([cost])" : initial(aug.name)
|
||||
var/aug_name = cost != 0 ? name + " ([cost])" : name
|
||||
costs[AUGMENT_CATEGORY_LIMBS][aug_name] = cost
|
||||
nice_aug_names[limb][augments] = aug_name
|
||||
augment_to_path[aug_name] = augments
|
||||
nice_aug_names[limb]["none"] = "None"
|
||||
nice_aug_names[limb][augment] = aug_name
|
||||
augment_to_path[aug_name] = augment
|
||||
nice_aug_names[limb]["none"] = LIMBS_DEFAULT_NAME
|
||||
var/chosen_augment
|
||||
if(preferences.augments[limbs_to_process[limb]] && !isnull(nice_aug_names[limb][preferences.augments[limbs_to_process[limb]]]))
|
||||
chosen_augment = nice_aug_names[limb][preferences.augments[limbs_to_process[limb]]]
|
||||
else
|
||||
chosen_augment = "None"
|
||||
chosen_augment = LIMBS_DEFAULT_NAME
|
||||
var/list/choices = GLOB.body_markings_per_limb[limb].Copy()
|
||||
if (!allow_mismatched_parts)
|
||||
for (var/name in choices)
|
||||
@@ -232,7 +237,7 @@
|
||||
"name" = limbs_to_process[limb],
|
||||
"can_augment" = aug_support[limb],
|
||||
"chosen_aug" = chosen_augment,
|
||||
"chosen_style" = preferences.augment_limb_styles[limbs_to_process[limb]] ? preferences.augment_limb_styles[limbs_to_process[limb]] : "None",
|
||||
"chosen_style" = preferences.augment_limb_styles[limbs_to_process[limb]] ? preferences.augment_limb_styles[limbs_to_process[limb]] : LIMBS_DEFAULT_NAME,
|
||||
"aug_choices" = nice_aug_names[limb],
|
||||
"costs" = costs[AUGMENT_CATEGORY_LIMBS],
|
||||
"markings" = list(
|
||||
@@ -247,23 +252,25 @@
|
||||
for(var/organ in organs_to_process)
|
||||
if(!nice_aug_names[organ])
|
||||
nice_aug_names[organ] = list()
|
||||
for(var/augments in GLOB.augment_slot_to_items[organs_to_process[organ]])
|
||||
var/obj/item/aug = augments
|
||||
for(var/augment in GLOB.augment_slot_to_items[organs_to_process[organ]])
|
||||
var/obj/item/aug = augment
|
||||
var/datum/augment_item/expensive_augment = GLOB.augment_items[augment]
|
||||
var/cost = 0
|
||||
if(GLOB.augment_items[augments])
|
||||
var/datum/augment_item/expensive_augment = GLOB.augment_items[augments]
|
||||
var/name = initial(aug.name)
|
||||
if (expensive_augment)
|
||||
cost = expensive_augment.cost
|
||||
name = expensive_augment.name
|
||||
// To display the cost of the limb, if it's anything aside from 0.
|
||||
var/aug_name = cost != 0 ? initial(aug.name) + " ([cost])" : initial(aug.name)
|
||||
var/aug_name = cost != 0 ? name + " ([cost])" : name
|
||||
costs[AUGMENT_CATEGORY_ORGANS][aug_name] = cost
|
||||
nice_aug_names[organ][augments] = aug_name
|
||||
augment_to_path[aug_name] = augments
|
||||
nice_aug_names[organ]["organic"] = "Organic"
|
||||
nice_aug_names[organ][augment] = aug_name
|
||||
augment_to_path[aug_name] = augment
|
||||
nice_aug_names[organ]["organic"] = ORGANS_DEFAULT_NAME
|
||||
var/chosen_organ
|
||||
if(preferences.augments[organs_to_process[organ]] && !isnull(nice_aug_names[organ][preferences.augments[organs_to_process[organ]]]))
|
||||
chosen_organ = nice_aug_names[organ][preferences.augments[organs_to_process[organ]]]
|
||||
else
|
||||
chosen_organ = "Organic"
|
||||
chosen_organ = ORGANS_DEFAULT_NAME
|
||||
organs_data += list(list(
|
||||
"slot" = organ,
|
||||
"name" = organs_to_process[organ],
|
||||
@@ -284,3 +291,6 @@
|
||||
data["marking_presets"] = presets
|
||||
|
||||
return data
|
||||
|
||||
#undef LIMBS_DEFAULT_NAME
|
||||
#undef ORGANS_DEFAULT_NAME
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
/datum/design/cybernetic_tongue
|
||||
name = "Cybernetic Tongue"
|
||||
desc = "A cybernetic tongue."
|
||||
id = "cybernetic_tongue"
|
||||
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
|
||||
construction_time = 4 SECONDS
|
||||
materials = list(/datum/material/iron = 250, /datum/material/glass = 300, /datum/material/silver = 250)
|
||||
build_path = /obj/item/organ/internal/tongue/cybernetic
|
||||
category = list(
|
||||
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
|
||||
@@ -33,7 +33,7 @@
|
||||
slot = AUGMENT_SLOT_HEAD
|
||||
|
||||
/datum/augment_item/limb/head/cyborg
|
||||
name = "Cyborg"
|
||||
name = "Cyborg head"
|
||||
path = /obj/item/bodypart/head/robot/weak
|
||||
|
||||
//CHESTS
|
||||
@@ -41,7 +41,7 @@
|
||||
slot = AUGMENT_SLOT_CHEST
|
||||
|
||||
/datum/augment_item/limb/chest/cyborg
|
||||
name = "Cyborg"
|
||||
name = "Cyborg chest"
|
||||
path = /obj/item/bodypart/chest/robot/weak
|
||||
|
||||
//LEFT ARMS
|
||||
@@ -49,12 +49,12 @@
|
||||
slot = AUGMENT_SLOT_L_ARM
|
||||
|
||||
/datum/augment_item/limb/l_arm/prosthetic
|
||||
name = "Prosthetic"
|
||||
name = "Prosthetic left arm"
|
||||
path = /obj/item/bodypart/arm/left/robot/surplus
|
||||
cost = -1
|
||||
|
||||
/datum/augment_item/limb/l_arm/cyborg
|
||||
name = "Cyborg"
|
||||
name = "Cyborg left arm"
|
||||
path = /obj/item/bodypart/arm/left/robot/weak
|
||||
|
||||
//RIGHT ARMS
|
||||
@@ -62,12 +62,12 @@
|
||||
slot = AUGMENT_SLOT_R_ARM
|
||||
|
||||
/datum/augment_item/limb/r_arm/prosthetic
|
||||
name = "Prosthetic"
|
||||
name = "Prosthetic right arm"
|
||||
path = /obj/item/bodypart/arm/right/robot/surplus
|
||||
cost = -1
|
||||
|
||||
/datum/augment_item/limb/r_arm/cyborg
|
||||
name = "Cyborg"
|
||||
name = "Cyborg right arm"
|
||||
path = /obj/item/bodypart/arm/right/robot/weak
|
||||
|
||||
//LEFT LEGS
|
||||
@@ -75,12 +75,12 @@
|
||||
slot = AUGMENT_SLOT_L_LEG
|
||||
|
||||
/datum/augment_item/limb/l_leg/prosthetic
|
||||
name = "Prosthetic"
|
||||
name = "Prosthetic left leg"
|
||||
path = /obj/item/bodypart/leg/left/robot/surplus
|
||||
cost = -1
|
||||
|
||||
/datum/augment_item/limb/l_leg/cyborg
|
||||
name = "Cyborg"
|
||||
name = "Cyborg left leg"
|
||||
path = /obj/item/bodypart/leg/left/robot/weak
|
||||
|
||||
//RIGHT LEGS
|
||||
@@ -88,10 +88,10 @@
|
||||
slot = AUGMENT_SLOT_R_LEG
|
||||
|
||||
/datum/augment_item/limb/r_leg/prosthetic
|
||||
name = "Prosthetic"
|
||||
name = "Prosthetic right leg"
|
||||
path = /obj/item/bodypart/leg/right/robot/surplus
|
||||
cost = -1
|
||||
|
||||
/datum/augment_item/limb/r_leg/cyborg
|
||||
name = "Cyborg"
|
||||
name = "Cyborg right leg"
|
||||
path = /obj/item/bodypart/leg/right/robot/weak
|
||||
|
||||
@@ -80,12 +80,16 @@
|
||||
|
||||
/datum/augment_item/organ/tongue/normal
|
||||
name = "Organic tongue"
|
||||
path = /obj/item/organ/internal/tongue
|
||||
path = /obj/item/organ/internal/tongue/human
|
||||
|
||||
/datum/augment_item/organ/tongue/robo
|
||||
name = "Robotic voicebox"
|
||||
path = /obj/item/organ/internal/tongue/robot
|
||||
|
||||
/datum/augment_item/organ/tongue/cybernetic
|
||||
name = "Cybernetic tongue"
|
||||
path = /obj/item/organ/internal/tongue/cybernetic
|
||||
|
||||
/datum/augment_item/organ/tongue/forked
|
||||
name = "Forked tongue"
|
||||
path = /obj/item/organ/internal/tongue/lizard
|
||||
|
||||
@@ -20,6 +20,22 @@
|
||||
speaker.verb_sing = initial(verb_sing)
|
||||
speaker.verb_yell = initial(verb_yell)
|
||||
|
||||
/// This "human" tongue is only used in Character Preferences / Augmentation menu.
|
||||
/// The base tongue class lacked a say_mod. With say_mod included it makes a non-Human user sound like a Human.
|
||||
/obj/item/organ/internal/tongue/human
|
||||
say_mod = "says"
|
||||
|
||||
/obj/item/organ/internal/tongue/cybernetic
|
||||
name = "cybernetic tongue"
|
||||
icon = 'modular_skyrat/modules/organs/icons/cyber_tongue.dmi'
|
||||
icon_state = "cybertongue"
|
||||
desc = "A fully-functional synthetic tongue, encased in soft silicone. Features include high-resolution vocals and taste receptors."
|
||||
status = ORGAN_ROBOTIC
|
||||
organ_flags = ORGAN_SYNTHETIC
|
||||
say_mod = "says"
|
||||
// Not as good as organic tongues, not as bad as the robotic voicebox.
|
||||
taste_sensitivity = 20
|
||||
|
||||
/obj/item/organ/internal/tongue/vox
|
||||
name = "vox tongue"
|
||||
desc = "A fleshy muscle mostly used for skreeing."
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 354 B |
@@ -5149,6 +5149,7 @@
|
||||
#include "modular_skyrat\master_files\code\modules\reagents\chemistry\colors.dm"
|
||||
#include "modular_skyrat\master_files\code\modules\reagents\withdrawal\generic_addictions.dm"
|
||||
#include "modular_skyrat\master_files\code\modules\research\designs\biogenerator_designs.dm"
|
||||
#include "modular_skyrat\master_files\code\modules\research\designs\medical_designs.dm"
|
||||
#include "modular_skyrat\master_files\code\modules\research\designs\misc_designs.dm"
|
||||
#include "modular_skyrat\master_files\code\modules\research\machinery\departmental_circuit_imprinter.dm"
|
||||
#include "modular_skyrat\master_files\code\modules\research\techweb\all_nodes.dm"
|
||||
|
||||
Reference in New Issue
Block a user