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)