Boo! Rework (#14543)

* Boo Refactor

* Boo-Refactor Review Items

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

* Vending Machines Flicker

* Dave's Fire PR Review Mixtape Ft. SteelSlayer

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
This commit is contained in:
Samuel
2020-10-26 19:57:02 -04:00
committed by GitHub
parent 1133527469
commit c99f7e3b22
17 changed files with 229 additions and 61 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
/mob/dead/observer/proc/open_spawners_menu)
// Our new boo spell.
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/boo(null))
AddSpell(new /obj/effect/proc_holder/spell/targeted/click/boo(null))
can_reenter_corpse = flags & GHOST_CAN_REENTER
started_as_observer = flags & GHOST_IS_OBSERVER
+22 -6
View File
@@ -9,22 +9,38 @@ GLOBAL_LIST_INIT(boo_phrases, list(
"It feels like someone's standing behind you.",
))
/obj/effect/proc_holder/spell/aoe_turf/boo
/obj/effect/proc_holder/spell/targeted/click/boo
name = "Boo!"
desc = "Fuck with the living."
selection_deactivated_message = "<span class='shadowling'>Your presence will not be known. For now.</span>"
selection_activated_message = "<span class='shadowling'>You prepare to reach across the veil. <b>Left-click to influence a target!</b></span>"
auto_target_single = FALSE
allowed_type = /atom // No subtypes are safe from spookage.
ghost = TRUE
action_icon_state = "boo"
school = "transmutation"
charge_max = 600
charge_max = 2 MINUTES
starts_charged = FALSE
clothes_req = 0
stat_allowed = 1
invocation = ""
invocation_type = "none"
range = 1 // Or maybe 3?
range = 20
// no need to spam admins regarding boo casts
create_logs = FALSE
/obj/effect/proc_holder/spell/aoe_turf/boo/cast(list/targets, mob/user = usr)
for(var/turf/T in targets)
T.get_spooked()
/obj/effect/proc_holder/spell/targeted/click/boo/cast(list/targets, mob/user = usr)
var/atom/target = targets[1]
ASSERT(istype(target))
if(target.get_spooked())
var/area/spook_zone = get_area(target)
if (spook_zone.is_haunted == TRUE)
to_chat(usr, "<span class='shadowling'>The veil is weak in [spook_zone], it took less effort to influence [target].</span>")
charge_counter = charge_max / 2
return
charge_counter = charge_max * 0.9 // We've targetted a non-spookable object! Try again fast!