mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-20 18:47:20 +01:00
Datumized vampires (#17166)
Co-authored-by: Farie82 <farie82@users.noreply.github.com> Co-authored-by: dearmochi <1496804+dearmochi@users.noreply.github.com>
This commit is contained in:
co-authored by
Farie82
dearmochi
parent
b2704e06b2
commit
a0e5d6df44
@@ -12,11 +12,11 @@
|
||||
var/diet_flags = DIET_OMNI | DIET_HERB | DIET_CARN
|
||||
|
||||
/datum/reagent/consumable/on_mob_life(mob/living/M)
|
||||
if(!(M.mind in SSticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
H.adjust_nutrition(nutriment_factor) // For hunger and fatness
|
||||
var/is_vamp = M.mind?.has_antag_datum(/datum/antagonist/vampire)
|
||||
if(ishuman(M) && !is_vamp)
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
H.adjust_nutrition(nutriment_factor) // For hunger and fatness
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/nutriment // Pure nutriment, universally digestable and thus slightly less effective
|
||||
@@ -31,13 +31,13 @@
|
||||
|
||||
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(!(M.mind in SSticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
if(prob(50))
|
||||
update_flags |= M.adjustBruteLoss(-brute_heal, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-burn_heal, FALSE)
|
||||
var/is_vamp = M.mind?.has_antag_datum(/datum/antagonist/vampire)
|
||||
if(ishuman(M) && !is_vamp)
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
if(prob(50))
|
||||
update_flags |= M.adjustBruteLoss(-brute_heal, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-burn_heal, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/nutriment/on_new(list/supplied_data)
|
||||
@@ -354,7 +354,8 @@
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.mind && H.mind.vampire && !H.mind.vampire.get_ability(/datum/vampire_passive/full)) //incapacitating but not lethal.
|
||||
var/datum/antagonist/vampire/V = H.mind?.has_antag_datum(/datum/antagonist/vampire)
|
||||
if(V && !V.get_ability(/datum/vampire_passive/full)) //incapacitating but not lethal.
|
||||
if(prob(min(25, current_cycle)))
|
||||
to_chat(H, "<span class='danger'>You can't get the scent of garlic out of your nose! You can barely think...</span>")
|
||||
H.Weaken(1)
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
C.reagents.add_reagent("toxin", volume * 0.5)
|
||||
else
|
||||
C.blood_volume = min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL)
|
||||
if(C.mind?.vampire)
|
||||
if(C.mind?.has_antag_datum(/datum/antagonist/vampire))
|
||||
C.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, C.nutrition + 10))
|
||||
|
||||
/datum/reagent/blood/on_new(list/data)
|
||||
@@ -249,7 +249,7 @@
|
||||
if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds
|
||||
M.AdjustConfused(3)
|
||||
if(isvampirethrall(M))
|
||||
SSticker.mode.remove_vampire_mind(M.mind)
|
||||
M.mind.remove_antag_datum(/datum/antagonist/mindslave/thrall)
|
||||
holder.remove_reagent(id, volume)
|
||||
M.SetJitter(0)
|
||||
M.SetStuttering(0)
|
||||
@@ -262,17 +262,18 @@
|
||||
M.SetStuttering(0)
|
||||
M.SetConfused(0)
|
||||
return
|
||||
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80))
|
||||
var/datum/antagonist/vampire/vamp = M.mind?.has_antag_datum(/datum/antagonist/vampire)
|
||||
if(ishuman(M) && vamp && !vamp.get_ability(/datum/vampire_passive/full) && prob(80))
|
||||
var/mob/living/carbon/V = M
|
||||
if(M.mind.vampire.bloodusable)
|
||||
if(vamp.bloodusable)
|
||||
M.Stuttering(1)
|
||||
M.Jitter(30)
|
||||
update_flags |= M.adjustStaminaLoss(5, FALSE)
|
||||
if(prob(20))
|
||||
M.emote("scream")
|
||||
M.mind.vampire.adjust_nullification(20, 4)
|
||||
M.mind.vampire.bloodusable = max(M.mind.vampire.bloodusable - 3,0)
|
||||
if(M.mind.vampire.bloodusable)
|
||||
vamp.adjust_nullification(20, 4)
|
||||
vamp.bloodusable = max(vamp.bloodusable - 3,0)
|
||||
if(vamp.bloodusable)
|
||||
V.vomit(0, TRUE, FALSE)
|
||||
V.adjustBruteLoss(3)
|
||||
else
|
||||
@@ -283,7 +284,7 @@
|
||||
switch(current_cycle)
|
||||
if(1 to 4)
|
||||
to_chat(M, "<span class = 'warning'>Something sizzles in your veins!</span>")
|
||||
M.mind.vampire.adjust_nullification(20, 4)
|
||||
vamp.adjust_nullification(20, 4)
|
||||
if(5 to 12)
|
||||
to_chat(M, "<span class = 'danger'>You feel an intense burning inside of you!</span>")
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
@@ -291,7 +292,7 @@
|
||||
M.Jitter(20)
|
||||
if(prob(20))
|
||||
M.emote("scream")
|
||||
M.mind.vampire.adjust_nullification(20, 4)
|
||||
vamp.adjust_nullification(20, 4)
|
||||
if(13 to INFINITY)
|
||||
M.visible_message("<span class='danger'>[M] suddenly bursts into flames!</span>",
|
||||
"<span class='danger'>You suddenly ignite in a holy fire!</span>")
|
||||
@@ -302,14 +303,15 @@
|
||||
M.Jitter(30)
|
||||
if(prob(40))
|
||||
M.emote("scream")
|
||||
M.mind.vampire.adjust_nullification(20, 4)
|
||||
vamp.adjust_nullification(20, 4)
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
/datum/reagent/holywater/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
// Vampires have their powers weakened by holy water applied to the skin.
|
||||
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full))
|
||||
var/mob/living/carbon/human/H=M
|
||||
var/datum/antagonist/vampire/V = M.mind?.has_antag_datum(/datum/antagonist/vampire)
|
||||
if(ishuman(M) && V && !V.get_ability(/datum/vampire_passive/full))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(method == REAGENT_TOUCH)
|
||||
if(H.wear_mask)
|
||||
to_chat(H, "<span class='warning'>Your mask protects you from the holy water!</span>")
|
||||
@@ -319,7 +321,7 @@
|
||||
return
|
||||
else
|
||||
to_chat(M, "<span class='warning'>Something holy interferes with your powers!</span>")
|
||||
M.mind.vampire.adjust_nullification(5, 2)
|
||||
V.adjust_nullification(5, 2)
|
||||
|
||||
|
||||
/datum/reagent/holywater/reaction_turf(turf/simulated/T, volume)
|
||||
|
||||
Reference in New Issue
Block a user