diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 940840e7e45..e93d0a5ddf7 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -120,8 +120,8 @@ if(..()) return // NOVA 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 // NOVA EDIT END @@ -132,9 +132,8 @@ if(..()) return // NOVA 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 // NOVA EDIT END REMOVE_TRAIT(owner, TRAIT_DWARF, GENETIC_MUTATION) diff --git a/code/datums/quirks/positive_quirks/settler.dm b/code/datums/quirks/positive_quirks/settler.dm index 81402c050cd..3bc5b2c64f6 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) + //NOVA EDIT BEGIN - This is so Teshari don't get the height decrease. + if(!isteshari(human_quirkholder)) + human_quirkholder.set_mob_height(HUMAN_HEIGHT_SHORTEST) + //NOVA 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 997d23c4139..74c146f3f2b 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))) //NOVA 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/modular_nova/master_files/icons/hud/actions.dmi b/modular_nova/master_files/icons/hud/actions.dmi index 32da90c1cf8..ff81273f7df 100644 Binary files a/modular_nova/master_files/icons/hud/actions.dmi and b/modular_nova/master_files/icons/hud/actions.dmi differ diff --git a/modular_nova/master_files/icons/misc/language.dmi b/modular_nova/master_files/icons/misc/language.dmi index 1e287eca020..5ece55bc6f3 100644 Binary files a/modular_nova/master_files/icons/misc/language.dmi and b/modular_nova/master_files/icons/misc/language.dmi differ diff --git a/modular_nova/modules/bodyparts/code/teshari_bodyparts.dm b/modular_nova/modules/bodyparts/code/teshari_bodyparts.dm index b816f59867f..a03440623ee 100644 --- a/modular_nova/modules/bodyparts/code/teshari_bodyparts.dm +++ b/modular_nova/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_nova/modules/organs/code/ears.dm b/modular_nova/modules/organs/code/ears.dm new file mode 100644 index 00000000000..4db93f0ddd7 --- /dev/null +++ b/modular_nova/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_nova/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_nova/modules/teshari/code/_teshari.dm b/modular_nova/modules/teshari/code/_teshari.dm index 27a8625b748..caf52ae6ae6 100644 --- a/modular_nova/modules/teshari/code/_teshari.dm +++ b/modular_nova/modules/teshari/code/_teshari.dm @@ -39,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, @@ -57,7 +58,7 @@ ) /obj/item/organ/internal/tongue/teshari - liked_foodtypes = MEAT + liked_foodtypes = MEAT | GORE | RAW disliked_foodtypes = GROSS | GRAIN /datum/species/teshari/random_name(gender, unique, lastname) @@ -80,3 +81,12 @@ 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_nova/modules/teshari/code/schechi.dm b/modular_nova/modules/teshari/code/schechi.dm index e049738f639..ed930dbc9cc 100644 --- a/modular_nova/modules/teshari/code/schechi.dm +++ b/modular_nova/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_nova/master_files/icons/misc/language.dmi' icon_state = "schechi" diff --git a/tgstation.dme b/tgstation.dme index 395ef32c531..0f3a7a8390c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7945,6 +7945,7 @@ #include "modular_nova\modules\opposing_force\code\equipment\modsuit.dm" #include "modular_nova\modules\opposing_force\code\equipment\spells.dm" #include "modular_nova\modules\opposing_force\code\equipment\uplink.dm" +#include "modular_nova\modules\organs\code\ears.dm" #include "modular_nova\modules\organs\code\heart.dm" #include "modular_nova\modules\organs\code\liver.dm" #include "modular_nova\modules\organs\code\lungs.dm"