mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-15 04:01:41 +00:00
32 lines
1.0 KiB
Plaintext
32 lines
1.0 KiB
Plaintext
/// Intermittently run an emote
|
|
/datum/ai_planning_subtree/run_emote
|
|
var/emote_key = BB_EMOTE_KEY
|
|
var/emote_chance_key = BB_EMOTE_CHANCE
|
|
|
|
/datum/ai_planning_subtree/run_emote/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
|
var/emote_chance = controller.blackboard[emote_chance_key] || 0
|
|
if (!SPT_PROB(emote_chance, seconds_per_tick))
|
|
return
|
|
controller.queue_behavior(/datum/ai_behavior/run_emote, emote_key)
|
|
|
|
/// Emote from a blackboard key
|
|
/datum/ai_behavior/run_emote
|
|
|
|
/datum/ai_behavior/run_emote/perform(seconds_per_tick, datum/ai_controller/controller, emote_key)
|
|
var/mob/living/living_pawn = controller.pawn
|
|
if (!isliving(living_pawn))
|
|
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED
|
|
|
|
var/list/emote_list = controller.blackboard[emote_key]
|
|
var/emote
|
|
if (islist(emote_list))
|
|
emote = length(emote_list) ? pick(emote_list) : null
|
|
else
|
|
emote = emote_list
|
|
|
|
if(isnull(emote))
|
|
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED
|
|
|
|
living_pawn.emote(emote)
|
|
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED
|