diff --git a/code/modules/mob/living/simple_animal/revenant/revenant.dm b/code/modules/mob/living/simple_animal/revenant/revenant.dm
index ab03c19d18c..1d83cbcc9d8 100644
--- a/code/modules/mob/living/simple_animal/revenant/revenant.dm
+++ b/code/modules/mob/living/simple_animal/revenant/revenant.dm
@@ -81,7 +81,7 @@
return
A.attack_ghost(src)
if(ishuman(A) && in_range(src, A))
- src.Harvest(A)
+ Harvest(A)
/mob/living/simple_animal/revenant/proc/Harvest(mob/living/carbon/human/target)
if(!castcheck(0))
@@ -118,10 +118,6 @@
if(5 to INFINITY)
src << "Such a feast! [target] will yield much essence to you."
if(do_after(src, 30, 9, 0, target)) //how about now
- if(!in_range(src, target))
- src << "You are not close enough to siphon [target]'s soul. The link has been broken."
- draining = 0
- return
if(!target.stat)
src << "They are now powerful enough to fight off your draining."
target << "You feel something tugging across your body before subsiding."
@@ -142,6 +138,10 @@
drained_mobs.Add(target)
target.death(0)
icon_state = "revenant_idle"
+ else
+ src << "You are not close enough to siphon [target]'s soul. The link has been broken."
+ draining = 0
+ return
draining = 0
return
@@ -224,65 +224,61 @@
..()
-/mob/living/simple_animal/revenant/proc/castcheck(var/essence_cost)
- var/mob/living/simple_animal/revenant/user = usr
- if(!istype(user) || !user)
+/mob/living/simple_animal/revenant/proc/castcheck(essence_cost)
+ if(!src)
return
- var/turf/T = get_turf(usr)
+ var/turf/T = get_turf(src)
if(istype(T, /turf/simulated/wall))
- user << "You cannot use abilities from inside of a wall."
+ src << "You cannot use abilities from inside of a wall."
return 0
- if(!user.change_essence_amount(essence_cost, 1))
- user << "You lack the essence to use that ability."
+ if(src.inhibited)
+ src << "Your powers have been suppressed by nulling energy!"
return 0
- if(user.inhibited)
- user << "Your powers have been suppressed by nulling energy!"
+ if(!src.change_essence_amount(essence_cost, 1))
+ src << "You lack the essence to use that ability."
return 0
return 1
-/mob/living/simple_animal/revenant/proc/change_essence_amount(var/essence_amt, var/silent = 0, var/source = null)
- var/mob/living/simple_animal/revenant/user = usr
- if(!istype(usr) || !usr)
+/mob/living/simple_animal/revenant/proc/change_essence_amount(essence_amt, silent = 0, source = null)
+ if(!src)
return
- if(user.essence + essence_amt <= 0)
+ if(essence + essence_amt <= 0)
return
- user.essence += essence_amt
- user.essence = max(0, user.essence)
+ essence += essence_amt
+ essence = max(0, essence)
if(essence_amt > 0)
- user.essence_accumulated += essence_amt
- user.essence_accumulated = max(0, user.essence_accumulated)
+ essence_accumulated += essence_amt
+ essence_accumulated = max(0, essence_accumulated)
if(!silent)
if(essence_amt > 0)
- user << "Gained [essence_amt]E from [source]."
+ src << "Gained [essence_amt]E from [source]."
else
- user << "Lost [essence_amt]E from [source]."
+ src << "Lost [essence_amt]E from [source]."
return 1
/mob/living/simple_animal/revenant/proc/reveal(time)
- var/mob/living/simple_animal/revenant/R = usr
- if(!istype(usr) || !usr)
+ if(!src)
return
if(time <= 0)
return
- R.revealed = 1
- R.invisibility = 0
- R << "You have been revealed."
+ revealed = 1
+ invisibility = 0
+ src << "You have been revealed."
spawn(time)
- R.revealed = 0
- R.invisibility = INVISIBILITY_OBSERVER
- R << "You are once more concealed."
+ revealed = 0
+ invisibility = INVISIBILITY_OBSERVER
+ src << "You are once more concealed."
/mob/living/simple_animal/revenant/proc/stun(time)
- var/mob/living/simple_animal/revenant/R = usr
- if(!istype(usr) || !usr)
+ if(!src)
return
if(time <= 0)
return
- R.notransform = 1
- R << "You cannot move!"
+ notransform = 1
+ src << "You cannot move!"
spawn(time)
- R.notransform = 0
- R << "You can move again!"
+ notransform = 0
+ src << "You can move again!"
/datum/objective/revenant
var/targetAmount = 100
diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm
index 7f34835a0be..016b8171113 100644
--- a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm
+++ b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm
@@ -45,7 +45,7 @@
clothes_req = 0
range = 1
var/reveal = 80
- var/stun = 10
+ var/stun = 20
var/locked = 1
/obj/effect/proc_holder/spell/aoe_turf/revenant_light/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
@@ -96,7 +96,7 @@
clothes_req = 0
range = 1
var/reveal = 100
- var/stun = 10
+ var/stun = 20
var/locked = 1
/obj/effect/proc_holder/spell/aoe_turf/revenant_defile/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
@@ -118,9 +118,9 @@
spawn(0)
if(T.flags & NOJAUNT)
T.flags -= NOJAUNT
- if(!istype(T, /turf/simulated/wall/cult) && istype(T, /turf/simulated/wall) && prob(30))
+ if(!istype(T, /turf/simulated/wall/cult) && istype(T, /turf/simulated/wall) && prob(40))
T.ChangeTurf(/turf/simulated/wall/cult)
- if(!istype(T, /turf/simulated/floor/engine/cult) && istype(T, /turf/simulated/floor) && prob(30))
+ if(!istype(T, /turf/simulated/floor/engine/cult) && istype(T, /turf/simulated/floor) && prob(40))
T.ChangeTurf(/turf/simulated/floor/engine/cult)
for(var/mob/living/carbon/human/human in T.contents)
human << "You suddenly feel tired."
@@ -166,22 +166,10 @@
bot.locked = 0
bot.open = 1
bot.Emag(null)
- for(var/mob/living/silicon/robot/robot in T.contents)
- robot.visible_message("[robot] lets out an alarm!", \
- "01001111 01010110 01000101 01010010 01001100 01001111 01000001 01000100") //Translates to "OVERLOAD"
- robot << 'sound/misc/interference.ogg'
- robot.emp_act(2)
- playsound(robot, 'sound/machines/warning-buzzer.ogg', 50, 1)
- for(var/mob/living/carbon/human/human in T.contents)
- human << "You feel a burst of cold throughout your body..."
- human.emp_act(2)
for(var/obj/machinery/mach in T.contents)
- switch(rand(1,10))
- if(1 to 3)
- mach.emp_act(1)
- if(4 to 9)
- mach.emp_act(2)
- if(10)
- mach.emag_act(null)
+ if(prob(10))
+ mach.emag_act(null)
+
+ empulse(user.loc, 3, 5)
user.reveal(reveal)
user.stun(stun)