diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index d382cca1d2..859fe49d87 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -1004,7 +1004,6 @@ ///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" - // 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) 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/mob/living/carbon/werewolf/transformation.dm b/code/modules/mob/living/carbon/werewolf/transformation.dm index 3454802c14..5226717d66 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 @@ -115,8 +113,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 +150,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 +186,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 8ee9b16edf..c0f79bd0b6 100644 --- a/code/modules/vtmb/kindred_species.dm +++ b/code/modules/vtmb/kindred_species.dm @@ -242,8 +242,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(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) . = ..() + UnregisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED) for(var/datum/action/vampireinfo/VI in C.actions) if(VI) VI.Remove(C) @@ -885,3 +889,14 @@ //nothing found return FALSE + +/** + * On being bit by a vampire + * + * 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) + SIGNAL_HANDLER + + if(iskindred(being_bitten)) + return COMPONENT_RESIST_VAMPIRE_KISS 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 c4209e67ce..821be1839b 100644 --- a/code/modules/vtmb/werewolf_species.dm +++ b/code/modules/vtmb/werewolf_species.dm @@ -109,8 +109,16 @@ C.transformator = new(C) C.transformator.human_form = C + //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) @@ -163,3 +171,14 @@ 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, mob/living/carbon/being_bitten) + SIGNAL_HANDLER + + if(isgarou(being_bitten) || iswerewolf(being_bitten)) + return COMPONENT_RESIST_VAMPIRE_KISS diff --git a/code/modules/wod13/bloodsucking.dm b/code/modules/wod13/bloodsucking.dm index e9e101e3c3..352cc7d9b0 100644 --- a/code/modules/wod13/bloodsucking.dm +++ b/code/modules/wod13/bloodsucking.dm @@ -35,8 +35,7 @@ if(isnpc(mob)) 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.") @@ -238,5 +237,5 @@ client.images -= suckbar qdel(suckbar) stop_sound_channel(CHANNEL_BLOOD) - if(!iskindred(mob)) + if(!(SEND_SIGNAL(mob, COMSIG_MOB_VAMPIRE_SUCKED, mob) & COMPONENT_RESIST_VAMPIRE_KISS)) mob.SetSleeping(50) 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"