From 383a6b92e3c7af6b74df20e583ec3ee204a6b427 Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Wed, 5 Feb 2025 23:12:17 +0100 Subject: [PATCH 01/11] Lets do this properly --- code/__DEFINES/dcs/signals.dm | 4 ++++ .../modules/mob/living/carbon/init_signals.dm | 21 +++++++++++++++++++ code/modules/wod13/bloodsucking.dm | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index d382cca1d2..13a2db3c52 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -1004,6 +1004,10 @@ ///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" +///called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood +#define COMSIG_MOB_VAMPIRE_SUCKED "mob_vampire_sucked" + ///vampire suck resisted + #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) // Aquarium related signals #define COMSIG_AQUARIUM_BEFORE_INSERT_CHECK "aquarium_about_to_be_inserted" diff --git a/code/modules/mob/living/carbon/init_signals.dm b/code/modules/mob/living/carbon/init_signals.dm index b780e155d6..b281ed7011 100644 --- a/code/modules/mob/living/carbon/init_signals.dm +++ b/code/modules/mob/living/carbon/init_signals.dm @@ -4,6 +4,7 @@ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_NOBREATH), PROC_REF(on_nobreath_trait_gain)) RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_NOMETABOLISM), PROC_REF(on_nometabolism_trait_gain)) + RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bite)) /** * On gain of TRAIT_NOBREATH @@ -42,3 +43,23 @@ LAZYREMOVE(reagents.addiction_list, R) qdel(R) reagents.end_metabolization(keep_liverless = TRUE) + +/** + * On being bit by a vampire + * + * This handles vampire bite stun immunity. + */ +/mob/living/carbon/proc/on_vampire_bite(datum/source) + SIGNAL_HANDLER + + //Vampires are not stunned by another vampire's bite + if(iskindred(src)) + return COMPONENT_RESIST_VAMPIRE_KISS + + //Garou are not stunned by another vampire's bite + if(isgarou(src)) + return COMPONENT_RESIST_VAMPIRE_KISS + + //I hate this because crinos and lupus are not covered in isgarou() + if(iswerewolf(src)) + return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/wod13/bloodsucking.dm b/code/modules/wod13/bloodsucking.dm index c7fdcc864a..cad1648dcc 100644 --- a/code/modules/wod13/bloodsucking.dm +++ b/code/modules/wod13/bloodsucking.dm @@ -240,5 +240,5 @@ client.images -= suckbar qdel(suckbar) stop_sound_channel(CHANNEL_BLOOD) - if(!iskindred(mob)) + if(!(SEND_SIGNAL(mob, COMSIG_MOB_VAMPIRE_SUCKED, src) & COMPONENT_RESIST_VAMPIRE_KISS)) mob.SetSleeping(50) From a129acacbcbb2c1d5b2337024ffe0ea86665124e Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Thu, 6 Feb 2025 10:28:53 +0100 Subject: [PATCH 02/11] A little treat --- code/modules/wod13/bloodsucking.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/wod13/bloodsucking.dm b/code/modules/wod13/bloodsucking.dm index cad1648dcc..42dbf3a4a0 100644 --- a/code/modules/wod13/bloodsucking.dm +++ b/code/modules/wod13/bloodsucking.dm @@ -36,7 +36,7 @@ var/mob/living/carbon/human/npc/NPC = mob NPC.danger_source = null // NPC.last_attacker = src - mob.Stun(30) + mob.Stun(30) //NPCs don't get to resist if(mob.bloodpool <= 1 && mob.maxbloodpool > 1) to_chat(src, "You feel small amount of BLOOD in your victim.") From d1a8fb49380af09a1e8cf7ff8a7f5c78ada17ac4 Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Fri, 7 Feb 2025 19:25:23 +0100 Subject: [PATCH 03/11] We hate commented code --- .../modules/mob/living/carbon/init_signals.dm | 21 ----------- .../living/carbon/werewolf/transformation.dm | 37 ++----------------- code/modules/vtmb/kindred_species.dm | 17 ++++++++- code/modules/vtmb/werewolf_species.dm | 17 +++++++++ 4 files changed, 37 insertions(+), 55 deletions(-) diff --git a/code/modules/mob/living/carbon/init_signals.dm b/code/modules/mob/living/carbon/init_signals.dm index b281ed7011..b780e155d6 100644 --- a/code/modules/mob/living/carbon/init_signals.dm +++ b/code/modules/mob/living/carbon/init_signals.dm @@ -4,7 +4,6 @@ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_NOBREATH), PROC_REF(on_nobreath_trait_gain)) RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_NOMETABOLISM), PROC_REF(on_nometabolism_trait_gain)) - RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bite)) /** * On gain of TRAIT_NOBREATH @@ -43,23 +42,3 @@ LAZYREMOVE(reagents.addiction_list, R) qdel(R) reagents.end_metabolization(keep_liverless = TRUE) - -/** - * On being bit by a vampire - * - * This handles vampire bite stun immunity. - */ -/mob/living/carbon/proc/on_vampire_bite(datum/source) - SIGNAL_HANDLER - - //Vampires are not stunned by another vampire's bite - if(iskindred(src)) - return COMPONENT_RESIST_VAMPIRE_KISS - - //Garou are not stunned by another vampire's bite - if(isgarou(src)) - return COMPONENT_RESIST_VAMPIRE_KISS - - //I hate this because crinos and lupus are not covered in isgarou() - if(iswerewolf(src)) - return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/mob/living/carbon/werewolf/transformation.dm b/code/modules/mob/living/carbon/werewolf/transformation.dm index 641bf68c79..2b23d5be1d 100644 --- a/code/modules/mob/living/carbon/werewolf/transformation.dm +++ b/code/modules/mob/living/carbon/werewolf/transformation.dm @@ -65,16 +65,20 @@ if(iscrinos(trans)) ntransform.Scale(0.75, 0.75) if(ishuman(trans)) + RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1, 0.75) if("Crinos") if(islupus(trans)) ntransform.Scale(1.75, 1.75) if(ishuman(trans)) + RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1.25, 1.5) if("Homid") if(iscrinos(trans)) + UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(0.75, 0.5) if(islupus(trans)) + UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1, 1.5) if(!transformating) transformating = TRUE @@ -115,8 +119,6 @@ transformating = FALSE animate(trans, transform = null, color = "#FFFFFF", time = 1) lupus_form.update_icons() -// if(lupus_form.auspice.base_breed != "Lupus") -// adjust_rage(-1, lupus_form) if("Crinos") if(trans == crinos_form) transformating = FALSE @@ -154,8 +156,6 @@ transformating = FALSE animate(trans, transform = null, color = "#FFFFFF", time = 1) crinos_form.update_icons() -// if(crinos_form.auspice.base_breed != "Crinos") -// adjust_rage(-1, crinos_form) if("Homid") if(trans == human_form) transformating = FALSE @@ -192,32 +192,3 @@ trans.forceMove(src) transformating = FALSE animate(trans, transform = null, color = "#FFFFFF", time = 1) -// if(human_form.auspice.base_breed != "Homid") -// adjust_rage(-1, human_form) - -/obj/werewolf_holder/transformation/proc/fast_trans_gender(mob/trans, form) - switch(form) - if("Lupus") - if(trans == lupus_form) - return - var/current_loc = get_turf(trans) - lupus_form.forceMove(current_loc) - lupus_form.key = trans.key - forceMove(lupus_form) - trans.forceMove(src) - if("Crinos") - if(trans == crinos_form) - return - var/current_loc = get_turf(trans) - crinos_form.forceMove(current_loc) - crinos_form.key = trans.key - forceMove(crinos_form) - trans.forceMove(src) - if("Homid") - if(trans == human_form) - return - var/current_loc = get_turf(trans) - human_form.forceMove(current_loc) - human_form.key = trans.key - forceMove(human_form) - trans.forceMove(src) diff --git a/code/modules/vtmb/kindred_species.dm b/code/modules/vtmb/kindred_species.dm index f2ceb2e60f..0ccb9462e3 100644 --- a/code/modules/vtmb/kindred_species.dm +++ b/code/modules/vtmb/kindred_species.dm @@ -239,8 +239,12 @@ //vampires don't die while in crit, they just slip into torpor after 2 minutes of being critted RegisterSignal(C, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(slip_into_torpor)) + //vampires resist vampire bites better than mortals + RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bitten)) + /datum/species/kindred/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() + UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/vampireinfo/VI in C.actions) if(VI) VI.Remove(C) @@ -881,4 +885,15 @@ qdel(clan_checking) //nothing found - return FALSE \ No newline at end of file + return FALSE + +/** + * On being bit by a vampire + * + * This handles vampire bite sleep immunity and any future special interactions. + */ +/datum/species/garou/proc/on_vampire_bitten(/datum/source) + SIGNAL HANDLER + + if(iskindred(src)) + return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/vtmb/werewolf_species.dm b/code/modules/vtmb/werewolf_species.dm index c4209e67ce..9be002d58d 100644 --- a/code/modules/vtmb/werewolf_species.dm +++ b/code/modules/vtmb/werewolf_species.dm @@ -109,8 +109,12 @@ C.transformator = new(C) C.transformator.human_form = C + //garou resist vampire bites better than mortals + RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + /datum/species/garou/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() + UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/garouinfo/VI in C.actions) if(VI) VI.Remove(C) @@ -163,3 +167,16 @@ SEND_SOUND(C, sound('code/modules/wod13/sounds/rage_decrease.ogg', 0, 0, 75)) to_chat(C, "GNOSIS DECREASES") C.update_rage_hud() + +/** + * On being bit by a vampire + * + * This handles vampire bite sleep immunity and any future special interactions. + */ +/datum/species/garou/proc/on_garou_bitten(/datum/source) + SIGNAL HANDLER + + if(isgarou(src) || iswerewolf(src)) + var/mob/living/carbon/wolf = src + adjust_rage(1, src, TRUE) + return COMPONENT_RESIST_VAMPIRE_KISS From 69a328f1d7c7a1be53b049bf2d40eb1680f253f0 Mon Sep 17 00:00:00 2001 From: DiscordWizard <34355419+DiscordWizard@users.noreply.github.com> Date: Sat, 8 Feb 2025 15:59:36 +0100 Subject: [PATCH 04/11] Update code/modules/vtmb/kindred_species.dm Co-authored-by: Joshua Kidder <49173900+Metekillot@users.noreply.github.com> --- code/modules/vtmb/kindred_species.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vtmb/kindred_species.dm b/code/modules/vtmb/kindred_species.dm index 0ccb9462e3..c7f646cf87 100644 --- a/code/modules/vtmb/kindred_species.dm +++ b/code/modules/vtmb/kindred_species.dm @@ -240,7 +240,7 @@ RegisterSignal(C, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(slip_into_torpor)) //vampires resist vampire bites better than mortals - RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bitten)) + RegisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bitten)) /datum/species/kindred/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() From 5d6b6304562c88b9de0e30c3c035f777c20613f4 Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Sun, 9 Feb 2025 02:15:16 +0100 Subject: [PATCH 05/11] Some fixes --- .../living/carbon/werewolf/transformation.dm | 21 +++++++++++++++---- code/modules/vtmb/kindred_species.dm | 8 +++---- code/modules/vtmb/werewolf_species.dm | 13 ++++++------ code/modules/wod13/bloodsucking.dm | 2 +- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/werewolf/transformation.dm b/code/modules/mob/living/carbon/werewolf/transformation.dm index 2b23d5be1d..5896b124d1 100644 --- a/code/modules/mob/living/carbon/werewolf/transformation.dm +++ b/code/modules/mob/living/carbon/werewolf/transformation.dm @@ -65,20 +65,20 @@ if(iscrinos(trans)) ntransform.Scale(0.75, 0.75) if(ishuman(trans)) - RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + RegisterSignal(lupus_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1, 0.75) if("Crinos") if(islupus(trans)) ntransform.Scale(1.75, 1.75) if(ishuman(trans)) - RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + RegisterSignal(crinos_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1.25, 1.5) if("Homid") if(iscrinos(trans)) - UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + UnregisterSignal(crinos_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(0.75, 0.5) if(islupus(trans)) - UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + UnregisterSignal(lupus_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1, 1.5) if(!transformating) transformating = TRUE @@ -192,3 +192,16 @@ trans.forceMove(src) transformating = FALSE animate(trans, transform = null, color = "#FFFFFF", time = 1) + +/** + * On being bit by a vampire + * + * This handles vampire bite sleep immunity and any future special interactions. + */ +/obj/werewolf_holder/transformation/proc/on_garou_bitten(/datum/source, mob/living/carbon/being_bitten) + SIGNAL_HANDLER + + if(isgarou(being_bitten) || iswerewolf(being_bitten)) + var/mob/living/carbon/wolf = src + adjust_rage(1, src, TRUE) + return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/vtmb/kindred_species.dm b/code/modules/vtmb/kindred_species.dm index c7f646cf87..3fe9b7ac95 100644 --- a/code/modules/vtmb/kindred_species.dm +++ b/code/modules/vtmb/kindred_species.dm @@ -244,7 +244,7 @@ /datum/species/kindred/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() - UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED) + UnregisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/vampireinfo/VI in C.actions) if(VI) VI.Remove(C) @@ -892,8 +892,8 @@ * * This handles vampire bite sleep immunity and any future special interactions. */ -/datum/species/garou/proc/on_vampire_bitten(/datum/source) - SIGNAL HANDLER +/datum/species/kindred/proc/on_vampire_bitten(/datum/source, mob/living/carbon/being_bitten) + SIGNAL_HANDLER - if(iskindred(src)) + if(iskindred(being_bitten)) return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/vtmb/werewolf_species.dm b/code/modules/vtmb/werewolf_species.dm index 9be002d58d..28f53951d4 100644 --- a/code/modules/vtmb/werewolf_species.dm +++ b/code/modules/vtmb/werewolf_species.dm @@ -110,11 +110,11 @@ C.transformator.human_form = C //garou resist vampire bites better than mortals - RegisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + RegisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) /datum/species/garou/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() - UnregisterSignal(src, COMSIG_MOB_VAMPIRE_SUCKED) + UnregisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/garouinfo/VI in C.actions) if(VI) VI.Remove(C) @@ -173,10 +173,9 @@ * * This handles vampire bite sleep immunity and any future special interactions. */ -/datum/species/garou/proc/on_garou_bitten(/datum/source) - SIGNAL HANDLER +/datum/species/garou/proc/on_garou_bitten(/datum/source, mob/living/carbon/being_bitten) + SIGNAL_HANDLER - if(isgarou(src) || iswerewolf(src)) - var/mob/living/carbon/wolf = src - adjust_rage(1, src, TRUE) + if(isgarou(being_bitten) || iswerewolf(being_bitten)) + adjust_rage(1, being_bitten, TRUE) return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/wod13/bloodsucking.dm b/code/modules/wod13/bloodsucking.dm index 42dbf3a4a0..fd0054a483 100644 --- a/code/modules/wod13/bloodsucking.dm +++ b/code/modules/wod13/bloodsucking.dm @@ -240,5 +240,5 @@ client.images -= suckbar qdel(suckbar) stop_sound_channel(CHANNEL_BLOOD) - if(!(SEND_SIGNAL(mob, COMSIG_MOB_VAMPIRE_SUCKED, src) & COMPONENT_RESIST_VAMPIRE_KISS)) + if(!(SEND_SIGNAL(mob, COMSIG_MOB_VAMPIRE_SUCKED, mob) & COMPONENT_RESIST_VAMPIRE_KISS)) mob.SetSleeping(50) From 6ef7d457f4d8475cbf59e6edfd9be2a7ebdf5644 Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Sun, 9 Feb 2025 02:51:14 +0100 Subject: [PATCH 06/11] Finishing touch --- code/modules/mob/living/carbon/werewolf/transformation.dm | 5 ++--- code/modules/vtmb/kindred_species.dm | 2 +- code/modules/vtmb/werewolf_species.dm | 2 +- code/modules/wod13/bloodsucking.dm | 1 - 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/werewolf/transformation.dm b/code/modules/mob/living/carbon/werewolf/transformation.dm index 5896b124d1..a25061e7f8 100644 --- a/code/modules/mob/living/carbon/werewolf/transformation.dm +++ b/code/modules/mob/living/carbon/werewolf/transformation.dm @@ -198,10 +198,9 @@ * * This handles vampire bite sleep immunity and any future special interactions. */ -/obj/werewolf_holder/transformation/proc/on_garou_bitten(/datum/source, mob/living/carbon/being_bitten) +/obj/werewolf_holder/transformation/proc/on_garou_bitten(datum/source, mob/living/carbon/being_bitten) SIGNAL_HANDLER if(isgarou(being_bitten) || iswerewolf(being_bitten)) - var/mob/living/carbon/wolf = src - adjust_rage(1, src, TRUE) + adjust_rage(1, being_bitten, TRUE) return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/vtmb/kindred_species.dm b/code/modules/vtmb/kindred_species.dm index 3fe9b7ac95..f6a9986419 100644 --- a/code/modules/vtmb/kindred_species.dm +++ b/code/modules/vtmb/kindred_species.dm @@ -892,7 +892,7 @@ * * This handles vampire bite sleep immunity and any future special interactions. */ -/datum/species/kindred/proc/on_vampire_bitten(/datum/source, mob/living/carbon/being_bitten) +/datum/species/kindred/proc/on_vampire_bitten(datum/source, mob/living/carbon/being_bitten) SIGNAL_HANDLER if(iskindred(being_bitten)) diff --git a/code/modules/vtmb/werewolf_species.dm b/code/modules/vtmb/werewolf_species.dm index 28f53951d4..b9e841c4c7 100644 --- a/code/modules/vtmb/werewolf_species.dm +++ b/code/modules/vtmb/werewolf_species.dm @@ -173,7 +173,7 @@ * * This handles vampire bite sleep immunity and any future special interactions. */ -/datum/species/garou/proc/on_garou_bitten(/datum/source, mob/living/carbon/being_bitten) +/datum/species/garou/proc/on_garou_bitten(datum/source, mob/living/carbon/being_bitten) SIGNAL_HANDLER if(isgarou(being_bitten) || iswerewolf(being_bitten)) diff --git a/code/modules/wod13/bloodsucking.dm b/code/modules/wod13/bloodsucking.dm index fd0054a483..7229d4a0d1 100644 --- a/code/modules/wod13/bloodsucking.dm +++ b/code/modules/wod13/bloodsucking.dm @@ -35,7 +35,6 @@ if(isnpc(mob)) var/mob/living/carbon/human/npc/NPC = mob NPC.danger_source = null -// NPC.last_attacker = src mob.Stun(30) //NPCs don't get to resist if(mob.bloodpool <= 1 && mob.maxbloodpool > 1) From dbd16c4b5cd0ad2712b41a3387543ff581a52b67 Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Mon, 10 Feb 2025 17:18:05 +0100 Subject: [PATCH 07/11] Cleanup + Kuei-Jinning --- code/modules/client/preferences.dm | 2 -- code/modules/vtmb/kuei_jin.dm | 15 +++++++++++++++ code/modules/vtmb/werewolf_species.dm | 1 - 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 41454bb742..12832366fc 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -3218,8 +3218,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.update_hair() character.update_body_parts() if(!character_setup) -// if(pref_species.name == "Werewolf") -// character.transformator.fast_trans_gender(character, character.base_breed) character.roundstart_vampire = TRUE if(character.age < 16) if(!character.ischildren) diff --git a/code/modules/vtmb/kuei_jin.dm b/code/modules/vtmb/kuei_jin.dm index 4bac5168ca..8720b502ee 100644 --- a/code/modules/vtmb/kuei_jin.dm +++ b/code/modules/vtmb/kuei_jin.dm @@ -256,8 +256,12 @@ var/datum/action/reanimate_yin/YN = new() YN.Grant(C) + //Kuei-jin resist vampire bites better than mortals + RegisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_kuei_jin_bitten)) + /datum/species/kuei_jin/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() + UnregisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/kueijininfo/VI in C.actions) if(VI) VI.Remove(C) @@ -678,3 +682,14 @@ kueijin.mind.dharma.Hun = max_hun kueijin.max_demon_chi = max_limit - max_hun kueijin.demon_chi = min(kueijin.demon_chi, kueijin.max_demon_chi) + +/** + * On being bit by a vampire + * + * This handles vampire bite sleep immunity and any future special interactions. + */ +/datum/species/kuei_jin/proc/on_kuei_jin_bitten(datum/source, mob/living/carbon/being_bitten) + SIGNAL_HANDLER + + if(iscathayan(being_bitten)) + return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/vtmb/werewolf_species.dm b/code/modules/vtmb/werewolf_species.dm index b9e841c4c7..13c8c02787 100644 --- a/code/modules/vtmb/werewolf_species.dm +++ b/code/modules/vtmb/werewolf_species.dm @@ -177,5 +177,4 @@ SIGNAL_HANDLER if(isgarou(being_bitten) || iswerewolf(being_bitten)) - adjust_rage(1, being_bitten, TRUE) return COMPONENT_RESIST_VAMPIRE_KISS From b510513cddfda29da05280cac04c52f2ac763ec1 Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Tue, 11 Feb 2025 22:41:51 +0100 Subject: [PATCH 08/11] New policy compliant --- code/__DEFINES/dcs/signals.dm | 5 ----- code/__DEFINES/wod13/signals_kindred.dm | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 code/__DEFINES/wod13/signals_kindred.dm diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 13a2db3c52..859fe49d87 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -1004,11 +1004,6 @@ ///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" -///called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood -#define COMSIG_MOB_VAMPIRE_SUCKED "mob_vampire_sucked" - ///vampire suck resisted - #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) - // Aquarium related signals #define COMSIG_AQUARIUM_BEFORE_INSERT_CHECK "aquarium_about_to_be_inserted" #define COMSIG_AQUARIUM_SURFACE_CHANGED "aquarium_surface_changed" diff --git a/code/__DEFINES/wod13/signals_kindred.dm b/code/__DEFINES/wod13/signals_kindred.dm new file mode 100644 index 0000000000..3c3d6987da --- /dev/null +++ b/code/__DEFINES/wod13/signals_kindred.dm @@ -0,0 +1,7 @@ +// This is the new signals file for every signal vampire related in WOD13 +// New signals related to vampires and things vampires do should be defined here + +///called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood +#define COMSIG_MOB_VAMPIRE_SUCKED "mob_vampire_sucked" + ///vampire suck resisted + #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) From 1d9f97533cdfd90274b2b42de31847af63ceb84d Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Tue, 11 Feb 2025 23:04:01 +0100 Subject: [PATCH 09/11] oops --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index 1ae420f64f..43450bbca8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -144,6 +144,7 @@ #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals.dm" #include "code\__DEFINES\research\anomalies.dm" +#include "code\__DEFINES\wod13\signals_kindred.dm" #include "code\__HELPERS\_lists.dm" #include "code\__HELPERS\_logging.dm" #include "code\__HELPERS\_string_lists.dm" From b18f903ac85d31985fd32bfc8071f6cfa6bc3d7a Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Tue, 11 Feb 2025 23:40:53 +0100 Subject: [PATCH 10/11] Neater --- code/modules/mob/living/carbon/werewolf/transformation.dm | 6 ------ code/modules/vtmb/werewolf_species.dm | 4 ++++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/werewolf/transformation.dm b/code/modules/mob/living/carbon/werewolf/transformation.dm index 6071ae2389..7d97bd4e35 100644 --- a/code/modules/mob/living/carbon/werewolf/transformation.dm +++ b/code/modules/mob/living/carbon/werewolf/transformation.dm @@ -10,10 +10,8 @@ . = ..() crinos_form = new() crinos_form.transformator = src -// crinos_form.forceMove(src) lupus_form = new() lupus_form.transformator = src -// lupus_form.forceMove(src) /obj/werewolf_holder/transformation/proc/transfer_damage(mob/living/carbon/first, mob/living/carbon/second) second.masquerade = first.masquerade @@ -65,20 +63,16 @@ if(iscrinos(trans)) ntransform.Scale(0.75, 0.75) if(ishuman(trans)) - RegisterSignal(lupus_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1, 0.75) if("Crinos") if(islupus(trans)) ntransform.Scale(1.75, 1.75) if(ishuman(trans)) - RegisterSignal(crinos_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1.25, 1.5) if("Homid") if(iscrinos(trans)) - UnregisterSignal(crinos_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(0.75, 0.5) if(islupus(trans)) - UnregisterSignal(lupus_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) ntransform.Scale(1, 1.5) if(!transformating) transformating = TRUE diff --git a/code/modules/vtmb/werewolf_species.dm b/code/modules/vtmb/werewolf_species.dm index 13c8c02787..821be1839b 100644 --- a/code/modules/vtmb/werewolf_species.dm +++ b/code/modules/vtmb/werewolf_species.dm @@ -111,10 +111,14 @@ //garou resist vampire bites better than mortals RegisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + RegisterSignal(C.transformator.lupus_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) + RegisterSignal(C.transformator.crinos_form, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_garou_bitten)) /datum/species/garou/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() UnregisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED) + UnregisterSignal(C.transformator.lupus_form, COMSIG_MOB_VAMPIRE_SUCKED) + UnregisterSignal(C.transformator.crinos_form, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/garouinfo/VI in C.actions) if(VI) VI.Remove(C) From a07af6208e909fa03ff97a670ea4944a6903ca7b Mon Sep 17 00:00:00 2001 From: DiscordWizard Date: Tue, 11 Feb 2025 23:53:49 +0100 Subject: [PATCH 11/11] Further cleaning --- .../mob/living/carbon/werewolf/transformation.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/mob/living/carbon/werewolf/transformation.dm b/code/modules/mob/living/carbon/werewolf/transformation.dm index 7d97bd4e35..5226717d66 100644 --- a/code/modules/mob/living/carbon/werewolf/transformation.dm +++ b/code/modules/mob/living/carbon/werewolf/transformation.dm @@ -186,15 +186,3 @@ trans.forceMove(src) transformating = FALSE animate(trans, transform = null, color = "#FFFFFF", time = 1) - -/** - * On being bit by a vampire - * - * This handles vampire bite sleep immunity and any future special interactions. - */ -/obj/werewolf_holder/transformation/proc/on_garou_bitten(datum/source, mob/living/carbon/being_bitten) - SIGNAL_HANDLER - - if(isgarou(being_bitten) || iswerewolf(being_bitten)) - adjust_rage(1, being_bitten, TRUE) - return COMPONENT_RESIST_VAMPIRE_KISS