From f37a93f76b254e5b147d399b1fa7b3bd1a952fc9 Mon Sep 17 00:00:00 2001 From: Nidvex250 <66303093+Nidvex250@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:44:46 -0700 Subject: [PATCH] Teshari Specific Ports from Nova Sector (#27223) * Teshari Specific Port This ports 4 Teshari specific PRs from Nova to Skyrat. * Hypospray Port The fancy new GAG enabled hyposprays. * Revert "Hypospray Port" This reverts commit b60a482e916ed5683424f64d0eefd9c8dcdd1a48. --- code/datums/mutations/body.dm | 6 +- code/datums/quirks/positive_quirks/settler.dm | 5 +- code/game/objects/structures/tables_racks.dm | 2 +- .../living/carbon/human/human_update_icons.dm | 2 +- .../master_files/icons/hud/actions.dmi | Bin 367 -> 1735 bytes .../master_files/icons/misc/language.dmi | Bin 4308 -> 4476 bytes .../clothing/species/teshari/accessories.dmi | Bin 4916 -> 4916 bytes .../bodyparts/code/teshari_bodyparts.dm | 2 + .../mob/living/carbon/human/species.dm | 2 + .../szot_dynamica/rifle.dm | 1 + .../code/gun_launches_little_guys_element.dm | 46 ++ modular_skyrat/modules/organs/code/ears.dm | 72 ++++ .../modules/tesh_augments/code/all_nodes.dm | 30 ++ .../modules/tesh_augments/code/limbs.dm | 57 +++ .../code/mechfabricator_designs.dm | 131 ++++++ .../tesh_augments/code/robot_bodyparts.dm | 403 ++++++++++++++++++ .../icons/advanced_augments_teshari.dmi | Bin 0 -> 1013 bytes .../tesh_augments/icons/augments_teshari.dmi | Bin 0 -> 1504 bytes .../tesh_augments/icons/sbipc_raptor.dmi | Bin 0 -> 1091 bytes .../icons/surplus_augments_teshari.dmi | Bin 0 -> 995 bytes .../modules/tesh_augments/readme.md | 5 + .../modules/teshari/code/_teshari.dm | 12 +- .../modules/teshari/code/schechi.dm | 6 +- tgstation.dme | 6 + 24 files changed, 779 insertions(+), 9 deletions(-) create mode 100644 modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm create mode 100644 modular_skyrat/modules/organs/code/ears.dm create mode 100644 modular_skyrat/modules/tesh_augments/code/all_nodes.dm create mode 100644 modular_skyrat/modules/tesh_augments/code/limbs.dm create mode 100644 modular_skyrat/modules/tesh_augments/code/mechfabricator_designs.dm create mode 100644 modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm create mode 100644 modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi create mode 100644 modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi create mode 100644 modular_skyrat/modules/tesh_augments/icons/sbipc_raptor.dmi create mode 100644 modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi create mode 100644 modular_skyrat/modules/tesh_augments/readme.md diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 9e71fe8197e..6d3768704fb 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -120,8 +120,8 @@ if(..()) return // SKYRAT EDIT BEGIN - if(owner.dna.features["body_size"] < 1) - to_chat(owner, "You feel your body shrinking even further, but your organs aren't! Uh oh!") + if(owner.dna.features["body_size"] < 1 || isteshari(owner)) + to_chat(owner, "You feel your body try to shrink, but your organs don't! Uh oh!") owner.adjustBruteLoss(25) return // SKYRAT EDIT END @@ -132,7 +132,7 @@ if(..()) return // SKYRAT EDIT BEGIN - if(owner.dna.features["body_size"] < 1) + if(owner.dna.features["body_size"] < 1 || isteshari(owner)) to_chat(owner, "You feel relief as your organs cease to strain against your insides.") REMOVE_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) return diff --git a/code/datums/quirks/positive_quirks/settler.dm b/code/datums/quirks/positive_quirks/settler.dm index 81402c050cd..6d6dcd1f43f 100644 --- a/code/datums/quirks/positive_quirks/settler.dm +++ b/code/datums/quirks/positive_quirks/settler.dm @@ -19,7 +19,10 @@ give_item_to_holder(/obj/item/storage/box/papersack/wheat, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) give_item_to_holder(/obj/item/storage/toolbox/fishing/small, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) var/mob/living/carbon/human/human_quirkholder = quirk_holder - human_quirkholder.set_mob_height(HUMAN_HEIGHT_SHORTEST) + //SKYRAT EDIT BEGIN - This is so Teshari don't get the height decrease. + if(!isteshari(human_quirkholder)) + human_quirkholder.set_mob_height(HUMAN_HEIGHT_SHORTEST) + //SKYRAT EDIT END human_quirkholder.add_movespeed_modifier(/datum/movespeed_modifier/settler) human_quirkholder.physiology.hunger_mod *= 0.5 //good for you, shortass, you don't get hungry nearly as often diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index b04de8dbf81..391ce514fbd 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -452,7 +452,7 @@ check_break(M) /obj/structure/table/glass/proc/check_break(mob/living/M) - if(M.has_gravity() && M.mob_size > MOB_SIZE_SMALL && !(M.movement_type & MOVETYPES_NOT_TOUCHING_GROUND)) + if(M.has_gravity() && M.mob_size > MOB_SIZE_SMALL && !(M.movement_type & MOVETYPES_NOT_TOUCHING_GROUND) && (!isteshari(M))) //SKYRAT EDIT ADDITION - Allows Teshari to climb on glassies safely. table_shatter(M) /obj/structure/table/glass/proc/table_shatter(mob/living/victim) diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 508571190d7..bfb22804ddf 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -115,7 +115,7 @@ There are several things that need to be remembered: icon_file = dna.species.generate_custom_worn_icon(LOADOUT_ITEM_UNIFORM, w_uniform, src) // Might have to refactor how this works eventually, maybe. // SKYRAT EDIT END //Female sprites have lower priority than digitigrade sprites - if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(female_sprite_flags & NO_FEMALE_UNIFORM)) // SKYRAT EDIT CHANGE - ORIGINAL: else if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(uniform.female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh + if(!dna.species.no_gender_shaping && dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(female_sprite_flags & NO_FEMALE_UNIFORM)) // SKYRAT EDIT CHANGE - ORIGINAL: else if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(uniform.female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh woman = TRUE // SKYRAT EDIT ADDITION START - Digi female gender shaping if(digi) diff --git a/modular_skyrat/master_files/icons/hud/actions.dmi b/modular_skyrat/master_files/icons/hud/actions.dmi index 32da90c1cf85692e1f69c60107f0bf4a80135f0b..ff81273f7df7305c4c35391565968e5bf0dfd6cc 100644 GIT binary patch literal 1735 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 literal 4308 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 literal 4916 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 diff --git a/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm b/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm index b816f59867f..a03440623ee 100644 --- a/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm +++ b/modular_skyrat/modules/bodyparts/code/teshari_bodyparts.dm @@ -112,6 +112,7 @@ base_limb_id = SPECIES_TESHARI brute_modifier = TESHARI_BRUTE_MODIFIER burn_modifier = TESHARI_BURN_MODIFIER + speed_modifier = -0.1 /obj/item/bodypart/leg/right/digitigrade/teshari icon_greyscale = BODYPART_ICON_TESHARI @@ -119,6 +120,7 @@ base_limb_id = SPECIES_TESHARI brute_modifier = TESHARI_BRUTE_MODIFIER burn_modifier = TESHARI_BURN_MODIFIER + speed_modifier = -0.1 #undef TESHARI_PUNCH_LOW #undef TESHARI_PUNCH_HIGH diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm index c941415cf65..44f5dc23227 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm @@ -5,6 +5,8 @@ GLOBAL_LIST_EMPTY(customizable_races) digitigrade_customization = DIGITIGRADE_OPTIONAL // Doing this so that the legs preference actually works for everyone. ///Self explanatory var/can_have_genitals = TRUE + /// Whether or not the gender shaping is disabled for this species + var/no_gender_shaping ///A list of actual body markings on the owner of the species. Associative lists with keys named by limbs defines, pointing to a list with names and colors for the marking to be rendered. This is also stored in the DNA var/list/list/body_markings = list() ///Override of the eyes icon file, used for Vox and maybe more in the future - The future is now, with Teshari using it too diff --git a/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/szot_dynamica/rifle.dm b/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/szot_dynamica/rifle.dm index 70a53cff5b9..52fc0d56006 100644 --- a/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/szot_dynamica/rifle.dm +++ b/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/szot_dynamica/rifle.dm @@ -112,6 +112,7 @@ /obj/item/gun/ballistic/automatic/wylom/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_SZOT) + AddElement(/datum/element/gun_launches_little_guys, throwing_force = 3, throwing_range = 5) /obj/item/gun/ballistic/automatic/wylom/examine(mob/user) . = ..() diff --git a/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm b/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm new file mode 100644 index 00000000000..e337b2c57db --- /dev/null +++ b/modular_skyrat/modules/modular_weapons/code/gun_launches_little_guys_element.dm @@ -0,0 +1,46 @@ +/// An element that makes guns throw their user back if they are just a little guy +/datum/element/gun_launches_little_guys + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + + /// The throwing force applied to the gun's user + var/throwing_force + /// The throwing range applied to the gun's user + var/throwing_range + +/datum/element/gun_launches_little_guys/Attach(datum/target, throwing_force = 2, throwing_range = 3) + . = ..() + if(!isgun(target)) + return ELEMENT_INCOMPATIBLE + + src.throwing_force = throwing_force + src.throwing_range = throwing_range + + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(examine)) + RegisterSignal(target, COMSIG_GUN_FIRED, PROC_REF(throw_it_back)) + +/datum/element/gun_launches_little_guys/Detach(datum/target) + . = ..() + UnregisterSignal(target, COMSIG_ATOM_EXAMINE) + UnregisterSignal(target, COMSIG_GUN_FIRED) + +/// Warns that this gun might throw you away really hard +/datum/element/gun_launches_little_guys/proc/examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + examine_list += span_notice("It has some serious kick to it, smaller users should take caution while firing.") + +/// Checks if the shooter is just a little guy. If so? Throw it back. +/datum/element/gun_launches_little_guys/proc/throw_it_back(obj/item/gun/weapon, mob/living/carbon/user, atom/target, params, zone_override) + SIGNAL_HANDLER + + if(!isteshari(user) && !isdwarf(user) && !HAS_TRAIT(user, TRAIT_DWARF) && !(user.dna.features["body_size"] <= 0.9)) + return + + var/fling_direction = REVERSE_DIR(user.dir) + var/atom/throw_target = get_edge_target_turf(user, fling_direction) + user.Knockdown(1 SECONDS) + user.throw_at(throw_target, throwing_range, throwing_force) + + user.visible_message(span_warning("[weapon] sends [user] flying back as it fires!"), \ + span_warning("[weapon] sends you flying back as it fires!")) diff --git a/modular_skyrat/modules/organs/code/ears.dm b/modular_skyrat/modules/organs/code/ears.dm new file mode 100644 index 00000000000..462d3153c09 --- /dev/null +++ b/modular_skyrat/modules/organs/code/ears.dm @@ -0,0 +1,72 @@ +/obj/item/organ/internal/ears/teshari + name = "teshari ears" + desc = "A set of four long rabbit-like ears, a Teshari's main tool while hunting. Naturally extremely sensitive to loud sounds." + damage_multiplier = 1.5 + actions_types = list(/datum/action/cooldown/spell/teshari_hearing) + +/obj/item/organ/internal/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner) + . = ..() + REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) + +/datum/action/cooldown/spell/teshari_hearing + name = "Toggle Sensitive Hearing" + desc = "Perk up your ears to listen for quiet sounds, useful for picking up whispering." + button_icon = 'modular_skyrat/master_files/icons/hud/actions.dmi' + button_icon_state = "echolocation_off" + background_icon_state = "bg_alien" + overlay_icon_state = "bg_alien_border" + + cooldown_time = 1 SECONDS + spell_requirements = NONE + +/datum/action/cooldown/spell/teshari_hearing/proc/update_button_state(new_state) //This makes it so that the button icon changes dynamically based on ears being up or not. + button_icon_state = new_state + owner.update_action_buttons() + +/datum/action/cooldown/spell/teshari_hearing/Remove(mob/living/remove_from) + REMOVE_TRAIT(remove_from, TRAIT_GOOD_HEARING, ORGAN_TRAIT) + remove_from.update_sight() + return ..() + +/datum/action/cooldown/spell/teshari_hearing/cast(list/targets, mob/living/carbon/human/user = usr) + . = ..() + + if(HAS_TRAIT(user, TRAIT_GOOD_HEARING)) + teshari_hearing_deactivate(user) + return + + user.apply_status_effect(/datum/status_effect/teshari_hearing) + user.visible_message(span_notice("[user], pricks up [user.p_their()] four ears, each twitching intently!"), span_notice("You perk up all four of your ears, hunting for even the quietest sounds.")) + update_button_state("echolocation_on") + + var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) + if(ears) + ears.damage_multiplier = 3 + +/datum/action/cooldown/spell/teshari_hearing/proc/teshari_hearing_deactivate(mob/living/carbon/human/user) //Called when you activate it again after casting the ability-- turning them off, so to say. + if(!HAS_TRAIT_FROM(user, TRAIT_GOOD_HEARING, ORGAN_TRAIT)) + return + + user.remove_status_effect(/datum/status_effect/teshari_hearing) + user.visible_message(span_notice("[user] drops [user.p_their()] ears down a bit, no longer listening as closely."), span_notice("You drop your ears down, no longer paying close attention.")) + update_button_state("echolocation_off") + + var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS) + if(ears) + ears.damage_multiplier = 1.5 + +/datum/status_effect/teshari_hearing + id = "teshari_hearing" + alert_type = null + status_type = STATUS_EFFECT_UNIQUE + +/datum/status_effect/teshari_hearing/on_apply() + ADD_TRAIT(owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) + return ..() + +/datum/status_effect/teshari_hearing/on_remove() + REMOVE_TRAIT(owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) + return ..() + +/datum/status_effect/teshari_hearing/get_examine_text() + return span_notice("[owner.p_They()] [owner.p_have()] [owner.p_their()] ears perked up, listening closely to whisper-quiet sounds.") diff --git a/modular_skyrat/modules/tesh_augments/code/all_nodes.dm b/modular_skyrat/modules/tesh_augments/code/all_nodes.dm new file mode 100644 index 00000000000..0358c31ce8c --- /dev/null +++ b/modular_skyrat/modules/tesh_augments/code/all_nodes.dm @@ -0,0 +1,30 @@ +//teshari_ robolimb research node + +/datum/techweb_node/teshari_cyber + id = "teshari_cyber" + display_name = "Raptoral Cybernetics" + description = "Specialized civilian-grade cybernetic limb designs." + prereq_ids = list("base") + design_ids = list( + "teshari_cyber_chest", + "teshari_cyber_l_arm", + "teshari_cyber_r_arm", + "teshari_cyber_l_leg", + "teshari_cyber_r_leg", + "teshari_cyber_head", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) + + +/datum/techweb_node/adv_teshari_cyber + id = "adv_teshari_cyber" + display_name = "Advanced Raptoral Cybernetics" + description = "Specialized industrial-grade cybernetic limb designs." + prereq_ids = list("adv_robotics", "teshari_cyber") + design_ids = list( + "teshari_advanced_l_arm", + "teshari_advanced_r_arm", + "teshari_advanced_l_leg", + "teshari_advanced_r_leg", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500) diff --git a/modular_skyrat/modules/tesh_augments/code/limbs.dm b/modular_skyrat/modules/tesh_augments/code/limbs.dm new file mode 100644 index 00000000000..759d7b121e5 --- /dev/null +++ b/modular_skyrat/modules/tesh_augments/code/limbs.dm @@ -0,0 +1,57 @@ +/* +this goes into the augment preferences section. They do not use the appearance dropdown for obvious reason. +*/ + +/datum/augment_item/limb/head/teshari_cyborg + name = "Raptoral cybernetic head" + path = /obj/item/bodypart/head/robot/teshari + uses_robotic_styles = FALSE + +/datum/augment_item/limb/chest/teshari_cyborg + name = "Raptoral cybernetic chest" + path = /obj/item/bodypart/chest/robot/teshari + uses_robotic_styles = FALSE + +/datum/augment_item/limb/l_arm/teshari_prosthetic + name = "Raptoral prosthetic left forelimb" + path = /obj/item/bodypart/arm/left/robot/teshari_surplus + cost = -1 + uses_robotic_styles = FALSE + +/datum/augment_item/limb/l_arm/teshari_cybernetic + name = "Raptoral cybernetic left forelimb" + path = /obj/item/bodypart/arm/left/robot/teshari + uses_robotic_styles = FALSE + +/datum/augment_item/limb/r_arm/teshari_prosthetic + name = "Raptoral prototype right forelimb" + path = /obj/item/bodypart/arm/right/robot/teshari_surplus + cost = -1 + uses_robotic_styles = FALSE + +/datum/augment_item/limb/r_arm/teshari_cybernetic + name = "Raptoral cybernetic right forelimb" + path = /obj/item/bodypart/arm/right/robot/teshari + uses_robotic_styles = FALSE + +/datum/augment_item/limb/l_leg/teshari_prosthetic + name = "Raptoral prosthetic left hindlimb" + path = /obj/item/bodypart/leg/left/robot/teshari_surplus + cost = -1 + uses_robotic_styles = FALSE + +/datum/augment_item/limb/l_leg/teshari_cybernetic + name = "Raptoral cybernetic left hindlimb" + path = /obj/item/bodypart/leg/left/robot/teshari + uses_robotic_styles = FALSE + +/datum/augment_item/limb/r_leg/teshari_prosthetic + name = "Raptoral prosthetic right hindlimb" + path = /obj/item/bodypart/leg/right/robot/teshari_surplus + cost = -1 + uses_robotic_styles = FALSE + +/datum/augment_item/limb/r_leg/teshari_cybernetic + name = "Raptoral cybernetic right hindlimb" + path = /obj/item/bodypart/leg/right/robot/teshari + uses_robotic_styles = FALSE diff --git a/modular_skyrat/modules/tesh_augments/code/mechfabricator_designs.dm b/modular_skyrat/modules/tesh_augments/code/mechfabricator_designs.dm new file mode 100644 index 00000000000..50fdb0865ba --- /dev/null +++ b/modular_skyrat/modules/tesh_augments/code/mechfabricator_designs.dm @@ -0,0 +1,131 @@ +//adding teshari silicon stuff to the mechfabricator + +#define RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL "/Raptoral" + +/datum/design/teshari_cyber_chest + name = "Raptoral Cybernetic Torso" + id = "teshari_cyber_chest" + build_type = MECHFAB + build_path = /obj/item/bodypart/chest/robot/teshari + materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 6) + construction_time = 12 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_cyber_head + name = "Raptoral Cybernetic Head" + id = "teshari_cyber_head" + build_type = MECHFAB + build_path = /obj/item/bodypart/head/robot/teshari + materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 0.75) + construction_time = 4 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_cyber_l_arm + name = "Raptoral Cybernetic Left Forelimb" + id = "teshari_cyber_l_arm" + build_type = MECHFAB + build_path = /obj/item/bodypart/arm/left/robot/teshari + materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 1.5) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_cyber_r_arm + name = "Raptoral Cybernetic Right Forelimb" + id = "teshari_cyber_r_arm" + build_type = MECHFAB + build_path = /obj/item/bodypart/arm/right/robot/teshari + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_cyber_l_leg + name = "Raptoral Cybernetic Left Hindlimb" + id = "teshari_cyber_l_leg" + build_type = MECHFAB + build_path = /obj/item/bodypart/leg/left/robot/teshari + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_cyber_r_leg + name = "Raptoral Cybernetic Right Hindlimb" + id = "teshari_cyber_r_leg" + build_type = MECHFAB + build_path = /obj/item/bodypart/leg/right/robot/teshari + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +//advanced augmentations since those were added in the recent upstream + +/datum/design/teshari_advanced_l_arm + name = "Advanced Raptoral Cybernetic Left Forelimb" + id = "teshari_advanced_l_arm" + build_type = MECHFAB + build_path = /obj/item/bodypart/arm/left/robot/teshari_advanced + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3, + ) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_advanced_r_arm + name = "Advanced Raptoral Cybernetic Right Forelimb" + id = "teshari_advanced_r_arm" + build_type = MECHFAB + build_path = /obj/item/bodypart/arm/right/robot/teshari_advanced + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3, + ) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_advanced_l_leg + name = "Advanced Raptoral Cybernetic Left Hindlimb" + id = "teshari_advanced_l_leg" + build_type = MECHFAB + build_path = /obj/item/bodypart/leg/left/robot/teshari_advanced + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3, + ) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) + +/datum/design/teshari_advanced_r_leg + name = "Advanced Raptoral Cybernetic Right Hindlimb" + id = "teshari_advanced_r_leg" + build_type = MECHFAB + build_path = /obj/item/bodypart/leg/right/robot/teshari_advanced + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3, + ) + construction_time = 8 SECONDS + category = list( + RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_RAPTORAL, + ) diff --git a/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm b/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm new file mode 100644 index 00000000000..4a8eaa3f4b9 --- /dev/null +++ b/modular_skyrat/modules/tesh_augments/code/robot_bodyparts.dm @@ -0,0 +1,403 @@ +#define ROBOTIC_LIGHT_BRUTE_MSG "marred" +#define ROBOTIC_MEDIUM_BRUTE_MSG "dented" +#define ROBOTIC_HEAVY_BRUTE_MSG "falling apart" + +#define ROBOTIC_LIGHT_BURN_MSG "scorched" +#define ROBOTIC_MEDIUM_BURN_MSG "charred" +#define ROBOTIC_HEAVY_BURN_MSG "smoldering" + +/* + The damage modifiers here are modified to stay in line with teshari + Although I'm not sure if it's redundant, better safe than sorry. + */ + +#define TESHARI_PUNCH_LOW 2 +#define TESHARI_PUNCH_HIGH 6 + +//Teshari normal + +/obj/item/bodypart/arm/left/robot/teshari + name = "cybernetic left raptoral forelimb" + desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case." + icon = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + icon_static = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW + unarmed_damage_high = TESHARI_PUNCH_HIGH + + brute_modifier = 1 + burn_modifier = 0.9 + +/obj/item/bodypart/arm/right/robot/teshari + name = "cybernetic right raptoral forelimb" + desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW + unarmed_damage_high = TESHARI_PUNCH_HIGH + + brute_modifier = 1 + burn_modifier = 0.9 + +/obj/item/bodypart/leg/left/robot/teshari + name = "cybernetic left raptoral hindlimb" + desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW + unarmed_damage_high = TESHARI_PUNCH_HIGH + + brute_modifier = 1 + burn_modifier = 0.9 + +/obj/item/bodypart/leg/right/robot/teshari + name = "cybernetic right raptoral hindlimb" + desc = "A skeletal limb wrapped in pseudomuscles and membranous feathers, with a low-conductivity case." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW + unarmed_damage_high = TESHARI_PUNCH_HIGH + + brute_modifier = 1 + burn_modifier = 0.9 + +/obj/item/bodypart/chest/robot/teshari + name = "cybernetic raptoral torso" + desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell, covered in a layer of membranous feathers." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + brute_modifier = 1 + burn_modifier = 0.9 + + robotic_emp_paralyze_damage_percent_threshold = 0.5 + +/obj/item/bodypart/head/robot/teshari + name = "cybernetic raptoral head" + desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals. A layer of membranous feathers covers the stark metal." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW + unarmed_damage_high = TESHARI_PUNCH_HIGH + + brute_modifier = 1 + burn_modifier = 0.9 + + head_flags = HEAD_EYESPRITES + +// teshari_ surplus + +/obj/item/bodypart/arm/left/robot/teshari_surplus + name = "prosthetic left raptoral forelimb" + desc = "A skeletal, robotic wing. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/arm/right/robot/teshari_surplus + name = "prosthetic right raptoral forelimb" + desc = "A skeletal, robotic wing. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/left/robot/teshari_surplus + name = "prosthetic left raptoral hindlimb" + desc = "A skeletal, robotic hindlimb. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/right/robot/teshari_surplus + name = "prosthetic right raptoral hindlimb" + desc = "A skeletal, robotic hindlimb. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/arm/left/robot/teshari_surplus + name = "prosthetic left raptoral forelimb" + desc = "A skeletal, robotic wing. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/arm/right/robot/teshari_surplus + name = "prosthetic right raptoral forelimb" + desc = "A skeletal, robotic wing. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/left/robot/teshari_surplus + name = "prosthetic left raptoral hindlimb" + desc = "A skeletal, robotic hindlimb. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/right/robot/teshari_surplus + name = "prosthetic right raptoral hindlimb" + desc = "A skeletal, robotic hindlimb. Outdated and fragile, but it's still better than nothing. A layer of membranous feathers hides the cheap assembly." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 0.3 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 0.5 + + brute_modifier = 1.25 + burn_modifier = 1.2 + + max_damage = LIMB_MAX_HP_PROSTHESIS + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_PROSTHESIS + + biological_state = (BIO_METAL|BIO_JOINTED) + +// teshari_ advanced + +/obj/item/bodypart/arm/left/robot/teshari_advanced + name = "advanced left raptoral forelimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 0.8 + burn_modifier = 1 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/arm/right/robot/teshari_advanced + name = "advanced right raptoral forelimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 0.8 + burn_modifier = 1 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/left/robot/teshari_advanced + name = "advanced left raptoral hindlimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 0.8 + burn_modifier = 1 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/right/robot/teshari_advanced + name = "advanced right raptoral hindlimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 0.8 + burn_modifier = 1 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/arm/left/robot/teshari_advanced + name = "advanced left raptoral forelimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 1 + burn_modifier = 0.9 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/arm/right/robot/teshari_advanced + name = "advanced right raptoral forelimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 1 + burn_modifier = 0.9 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/left/robot/teshari_advanced + name = "advanced left raptoral hindlimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 1 + burn_modifier = 0.9 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +/obj/item/bodypart/leg/right/robot/teshari_advanced + name = "advanced right raptoral hindlimb" + desc = "An advanced robotic hindlimb. These designs are usually reserved for those still on the search for Avalon." + icon_static = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + icon = 'modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi' + bodyshape = parent_type::bodyshape | BODYSHAPE_CUSTOM + + unarmed_damage_low = TESHARI_PUNCH_LOW * 2 + unarmed_damage_high = TESHARI_PUNCH_HIGH * 3 + + brute_modifier = 1 + burn_modifier = 0.9 + + max_damage = LIMB_MAX_HP_ADVANCED + body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED + + biological_state = (BIO_METAL|BIO_JOINTED) + +#undef ROBOTIC_LIGHT_BRUTE_MSG +#undef ROBOTIC_MEDIUM_BRUTE_MSG +#undef ROBOTIC_HEAVY_BRUTE_MSG + +#undef ROBOTIC_LIGHT_BURN_MSG +#undef ROBOTIC_MEDIUM_BURN_MSG +#undef ROBOTIC_HEAVY_BURN_MSG + +#undef TESHARI_PUNCH_LOW +#undef TESHARI_PUNCH_HIGH diff --git a/modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi b/modular_skyrat/modules/tesh_augments/icons/advanced_augments_teshari.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4f0c65c2d33853689b757f69443873190f220ee8 GIT binary patch literal 1013 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 JPDHLkV1k2Z3{U_7 literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi b/modular_skyrat/modules/tesh_augments/icons/surplus_augments_teshari.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3863b2a12da07059a7a7f5ed1712899e8b0d0d47 GIT binary patch literal 995 zcmV<9104K`P))R?K z6|srC8F=$Pe5PcF=Gb$rejJjD0-OY>P<_J`V+0bqc1V0i!n>=xDkU|G|zD^!Ptx|%nQN4LL7IX zQ@fv`i`^%S@t3${O;keQexgRba@t6Pr0<=j)K~#90?VQbP6Hye!=PQ|MS0cpq zD;3eMM9`$WAXVG0DvEB$k7iv^Y0YY|g|s`d1&ga7Lh!#71v~G4%zJr_u~N@(HFxek z@63c2&P!(+MF0TsA9Ll8ub7Y}ps!N~0RwTEqf%L1-pe+n+ef~+2^tLSd9iPG7`!0QJUy-Dr>*JAf2MHP8J9g>c zYd?g^QT6+<7#d~3KG)qB6Sn?T(?>V!L+uU;h4L9%`VT(6A2a(B00000xSYiEHb{d4 zdu)OY;>RJ=TK@MzBYomtLCgO>x|Llm8P}|u|9z~GM7&fw4Yd64W0@>@{fTQ<&Hp}D z_UvkPL~h8?SvCLrNG6qC_3Uk0LPs0&zmFcNmMeYg7kd6b+oa{w*d_iEMto+_+HuXD zn@)Xro?jCH0000004@<$U>|HXk4>ZZ8w72dr!_G3Vf#fHZeTopash)I!Rv=_i2wiq z0002^`!sytPrsyZ4eDbPYM}m2E2q1V&I|^Ty5FGB+O@Bhbuo{q{&HYfW)2Pj00000 z09*v-A`I@?#pa9#TK*?*&TM)gQTpa?8*yfF*RCdG-ruJCp=?X5x;_8^006+h0?GfcWZ#p=DTab5rzW=E8KLA`WSTP>p RZbAS6002ovPDHLkV1jRi)~Wyi literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/tesh_augments/readme.md b/modular_skyrat/modules/tesh_augments/readme.md new file mode 100644 index 00000000000..b43ce34148a --- /dev/null +++ b/modular_skyrat/modules/tesh_augments/readme.md @@ -0,0 +1,5 @@ +/* +teshari_ cybernetics +all done by aKhromatopsia +that's all +*/ diff --git a/modular_skyrat/modules/teshari/code/_teshari.dm b/modular_skyrat/modules/teshari/code/_teshari.dm index 3a7b8e0ee79..606a810a204 100644 --- a/modular_skyrat/modules/teshari/code/_teshari.dm +++ b/modular_skyrat/modules/teshari/code/_teshari.dm @@ -5,6 +5,7 @@ /datum/species/teshari name = "Teshari" id = SPECIES_TESHARI + no_gender_shaping = TRUE // Female uniform shaping breaks Teshari worn sprites, so this is disabled. This will not affect anything else in regards to gender however. eyes_icon = 'modular_skyrat/modules/organs/icons/teshari_eyes.dmi' inherent_traits = list( TRAIT_ADVANCEDTOOLUSER, @@ -38,6 +39,7 @@ bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET) bodytemp_cold_damage_limit = (BODYTEMP_COLD_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET) species_language_holder = /datum/language_holder/teshari + mutantears = /obj/item/organ/internal/ears/teshari body_size_restricted = TRUE bodypart_overrides = list( BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/teshari, @@ -58,7 +60,7 @@ /obj/item/organ/internal/tongue/teshari - liked_foodtypes = MEAT + liked_foodtypes = MEAT | GORE | RAW disliked_foodtypes = GROSS | GRAIN @@ -82,3 +84,11 @@ tesh.dna.mutant_bodyparts["tail"] = list(MUTANT_INDEX_NAME = "Teshari (Default)", MUTANT_INDEX_COLOR_LIST = list(base_color, base_color, ear_color)) regenerate_organs(tesh, src, visual_only = TRUE) tesh.update_body(TRUE) + +/datum/species/teshari/on_species_gain(mob/living/carbon/human/new_teshari, datum/species/old_species, pref_load) + . = ..() + passtable_on(new_teshari, SPECIES_TRAIT) + +/datum/species/teshari/on_species_loss(mob/living/carbon/C, datum/species/new_species, pref_load) + . = ..() + passtable_off(C, SPECIES_TRAIT) diff --git a/modular_skyrat/modules/teshari/code/schechi.dm b/modular_skyrat/modules/teshari/code/schechi.dm index 47c2c136cc0..5da75c731b2 100644 --- a/modular_skyrat/modules/teshari/code/schechi.dm +++ b/modular_skyrat/modules/teshari/code/schechi.dm @@ -1,12 +1,14 @@ /datum/language/schechi name = "Schechi" - desc = "The common language of the Teshari, and later adapted by many other avian species, consisting of miscellaneous chirps." + desc = "The very structurally loose creole tongue of the Teshari, host to hundreds of dialects almost different enough to resemble their own languages. \ + Originally developed on Sirisai, Schechi has made its way across the Teshari diaspora as a commonly agreed upon way for entirely different packs to communicate." key = "F" space_chance = 40 syllables = list( "i", "ii", "si", "aci", "hi", "ni", "li", "schi", "tari", "e", "she", "re", "me", "ne", "te", "se", "le", "ai", - "a", "ra", "ca", "scha", "tara", "sa", "la", "na", + "a", "ra", "ca", "scha", "tara", "sa", "la", "na", "ce", + "re", "se", "shi", "ti", "le", "la", "lu", "tu", "shu", ) icon = 'modular_skyrat/master_files/icons/misc/language.dmi' icon_state = "schechi" diff --git a/tgstation.dme b/tgstation.dme index ecbe18b63c4..9f6b146c939 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7814,6 +7814,7 @@ #include "modular_skyrat\modules\modular_weapons\code\conversion_kits.dm" #include "modular_skyrat\modules\modular_weapons\code\ds2_gunset.dm" #include "modular_skyrat\modules\modular_weapons\code\energy.dm" +#include "modular_skyrat\modules\modular_weapons\code\gun_launches_little_guys_element.dm" #include "modular_skyrat\modules\modular_weapons\code\gunsets.dm" #include "modular_skyrat\modules\modular_weapons\code\melee.dm" #include "modular_skyrat\modules\modular_weapons\code\modular_projectiles.dm" @@ -7959,6 +7960,7 @@ #include "modular_skyrat\modules\opposing_force\code\equipment\modsuit.dm" #include "modular_skyrat\modules\opposing_force\code\equipment\spells.dm" #include "modular_skyrat\modules\opposing_force\code\equipment\uplink.dm" +#include "modular_skyrat\modules\organs\code\ears.dm" #include "modular_skyrat\modules\organs\code\heart.dm" #include "modular_skyrat\modules\organs\code\liver.dm" #include "modular_skyrat\modules\organs\code\lungs.dm" @@ -8182,6 +8184,10 @@ #include "modular_skyrat\modules\tarkon\code\misc-fluff\research.dm" #include "modular_skyrat\modules\tarkon\code\misc-fluff\spawner.dm" #include "modular_skyrat\modules\tarkon\code\misc-fluff\tools.dm" +#include "modular_skyrat\modules\tesh_augments\code\all_nodes.dm" +#include "modular_skyrat\modules\tesh_augments\code\limbs.dm" +#include "modular_skyrat\modules\tesh_augments\code\mechfabricator_designs.dm" +#include "modular_skyrat\modules\tesh_augments\code\robot_bodyparts.dm" #include "modular_skyrat\modules\teshari\code\_clothing_defines.dm" #include "modular_skyrat\modules\teshari\code\_teshari.dm" #include "modular_skyrat\modules\teshari\code\birdman_food.dm"