diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm index 3274bba85986..9ede9736c22f 100644 --- a/code/__SPLURTCODE/DEFINES/traits.dm +++ b/code/__SPLURTCODE/DEFINES/traits.dm @@ -25,6 +25,7 @@ #define TRAIT_PHARMA "hepatic_pharmacokinesis" #define TRAIT_CHOKE_SLUT "choke_slut" #define TRAIT_BLOODFLEDGE "bloodfledge" +#define TRAIT_BLOODFLEDGE_LITE "bloodfledge_lite" #define TRAIT_INCUBUS "incubus" #define TRAIT_SUCCUBUS "succubus" #define TRAIT_ARACHNID "arachnid" diff --git a/code/modules/admin/view_variables/debug_variable_appearance.dm b/code/modules/admin/view_variables/debug_variable_appearance.dm index 3ceaf2a50b5b..8bc9979a7d10 100644 --- a/code/modules/admin/view_variables/debug_variable_appearance.dm +++ b/code/modules/admin/view_variables/debug_variable_appearance.dm @@ -59,25 +59,23 @@ GLOBAL_DATUM_INIT(pluto, /atom/movable, new /atom/movable(null)) if(beloved.vars.Find(var_name)) // If datums have it, get out return FALSE // If it is one of the two args on /image, yeet (I am sorry) - if(var_name == NAMEOF(src, realized_overlays)) + if(var_name == "realized_overlays") return FALSE - if(var_name == NAMEOF(src, realized_underlays)) + if(var_name == "realized_underlays") return FALSE // Filtering out the stuff I know we don't care about - if(var_name == NAMEOF(src, x)) + if(var_name == "x") return FALSE - if(var_name == NAMEOF(src, y)) + if(var_name == "y") return FALSE - if(var_name == NAMEOF(src, z)) + if(var_name == "z") return FALSE // Could make an argument for these but I think they will just confuse people, so yeeet -#ifndef SPACEMAN_DMM // Spaceman doesn't believe in contents on appearances, sorry lads - if(var_name == NAMEOF(src, contents)) + if(var_name == "contents") return FALSE -#endif - if(var_name == NAMEOF(src, loc)) + if(var_name == "loc") return FALSE - if(var_name == NAMEOF(src, vis_contents)) + if(var_name == "vis_contents") return FALSE return ..() diff --git a/code/modules/events/shuttle_catastrophe.dm b/code/modules/events/shuttle_catastrophe.dm index 18b9dc61cabf..28be4acfd240 100644 --- a/code/modules/events/shuttle_catastrophe.dm +++ b/code/modules/events/shuttle_catastrophe.dm @@ -7,7 +7,7 @@ description = "Replaces the emergency shuttle with a random one." /datum/round_event_control/shuttle_catastrophe/canSpawnEvent(players, gamemode) - if(SSshuttle.emergency.name == "Build your own shuttle kit") + if(istype(SSshuttle.emergency, /obj/docking_port/mobile/emergency/shuttle_build)) return FALSE //don't undo manual player engineering, it also would unload people and ghost them, there's just a lot of problems if(SSshuttle.emergency.in_flight()) return FALSE //ditto, problems diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml new file mode 100644 index 000000000000..b4d9b5b485b0 --- /dev/null +++ b/html/changelogs/archive/2024-11.yml @@ -0,0 +1,10 @@ +2024-11-03: + Meghan-Rossi: + - server: Server can now be compiled on byond 515.1543 + MosleyTheMalO: + - bugfix: Fixes the snap on dominant aura +2024-11-09: + CSDSP: + - bugfix: Code disabling the shuttle_catastrophe event while a BYOS is active. + LeDrascol: + - rscadd: 'Added a new quirk: Sanguine Metabolism (variant of Bloodsucker Fledgling)' diff --git a/modular_splurt/code/controllers/subsystem/processing/quirks.dm b/modular_splurt/code/controllers/subsystem/processing/quirks.dm index 6f25dda079b6..0dd5090c0d63 100644 --- a/modular_splurt/code/controllers/subsystem/processing/quirks.dm +++ b/modular_splurt/code/controllers/subsystem/processing/quirks.dm @@ -21,4 +21,16 @@ // BLOCKED: Mechanic // Bloodsuckers have NO_THIRST trait. list("Thirsty","Bloodsucker Fledgling"), + + // BLOCKED: Duplicate, mechanic + // This is a lite version of the same quirk. + list("Sanguine Metabolism","Bloodsucker Fledgling"), + + // BLOCKED: Mechanic + // Bloodsuckers have NO_THIRST trait. + list("Sanguine Metabolism","Thirsty"), + + // BLOCKED: Thematic, mechanic, game lore. + // Bloodsuckers cannot interact with Hallowed users. + list("Sanguine Metabolism","Hallowed") )) diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm index e2025ae166c9..a001ab354718 100644 --- a/modular_splurt/code/datums/traits/good.dm +++ b/modular_splurt/code/datums/traits/good.dm @@ -92,12 +92,11 @@ sub.dir = turn(get_dir(sub, quirk_holder), pick(-90, 90)) sub.emote("blush") -/datum/quirk/dominant_aura/proc/handle_snap(datum/source, list/emote_args) +/datum/quirk/dominant_aura/proc/handle_snap(datum/source, datum/emote/emote) SIGNAL_HANDLER . = FALSE - var/key = GLOB.emote_list[lowertext(emote_args[EMOTE_ACT])] - if(TIMER_COOLDOWN_CHECK(quirk_holder, COOLDOWN_DOMINANT_SNAP) || !findtext(key, "snap")) + if(TIMER_COOLDOWN_CHECK(quirk_holder, COOLDOWN_DOMINANT_SNAP) || !findtext(emote.key, "snap")) return for(var/mob/living/carbon/human/sub in hearers(DOMINANT_DETECT_RANGE, quirk_holder)) if(!sub.has_quirk(/datum/quirk/well_trained) || (sub == quirk_holder)) @@ -108,7 +107,7 @@ good_x = "boy" if(FEMALE) good_x = "girl" - switch(key) + switch(emote.key) if("snap") sub.dir = get_dir(sub, quirk_holder) sub.emote(pick("blush", "pant")) diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm index ad7d617a3422..889f9c701596 100644 --- a/modular_splurt/code/datums/traits/negative.dm +++ b/modular_splurt/code/datums/traits/negative.dm @@ -239,3 +239,4 @@ if(H) var/datum/physiology/P = H.physiology P.thirst_mod /= 2 + diff --git a/modular_splurt/code/datums/traits/neutral.dm b/modular_splurt/code/datums/traits/neutral.dm index fdef54a3be29..8f19814284c0 100644 --- a/modular_splurt/code/datums/traits/neutral.dm +++ b/modular_splurt/code/datums/traits/neutral.dm @@ -731,3 +731,100 @@ gain_text = span_lewd("You feel like kissing someone...") lose_text = span_notice("You don't feel like kissing someone anymore...") medical_record_text = "Patient seems to demonstrate an extraordinary liking in kissing." + +// Lite version of Bloodflege +// Removes all special powers +/datum/quirk/bloodfledge_lite + name = "Sanguine Metabolism" + desc = "You are a non-magical Bloodsucker Fledgling, with no special powers. Only blood will sate your hungers, and holy energies will cause your flesh to char." + value = 0 + medical_record_text = "Patient exhibits an unusually weak sanguine curse." + mob_trait = TRAIT_BLOODFLEDGE_LITE + gain_text = span_notice("You feel a sanguine thirst.") + lose_text = span_notice("You feel the sanguine thirst fade away.") + +/datum/quirk/bloodfledge_lite/add() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Add quirk traits + ADD_TRAIT(quirk_mob,TRAIT_NO_PROCESS_FOOD,ROUNDSTART_TRAIT) + ADD_TRAIT(quirk_mob,TRAIT_NOTHIRST,ROUNDSTART_TRAIT) + + // Add full trait to preserve bite, holy weakness, and examine functionality + ADD_TRAIT(quirk_mob,TRAIT_BLOODFLEDGE,ROUNDSTART_TRAIT) + + // Lite version does not set skin tone or grant the language + + // Register examine text + RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(quirk_examine_bloodfledge_lite)) + +/datum/quirk/bloodfledge_lite/post_add() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Define and grant ability Bite + var/datum/action/cooldown/bloodfledge/bite/act_bite = new + act_bite.Grant(quirk_mob) + + // Lite version does not grant the revive ability + +/datum/quirk/bloodfledge_lite/remove() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Remove quirk traits + REMOVE_TRAIT(quirk_mob, TRAIT_NO_PROCESS_FOOD, ROUNDSTART_TRAIT) + REMOVE_TRAIT(quirk_mob, TRAIT_NOTHIRST, ROUNDSTART_TRAIT) + REMOVE_TRAIT(quirk_mob, TRAIT_BLOODFLEDGE, ROUNDSTART_TRAIT) + + // Remove quirk ability action datums + var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions + act_bite.Remove(quirk_mob) + + // Unregister examine text + UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE) + +/datum/quirk/bloodfledge_lite/proc/quirk_examine_bloodfledge_lite(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list) + SIGNAL_HANDLER + + // Check if human examiner exists + if(!istype(examiner)) + return + + // Check if examiner is a non-Fledgling + if(!isbloodfledge(examiner)) + // Return with no effects + return + + // Check if examiner is dumb + if(HAS_TRAIT(examiner, TRAIT_DUMB)) + // Return with no effects + return + + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Define hunger texts + var/examine_hunger + + // Check hunger levels + switch(quirk_mob.nutrition) + // Hungry + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] blood starved!" + + // Starving + if(0 to NUTRITION_LEVEL_STARVING) + examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] in dire need of blood!" + + // Invalid hunger + else + // Return with no message + return + + // Add detection text + examine_list += span_info("[quirk_holder.p_their(TRUE)] hunger allows you to identify [quirk_holder.p_them()] as a lesser Bloodsucker Fledgling!") + + // Add hunger text + examine_list += span_warning(examine_hunger) diff --git a/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm b/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm index bf2c2ae7c346..0512ebb32cf2 100644 --- a/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm +++ b/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm @@ -19,6 +19,12 @@ for(var/mob/living/carbon/coffin_user in contents) // Check for bloodfledge if(isbloodfledge(coffin_user)) + // Check for lite version + if (HAS_TRAIT(coffin_user, TRAIT_BLOODFLEDGE_LITE)) + // Warn user and continue + to_chat(coffin_user, span_warning("Your body lacks a proper sanguine connection! [src] does not respond.")) + continue + // Check for synthetic if(coffin_user.mob_biotypes && (coffin_user.mob_biotypes & MOB_ROBOTIC)) // Warn user and continue @@ -50,6 +56,11 @@ for(var/mob/living/carbon/coffin_user in coffin_turf.contents) // Check for bloodfledge if(isbloodfledge(coffin_user)) + // Check for lite version + if (HAS_TRAIT(coffin_user, TRAIT_BLOODFLEDGE_LITE)) + // Do nothing + continue + // Define quirk entry var/datum/quirk/bloodfledge/quirk_target = locate() in coffin_user.roundstart_quirks diff --git a/modular_splurt/code/modules/mob/emote.dm b/modular_splurt/code/modules/mob/emote.dm deleted file mode 100644 index a8caa144f984..000000000000 --- a/modular_splurt/code/modules/mob/emote.dm +++ /dev/null @@ -1,3 +0,0 @@ -/mob/emote(act, m_type, message, intentional) - . = ..() - SEND_SIGNAL(src, COMSIG_MOB_EMOTE, args) diff --git a/tgstation.dme b/tgstation.dme index 105d49fb44bf..7c0826cab877 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4922,7 +4922,6 @@ #include "modular_splurt\code\modules\mining\equipment\kinetic_crusher.dm" #include "modular_splurt\code\modules\mining\equipment\machine_vending.dm" #include "modular_splurt\code\modules\mining\lavaland\necropolis_chests.dm" -#include "modular_splurt\code\modules\mob\emote.dm" #include "modular_splurt\code\modules\mob\femclaw.dm" #include "modular_splurt\code\modules\mob\inventory.dm" #include "modular_splurt\code\modules\mob\mob.dm"