Files
Bubberstation/code/datums/ai/hauntium/haunted_controller.dm
Zonespace f7c26bbf25 515 Compat (#17465)
* ONLY SKYRAT CHANGES

* ACTUALLY SKYRAT CHANGES

* yolo, revert later

* Update alternate_byond_versions.txt

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
2022-11-15 06:59:06 +00:00

48 lines
1.6 KiB
Plaintext

/datum/ai_controller/haunted
movement_delay = 0.4 SECONDS
blackboard = list(
BB_TO_HAUNT_LIST = list(),
BB_LIKES_EQUIPPER = FALSE,
BB_HAUNT_TARGET,
BB_HAUNTED_THROW_ATTEMPT_COUNT,
)
planning_subtrees = list(/datum/ai_planning_subtree/haunted)
idle_behavior = /datum/idle_behavior/idle_ghost_item
/datum/ai_controller/haunted/TryPossessPawn(atom/new_pawn)
if(!isitem(new_pawn))
return AI_CONTROLLER_INCOMPATIBLE
RegisterSignal(new_pawn, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
return ..() //Run parent at end
/datum/ai_controller/haunted/UnpossessPawn()
UnregisterSignal(pawn, COMSIG_ITEM_EQUIPPED)
return ..() //Run parent at end
///Signal response for when the item is picked up; stops listening for follow up equips, just waits for a drop.
/datum/ai_controller/haunted/proc/on_equip(datum/source, mob/equipper, slot)
SIGNAL_HANDLER
UnregisterSignal(pawn, COMSIG_ITEM_EQUIPPED)
var/haunt_equipper = TRUE
if(isliving(equipper))
var/mob/living/possibly_cool = equipper
if(possibly_cool.mob_biotypes & MOB_UNDEAD)
haunt_equipper = FALSE
if(haunt_equipper)
//You have now become one of the victims of the HAAAAUNTTIIIINNGGG OOOOOO~~~
blackboard[BB_TO_HAUNT_LIST][WEAKREF(equipper)] += HAUNTED_ITEM_AGGRO_ADDITION
else
blackboard[BB_LIKES_EQUIPPER] = TRUE
RegisterSignal(pawn, COMSIG_ITEM_DROPPED, PROC_REF(on_dropped))
///Flip it so we listen for equip again but not for drop.
/datum/ai_controller/haunted/proc/on_dropped(datum/source, mob/user)
SIGNAL_HANDLER
RegisterSignal(pawn, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
blackboard[BB_LIKES_EQUIPPER] = FALSE
UnregisterSignal(pawn, COMSIG_ITEM_DROPPED)