From 6f8b6e1bfc4e5e4aa6cbcfb96cdc6531ea91b138 Mon Sep 17 00:00:00 2001 From: Nlaysi Date: Sun, 26 May 2024 18:23:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D1=81=D0=BE=D0=B1=D0=B5=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=B9=20=D0=B8=20=D0=94=D0=9D=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_bandastation/species/_species.dme | 2 +- modular_bandastation/species/code/dna.dm | 25 +++++++++++++++++++ .../code/human/species_type/vulpkanin.dm | 21 ++++++++++++++++ .../organs/internal/vulpkanin_internal.dm | 15 ++++++++++- 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/modular_bandastation/species/_species.dme b/modular_bandastation/species/_species.dme index e71634fdf2bf7a0..9f47fb648579bf3 100644 --- a/modular_bandastation/species/_species.dme +++ b/modular_bandastation/species/_species.dme @@ -5,7 +5,7 @@ #include "code/_defines.dm" #include "code/language.dm" -// #include "code/dna.dm" +#include "code/dna.dm" #include "code/human/carbon.dm" #include "code/human/human.dm" diff --git a/modular_bandastation/species/code/dna.dm b/modular_bandastation/species/code/dna.dm index 74faa6b20bb7a48..8a8810b1572cda6 100644 --- a/modular_bandastation/species/code/dna.dm +++ b/modular_bandastation/species/code/dna.dm @@ -47,3 +47,28 @@ dna.features["tail_markings"] = SSaccessories.vulpkanin_tail_markings_list[deconstruct_block(get_uni_feature_block(dna.unique_features, DNA_VULPKANIN_TAIL_MARKINGS), SSaccessories.vulpkanin_tail_markings_list.len)] if(dna.features["vulpkanin_facial_hair"]) dna.features["vulpkanin_facial_hair"] = SSaccessories.vulpkanin_facial_hair_list[deconstruct_block(get_uni_feature_block(dna.unique_features, DNA_VULPKANIN_FACIAL_HAIR), SSaccessories.vulpkanin_facial_hair_list.len)] + +/proc/populate_total_uf_len_by_block_modular(last) + . = list() + var/total_block_len = last + for(var/blocknumber in 1 to DNA_MODULAR_BLOCKS_COUNT) + total_block_len += DNA_BLOCK_SIZE + . += total_block_len + +/scramble_dna(mob/living/carbon/M, ui=FALSE, se=FALSE, uf=FALSE, probability) + if(uf) + for(var/blocknum in DNA_FEATURE_BLOCKS to DNA_FEATURE_BLOCKS + DNA_MODULAR_BLOCKS_COUNT) + if(prob(probability)) + M.dna.set_uni_feature_block(blocknum, random_string(GET_UF_BLOCK_LEN(blocknum), GLOB.hex_characters)) + ..() + +/mob/living/carbon/human/species/vulpkanin/random_mutate_unique_features() + if(!has_dna()) + CRASH("[src] does not have DNA") + var/num = rand(1, DNA_FEATURE_BLOCKS + DNA_MODULAR_BLOCKS_COUNT) + dna.set_uni_feature_block(num, random_string(GET_UF_BLOCK_LEN(num), GLOB.hex_characters)) + updateappearance(mutcolor_update = TRUE, mutations_overlay_update = TRUE) + +/world/New() + . = ..() + GLOB.total_uf_len_by_block += populate_total_uf_len_by_block_modular(GLOB.total_uf_len_by_block[DNA_FEATURE_BLOCKS]) diff --git a/modular_bandastation/species/code/human/species_type/vulpkanin.dm b/modular_bandastation/species/code/human/species_type/vulpkanin.dm index f6c8e0a124447b6..e2dc9bea69206c1 100644 --- a/modular_bandastation/species/code/human/species_type/vulpkanin.dm +++ b/modular_bandastation/species/code/human/species_type/vulpkanin.dm @@ -14,6 +14,7 @@ mutantheart = /obj/item/organ/internal/heart/vulpkanin mutantlungs = /obj/item/organ/internal/lungs/vulpkanin mutanteyes = /obj/item/organ/internal/eyes/vulpkanin + mutantears = /obj/item/organ/internal/ears/vulpkanin mutanttongue = /obj/item/organ/internal/tongue/vulpkanin mutantliver = /obj/item/organ/internal/liver/vulpkanin mutantstomach = /obj/item/organ/internal/stomach/vulpkanin @@ -93,6 +94,26 @@ Что касается беженцев, то они не особо проявляют активность, например, на политическом поприще.", ) +/datum/species/vulpkanin/create_pref_unique_perks() + var/list/to_add = list() + + to_add += list( + list( + SPECIES_PERK_TYPE = SPECIES_NEUTRAL_PERK, + SPECIES_PERK_ICON = "assistive-listening-systems", + SPECIES_PERK_NAME = "Чувствительный слух", + SPECIES_PERK_DESC = "Вульпкане лучше слышат, но более чувствительны к громким звукам, например, светошумовым гранатам.", + ), + list( + SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, + SPECIES_PERK_ICON = "fire-alt", + SPECIES_PERK_NAME = "Быстрый метаболизм", + SPECIES_PERK_DESC = "Вульпкане быстрее тратят полезные вещества и проголадываются", + ), + ) + + return to_add + /datum/species/vulpkanin/handle_mutant_bodyparts(mob/living/carbon/human/source, forced_colour) var/list/bodyparts_to_add = mutant_bodyparts.Copy() var/list/relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) diff --git a/modular_bandastation/species/code/surgery/organs/internal/vulpkanin_internal.dm b/modular_bandastation/species/code/surgery/organs/internal/vulpkanin_internal.dm index d718440f76ab6d2..a883e6c9040aa60 100644 --- a/modular_bandastation/species/code/surgery/organs/internal/vulpkanin_internal.dm +++ b/modular_bandastation/species/code/surgery/organs/internal/vulpkanin_internal.dm @@ -6,7 +6,8 @@ modifies_speech = FALSE languages_native = list(/datum/language/canilunzt) liked_foodtypes = RAW | MEAT | SEAFOOD - disliked_foodtypes = VEGETABLES | GRAIN | FRUIT | JUNKFOOD | GORE + disliked_foodtypes = DAIRY | NUTS | GROSS + toxic_foodtypes = GRAIN | SUGAR | TOXIC /obj/item/organ/internal/tongue/vulpkanin/get_possible_languages() return ..() + /datum/language/canilunzt @@ -23,6 +24,18 @@ name = "vulpkanin eyeballs" icon = 'modular_bandastation/species/icons/mob/species/vulpkanin/organs.dmi' +/obj/item/organ/internal/ears/vulpkanin + desc = "Большие ушки позволяют легче слышать шепот" + damage_multiplier = 2 + +/obj/item/organ/internal/ears/vulpkanin/on_mob_insert(mob/living/carbon/ear_owner) + . = ..() + ADD_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) + +/obj/item/organ/internal/ears/vulpkanin/on_mob_remove(mob/living/carbon/ear_owner) + . = ..() + REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT) + /obj/item/organ/internal/heart/vulpkanin name = "vulpkanin heart" icon = 'modular_bandastation/species/icons/mob/species/vulpkanin/organs.dmi'