/datum/artifact_effect/vampire
name = "vampire"
effect_type = EFFECT_ORGANIC
var/last_bloodcall = 0
var/bloodcall_interval = 50
var/last_eat = 0
var/eat_interval = 100
var/charges = 0
var/list/nearby_mobs = list()
/datum/artifact_effect/vampire/proc/bloodcall(var/mob/living/carbon/human/M)
last_bloodcall = world.time
if(istype(M))
playsound(holder, pick('sound/hallucinations/wail.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/far_noise.ogg'), 50, 1, -3)
var/target = pick(M.organs_by_name)
M.apply_damage(rand(5, 10), SEARING, target)
to_chat(M, "The skin on your [parse_zone(target)] feels like it's ripping apart, and a stream of blood flies out.")
var/obj/effect/decal/cleanable/blood/splatter/animated/B = new(M.loc)
B.basecolor = M.species.get_blood_colour(M)
B.color = M.species.get_blood_colour(M)
B.target_turf = pick(range(1, get_turf(holder)))
B.blood_DNA = list()
B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
M.vessel.remove_reagent("blood",rand(25,50))
/datum/artifact_effect/vampire/DoEffectTouch(var/mob/user)
bloodcall(user)
DoEffectAura()
/datum/artifact_effect/vampire/DoEffectAura()
nearby_mobs.Cut()
var/turf/T = get_turf(holder)
for(var/mob/living/L in oview(effectrange, T))
if(!L.stat && L.mind)
nearby_mobs |= L
if(world.time - last_bloodcall > bloodcall_interval && nearby_mobs.len)
var/mob/living/carbon/human/M = pick(nearby_mobs)
if(M in view(effectrange,holder) && M.health > 20)
if(prob(50))
bloodcall(M)
holder.Beam(M, icon_state = "drainbeam", time = 1 SECOND)
if(world.time - last_eat > eat_interval)
var/obj/effect/decal/cleanable/blood/B = locate() in range(2,holder)
if(B)
last_eat = world.time
B.loc = null
if(istype(B, /obj/effect/decal/cleanable/blood/drip))
charges += 0.25
else
charges += 1
playsound(holder, 'sound/effects/splat.ogg', 50, 1, -3)
qdel(B)
if(charges >= 10)
charges -= 10
var/manifestation = pick(/obj/item/device/soulstone, /mob/living/simple_mob/faithless/cult/strong, /mob/living/simple_mob/creature/cult/strong, /mob/living/simple_mob/animal/space/bats/cult/strong)
new manifestation(get_turf(pick(view(1,T))))
if(charges >= 3)
if(prob(5))
charges -= 1
var/spawn_type = pick(/mob/living/simple_mob/animal/space/bats, /mob/living/simple_mob/creature, /mob/living/simple_mob/faithless)
new spawn_type(get_turf(pick(view(1,T))))
playsound(holder, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3)
if(charges >= 1 && nearby_mobs.len && prob(15 * nearby_mobs.len))
var/mob/living/L = pick(nearby_mobs)
holder.Beam(L, icon_state = "drainbeam", time = 1 SECOND)
L.add_modifier(/datum/modifier/agonize, 5 SECONDS)
if(charges >= 0.1)
if(prob(5))
holder.visible_message("\icon[holder] \The [holder] gleams a bloody red!")
charges -= 0.1
/datum/artifact_effect/vampire/DoEffectPulse()
DoEffectAura()