This commit is contained in:
Artur
2021-01-13 05:56:10 +02:00
parent f40955f6dc
commit d5e99e9cef
3 changed files with 36 additions and 11 deletions

View File

@@ -492,13 +492,13 @@
return TRUE return TRUE
//TODO: Better floating //TODO: Better floating
/atom/movable/proc/float(on) /atom/movable/proc/float(on, float_height)
if(throwing) if(throwing)
return return
if(on && (!(movement_type & FLOATING) || floating_need_update)) if(on && (!(movement_type & FLOATING) || floating_need_update))
animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) animate(src, pixel_y = pixel_y + 2 + float_height, time = 10, loop = -1)
sleep(10) sleep(10)
animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) animate(src, pixel_y = pixel_y - 2 - float_height, time = 10, loop = -1)
if(!(movement_type & FLOATING)) if(!(movement_type & FLOATING))
setMovetype(movement_type | FLOATING) setMovetype(movement_type | FLOATING)
else if (!on && movement_type & FLOATING) else if (!on && movement_type & FLOATING)

View File

@@ -11,7 +11,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
name = "item" name = "item"
icon = 'icons/obj/items_and_weapons.dmi' icon = 'icons/obj/items_and_weapons.dmi'
blocks_emissive = EMISSIVE_BLOCK_GENERIC blocks_emissive = EMISSIVE_BLOCK_GENERIC
attack_hand_speed = 0 attack_hand_speed = 0
attack_hand_is_action = FALSE attack_hand_is_action = FALSE
attack_hand_unwieldlyness = 0 attack_hand_unwieldlyness = 0
@@ -467,6 +467,21 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
melee_attack_chain(usr, over) melee_attack_chain(usr, over)
usr.FlushCurrentAction() usr.FlushCurrentAction()
return TRUE //returning TRUE as a "is this overridden?" flag return TRUE //returning TRUE as a "is this overridden?" flag
if(isrevenant(usr))
var/mob/living/simple_animal/revenant/spooker = usr
if(!anchored && !spooker.telekinesis_cooldown)
spooker.change_essence_amount(-5, FALSE, "telekinesis")
spooker.stun(10)
spooker.reveal(20)
spooker.telekinesis_cooldown = TRUE
float(TRUE, 2)
sleep(10)
throw_at(src_location)
new /obj/effect/temp_visual/telekinesis(get_turf(src))
addtimer(CALLBACK(src, /atom/movable.proc/float, FALSE), 2)
addtimer(CALLBACK(spooker, /mob/living/simple_animal/revenant.proc/telekinesis_cooldown_end), 30)
return
if(!Adjacent(usr) || !over.Adjacent(usr)) if(!Adjacent(usr) || !over.Adjacent(usr))
return // should stop you from dragging through windows return // should stop you from dragging through windows

View File

@@ -72,6 +72,7 @@
var/list/drained_mobs = list() //Cannot harvest the same mob twice var/list/drained_mobs = list() //Cannot harvest the same mob twice
var/perfectsouls = 0 //How many perfect, regen-cap increasing souls the revenant has. //TODO, add objective for getting a perfect soul(s?) var/perfectsouls = 0 //How many perfect, regen-cap increasing souls the revenant has. //TODO, add objective for getting a perfect soul(s?)
var/generated_objectives_and_spells = FALSE var/generated_objectives_and_spells = FALSE
var/telekinesis_cooldown
/mob/living/simple_animal/revenant/Initialize(mapload) /mob/living/simple_animal/revenant/Initialize(mapload)
. = ..() . = ..()
@@ -93,13 +94,16 @@
/mob/living/simple_animal/revenant/Login() /mob/living/simple_animal/revenant/Login()
..() ..()
to_chat(src, "<span class='deadsay'><span class='big bold'>You are a revenant.</span></span>") var/revenant_greet
to_chat(src, "<b>Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.</b>") revenant_greet += "<span class='deadsay'><span class='big bold'>You are a revenant.</span></span>"
to_chat(src, "<b>You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.</b>") revenant_greet += "<b>Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.</b>"
to_chat(src, "<b>You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.</b>") revenant_greet += "<b>You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.</b>"
to_chat(src, "<b>To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.</b>") revenant_greet += "<b>You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.</b>"
to_chat(src, "<b><i>You do not remember anything of your past lives, nor will you remember anything about this one after your death.</i></b>") revenant_greet += "<b>To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.</b>"
to_chat(src, "<b>Be sure to read <a href=\"https://tgstation13.org/wiki/Revenant\">the wiki page</a> to learn more.</b>") revenant_greet += "<b><i>You do not remember anything of your past lives, nor will you remember anything about this one after your death.</i></b>"
revenant_greet += "<b>Be sure to read <a href=\"https://tgstation13.org/wiki/Revenant\">the wiki page</a> to learn more.</b>"
revenant_greet += "<b>You are also able to telekinetically throw objects by clickdragging them.</b>"
to_chat(src, revenant_greet)
if(!generated_objectives_and_spells) if(!generated_objectives_and_spells)
generated_objectives_and_spells = TRUE generated_objectives_and_spells = TRUE
mind.assigned_role = ROLE_REVENANT mind.assigned_role = ROLE_REVENANT
@@ -317,6 +321,12 @@
to_chat(src, "<span class='revenminor'>Lost [essence_amt]E[source ? " from [source]":""].</span>") to_chat(src, "<span class='revenminor'>Lost [essence_amt]E[source ? " from [source]":""].</span>")
return 1 return 1
/mob/living/simple_animal/revenant/proc/telekinesis_cooldown_end()
if(!telekinesis_cooldown)
CRASH("telekinesis_cooldown_end ran when telekinesis_cooldown on [src] was false")
else
telekinesis_cooldown = FALSE
/mob/living/simple_animal/revenant/proc/death_reset() /mob/living/simple_animal/revenant/proc/death_reset()
revealed = FALSE revealed = FALSE
unreveal_time = 0 unreveal_time = 0