mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 14:37:04 +01:00
Updates Umbrah powers.dm (#21578)
This commit is contained in:
@@ -25,12 +25,11 @@
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(V.iscloaking)
|
||||
H.physiology.burn_mod *= 1.3
|
||||
H.physiology.burn_mod *= 1.1
|
||||
user.RegisterSignal(user, COMSIG_LIVING_IGNITED, TYPE_PROC_REF(/mob/living, update_vampire_cloak))
|
||||
else
|
||||
user.UnregisterSignal(user, COMSIG_LIVING_IGNITED)
|
||||
H.physiology.burn_mod /= 1.3
|
||||
|
||||
H.physiology.burn_mod /= 1.1
|
||||
update_name()
|
||||
to_chat(user, "<span class='notice'>You will now be [V.iscloaking ? "hidden" : "seen"] in darkness.</span>")
|
||||
|
||||
@@ -117,8 +116,8 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor
|
||||
name = "Soul Anchor (30)"
|
||||
desc = "You summon a dimenional anchor after a delay, casting again will teleport you back to the anchor. You are forced back after 2 minutes if you have not cast again."
|
||||
gain_desc = "You have gained the ability to save a point in space and teleport back to it at will. Unless you willingly teleport back to that point within 2 minutes, you are forced back."
|
||||
desc = "You summon a dimenional anchor after a delay, casting again will teleport you back to the anchor. You will fake a recall after 2 minutes."
|
||||
gain_desc = "You have gained the ability to save a point in space and teleport back to it at will. Unless you willingly teleport back to that point within 2 minutes, you will fake a recall."
|
||||
required_blood = 30
|
||||
centcom_cancast = FALSE
|
||||
base_cooldown = 3 MINUTES
|
||||
@@ -128,7 +127,7 @@
|
||||
var/obj/structure/shadow_anchor/anchor
|
||||
/// Are we making an anchor?
|
||||
var/making_anchor = FALSE
|
||||
/// Holds a reference to the timer until the caster is forced to recall
|
||||
/// Holds a reference to the timer until the caster fake recalls
|
||||
var/timer
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor/create_new_targeting()
|
||||
@@ -142,7 +141,7 @@
|
||||
if(!making_anchor && !anchor) // first cast, setup the anchor
|
||||
var/turf/anchor_turf = get_turf(user)
|
||||
making_anchor = TRUE
|
||||
if(do_mob(user, user, 10 SECONDS, only_use_extra_checks = TRUE)) // no checks, cant fail
|
||||
if(do_mob(user, user, 5 SECONDS, only_use_extra_checks = TRUE)) // no checks, cant fail
|
||||
make_anchor(user, anchor_turf)
|
||||
making_anchor = FALSE
|
||||
return
|
||||
@@ -153,10 +152,10 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor/proc/make_anchor(mob/user, turf/anchor_turf)
|
||||
anchor = new(anchor_turf)
|
||||
timer = addtimer(CALLBACK(src, PROC_REF(recall), user), 2 MINUTES, TIMER_STOPPABLE)
|
||||
timer = addtimer(CALLBACK(src, PROC_REF(recall), user, TRUE), 2 MINUTES, TIMER_STOPPABLE)
|
||||
should_recharge_after_cast = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor/proc/recall(mob/user)
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor/proc/recall(mob/user, fake = FALSE)
|
||||
if(timer)
|
||||
deltimer(timer)
|
||||
timer = null
|
||||
@@ -168,7 +167,16 @@
|
||||
if(!is_teleport_allowed(end_turf.z))
|
||||
return
|
||||
|
||||
user.forceMove(end_turf)
|
||||
if(fake)
|
||||
var/mob/living/simple_animal/hostile/illusion/escape/E = new(end_turf)
|
||||
E.Copy_Parent(user, 10 SECONDS)
|
||||
for(var/mob/living/L in view(7, E)) //We want it to start running
|
||||
E.GiveTarget(L)
|
||||
break
|
||||
user.make_invisible()
|
||||
addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, reset_visibility)), 4 SECONDS)
|
||||
else
|
||||
user.forceMove(end_turf)
|
||||
|
||||
if(end_turf.z == start_turf.z)
|
||||
shadow_to_animation(start_turf, end_turf, user)
|
||||
@@ -273,43 +281,46 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/self/eternal_darkness
|
||||
name = "Eternal Darkness"
|
||||
desc = "When toggled, you shroud the area around you in darkness and slowly lower the body temperature of people nearby."
|
||||
desc = "When toggled, you shroud the area around you in darkness and slowly lower the body temperature of people nearby. Energy projectiles will dim in its radius."
|
||||
gain_desc = "You have gained the ability to shroud the area around you in darkness, only the strongest of lights can pierce your unholy powers."
|
||||
base_cooldown = 10 SECONDS
|
||||
action_icon_state = "eternal_darkness"
|
||||
required_blood = 5
|
||||
var/shroud_power = -4
|
||||
var/shroud_power = -6
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/self/eternal_darkness/cast(list/targets, mob/user)
|
||||
var/datum/antagonist/vampire/V = user.mind.has_antag_datum(/datum/antagonist/vampire)
|
||||
var/mob/target = targets[1]
|
||||
if(!V.get_ability(/datum/vampire_passive/eternal_darkness))
|
||||
V.force_add_ability(/datum/vampire_passive/eternal_darkness)
|
||||
target.set_light(6, shroud_power, "#AAD84B")
|
||||
target.set_light(8, shroud_power, "#ddd6cf")
|
||||
else
|
||||
for(var/datum/vampire_passive/eternal_darkness/E in V.powers)
|
||||
V.remove_ability(E)
|
||||
|
||||
/datum/vampire_passive/eternal_darkness
|
||||
gain_desc = "You surround yourself in a unnatural darkness, freezing those around you."
|
||||
gain_desc = "You surround yourself in a unnatural darkness, freezing those around you and dimming energy projectiles."
|
||||
|
||||
/datum/vampire_passive/eternal_darkness/New()
|
||||
..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/datum/vampire_passive/eternal_darkness/Destroy(force, ...)
|
||||
owner.remove_light()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
return ..()
|
||||
|
||||
/datum/vampire_passive/eternal_darkness/process()
|
||||
var/datum/antagonist/vampire/V = owner.mind.has_antag_datum(/datum/antagonist/vampire)
|
||||
|
||||
for(var/mob/living/L in view(6, owner))
|
||||
for(var/mob/living/L in view(8, owner))
|
||||
if(L.affects_vampire(owner))
|
||||
L.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT)
|
||||
L.adjust_bodytemperature(-3 * TEMPERATURE_DAMAGE_COEFFICIENT) //The dark is cold and unforgiving. Equivelnt to -60 with previous values.
|
||||
for(var/obj/item/projectile/P in view(8, owner))
|
||||
if(P.flag == ENERGY || P.flag == LASER)
|
||||
P.damage *= 0.7
|
||||
|
||||
V.bloodusable = max(V.bloodusable - 5, 0)
|
||||
V.bloodusable = max(V.bloodusable - 0.25, 0) //2.5 per second, 5 per 2, same as before
|
||||
|
||||
if(!V.bloodusable || owner.stat == DEAD)
|
||||
V.remove_ability(src)
|
||||
|
||||
Reference in New Issue
Block a user