From 6e25ad7c350348f490824fedb9a1b25168e9bf94 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 04:20:21 +0200 Subject: [PATCH 01/21] fuck skyrat code --- code/__DEFINES/~~~splurt_defines/DNA.dm | 4 + code/__DEFINES/~~~splurt_defines/mobs.dm | 1 + code/__HELPERS/~splurt_helpers/mob.dm | 14 ++ config/game_options.txt | 3 + .../customization/_globalvars/lists.dm | 3 +- .../code/_globalvars/_OVERRIDES.dm | 5 + .../client/preferences/mutant_parts.dm | 74 +++++++ .../code/modules/language/_language_holder.dm | 10 + .../code/modules/language/buzzwords.dm | 2 + .../code/modules/species/_species.dm | 2 + .../code/modules/species/arachnid.dm | 184 ++++++++++++++++++ .../code/modules/species/teshari.dm | 70 +++++++ modular_zzplurt/code/modules/species/xeno.dm | 131 +++++++++++++ .../modules/sprite_accessories/arachnid.dm | 85 ++++++++ .../bodyparts/species_parts/arachnid_parts.dm | 59 ++++++ .../surgery/organs/external/arachnid.dm | 88 +++++++++ .../surgery/organs/internal/eyes/_eyes.dm | 8 + .../surgery/organs/internal/tongue/_tongue.dm | 20 ++ modular_zzplurt/icons/hud/actions.dmi | Bin 0 -> 2916 bytes .../icons/mob/augmentation/spectre.dmi | Bin 0 -> 2682 bytes modular_zzplurt/icons/mob/human/bodyparts.dmi | Bin 0 -> 1240 bytes .../icons/mob/human/species/arachnid_misc.dmi | Bin 0 -> 7299 bytes .../icons/obj/medical/organs/organs.dmi | 0 strings/names/spider_first.txt | 30 +++ strings/names/spider_last.txt | 30 +++ tgstation.dme | 17 ++ .../skyrat/species_features.tsx | 62 ++++++ 27 files changed, 901 insertions(+), 1 deletion(-) create mode 100644 code/__DEFINES/~~~splurt_defines/DNA.dm create mode 100644 code/__DEFINES/~~~splurt_defines/mobs.dm create mode 100644 modular_zzplurt/code/_globalvars/_OVERRIDES.dm create mode 100644 modular_zzplurt/code/modules/client/preferences/mutant_parts.dm create mode 100644 modular_zzplurt/code/modules/language/_language_holder.dm create mode 100644 modular_zzplurt/code/modules/language/buzzwords.dm create mode 100644 modular_zzplurt/code/modules/species/_species.dm create mode 100644 modular_zzplurt/code/modules/species/arachnid.dm create mode 100644 modular_zzplurt/code/modules/species/teshari.dm create mode 100644 modular_zzplurt/code/modules/species/xeno.dm create mode 100644 modular_zzplurt/code/modules/sprite_accessories/arachnid.dm create mode 100644 modular_zzplurt/code/modules/surgery/bodyparts/species_parts/arachnid_parts.dm create mode 100644 modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm create mode 100644 modular_zzplurt/code/modules/surgery/organs/internal/eyes/_eyes.dm create mode 100644 modular_zzplurt/code/modules/surgery/organs/internal/tongue/_tongue.dm create mode 100644 modular_zzplurt/icons/hud/actions.dmi create mode 100644 modular_zzplurt/icons/mob/augmentation/spectre.dmi create mode 100644 modular_zzplurt/icons/mob/human/bodyparts.dmi create mode 100644 modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi create mode 100644 modular_zzplurt/icons/obj/medical/organs/organs.dmi create mode 100644 strings/names/spider_first.txt create mode 100644 strings/names/spider_last.txt diff --git a/code/__DEFINES/~~~splurt_defines/DNA.dm b/code/__DEFINES/~~~splurt_defines/DNA.dm new file mode 100644 index 0000000000000..5f6e5f3bfe859 --- /dev/null +++ b/code/__DEFINES/~~~splurt_defines/DNA.dm @@ -0,0 +1,4 @@ +///arachnid organ slots +#define ORGAN_SLOT_EXTERNAL_MANDIBLES "mandibles" +#define ORGAN_SLOT_EXTERNAL_SPINNERET "spinneret" +#define ORGAN_SLOT_EXTERNAL_SPIDER_LEGS "spider_legs" diff --git a/code/__DEFINES/~~~splurt_defines/mobs.dm b/code/__DEFINES/~~~splurt_defines/mobs.dm new file mode 100644 index 0000000000000..262a1f973114c --- /dev/null +++ b/code/__DEFINES/~~~splurt_defines/mobs.dm @@ -0,0 +1 @@ +#define SPECIES_ARACHNID "arachnid" diff --git a/code/__HELPERS/~splurt_helpers/mob.dm b/code/__HELPERS/~splurt_helpers/mob.dm index 5c4e5141b4ff0..a41e771c17072 100644 --- a/code/__HELPERS/~splurt_helpers/mob.dm +++ b/code/__HELPERS/~splurt_helpers/mob.dm @@ -1,3 +1,17 @@ +GLOBAL_LIST_INIT(arachnid_first, world.file2list("strings/names/arachnid_first.txt")) +GLOBAL_LIST_INIT(arachnid_last, world.file2list("strings/names/arachnid_last.txt")) + +/proc/random_unique_arachnid_name(attempts_to_find_unique_name=10) + for(var/i in 1 to attempts_to_find_unique_name) + . = capitalize(pick(GLOB.arachnid_first)) + " " + capitalize(pick(GLOB.arachnid_last)) + + if(!findname(.)) + break + +/proc/arachnid_name() + return "[pick(GLOB.arachnid_first)] [pick(GLOB.arachnid_last)]" + + /proc/resolve_intent_name(intent) switch(intent) if(INTENT_HELP) diff --git a/config/game_options.txt b/config/game_options.txt index 11a1b15d54497..ea5a9543afb12 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -415,6 +415,9 @@ ROUNDSTART_RACES shadekin ROUNDSTART_RACES lesser_abductor ROUNDSTART_RACES zombie +## SPLURT BANDWAGON DOWN HERE +ROUNDSTART_RACES arachnid + ##------------------------------------------------------------------------------------------- ## Roundstart no-reset races diff --git a/modular_skyrat/modules/customization/_globalvars/lists.dm b/modular_skyrat/modules/customization/_globalvars/lists.dm index 4c3e57bdc8c48..2dc30fad97dd3 100644 --- a/modular_skyrat/modules/customization/_globalvars/lists.dm +++ b/modular_skyrat/modules/customization/_globalvars/lists.dm @@ -94,7 +94,8 @@ GLOBAL_LIST_INIT(robotic_styles_list, list( "Xion Manufacturing Group" = 'modular_skyrat/master_files/icons/mob/augmentation/xmgipc.dmi', "Xion Manufacturing Group 2.0" = 'modular_skyrat/master_files/icons/mob/augmentation/xm2ipc.dmi', "Zeng-Hu Pharmaceuticals" = 'modular_skyrat/master_files/icons/mob/augmentation/zhpipc.dmi', - "Mariinsky Ballet Company" = 'modular_skyrat/master_files/icons/mob/augmentation/mariinskyipc.dmi' //Bubber Edit - It wouldn't let me make a modular file. I tried. I really tried. + "Mariinsky Ballet Company" = 'modular_skyrat/master_files/icons/mob/augmentation/mariinskyipc.dmi', //Bubber Edit - It wouldn't let me make a modular file. I tried. I really tried. + "BDR-01 Spectre" = 'modular_zzplurt/icons/mob/augmentation/spectre.dmi' )) //ghoul colors diff --git a/modular_zzplurt/code/_globalvars/_OVERRIDES.dm b/modular_zzplurt/code/_globalvars/_OVERRIDES.dm new file mode 100644 index 0000000000000..9eb725e40c5a1 --- /dev/null +++ b/modular_zzplurt/code/_globalvars/_OVERRIDES.dm @@ -0,0 +1,5 @@ +// >It wouldn't let me make a modular file. I tried. I really tried. +// you didnt try hard enough nevi +/datum/controller/global_vars/InitGlobalrobotic_styles_list() + . = ..() + robotic_styles_list["BDR-01 Spectre"] = 'modular_zzplurt/icons/mob/augmentation/spectre.dmi' diff --git a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm new file mode 100644 index 0000000000000..c0cef0c02c113 --- /dev/null +++ b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm @@ -0,0 +1,74 @@ +/datum/preference/toggle/mutant_toggle/mandibles + savefile_key = "mandibles_toggle" + relevant_mutant_bodypart = "mandibles" + +/* +//ive been sitting at this shit for a literal day +//if you care to figure out how to make these appear for arachnids, be my guest +//i dont +/datum/preference/toggle/mutant_toggle/mandibles/is_accessible(datum/preferences/preferences) + SHOULD_CALL_PARENT(FALSE) + return preferences.read_preference(/datum/preference/choiced/species) == /datum/species/arachnid || preferences.read_preference(/datum/preference/toggle/allow_mismatched_parts) +*/ + +/datum/preference/choiced/mutant_choice/mandibles + savefile_key = "feature_mandibles" + relevant_mutant_bodypart = "mandibles" + type_to_check = /datum/preference/toggle/mutant_toggle/mandibles + default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none + +/datum/preference/color/mutant/mandibles_color + savefile_key = "mandibles_color" + relevant_mutant_bodypart = "mandibles" + category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES + savefile_identifier = PREFERENCE_CHARACTER + + + +/datum/preference/toggle/mutant_toggle/spinneret + savefile_key = "spinneret_toggle" + relevant_mutant_bodypart = "spinneret" + +//ditto here +/* +/datum/preference/toggle/mutant_toggle/spinneret/is_accessible(datum/preferences/preferences) + SHOULD_CALL_PARENT(FALSE) + return preferences.read_preference(/datum/preference/choiced/species) == /datum/species/arachnid || preferences.read_preference(/datum/preference/toggle/allow_mismatched_parts) +*/ + +/datum/preference/choiced/mutant_choice/spinneret + savefile_key = "feature_spinneret" + relevant_mutant_bodypart = "spinneret" + type_to_check = /datum/preference/toggle/mutant_toggle/spinneret + default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none + +/datum/preference/color/mutant/spinneret_color + category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "spinneret_color" + relevant_mutant_bodypart = "spinneret" + + + +/datum/preference/toggle/mutant_toggle/arachnid_legs + savefile_key = "arachnid_legs_toggle" + relevant_mutant_bodypart = "arachnid_legs" + +/* +//ditto here +/datum/preference/toggle/mutant_toggle/arachnid_legs/is_accessible(datum/preferences/preferences) + SHOULD_CALL_PARENT(FALSE) + return preferences.read_preference(/datum/preference/choiced/species) == /datum/species/arachnid || preferences.read_preference(/datum/preference/toggle/allow_mismatched_parts) +*/ + +/datum/preference/choiced/mutant_choice/arachnid_legs + savefile_key = "feature_arachnid_legs" + relevant_mutant_bodypart = "arachnid_legs" + type_to_check = /datum/preference/toggle/mutant_toggle/arachnid_legs + default_accessory_type = /datum/sprite_accessory/arachnid_legs/none + +/datum/preference/color/mutant/arachnid_legs_color + category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "arachnid_legs_color" + relevant_mutant_bodypart = "arachnid_legs" diff --git a/modular_zzplurt/code/modules/language/_language_holder.dm b/modular_zzplurt/code/modules/language/_language_holder.dm new file mode 100644 index 0000000000000..82cd99987f7af --- /dev/null +++ b/modular_zzplurt/code/modules/language/_language_holder.dm @@ -0,0 +1,10 @@ + +/datum/language_holder/arachnid + understood_languages = list( + /datum/language/common = list(LANGUAGE_ATOM), + /datum/language/buzzwords = list(LANGUAGE_ATOM) + ) + spoken_languages = list( + /datum/language/common = list(LANGUAGE_ATOM), + /datum/language/buzzwords = list(LANGUAGE_ATOM) + ) diff --git a/modular_zzplurt/code/modules/language/buzzwords.dm b/modular_zzplurt/code/modules/language/buzzwords.dm new file mode 100644 index 0000000000000..c7810aedd1ac1 --- /dev/null +++ b/modular_zzplurt/code/modules/language/buzzwords.dm @@ -0,0 +1,2 @@ +/datum/language/buzzwords/get_random_name(gender = NEUTER, name_count = default_name_count, syllable_min = default_name_syllable_min, syllable_max = default_name_syllable_max, force_use_syllables = FALSE) + return "[pick(GLOB.arachnid_first)][random_name_spacer][pick(GLOB.arachnid_last)]" diff --git a/modular_zzplurt/code/modules/species/_species.dm b/modular_zzplurt/code/modules/species/_species.dm new file mode 100644 index 0000000000000..8bdd9e5ea8ade --- /dev/null +++ b/modular_zzplurt/code/modules/species/_species.dm @@ -0,0 +1,2 @@ +/mob/living/carbon/human/species/arachnid + race = /datum/species/arachnid diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm new file mode 100644 index 0000000000000..51a7d2e912676 --- /dev/null +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -0,0 +1,184 @@ +/datum/species/arachnid + name = "Arachnid" + id = SPECIES_ARACHNID + inherent_traits = list( + TRAIT_NO_UNDERWEAR, + TRAIT_WEB_SURFER, + TRAIT_WEB_WEAVER, + ) + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/arachnid, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/arachnid, + BODY_ZONE_HEAD = /obj/item/bodypart/head/arachnid, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/arachnid, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/arachnid, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/arachnid + ) + mutanteyes = /obj/item/organ/internal/eyes/night_vision/arachnid + mutanttongue = /obj/item/organ/internal/tongue/arachnid + + say_mod = "chitters" + inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG + external_organs = list( + /obj/item/organ/external/mandibles = "None", + /obj/item/organ/external/spinneret = "None", + /obj/item/organ/external/arachnid_legs = "None", + ) + meat = /obj/item/food/meat/slab/spider + species_language_holder = /datum/language_holder/arachnid + +//this took WAYYYY too long to find +//i hate this place +/datum/species/arachnid/get_default_mutant_bodyparts() + return list( + "mandibles" = list("None", TRUE), + "spinneret" = list("None", TRUE), + "arachnid_legs" = list("None", TRUE), + ) + +/datum/species/arachnid/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) + . = ..() + RegisterSignal(human_who_gained_species, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness)) + +/datum/species/arachnid/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) + . = ..() + UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS) + +/datum/species/arachnid/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) + SIGNAL_HANDLER + + if(istype(attacking_item, /obj/item/melee/flyswatter)) + damage_mods += 10 // 10x damage modifier, little less than flypeople + +/datum/species/arachnid/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) + . = ..() + var/datum/action/innate/arachnid/spin_web/spin_web = new + var/datum/action/innate/arachnid/spin_cocoon/spin_cocoon = new + spin_web.Grant(H) + spin_cocoon.Grant(H) + +/datum/species/arachnid/on_species_loss(mob/living/carbon/human/H) + . = ..() + var/datum/action/innate/arachnid/spin_web/spin_web = locate() in H.actions + var/datum/action/innate/arachnid/spin_cocoon/spin_cocoon = locate() in H.actions + spin_web?.Remove(H) + spin_cocoon?.Remove(H) + + +#define WEB_SPIN_NUTRITION_LOSS 25 +#define COCOON_NUTRITION_LOSS 100 + +/datum/action/innate/arachnid + check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED|AB_CHECK_CONSCIOUS + button_icon = 'icons/mob/actions/actions_animal.dmi' + +/datum/action/innate/arachnid/IsAvailable(feedback) + . = ..() + if(!.) + return + + if(owner.has_status_effect(/datum/status_effect/web_cooldown)) + if(feedback) + to_chat(owner, span_warning("You need to wait a while to regenerate web fluid.")) + return FALSE + +/datum/action/innate/arachnid/Activate() + . = ..() + if(.) + var/mob/living/owner = src.owner + owner.apply_status_effect(/datum/status_effect/web_cooldown) + + +/datum/action/innate/arachnid/spin_web + name = "Spin Web" + button_icon_state = "spider_web" + +/datum/action/innate/spin_web/Activate() + if(owner.nutrition < WEB_SPIN_NUTRITION_LOSS) + to_chat(owner, span_warning("You're too hungry to spin web right now, eat something first!")) + return FALSE + + var/turf/target_turf = get_turf(owner) + if(!target_turf) + to_chat(owner, span_warning("There's no room to spin your web here!")) + return FALSE + + if(locate(/obj/structure/spider/stickyweb) in target_turf) + to_chat(owner, span_warning("There's already a web here!")) + return FALSE + + // Should have some minimum amount of food before trying to activate + to_chat(owner, "You begin spinning some web...") + if(!do_after(owner, 10 SECONDS, target_turf)) + to_chat(owner, span_warning("Your web spinning was interrupted!")) + return FALSE + + if(!IsAvailable(TRUE)) + return FALSE + + owner.adjust_nutrition(-WEB_SPIN_NUTRITION_LOSS) + to_chat(owner, "You use up a fair amount of energy weaving a web on the ground with your spinneret!") + new /obj/structure/spider/stickyweb(target_turf, owner) + return TRUE + + +/datum/action/innate/arachnid/spin_cocoon + name = "Spin Cocoon" + button_icon_state = "wrap_0" + enable_text = "You pull out a strand from your spinneret, ready to wrap a target.." + disable_text = "You discard the strand." + +/datum/action/innate/arachnid/spin_cocoon/set_ranged_ability(mob/living/on_who, text_to_show) + if(owner.nutrition < COCOON_NUTRITION_LOSS) + to_chat(owner, span_warning("You're too hungry to spin web right now, eat something first!")) + return FALSE + + owner.adjust_nutrition(-COCOON_NUTRITION_LOSS * 0.25) + return ..() + +/datum/action/innate/arachnid/spin_cocoon/do_ability(mob/living/caller, atom/movable/clicked_on) + if(!caller.Adjacent(clicked_on) || !istype(clicked_on)) + return FALSE + + . = TRUE + var/static/list/blacklisted_types + blacklisted_types ||= typecacheof(list( + /obj/effect, //no + /obj/structure/spider, //mmm double dips + /atom/movable/screen //??? + )) + if(is_type_in_typecache(clicked_on, blacklisted_types)) + to_chat(caller, span_warning("You cannot wrap this.")) + return FALSE + + if(!isliving(clicked_on) && clicked_on.anchored) + to_chat(caller, span_warning("[clicked_on] is bolted to the floor!")) + return + + caller.visible_message( + span_danger("[caller] starts to wrap [clicked_on] into a cocoon!"), + span_warning("You start to wrap [clicked_on] into a cocoon.") + ) + + caller.apply_status_effect(/datum/status_effect/web_cooldown) + if(!do_after(caller, 10 SECONDS, clicked_on)) + to_chat(caller, span_warning("Your web spinning was interrupted!")) + return + + caller.adjust_nutrition(-COCOON_NUTRITION_LOSS * 0.75) + var/obj/structure/spider/cocoon/casing = new(clicked_on.loc) + + clicked_on.forceMove(casing) + if(clicked_on.density || ismob(clicked_on)) + caller.visible_message(span_danger("[caller] wraps [clicked_on] into a large cocoon!")) + casing.icon_state = pick("cocoon_large1", "cocoon_large2", "cocoon_large3") + else + caller.visible_message(span_danger("[caller] wraps [clicked_on] into a cocoon!")) + + +/datum/status_effect/web_cooldown + duration = 20 SECONDS + alert_type = null + remove_on_fullheal = TRUE + +#undef WEB_SPIN_NUTRITION_LOSS diff --git a/modular_zzplurt/code/modules/species/teshari.dm b/modular_zzplurt/code/modules/species/teshari.dm new file mode 100644 index 0000000000000..8ee2fbbfa3558 --- /dev/null +++ b/modular_zzplurt/code/modules/species/teshari.dm @@ -0,0 +1,70 @@ +/datum/species/teshari + +/datum/species/teshari/on_species_gain(mob/living/carbon/human/new_teshari, datum/species/old_species, pref_load) + . = ..() + var/datum/action/cooldown/sonar_ping/sonar_ping = new(new_teshari) + sonar_ping.Grant(new_teshari) + + new_teshari.setMaxHealth(50) + new_teshari.physiology.hunger_mod *= 2 + new_teshari.add_movespeed_modifier(/datum/movespeed_modifier/teshari) + + +/datum/movespeed_modifier/teshari + multiplicative_slowdown = -0.2 + + +/datum/action/cooldown/sonar_ping + name = "Listen In" + desc = "Allows you to listen in to movement and noises around you." + button_icon = 'icons/obj/medical/organs/organs.dmi' + button_icon_state = "ears" + cooldown_time = 10 SECONDS + +/datum/action/cooldown/sonar_ping/IsAvailable(feedback) + var/mob/living/carbon/owner = src.owner + return ..() && owner.can_hear() + + +/datum/action/cooldown/sonar_ping/Activate(atom/target) + var/heard_something = FALSE + to_chat(src, span_notice("You take a moment to listen in to your environment...")) + for(var/mob/living/living in range(owner.client?.view, owner)) + if(living == owner || living.stat == DEAD) + continue + + var/turf/source_turf = get_turf(living) + if(!source_turf) + continue + + var/feedback = list() + feedback += "There are noises of movement " + var/direction = get_dir(src, living) + if(direction) + feedback += "towards the [dir2text(direction)], " + switch(get_dist(src, living) / 7) + if(0 to 0.2) + feedback += "very close by." + if(0.2 to 0.4) + feedback += "close by." + if(0.4 to 0.6) + feedback += "some distance away." + if(0.6 to 0.8) + feedback += "further away." + else + feedback += "far away." + else // No need to check distance if they're standing right on-top of us + feedback += "right on top of you." + + heard_something = TRUE + to_chat(src, span_notice(jointext(feedback, null))) + + if(!heard_something) + to_chat(src, "You hear no movement but your own.") + + StartCooldown() + return TRUE + + + + diff --git a/modular_zzplurt/code/modules/species/xeno.dm b/modular_zzplurt/code/modules/species/xeno.dm new file mode 100644 index 0000000000000..9479cd979df11 --- /dev/null +++ b/modular_zzplurt/code/modules/species/xeno.dm @@ -0,0 +1,131 @@ +/datum/species/xeno + +/datum/species/xeno/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) + . = ..() + var/datum/action/innate/reconstitute_form/reconstitute_form = new(human_who_gained_species) //shit ahh var name + reconstitute_form.Grant(human_who_gained_species) + + + // C.verbs += /mob/living/carbon/human/proc/reconstitute_form + // C.verbs += /mob/living/carbon/human/proc/sonar_ping + // C.verbs += /mob/living/carbon/human/proc/tie_hair + human_who_gained_species.add_movespeed_modifier(/datum/movespeed_modifier/xenochimera) + +/datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) + . = ..() + var/datum/action/innate/reconstitute_form/reconstitute_form = locate() in C.actions // (for the record, "C" isnt better) + qdel(reconstitute_form) + + C.remove_movespeed_modifier(/datum/movespeed_modifier/xenochimera) + + + +/datum/movespeed_modifier/xenochimera + multiplicative_slowdown = -0.1 + + +#define ACTION_STATE_STANDBY 0 +#define ACTION_STATE_REGENERATING 1 +#define ACTION_STATE_HATCH 2 + +/datum/action/innate/reconstitute_form + name = "Reconstitute Form" + button_icon = 'modular_zzplurt/icons/hud/actions.dmi' + button_icon_state = "stasis" + var/action_state = ACTION_STATE_STANDBY + var/revive_timer = 0 + COOLDOWN_DECLARE(revive_cd) + +/datum/action/innate/reconstitute_form/Trigger(trigger_flags) + if(!..()) + return FALSE + + var/mob/living/carbon/human/owner = src.owner + switch(action_state) + if(ACTION_STATE_STANDBY) + if(!COOLDOWN_FINISHED(src, revive_cd)) + to_chat(owner, "You can't use that ability again so soon!") + return FALSE + + var/time = min(15 MINUTES, (2 MINUTES + 13 MINUTES / (1 + owner.nutrition / 100))) //weird vore formula, mildly cleaned up + var/alert = "Are you sure you want to completely reconstruct your form? This process can take up to fifteen minutes, depending on how hungry you are, and you will be unable to move." + + if(owner.stat == DEAD) + alert = "Are you sure you want to regenerate your corpse? This process can take up to thirty minutes." + else if(owner.health >= owner.maxHealth) + alert = "Are you sure you want to regenerate? As you are uninjured this will only take thirty seconds and match your appearance to your character slot." + time = 30 SECONDS + + if(tgui_alert(owner, alert, "Confirm Regeneration", list("Yes", "No")) != "Yes") + return FALSE + + to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.") + revive_timer = addtimer(CALLBACK(src, PROC_REF(ready_revive)), time, TIMER_UNIQUE | TIMER_STOPPABLE) + if(owner.stat == DEAD) + RegisterSignal(owner, COMSIG_LIVING_REVIVE, PROC_REF(on_revive)) + + action_state = ACTION_STATE_REGENERATING + button_icon_state = "regenerating" + build_all_button_icons() + return TRUE + + if(ACTION_STATE_REGENERATING) + to_chat(owner, span_warning("You are already reconstructing, wait [DisplayTimeText(COOLDOWN_TIMELEFT(src, revive_cd))] for the reconstruction to finish!")) + return FALSE + + if(ACTION_STATE_HATCH) + var/alert = "Are you sure you want to hatch right now? This will be very obvious to anyone in view." + if(tgui_alert(owner, alert, "Confirm Regeneration", list("Yes", "No")) != "Yes") + return FALSE + + var/revived = owner.stat == DEAD + var/result_nutrition = owner.nutrition * 0.9 + + to_chat(owner, span_notice("Your new body awakens, bursting free from your old skin.")) + owner.revive(HEAL_ALL) //i mean + + if(!revived || owner.health < owner.maxHealth) + result_nutrition = owner.nutrition * 0.5 + for(var/obj/item/wielded in owner) + owner.dropItemToGround(wielded, force = TRUE, silent = TRUE) + + new /obj/effect/gibspawner/human(get_turf(owner), owner) + owner.visible_message(span_danger("

The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.

")) //Bloody hell... + + owner.nutrition = result_nutrition + COOLDOWN_START(src, revive_cd, 10 MINUTES) + + var/post_revive_message = revived ? "The former corpse staggers to its feet, all its former wounds having vanished..." : "[owner] rises to [owner.p_their()] feet." + + owner.visible_message(post_revive_message) + + action_state = ACTION_STATE_STANDBY + button_icon_state = "stasis" + build_all_button_icons() + COOLDOWN_START(src, revive_cd, 10 MINUTES) + return TRUE + +/datum/action/innate/reconstitute_form/proc/on_revive(mob/living/source, full_heal_flags) + SIGNAL_HANDLER + + if(revive_timer) + deltimer(revive_timer) + revive_timer = 0 + + to_chat(owner, span_notice("Your body has recovered from its ordeal, ready to regenerate itself again.")) + UnregisterSignal(owner, COMSIG_LIVING_REVIVE) + action_state = ACTION_STATE_STANDBY + +/datum/action/innate/reconstitute_form/proc/ready_revive() + to_chat(src, span_notice("Consciousness begins to stir as your new body awakens, ready to hatch.")) + + revive_timer = 0 + action_state = ACTION_STATE_HATCH + button_icon_state = "hatch_ready" + build_all_button_icons() + + + +#undef ACTION_STATE_STANDBY +#undef ACTION_STATE_REGENERATING +#undef ACTION_STATE_HATCH diff --git a/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm b/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm new file mode 100644 index 0000000000000..fbbdc2255ebac --- /dev/null +++ b/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm @@ -0,0 +1,85 @@ +/datum/sprite_accessory/arachnid_legs + key = "arachnid_legs" + generic = "Arachnid Legs" + default_color = DEFAULT_SECONDARY + relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + genetic = TRUE + organ_type = /obj/item/organ/external/arachnid_legs + recommended_species = list(SPECIES_ARACHNID) + + icon = 'modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi' + +/datum/sprite_accessory/arachnid_legs/none + name = "None" + icon_state = "none" + factual = FALSE + +/datum/sprite_accessory/arachnid_legs/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/arachnid_legs/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/arachnid_legs/spiky + name = "Spiky" + icon_state = "spiky" + + +/datum/sprite_accessory/arachnid_spinneret + key = "spinneret" + generic = "Spinneret" + default_color = DEFAULT_PRIMARY + relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + genetic = TRUE + organ_type = /obj/item/organ/external/spinneret + recommended_species = list(SPECIES_ARACHNID) + + icon = 'modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi' + +/datum/sprite_accessory/arachnid_spinneret/none + name = "None" + icon_state = "none" + factual = FALSE + +/datum/sprite_accessory/arachnid_spinneret/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/arachnid_spinneret/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/arachnid_spinneret/black_widow + name = "Black Widow" + icon_state = "blackwidow" + + +/datum/sprite_accessory/arachnid_mandibles + key = "mandibles" + generic = "Mandibles" + default_color = DEFAULT_SECONDARY + relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) + genetic = TRUE + organ_type = /obj/item/organ/external/mandibles + recommended_species = list(SPECIES_ARACHNID) + + icon = 'modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi' + +/datum/sprite_accessory/arachnid_mandibles/none + name = "None" + icon_state = "none" + factual = FALSE + +/datum/sprite_accessory/arachnid_mandibles/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/arachnid_mandibles/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/arachnid_mandibles/spiky + name = "Spiky" + icon_state = "spiky" diff --git a/modular_zzplurt/code/modules/surgery/bodyparts/species_parts/arachnid_parts.dm b/modular_zzplurt/code/modules/surgery/bodyparts/species_parts/arachnid_parts.dm new file mode 100644 index 0000000000000..2c1bd5eac330b --- /dev/null +++ b/modular_zzplurt/code/modules/surgery/bodyparts/species_parts/arachnid_parts.dm @@ -0,0 +1,59 @@ +/obj/item/bodypart/arm/left/arachnid + limb_id = SPECIES_ARACHNID + icon_static = 'modular_zzplurt/icons/mob/human/bodyparts.dmi' + is_dimorphic = FALSE + brute_modifier = 1.1 + biological_state = BIO_FLESH_BONE + should_draw_greyscale = FALSE + + unarmed_attack_verbs = list("slash", "scratch", "claw") + unarmed_attack_sound = 'sound/weapons/slash.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + +/obj/item/bodypart/arm/right/arachnid + limb_id = SPECIES_ARACHNID + icon_static = 'modular_zzplurt/icons/mob/human/bodyparts.dmi' + is_dimorphic = FALSE + brute_modifier = 1.1 + biological_state = BIO_FLESH_BONE + should_draw_greyscale = FALSE + + unarmed_attack_verbs = list("slash", "scratch", "claw") + unarmed_attack_sound = 'sound/weapons/slash.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + +/obj/item/bodypart/leg/left/arachnid + limb_id = SPECIES_ARACHNID + icon_static = 'modular_zzplurt/icons/mob/human/bodyparts.dmi' + is_dimorphic = FALSE + brute_modifier = 1.1 + biological_state = BIO_FLESH_BONE + should_draw_greyscale = FALSE + +/obj/item/bodypart/leg/right/arachnid + limb_id = SPECIES_ARACHNID + icon_static = 'modular_zzplurt/icons/mob/human/bodyparts.dmi' + is_dimorphic = FALSE + brute_modifier = 1.1 + biological_state = BIO_FLESH_BONE + should_draw_greyscale = FALSE + +/obj/item/bodypart/chest/arachnid + limb_id = SPECIES_ARACHNID + icon_static = 'modular_zzplurt/icons/mob/human/bodyparts.dmi' + is_dimorphic = TRUE + brute_modifier = 1.1 + biological_state = BIO_FLESH_BONE + ///Arachnids' phylum is arthropods, which include butterflies. Might as well hit them with moth wings. + wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra) + should_draw_greyscale = FALSE + +/obj/item/bodypart/head/arachnid + limb_id = SPECIES_ARACHNID + icon_static = 'modular_zzplurt/icons/mob/human/bodyparts.dmi' + is_dimorphic = TRUE + biological_state = BIO_FLESH_BONE + brute_modifier = 1.1 + should_draw_greyscale = FALSE + + head_flags = HEAD_LIPS|HEAD_DEBRAIN diff --git a/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm b/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm new file mode 100644 index 0000000000000..344ec76166730 --- /dev/null +++ b/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm @@ -0,0 +1,88 @@ +/obj/item/organ/external/mandibles + name = "mandibles" + desc = "Fancy lips for those who think they're above having lips." + icon = 'modular_zzplurt/icons/obj/medical/organs/organs.dmi' + icon_state = "mandibles" + + preference = "feature_mandibles" + mutantpart_key = "spinneret" //this shit took me way too fucking long to find + mutantpart_info = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) //fuck azarak + + zone = BODY_ZONE_HEAD + slot = ORGAN_SLOT_EXTERNAL_MANDIBLES + + restyle_flags = EXTERNAL_RESTYLE_ENAMEL + + bodypart_overlay = /datum/bodypart_overlay/mutant/mandibles + +/datum/bodypart_overlay/mutant/mandibles + layers = EXTERNAL_FRONT|EXTERNAL_ADJACENT + feature_key = "mandibles" + +/datum/bodypart_overlay/mutant/mandibles/can_draw_on_bodypart(mob/living/carbon/human/human) + if(human.head?.flags_inv & HIDESNOUT) + return FALSE + return TRUE + +/datum/bodypart_overlay/mutant/mandibles/get_global_feature_list() + return SSaccessories.sprite_accessories["mandibles"] + + +/obj/item/organ/external/spinneret + name = "spinneret" + desc = "This is where your icecream comes from." + icon = 'modular_zzplurt/icons/obj/medical/organs/organs.dmi' + icon_state = "spinneret" + preference = "feature_spinneret" + + mutantpart_key = "spinneret" + mutantpart_info = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) + + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_EXTERNAL_SPINNERET + + restyle_flags = EXTERNAL_RESTYLE_FLESH + + bodypart_overlay = /datum/bodypart_overlay/mutant/spinneret + +/datum/bodypart_overlay/mutant/spinneret + layers = ALL_EXTERNAL_OVERLAYS + feature_key = "spinneret" + +/datum/bodypart_overlay/mutant/spinneret/can_draw_on_bodypart(mob/living/carbon/human/human) + if((human.w_uniform?.flags_inv | human.wear_suit?.flags_inv) & HIDEMUTWINGS) //sure ig + return FALSE + return TRUE + +/datum/bodypart_overlay/mutant/spinneret/get_global_feature_list() + return SSaccessories.sprite_accessories["spinneret"] + + +/obj/item/organ/external/arachnid_legs + name = "spider legs" + desc = "Objectively inferior to regular legs." //idk i suck at descs + icon = 'modular_zzplurt/icons/obj/medical/organs/organs.dmi' + icon_state = "spider_legs" + preference = "feature_arachnid_legs" + + mutantpart_key = "spinneret" + mutantpart_info = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) + + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_EXTERNAL_SPIDER_LEGS + + restyle_flags = EXTERNAL_RESTYLE_FLESH + + bodypart_overlay = /datum/bodypart_overlay/mutant/arachnid_legs + +/datum/bodypart_overlay/mutant/arachnid_legs + layers = ALL_EXTERNAL_OVERLAYS + feature_key = "arachnid_legs" + +/datum/bodypart_overlay/mutant/arachnid_legs/can_draw_on_bodypart(mob/living/carbon/human/human) + if((human.w_uniform?.flags_inv | human.wear_suit?.flags_inv) & HIDEMUTWINGS) //sure ig + return FALSE + return TRUE + +/datum/bodypart_overlay/mutant/arachnid_legs/get_global_feature_list() + return SSaccessories.sprite_accessories["arachnid_legs"] diff --git a/modular_zzplurt/code/modules/surgery/organs/internal/eyes/_eyes.dm b/modular_zzplurt/code/modules/surgery/organs/internal/eyes/_eyes.dm new file mode 100644 index 0000000000000..0eb7c6996acb0 --- /dev/null +++ b/modular_zzplurt/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -0,0 +1,8 @@ +/obj/item/organ/internal/eyes/night_vision/arachnid + name = "arachnid eyes" + desc = "These eyes seem to have increased sensitivity to bright light, offset by basic night vision." + + low_light_cutoff = list(0, 15, 20) //blatantly copied from mushy mushy + medium_light_cutoff = list(0, 20, 35) + high_light_cutoff = list(0, 40, 50) + flash_protect = FLASH_PROTECTION_SENSITIVE diff --git a/modular_zzplurt/code/modules/surgery/organs/internal/tongue/_tongue.dm b/modular_zzplurt/code/modules/surgery/organs/internal/tongue/_tongue.dm new file mode 100644 index 0000000000000..c1a0d29e25f3f --- /dev/null +++ b/modular_zzplurt/code/modules/surgery/organs/internal/tongue/_tongue.dm @@ -0,0 +1,20 @@ +/obj/item/organ/internal/tongue/arachnid + name = "inner mandible" + desc = "A set of soft, spoon-esque mandibles closer to the mouth opening, that allow for basic speech, and the ability to speak Rachnidian." + say_mod = "chitters" + liked_foodtypes = MEAT | RAW + disliked_foodtypes = FRUIT | GROSS + toxic_foodtypes = VEGETABLES | DAIRY + +/obj/item/organ/internal/tongue/arachnid/get_possible_languages() //why is that a proc tho + return list( + /datum/language/common, + /datum/language/machine, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/buzzwords, + ) diff --git a/modular_zzplurt/icons/hud/actions.dmi b/modular_zzplurt/icons/hud/actions.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4967f84d6d159597d75cb02c8d0a6b3170e2826a GIT binary patch literal 2916 zcmV-q3!C(bP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5sVFr)H7~U&u_QAuU5Se`C9|j)C~U~ZnO2mTn+jpW6=x)tBxl4I zr6#6SVpnSl6iv-ZtOQwNs$&F!2>n1tab__tYm^mS{anDF001~mIoRJ5JaPa43W-TX zK~#90?VMYvT-6!Jzd7f`B*Y{}Pwd6gV-E%tO$^o22T7b$d@59EOKiQg2C+UEyif?e z87#!!2$ZzeKG-6*wUsJVvCzH*Ga7slThWL_NEIXAGf|_4#F}K>zje+xv-X}nd#^pS zZ!@$1Fznl!`OkM<-`ex-sWlo6sZbmyiv9xQj>-T9W2)#c&=0;siVU(;GDXUHY8^+441zc+r9i6OG!9~uMTb(hI6+k&rmKW%U zzgG4#l(7DyTyORp@>BVS+;>2|PXz}r$*$@5lW(9%aODT@ zd2YbDB>Y1W0qbkW<#~BfR?GQvKpvmDSLWtCWzQn8Vpc9|5(&2OpOOo6;|D?IyYQDf z0tn+PYhRO{tvk#y3iwD4%NqHr{8#Qa-pF}85{0mj;PdA`XWsL^yej=hK_2|2kAQnx z_nPfy*}eOq=Z6U7d6`@!H^?sep%E705!}nkGj%UbpeV*&SKBNcmzlrxRS@~Nu^WQ3gv1h6WfaU5S=`?|a(&!)x?>?jEG ztMb)YF8n?N1U)xQq4v4p^59(FG6)C2G&RRRL4hX;Xi?DsG^X2Bnqj*{?~dL2-&*IU%n z2y$!fHu-DoA>Tx&o`wh7q0U%p_d!>|dGL28;kWCp4R>xBi`>CjcC2yK_}1Rh3Ctr)RdnGf7<}0 z1=*Ni3UUQMaIhen7i?Z|@-oYOstldzG#xYsT>0kBU+PI%!A-G~a@_3WefETCdmTVI zqy?^}6$M%Hm;Pp)0wKe|#K-Mo&CLkUITVrRk1|>D4~+qs@K6FCM@6D}7=fQ@P5CBB zO$&H!T1LoYKx*(IPV#a51eUOiaTg^LmL<}Y0e(qEwvn(!sW6)F(W-(6jPa%7weUpD^I zMF7}T-_pY4boozCrPR}7yV9`hbFEVBDnxTKila@$B?aZlUrGav6H1qY#toGL3PxYI zqerPfzi9qM1{lTu{G$1t4UkoTd_Vlh<*1MQbUBBXl-&41TJk$pLAp5M3wVNd5i8cq zwe9ZUCuGM=T1v3_5uDbLJ@N}VOTIMynmlDXA-sL@_RV%mmd<9)4;EVDn;*#QvRppf zm;A8?2b1of4+I2Hz8;Bd;sMpHNPUrpHzOQ z6r}y}q!o_sMVAd-1L%9Q=+D(4KmzbgfeTYrAh z{Glmmoci;N<~Iho;)<(2jQdhq;DHDJc4`s4Wx^E7U%mP>g^pCZX_2XqX->@~-2on<%hQr&%9XNw`Es-E z_3Bc-2aY)(^*;NvD|FzCfH?2BmH+3x|B>&mySTkI=e@KP7YRf`g$}wRAnFBm|A@NS~u%jcdaM^7A=_x}HpES{V+*PeV~pSaEg6*@>10lcFN1^d4UO8 z4aVmMQAL0skrANY-#m8IT;IEYe|tX&&U0P&qoSZf2Tl=yVs#A=_klXDR}@qc;74Qx z1h2Uu?0r=P^oCOeko)c1&rx6;{)4 zpx26)bpe%*t`F?bh`JwCMSvfPe-8kfUQoV$?D84a9N8nbG( zT>f8mD9|#22^# O0000=kxtO=X0LVbDrmX&$;P}bdZr!mI46C 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 TjGYsIs+i$zQ~esSbL4*k)VLS@ literal 0 HcmV?d00001 diff --git a/modular_zzplurt/icons/obj/medical/organs/organs.dmi b/modular_zzplurt/icons/obj/medical/organs/organs.dmi new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/strings/names/spider_first.txt b/strings/names/spider_first.txt new file mode 100644 index 0000000000000..06fbae057ca67 --- /dev/null +++ b/strings/names/spider_first.txt @@ -0,0 +1,30 @@ +Zerzir +Lalnuth +Avisreb +Qeqarnai +Rhikkiezhith +Necaqtex +Aqi +Shozhish +Sraiza +Ranqu +Zellalshi +Necoq +Zaqod +Salaree +Xavis +Cheqirni +Nieqi +Cakirkix +Ivad +Shenqazhe +Azurte +Lizire +Ivur +Kavur +Raicheca +Iqashe +Eq'za +Sak'sad +Hiezih +Cessix \ No newline at end of file diff --git a/strings/names/spider_last.txt b/strings/names/spider_last.txt new file mode 100644 index 0000000000000..2b663f6df3aff --- /dev/null +++ b/strings/names/spider_last.txt @@ -0,0 +1,30 @@ +Ik'sir +Sechathi +Qok'sut +Yeqied +Iravhoh +Kriaqux +Yikih +Khaqa +Azasnet +Qhecid +Qhin'qu +Zhechikzor +Qhovi +Hirath +Szornud +Zasokaq +Lhaqish +Qhiretid +Avizad +Qallazi +Qhizrud +Qicirne +Sezuveth +Zelriker +Rhiallor +Zhaliesh +Qoutirk'ab +Chavi +Riel'shes +Khentax \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 38833a19ac089..0403bb952f281 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -509,9 +509,11 @@ #include "code\__DEFINES\~~bubber_defines\transport.dm" #include "code\__DEFINES\~~bubber_defines\___HELPERS\global_lists.dm" #include "code\__DEFINES\~~bubber_defines\research\techweb_nodes.dm" +#include "code\__DEFINES\~~~splurt_defines\DNA.dm" #include "code\__DEFINES\~~~splurt_defines\hud.dm" #include "code\__DEFINES\~~~splurt_defines\intents.dm" #include "code\__DEFINES\~~~splurt_defines\keybinding.dm" +#include "code\__DEFINES\~~~splurt_defines\mobs.dm" #include "code\__DEFINES\~~~splurt_defines\traits\declarations.dm" #include "code\__HELPERS\_auxtools_api.dm" #include "code\__HELPERS\_lists.dm" @@ -9206,8 +9208,11 @@ #include "modular_zubbers\master_files\code\modules\research\designs\weapon_designs.dm" #include "modular_zubbers\master_files\skyrat\modules\blueshield\code\blueshield.dm" #include "modular_zubbers\master_files\skyrat\modules\cortical_borer\code\cortical_borer_antag.dm" +#include "modular_zzplurt\code\_globalvars\_OVERRIDES.dm" +#include "modular_zzplurt\code\_globalvars\_OVERRIDES.dm" #include "modular_zubbers\master_files\skyrat\modules\opposing_force\code\opposing_force_subsystem.dm" #include "modular_zubbers\master_files\skyrat\modules\verbs\code\subtle.dm" +#include "modular_zzplurt\code\_globalvars\_OVERRIDES.dm" #include "modular_zzplurt\code\_globalvars\mobs.dm" #include "modular_zzplurt\code\controllers\configuration\entries\discord.dm" #include "modular_zzplurt\code\controllers\subsystem\discord.dm" @@ -9221,6 +9226,7 @@ #include "modular_zzplurt\code\modules\atmospherics\machinery\portable\canister.dm" #include "modular_zzplurt\code\modules\client\click.dm" #include "modular_zzplurt\code\modules\client\client_procs.dm" +#include "modular_zzplurt\code\modules\client\preferences\mutant_parts.dm" #include "modular_zzplurt\code\modules\client\preferences\player_panel.dm" #include "modular_zzplurt\code\modules\client\verbs\looc.dm" #include "modular_zzplurt\code\modules\client\verbs\ooc.dm" @@ -9228,6 +9234,8 @@ #include "modular_zzplurt\code\modules\discord\verbs.dm" #include "modular_zzplurt\code\modules\hud\_hud.dm" #include "modular_zzplurt\code\modules\hud\screen_objects.dm" +#include "modular_zzplurt\code\modules\language\_language_holder.dm" +#include "modular_zzplurt\code\modules\language\buzzwords.dm" #include "modular_zzplurt\code\modules\mob\mob.dm" #include "modular_zzplurt\code\modules\mob\mob_defines.dm" #include "modular_zzplurt\code\modules\mob\dead\new_player\new_player.dm" @@ -9236,5 +9244,14 @@ #include "modular_zzplurt\code\modules\mob\living\carbon\human\human.dm" #include "modular_zzplurt\code\modules\mob\living\carbon\human\human_defense.dm" #include "modular_zzplurt\code\modules\reagents\chemistry\machinery\chem_dispenser.dm" +#include "modular_zzplurt\code\modules\species\_species.dm" +#include "modular_zzplurt\code\modules\species\arachnid.dm" +#include "modular_zzplurt\code\modules\species\teshari.dm" +#include "modular_zzplurt\code\modules\species\xeno.dm" +#include "modular_zzplurt\code\modules\sprite_accessories\arachnid.dm" +#include "modular_zzplurt\code\modules\surgery\bodyparts\species_parts\arachnid_parts.dm" +#include "modular_zzplurt\code\modules\surgery\organs\external\arachnid.dm" +#include "modular_zzplurt\code\modules\surgery\organs\internal\eyes\_eyes.dm" +#include "modular_zzplurt\code\modules\surgery\organs\internal\tongue\_tongue.dm" #include "modular_zzplurt\code\modules\wiremod\core\integrated_circuit.dm" // END_INCLUDE diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx index effa8801bfa87..0eb5cb753cfb4 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx @@ -765,3 +765,65 @@ export const pod_hair_emissive: Feature = { description: 'Emissive parts glow in the dark.', component: CheckboxInput, }; + + + +export const mandibles_toggle: FeatureToggle = { + name: 'Mandibles', + component: CheckboxInput, +}; + +export const feature_mandibles: Feature = { + name: 'Mandible Selection', + component: ( + props: FeatureValueProps, + ) => { + return ; + }, +}; + +export const mandibles_color: Feature = { + name: 'Mandible Color', + component: FeatureColorInput, +}; + + + +export const spinneret_toggle: FeatureToggle = { + name: 'Spinneret', + component: CheckboxInput, +}; + +export const feature_spinneret: Feature = { + name: 'Spinneret Selection', + component: ( + props: FeatureValueProps, + ) => { + return ; + }, +}; + +export const spinneret_color: Feature = { + name: 'Mandible Color', + component: FeatureColorInput, +}; + + +export const arachnid_legs_toggle: FeatureToggle = { + name: 'Arachnid Legs', + component: CheckboxInput, +}; + +export const feature_arachnid_legs: Feature = { + name: 'Arachnid Leg Selection', + component: ( + props: FeatureValueProps, + ) => { + return ; + }, +}; + +export const arachnid_legs_color: Feature = { + name: 'Arachnid Leg Color', + component: FeatureColorInput, +}; From 608be80514f1e238fb75fe86caf79bf356243a21 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 04:33:36 +0200 Subject: [PATCH 02/21] a --- modular_skyrat/modules/customization/_globalvars/lists.dm | 2 +- modular_zzplurt/code/_globalvars/_OVERRIDES.dm | 5 ----- tgstation.dme | 3 --- 3 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 modular_zzplurt/code/_globalvars/_OVERRIDES.dm diff --git a/modular_skyrat/modules/customization/_globalvars/lists.dm b/modular_skyrat/modules/customization/_globalvars/lists.dm index 2dc30fad97dd3..b7cc9e8c968da 100644 --- a/modular_skyrat/modules/customization/_globalvars/lists.dm +++ b/modular_skyrat/modules/customization/_globalvars/lists.dm @@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(robotic_styles_list, list( "Xion Manufacturing Group 2.0" = 'modular_skyrat/master_files/icons/mob/augmentation/xm2ipc.dmi', "Zeng-Hu Pharmaceuticals" = 'modular_skyrat/master_files/icons/mob/augmentation/zhpipc.dmi', "Mariinsky Ballet Company" = 'modular_skyrat/master_files/icons/mob/augmentation/mariinskyipc.dmi', //Bubber Edit - It wouldn't let me make a modular file. I tried. I really tried. - "BDR-01 Spectre" = 'modular_zzplurt/icons/mob/augmentation/spectre.dmi' + "BDR-01 Spectre" = 'modular_zzplurt/icons/mob/augmentation/spectre.dmi' //splurt edit - it can be done modularly. i wont pretend otherwise. but its 4:30 am and im tired. )) //ghoul colors diff --git a/modular_zzplurt/code/_globalvars/_OVERRIDES.dm b/modular_zzplurt/code/_globalvars/_OVERRIDES.dm deleted file mode 100644 index 9eb725e40c5a1..0000000000000 --- a/modular_zzplurt/code/_globalvars/_OVERRIDES.dm +++ /dev/null @@ -1,5 +0,0 @@ -// >It wouldn't let me make a modular file. I tried. I really tried. -// you didnt try hard enough nevi -/datum/controller/global_vars/InitGlobalrobotic_styles_list() - . = ..() - robotic_styles_list["BDR-01 Spectre"] = 'modular_zzplurt/icons/mob/augmentation/spectre.dmi' diff --git a/tgstation.dme b/tgstation.dme index 0403bb952f281..31688299cd159 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9208,11 +9208,8 @@ #include "modular_zubbers\master_files\code\modules\research\designs\weapon_designs.dm" #include "modular_zubbers\master_files\skyrat\modules\blueshield\code\blueshield.dm" #include "modular_zubbers\master_files\skyrat\modules\cortical_borer\code\cortical_borer_antag.dm" -#include "modular_zzplurt\code\_globalvars\_OVERRIDES.dm" -#include "modular_zzplurt\code\_globalvars\_OVERRIDES.dm" #include "modular_zubbers\master_files\skyrat\modules\opposing_force\code\opposing_force_subsystem.dm" #include "modular_zubbers\master_files\skyrat\modules\verbs\code\subtle.dm" -#include "modular_zzplurt\code\_globalvars\_OVERRIDES.dm" #include "modular_zzplurt\code\_globalvars\mobs.dm" #include "modular_zzplurt\code\controllers\configuration\entries\discord.dm" #include "modular_zzplurt\code\controllers\subsystem\discord.dm" From 592a7ef2077494ae19d15bcaec8e1b8ed64b67a4 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 04:45:42 +0200 Subject: [PATCH 03/21] i forgot --- .../client/preferences/mutant_parts.dm | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm index c0cef0c02c113..61ecfa426b3c1 100644 --- a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm +++ b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm @@ -2,15 +2,6 @@ savefile_key = "mandibles_toggle" relevant_mutant_bodypart = "mandibles" -/* -//ive been sitting at this shit for a literal day -//if you care to figure out how to make these appear for arachnids, be my guest -//i dont -/datum/preference/toggle/mutant_toggle/mandibles/is_accessible(datum/preferences/preferences) - SHOULD_CALL_PARENT(FALSE) - return preferences.read_preference(/datum/preference/choiced/species) == /datum/species/arachnid || preferences.read_preference(/datum/preference/toggle/allow_mismatched_parts) -*/ - /datum/preference/choiced/mutant_choice/mandibles savefile_key = "feature_mandibles" relevant_mutant_bodypart = "mandibles" @@ -29,13 +20,6 @@ savefile_key = "spinneret_toggle" relevant_mutant_bodypart = "spinneret" -//ditto here -/* -/datum/preference/toggle/mutant_toggle/spinneret/is_accessible(datum/preferences/preferences) - SHOULD_CALL_PARENT(FALSE) - return preferences.read_preference(/datum/preference/choiced/species) == /datum/species/arachnid || preferences.read_preference(/datum/preference/toggle/allow_mismatched_parts) -*/ - /datum/preference/choiced/mutant_choice/spinneret savefile_key = "feature_spinneret" relevant_mutant_bodypart = "spinneret" @@ -54,13 +38,6 @@ savefile_key = "arachnid_legs_toggle" relevant_mutant_bodypart = "arachnid_legs" -/* -//ditto here -/datum/preference/toggle/mutant_toggle/arachnid_legs/is_accessible(datum/preferences/preferences) - SHOULD_CALL_PARENT(FALSE) - return preferences.read_preference(/datum/preference/choiced/species) == /datum/species/arachnid || preferences.read_preference(/datum/preference/toggle/allow_mismatched_parts) -*/ - /datum/preference/choiced/mutant_choice/arachnid_legs savefile_key = "feature_arachnid_legs" relevant_mutant_bodypart = "arachnid_legs" From 931066e1d4a5fb22baf227940cb6395a3ef2f624 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 13:11:46 +0200 Subject: [PATCH 04/21] git commit -a\nii hate thisESC:wq\n --- .../icons/obj/medical/organs/organs.dmi | Bin 0 -> 1382 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_zzplurt/icons/obj/medical/organs/organs.dmi b/modular_zzplurt/icons/obj/medical/organs/organs.dmi index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d9157e761e7a424eba7422e57215d05fae08b262 100644 GIT binary patch literal 1382 zcmb7^>pRm60LOn8nR&vLOLk()Z90fOGgNb%%M7JqoN_r6aw~?dkS*7Zh-w|ONR8%U zYm%Xw(`gGymRm%o$0ey;at$4h^ZvX!FTS78^Z5t9%#+@3dmuUx008#j+_9&2Oy5~3 zc=rwmQc`d`Vy5^8Bw@o7!^lzbNl_Qh1HeT#!9SjyytYh;|GqM5iZ?Uu?vfG&en)zc zAIE={dLmu{E@xvy8vpRHB5EPGXwzSOK@06 z-;3;7wkT$wqjuX`hLHz6uVg8cp-l=?gX+7O>az;6vsqPJa>5ynZ?UtypNfy4c{r-& zhlVrc?cahkx< zZ-m2XHwlsDgyaayTLCYgb2=!vgC7*!^@UPIPb;?XtcTv_!3#jz#2&9EhEd=wWg{^$ zcL{>F_3K@+#zbDQ7Mk{L(tj3NEV|jY1Z9$Idx=%Z4CTQ=&1YgAK5Tje2P&HnE}glr zvas~|)Ai)ftW7>%zN5WLw^(;IZ?;)AQqNt%-SCHw`6Y<~Xkh(|rPhNd;A%($H*WY| z0NVww#n{!(1fnsrO0LVKELr%(rjhAJkF&cI;JJo!@|hXO5~2IVe`;%z4b;kBo7U8H z2aVo*AGq$WWn8oWhcFnGSF)(eEIG(hwX2{P`#hJ1&>qPK>+b7*EoVzLBivN{?%}Vc z71OxSTi;xuHQ*zw8>e01W@S@Z-G71Rl-G#M^9-Qyjqd&yFf*ie^QNkCtQg&^FX9VG zTa~1|Q%G*EhYOkG?R^nIij6B@HGB{~%)3?>4)Emn%fXBsHsk zxHiW|@ujmTE0%;@F=9qOcX%ZD$Uf(L?`qX`(bzH6NH3y-F-tS z&XSsP8iBK;unF7&D_0DIP$RBiz8iVKN^k<5>!Vy9<*J|KKkgB`sT18q40;!Y3Fg%$ z{88-uf{IG&?T=`hFH|=2gAF4$K~`pQYyXAF$H=kg03$ z{jktqgzE1{sJngJMwWGj6UbJe z-`W~~mHA;NW=)T}0NX}_But_nz>_W8GZnoRj8)v^n9gzrDhfq5`y9qk0{=gLDpr7~ VE!9tJkMA5OfOGN2@|{96{sD#XdTIaw literal 0 HcmV?d00001 From 3567d79d060ba339fc87fe0e42c63b39d1663857 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 13:21:26 +0200 Subject: [PATCH 05/21] a --- modular_zzplurt/code/modules/species/arachnid.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm index 51a7d2e912676..caf945e4ae5c2 100644 --- a/modular_zzplurt/code/modules/species/arachnid.dm +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -16,6 +16,7 @@ ) mutanteyes = /obj/item/organ/internal/eyes/night_vision/arachnid mutanttongue = /obj/item/organ/internal/tongue/arachnid + changesource_flags = MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | WABBAJACK | MIRROR_BADMIN | SLIME_EXTRACT say_mod = "chitters" inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG From 08876f4356ebb6c64c101ba65698eed49ff640ff Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 13:35:54 +0200 Subject: [PATCH 06/21] gggggg --- strings/names/spider_first.txt | 30 ------------------------------ strings/names/spider_last.txt | 30 ------------------------------ 2 files changed, 60 deletions(-) delete mode 100644 strings/names/spider_first.txt delete mode 100644 strings/names/spider_last.txt diff --git a/strings/names/spider_first.txt b/strings/names/spider_first.txt deleted file mode 100644 index 06fbae057ca67..0000000000000 --- a/strings/names/spider_first.txt +++ /dev/null @@ -1,30 +0,0 @@ -Zerzir -Lalnuth -Avisreb -Qeqarnai -Rhikkiezhith -Necaqtex -Aqi -Shozhish -Sraiza -Ranqu -Zellalshi -Necoq -Zaqod -Salaree -Xavis -Cheqirni -Nieqi -Cakirkix -Ivad -Shenqazhe -Azurte -Lizire -Ivur -Kavur -Raicheca -Iqashe -Eq'za -Sak'sad -Hiezih -Cessix \ No newline at end of file diff --git a/strings/names/spider_last.txt b/strings/names/spider_last.txt deleted file mode 100644 index 2b663f6df3aff..0000000000000 --- a/strings/names/spider_last.txt +++ /dev/null @@ -1,30 +0,0 @@ -Ik'sir -Sechathi -Qok'sut -Yeqied -Iravhoh -Kriaqux -Yikih -Khaqa -Azasnet -Qhecid -Qhin'qu -Zhechikzor -Qhovi -Hirath -Szornud -Zasokaq -Lhaqish -Qhiretid -Avizad -Qallazi -Qhizrud -Qicirne -Sezuveth -Zelriker -Rhiallor -Zhaliesh -Qoutirk'ab -Chavi -Riel'shes -Khentax \ No newline at end of file From 9d2bc0e0974c3fd638a3581ce5e4a7f71470e4f8 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 14:13:23 +0200 Subject: [PATCH 07/21] git is stupid --- strings/names/arachnid_first.txt | 30 ++++++++++++++++++++++++++++++ strings/names/arachnid_last.txt | 30 ++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 strings/names/arachnid_first.txt create mode 100644 strings/names/arachnid_last.txt diff --git a/strings/names/arachnid_first.txt b/strings/names/arachnid_first.txt new file mode 100644 index 0000000000000..06fbae057ca67 --- /dev/null +++ b/strings/names/arachnid_first.txt @@ -0,0 +1,30 @@ +Zerzir +Lalnuth +Avisreb +Qeqarnai +Rhikkiezhith +Necaqtex +Aqi +Shozhish +Sraiza +Ranqu +Zellalshi +Necoq +Zaqod +Salaree +Xavis +Cheqirni +Nieqi +Cakirkix +Ivad +Shenqazhe +Azurte +Lizire +Ivur +Kavur +Raicheca +Iqashe +Eq'za +Sak'sad +Hiezih +Cessix \ No newline at end of file diff --git a/strings/names/arachnid_last.txt b/strings/names/arachnid_last.txt new file mode 100644 index 0000000000000..2b663f6df3aff --- /dev/null +++ b/strings/names/arachnid_last.txt @@ -0,0 +1,30 @@ +Ik'sir +Sechathi +Qok'sut +Yeqied +Iravhoh +Kriaqux +Yikih +Khaqa +Azasnet +Qhecid +Qhin'qu +Zhechikzor +Qhovi +Hirath +Szornud +Zasokaq +Lhaqish +Qhiretid +Avizad +Qallazi +Qhizrud +Qicirne +Sezuveth +Zelriker +Rhiallor +Zhaliesh +Qoutirk'ab +Chavi +Riel'shes +Khentax \ No newline at end of file From 2f8e2d3e31bb4d1e0ce2dedf8f6eddb5bf0cab0f Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 14:24:16 +0200 Subject: [PATCH 08/21] init order perhaps???? --- code/__HELPERS/~splurt_helpers/mob.dm | 3 +-- code/_globalvars/lists/names.dm | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/~splurt_helpers/mob.dm b/code/__HELPERS/~splurt_helpers/mob.dm index a41e771c17072..0a39b5c7800b9 100644 --- a/code/__HELPERS/~splurt_helpers/mob.dm +++ b/code/__HELPERS/~splurt_helpers/mob.dm @@ -1,5 +1,4 @@ -GLOBAL_LIST_INIT(arachnid_first, world.file2list("strings/names/arachnid_first.txt")) -GLOBAL_LIST_INIT(arachnid_last, world.file2list("strings/names/arachnid_last.txt")) + /proc/random_unique_arachnid_name(attempts_to_find_unique_name=10) for(var/i in 1 to attempts_to_find_unique_name) diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index f9f70a2c7069f..9935f520747b3 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -45,3 +45,6 @@ GLOBAL_LIST_INIT(greek_alphabet, world.file2list("strings/greek_alphabet.txt")) GLOBAL_LIST_INIT(hive_names, world.file2list("strings/names/hive_names.txt")) //loaded on startup because of " //would include in rsc if ' was used +//splurt names +GLOBAL_LIST_INIT(arachnid_first, world.file2list("strings/names/arachnid_first.txt")) +GLOBAL_LIST_INIT(arachnid_last, world.file2list("strings/names/arachnid_last.txt")) From 04df82b173f2a6113d213608fa0731f01b81a711 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 14:27:15 +0200 Subject: [PATCH 09/21] a --- .../code/modules/surgery/organs/external/arachnid.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm b/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm index 344ec76166730..391f72b631c77 100644 --- a/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm +++ b/modular_zzplurt/code/modules/surgery/organs/external/arachnid.dm @@ -62,7 +62,7 @@ name = "spider legs" desc = "Objectively inferior to regular legs." //idk i suck at descs icon = 'modular_zzplurt/icons/obj/medical/organs/organs.dmi' - icon_state = "spider_legs" + icon_state = "arachnid_legs" preference = "feature_arachnid_legs" mutantpart_key = "spinneret" From 4fbd1975aded71bbbc3c1d5dca45a741544970d7 Mon Sep 17 00:00:00 2001 From: NullFag Date: Thu, 8 Aug 2024 23:02:46 +0200 Subject: [PATCH 10/21] skibidi..? --- .../code/modules/client/preferences/mutant_parts.dm | 9 ++++++--- modular_zzplurt/code/modules/species/arachnid.dm | 6 +++--- .../code/modules/sprite_accessories/arachnid.dm | 6 +++--- .../character_preferences/skyrat/species_features.tsx | 11 +++-------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm index 61ecfa426b3c1..beaae7968bb9b 100644 --- a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm +++ b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm @@ -8,11 +8,12 @@ type_to_check = /datum/preference/toggle/mutant_toggle/mandibles default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none -/datum/preference/color/mutant/mandibles_color +/datum/preference/tri_color/mandibles_color savefile_key = "mandibles_color" relevant_mutant_bodypart = "mandibles" category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES savefile_identifier = PREFERENCE_CHARACTER + type_to_check = /datum/preference/toggle/mutant_toggle/mandibles @@ -26,11 +27,12 @@ type_to_check = /datum/preference/toggle/mutant_toggle/spinneret default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none -/datum/preference/color/mutant/spinneret_color +/datum/preference/tri_color/spinneret_color category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "spinneret_color" relevant_mutant_bodypart = "spinneret" + type_to_check = /datum/preference/toggle/mutant_toggle/spinneret @@ -44,8 +46,9 @@ type_to_check = /datum/preference/toggle/mutant_toggle/arachnid_legs default_accessory_type = /datum/sprite_accessory/arachnid_legs/none -/datum/preference/color/mutant/arachnid_legs_color +/datum/preference/tri_color/arachnid_legs_color category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "arachnid_legs_color" relevant_mutant_bodypart = "arachnid_legs" + type_to_check = /datum/preference/toggle/mutant_toggle/spinneret diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm index caf945e4ae5c2..d3c22264c1c72 100644 --- a/modular_zzplurt/code/modules/species/arachnid.dm +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -21,9 +21,9 @@ say_mod = "chitters" inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG external_organs = list( - /obj/item/organ/external/mandibles = "None", - /obj/item/organ/external/spinneret = "None", - /obj/item/organ/external/arachnid_legs = "None", + /obj/item/organ/external/mandibles = "Plain", + /obj/item/organ/external/spinneret = "Plain", + /obj/item/organ/external/arachnid_legs = "Plain", ) meat = /obj/item/food/meat/slab/spider species_language_holder = /datum/language_holder/arachnid diff --git a/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm b/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm index fbbdc2255ebac..1ca55345487c1 100644 --- a/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm +++ b/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm @@ -10,7 +10,7 @@ icon = 'modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi' /datum/sprite_accessory/arachnid_legs/none - name = "None" + name = SPRITE_ACCESSORY_NONE icon_state = "none" factual = FALSE @@ -39,7 +39,7 @@ icon = 'modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi' /datum/sprite_accessory/arachnid_spinneret/none - name = "None" + name = SPRITE_ACCESSORY_NONE icon_state = "none" factual = FALSE @@ -68,7 +68,7 @@ icon = 'modular_zzplurt/icons/mob/human/species/arachnid_misc.dmi' /datum/sprite_accessory/arachnid_mandibles/none - name = "None" + name = SPRITE_ACCESSORY_NONE icon_state = "none" factual = FALSE diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx index 0eb5cb753cfb4..5216bc537ee39 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx @@ -766,8 +766,6 @@ export const pod_hair_emissive: Feature = { component: CheckboxInput, }; - - export const mandibles_toggle: FeatureToggle = { name: 'Mandibles', component: CheckboxInput, @@ -782,13 +780,11 @@ export const feature_mandibles: Feature = { }, }; -export const mandibles_color: Feature = { +export const mandibles_color: Feature = { name: 'Mandible Color', component: FeatureColorInput, }; - - export const spinneret_toggle: FeatureToggle = { name: 'Spinneret', component: CheckboxInput, @@ -803,12 +799,11 @@ export const feature_spinneret: Feature = { }, }; -export const spinneret_color: Feature = { +export const spinneret_color: Feature = { name: 'Mandible Color', component: FeatureColorInput, }; - export const arachnid_legs_toggle: FeatureToggle = { name: 'Arachnid Legs', component: CheckboxInput, @@ -823,7 +818,7 @@ export const feature_arachnid_legs: Feature = { }, }; -export const arachnid_legs_color: Feature = { +export const arachnid_legs_color: Feature = { name: 'Arachnid Leg Color', component: FeatureColorInput, }; From 08e8df4fc662f1629586818037c0935a34be2062 Mon Sep 17 00:00:00 2001 From: NullFag Date: Fri, 9 Aug 2024 00:36:50 +0200 Subject: [PATCH 11/21] im going on fucking conjecture here --- modular_zzplurt/code/modules/species/arachnid.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm index d3c22264c1c72..4ccef9dff0e17 100644 --- a/modular_zzplurt/code/modules/species/arachnid.dm +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -32,9 +32,9 @@ //i hate this place /datum/species/arachnid/get_default_mutant_bodyparts() return list( - "mandibles" = list("None", TRUE), - "spinneret" = list("None", TRUE), - "arachnid_legs" = list("None", TRUE), + "mandibles" = list("Plain", TRUE), + "spinneret" = list("Plain", TRUE), + "arachnid_legs" = list("Plain", TRUE), ) /datum/species/arachnid/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) From 7af117e0e32fc8132ae48082b1e698d5666777d6 Mon Sep 17 00:00:00 2001 From: NullFag Date: Fri, 9 Aug 2024 01:04:01 +0200 Subject: [PATCH 12/21] a --- .../skyrat/species_features.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx index 5216bc537ee39..bfb4a92628beb 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx @@ -780,9 +780,9 @@ export const feature_mandibles: Feature = { }, }; -export const mandibles_color: Feature = { +export const mandibles_color: Feature = { name: 'Mandible Color', - component: FeatureColorInput, + component: FeatureTriColorInput, }; export const spinneret_toggle: FeatureToggle = { @@ -799,9 +799,9 @@ export const feature_spinneret: Feature = { }, }; -export const spinneret_color: Feature = { +export const spinneret_color: Feature = { name: 'Mandible Color', - component: FeatureColorInput, + component: FeatureTriColorInput, }; export const arachnid_legs_toggle: FeatureToggle = { @@ -818,7 +818,7 @@ export const feature_arachnid_legs: Feature = { }, }; -export const arachnid_legs_color: Feature = { +export const arachnid_legs_color: Feature = { name: 'Arachnid Leg Color', - component: FeatureColorInput, + component: FeatureTriColorInput, }; From af7dc2849538de342a2a1a2e2b943c0032d8bab8 Mon Sep 17 00:00:00 2001 From: NullFag Date: Fri, 9 Aug 2024 01:39:42 +0200 Subject: [PATCH 13/21] flooding the commit history with this one simple trick --- .../code/modules/client/preferences/mutant_parts.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm index beaae7968bb9b..b0c15df8eb10c 100644 --- a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm +++ b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm @@ -6,7 +6,6 @@ savefile_key = "feature_mandibles" relevant_mutant_bodypart = "mandibles" type_to_check = /datum/preference/toggle/mutant_toggle/mandibles - default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none /datum/preference/tri_color/mandibles_color savefile_key = "mandibles_color" @@ -25,7 +24,6 @@ savefile_key = "feature_spinneret" relevant_mutant_bodypart = "spinneret" type_to_check = /datum/preference/toggle/mutant_toggle/spinneret - default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none /datum/preference/tri_color/spinneret_color category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES @@ -44,7 +42,6 @@ savefile_key = "feature_arachnid_legs" relevant_mutant_bodypart = "arachnid_legs" type_to_check = /datum/preference/toggle/mutant_toggle/arachnid_legs - default_accessory_type = /datum/sprite_accessory/arachnid_legs/none /datum/preference/tri_color/arachnid_legs_color category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES From 2bfe2f695ed4ed02dcae30cfcd41d09e03f09e64 Mon Sep 17 00:00:00 2001 From: NullFag Date: Fri, 9 Aug 2024 02:41:26 +0200 Subject: [PATCH 14/21] FUCKING --- modular_zzplurt/code/modules/species/arachnid.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm index 4ccef9dff0e17..7e02ff52bc831 100644 --- a/modular_zzplurt/code/modules/species/arachnid.dm +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -32,9 +32,9 @@ //i hate this place /datum/species/arachnid/get_default_mutant_bodyparts() return list( - "mandibles" = list("Plain", TRUE), - "spinneret" = list("Plain", TRUE), - "arachnid_legs" = list("Plain", TRUE), + "mandibles" = list("Plain", FALSE), + "spinneret" = list("Plain", FALSE), + "arachnid_legs" = list("Plain", FALSE), ) /datum/species/arachnid/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) From c142c892e8df0e0f1e2df3d15d7316db332fbf3e Mon Sep 17 00:00:00 2001 From: Mosley <93835010+MosleyTheMalO@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:14:02 -0500 Subject: [PATCH 15/21] Update arachnid.dm maybe? --- modular_zzplurt/code/modules/sprite_accessories/arachnid.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm b/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm index 1ca55345487c1..71ef5492e1984 100644 --- a/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm +++ b/modular_zzplurt/code/modules/sprite_accessories/arachnid.dm @@ -13,6 +13,7 @@ name = SPRITE_ACCESSORY_NONE icon_state = "none" factual = FALSE + natural_spawn = FALSE /datum/sprite_accessory/arachnid_legs/plain name = "Plain" @@ -42,6 +43,7 @@ name = SPRITE_ACCESSORY_NONE icon_state = "none" factual = FALSE + natural_spawn = FALSE /datum/sprite_accessory/arachnid_spinneret/plain name = "Plain" @@ -71,6 +73,7 @@ name = SPRITE_ACCESSORY_NONE icon_state = "none" factual = FALSE + natural_spawn = FALSE /datum/sprite_accessory/arachnid_mandibles/plain name = "Plain" From d0db5a7879e024e0b358da5b6628d8972403261d Mon Sep 17 00:00:00 2001 From: Mosley <93835010+MosleyTheMalO@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:21:58 -0500 Subject: [PATCH 16/21] Revert "FUCKING" This reverts commit 2bfe2f695ed4ed02dcae30cfcd41d09e03f09e64. --- modular_zzplurt/code/modules/species/arachnid.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm index 7e02ff52bc831..4ccef9dff0e17 100644 --- a/modular_zzplurt/code/modules/species/arachnid.dm +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -32,9 +32,9 @@ //i hate this place /datum/species/arachnid/get_default_mutant_bodyparts() return list( - "mandibles" = list("Plain", FALSE), - "spinneret" = list("Plain", FALSE), - "arachnid_legs" = list("Plain", FALSE), + "mandibles" = list("Plain", TRUE), + "spinneret" = list("Plain", TRUE), + "arachnid_legs" = list("Plain", TRUE), ) /datum/species/arachnid/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) From 1f93bf9983004386839d210d0666a7decd034bde Mon Sep 17 00:00:00 2001 From: Mosley <93835010+MosleyTheMalO@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:22:03 -0500 Subject: [PATCH 17/21] Revert "flooding the commit history with this one simple trick" This reverts commit af7dc2849538de342a2a1a2e2b943c0032d8bab8. --- .../code/modules/client/preferences/mutant_parts.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm index b0c15df8eb10c..beaae7968bb9b 100644 --- a/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm +++ b/modular_zzplurt/code/modules/client/preferences/mutant_parts.dm @@ -6,6 +6,7 @@ savefile_key = "feature_mandibles" relevant_mutant_bodypart = "mandibles" type_to_check = /datum/preference/toggle/mutant_toggle/mandibles + default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none /datum/preference/tri_color/mandibles_color savefile_key = "mandibles_color" @@ -24,6 +25,7 @@ savefile_key = "feature_spinneret" relevant_mutant_bodypart = "spinneret" type_to_check = /datum/preference/toggle/mutant_toggle/spinneret + default_accessory_type = /datum/sprite_accessory/arachnid_mandibles/none /datum/preference/tri_color/spinneret_color category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES @@ -42,6 +44,7 @@ savefile_key = "feature_arachnid_legs" relevant_mutant_bodypart = "arachnid_legs" type_to_check = /datum/preference/toggle/mutant_toggle/arachnid_legs + default_accessory_type = /datum/sprite_accessory/arachnid_legs/none /datum/preference/tri_color/arachnid_legs_color category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES From 6376bfb69de3717f28cdb1f55fc011f9ad051367 Mon Sep 17 00:00:00 2001 From: Mosley <93835010+MosleyTheMalO@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:54:45 -0500 Subject: [PATCH 18/21] Create screenshot_humanoids__datum_species_arachnid.png --- ...eenshot_humanoids__datum_species_arachnid.png | Bin 0 -> 1365 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_arachnid.png diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_arachnid.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..ebe4707503a2dfcf1b381e50c83d09286fb45264 GIT binary patch literal 1365 zcmV-b1*-aqP)5(QE$ z89*2SIUNZ#I6;n(lNuT!R$61Tv$J$}fOmU?QBPY63JQT$OqOtI5fl_6CMFmh9H*+b z)YspMi=v)^b&z>)BqS;=Ei=o_(eCc<9Udg5skU@+f)^McB`7@<6c{?nG`Ro(00DGT zPE!Ct=GbNc003orR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5f zFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KAHiHkEOv#1!Po{KZBC^0t`#5Uwo zR&e!m0hYfqJ7T6opZfPOC%ejteM@*reS_rjvHo z_kX!P7c^DDG&|qYe5v8w^WPhyTp0UbMsnlaZv#HnlkroUrokLtvp}Cr5^VU8W?7al z=BBWzJ^^f!0hey?vh7_u@RQ9l0r^M5G{I&F{*v84Ko2HgJrh`z!U&9~OWdlG1KmJDu(1}o!Kc+L?$QnTgVlA5pppl}glu}hC zR&)cQ(I`TgFv97zLItXh>8x$F&;tNhZ5!%X<)WaMV4;ox!!7`3A^;Rn?5wp|2odTC zV1*d~reF~O!_RNKt^+}ZIz{Y^meNS6%`U1JyN(0EL5S#hUaF`4;rZq7!~Us??Lg$` z-@EUe2r++Rse*@ZSh-cRM7x1-7Urh z4uArVM;jz?k0t>OHy$v5THU89AR;q=xADteHVtvt4nTeagxf&?VDk-UBn#;+;0#MPiA8Jp-BJ_FO#MULkfQVgNV%KvDr$ z0VqK_z;Y3AG^@?8q?Mlm+T@opwFm%8U=7-TZU7(#Yao_ip~JEm4HXq$`5DPiw^Fc% z9qvu_bU3u_e*gTk26%bix9#C@cv8EfTLAisQ&aNoeZ2ze|J1*#eh%n(-*Zp+>{fPu z3ZD@==jTVGulgN<{6vTV(DiNt97BNR{~5sTOt5|L`tEIj1y8&>4Vl00000NkvXXu0mjfTnKH$ literal 0 HcmV?d00001 From 8a0c96bf9f9c83b6f18825455ceb9dfc4709594d Mon Sep 17 00:00:00 2001 From: NullFag Date: Sat, 10 Aug 2024 02:46:33 +0200 Subject: [PATCH 19/21] DO YOU OWN A BARREL OF MONKEYS --- .../code/modules/species/arachnid.dm | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/modular_zzplurt/code/modules/species/arachnid.dm b/modular_zzplurt/code/modules/species/arachnid.dm index 4ccef9dff0e17..317e61b415c70 100644 --- a/modular_zzplurt/code/modules/species/arachnid.dm +++ b/modular_zzplurt/code/modules/species/arachnid.dm @@ -83,18 +83,15 @@ to_chat(owner, span_warning("You need to wait a while to regenerate web fluid.")) return FALSE -/datum/action/innate/arachnid/Activate() - . = ..() - if(.) - var/mob/living/owner = src.owner - owner.apply_status_effect(/datum/status_effect/web_cooldown) - /datum/action/innate/arachnid/spin_web name = "Spin Web" button_icon_state = "spider_web" -/datum/action/innate/spin_web/Activate() +/datum/action/innate/arachnid/spin_web/Activate() + if(DOING_INTERACTION(owner, SPECIES_ARACHNID)) + return FALSE + if(owner.nutrition < WEB_SPIN_NUTRITION_LOSS) to_chat(owner, span_warning("You're too hungry to spin web right now, eat something first!")) return FALSE @@ -110,7 +107,7 @@ // Should have some minimum amount of food before trying to activate to_chat(owner, "You begin spinning some web...") - if(!do_after(owner, 10 SECONDS, target_turf)) + if(!do_after(owner, 10 SECONDS, target_turf, interaction_key = SPECIES_ARACHNID)) to_chat(owner, span_warning("Your web spinning was interrupted!")) return FALSE @@ -118,6 +115,7 @@ return FALSE owner.adjust_nutrition(-WEB_SPIN_NUTRITION_LOSS) + owner:apply_status_effect(/datum/status_effect/web_cooldown) to_chat(owner, "You use up a fair amount of energy weaving a web on the ground with your spinneret!") new /obj/structure/spider/stickyweb(target_turf, owner) return TRUE @@ -128,6 +126,7 @@ button_icon_state = "wrap_0" enable_text = "You pull out a strand from your spinneret, ready to wrap a target.." disable_text = "You discard the strand." + click_action = TRUE /datum/action/innate/arachnid/spin_cocoon/set_ranged_ability(mob/living/on_who, text_to_show) if(owner.nutrition < COCOON_NUTRITION_LOSS) @@ -138,7 +137,7 @@ return ..() /datum/action/innate/arachnid/spin_cocoon/do_ability(mob/living/caller, atom/movable/clicked_on) - if(!caller.Adjacent(clicked_on) || !istype(clicked_on)) + if(!caller.Adjacent(clicked_on) || !istype(clicked_on) || DOING_INTERACTION(caller, SPECIES_ARACHNID)) return FALSE . = TRUE @@ -149,29 +148,39 @@ /atom/movable/screen //??? )) if(is_type_in_typecache(clicked_on, blacklisted_types)) - to_chat(caller, span_warning("You cannot wrap this.")) + to_chat(caller, span_warning("You cannot wrap this!")) return FALSE if(!isliving(clicked_on) && clicked_on.anchored) to_chat(caller, span_warning("[clicked_on] is bolted to the floor!")) - return + return FALSE - caller.visible_message( - span_danger("[caller] starts to wrap [clicked_on] into a cocoon!"), - span_warning("You start to wrap [clicked_on] into a cocoon.") - ) + if(clicked_on == caller) + caller.visible_message( + span_danger("[caller] starts to wrap themselves into a cocoon!"), + span_danger("You start to wrap yourself into a cocoon!") + ) + else + caller.visible_message( + span_danger("[caller] starts to wrap [clicked_on] into a cocoon!"), + span_warning("You start to wrap [clicked_on] into a cocoon.") + ) caller.apply_status_effect(/datum/status_effect/web_cooldown) - if(!do_after(caller, 10 SECONDS, clicked_on)) + if(!do_after(caller, 10 SECONDS, clicked_on, interaction_key = SPECIES_ARACHNID)) to_chat(caller, span_warning("Your web spinning was interrupted!")) - return + return FALSE caller.adjust_nutrition(-COCOON_NUTRITION_LOSS * 0.75) + caller.apply_status_effect(/datum/status_effect/web_cooldown) var/obj/structure/spider/cocoon/casing = new(clicked_on.loc) clicked_on.forceMove(casing) if(clicked_on.density || ismob(clicked_on)) - caller.visible_message(span_danger("[caller] wraps [clicked_on] into a large cocoon!")) + if(clicked_on == caller) + caller.visible_message(span_danger("[caller] wraps themselves into a large cocoon!")) + else + caller.visible_message(span_danger("[caller] wraps [clicked_on] into a large cocoon!")) casing.icon_state = pick("cocoon_large1", "cocoon_large2", "cocoon_large3") else caller.visible_message(span_danger("[caller] wraps [clicked_on] into a cocoon!")) From 3754928689fd3c31442c313bd7e442a7a2d7ded0 Mon Sep 17 00:00:00 2001 From: NullFag Date: Sun, 11 Aug 2024 01:44:21 +0200 Subject: [PATCH 20/21] sssssssssssssssssssssssssssssss --- modular_zzplurt/code/modules/species/teshari.dm | 6 +++--- modular_zzplurt/code/modules/species/xeno.dm | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modular_zzplurt/code/modules/species/teshari.dm b/modular_zzplurt/code/modules/species/teshari.dm index 8ee2fbbfa3558..4cbbfda92c0ce 100644 --- a/modular_zzplurt/code/modules/species/teshari.dm +++ b/modular_zzplurt/code/modules/species/teshari.dm @@ -28,7 +28,7 @@ /datum/action/cooldown/sonar_ping/Activate(atom/target) var/heard_something = FALSE - to_chat(src, span_notice("You take a moment to listen in to your environment...")) + to_chat(owner, span_notice("You take a moment to listen in to your environment...")) for(var/mob/living/living in range(owner.client?.view, owner)) if(living == owner || living.stat == DEAD) continue @@ -57,10 +57,10 @@ feedback += "right on top of you." heard_something = TRUE - to_chat(src, span_notice(jointext(feedback, null))) + to_chat(owner, span_notice(jointext(feedback, null))) if(!heard_something) - to_chat(src, "You hear no movement but your own.") + to_chat(owner, span_notice("You hear no movement but your own.")) StartCooldown() return TRUE diff --git a/modular_zzplurt/code/modules/species/xeno.dm b/modular_zzplurt/code/modules/species/xeno.dm index 9479cd979df11..1ff5654ac7e6f 100644 --- a/modular_zzplurt/code/modules/species/xeno.dm +++ b/modular_zzplurt/code/modules/species/xeno.dm @@ -3,12 +3,10 @@ /datum/species/xeno/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) . = ..() var/datum/action/innate/reconstitute_form/reconstitute_form = new(human_who_gained_species) //shit ahh var name + var/datum/action/cooldown/sonar_ping/sonar_ping = new(human_who_gained_species) reconstitute_form.Grant(human_who_gained_species) + sonar_ping.Grant(human_who_gained_species) - - // C.verbs += /mob/living/carbon/human/proc/reconstitute_form - // C.verbs += /mob/living/carbon/human/proc/sonar_ping - // C.verbs += /mob/living/carbon/human/proc/tie_hair human_who_gained_species.add_movespeed_modifier(/datum/movespeed_modifier/xenochimera) /datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) @@ -59,7 +57,9 @@ if(tgui_alert(owner, alert, "Confirm Regeneration", list("Yes", "No")) != "Yes") return FALSE - to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.") + to_chat(owner, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.") + owner.Stun(INFINITY, TRUE) + revive_timer = addtimer(CALLBACK(src, PROC_REF(ready_revive)), time, TIMER_UNIQUE | TIMER_STOPPABLE) if(owner.stat == DEAD) RegisterSignal(owner, COMSIG_LIVING_REVIVE, PROC_REF(on_revive)) From 73f1354864b68213c38e09c86a5a90afc666a25f Mon Sep 17 00:00:00 2001 From: NullFag Date: Sun, 11 Aug 2024 02:27:43 +0200 Subject: [PATCH 21/21] gayhaps --- modular_zzplurt/code/modules/species/teshari.dm | 4 ++-- modular_zzplurt/code/modules/species/xeno.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modular_zzplurt/code/modules/species/teshari.dm b/modular_zzplurt/code/modules/species/teshari.dm index 4cbbfda92c0ce..68297d53fb15f 100644 --- a/modular_zzplurt/code/modules/species/teshari.dm +++ b/modular_zzplurt/code/modules/species/teshari.dm @@ -39,10 +39,10 @@ var/feedback = list() feedback += "There are noises of movement " - var/direction = get_dir(src, living) + var/direction = get_dir(owner, living) if(direction) feedback += "towards the [dir2text(direction)], " - switch(get_dist(src, living) / 7) + switch(get_dist(owner, living) / 7) if(0 to 0.2) feedback += "very close by." if(0.2 to 0.4) diff --git a/modular_zzplurt/code/modules/species/xeno.dm b/modular_zzplurt/code/modules/species/xeno.dm index 1ff5654ac7e6f..bd3ccb97b42e5 100644 --- a/modular_zzplurt/code/modules/species/xeno.dm +++ b/modular_zzplurt/code/modules/species/xeno.dm @@ -90,7 +90,7 @@ owner.dropItemToGround(wielded, force = TRUE, silent = TRUE) new /obj/effect/gibspawner/human(get_turf(owner), owner) - owner.visible_message(span_danger("

The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.

")) //Bloody hell... + owner.visible_message(span_danger("

The lifeless husk of [owner] bursts open, revealing a new, intact copy in the pool of viscera.

")) //Bloody hell... owner.nutrition = result_nutrition COOLDOWN_START(src, revive_cd, 10 MINUTES) @@ -117,7 +117,7 @@ action_state = ACTION_STATE_STANDBY /datum/action/innate/reconstitute_form/proc/ready_revive() - to_chat(src, span_notice("Consciousness begins to stir as your new body awakens, ready to hatch.")) + to_chat(owner, span_notice("Consciousness begins to stir as your new body awakens, ready to hatch.")) revive_timer = 0 action_state = ACTION_STATE_HATCH