code/datums/ai/monkey/monkey_bt_nodes.dm 
| /datum/bt_node/ai_behavior/battle_screech/monkey | Monkey's battle screech variant louder and on a 5 second cooldown |
|---|---|
| /datum/bt_node/ai_behavior/monkey_equip | Base equip behavior; handles blacklist updates and key cleanup on finish |
| /datum/bt_node/ai_behavior/monkey_equip/ground | Equip a weapon off the ground |
| /datum/bt_node/ai_behavior/monkey_equip/pickpocket | Pickpocket a weapon from a mob |
| /datum/target_source/monkey_weapon_upgrade | Gathers weapon upgrade candidates: nearby ground items, then held items of nearby humans. |
| /datum/targeting_strategy/monkey_weapon_upgrade | Weapon upgrade candidate: not two-handed, not blacklisted, and hits harder than our bite. |
| /datum/bt_node/ai_behavior/acquire_target/update_interaction_target/monkey_find_weapon | Scans nearby items and mobs for a better weapon and sets BB_MONKEY_PICKUPTARGET |
| /datum/bt_node/ai_behavior/monkey_set_combat_target | Selects a target from BB_MONKEY_ENEMIES or picks any visible mob if aggressive. This should be ported to new targetting but its so fkn bespoke |
| /datum/bt_node/ai_behavior/monkey_attack_mob | Attacks the target mob; SUCCEEDED when target is gone, FAILED when target goes down (Which lets us flush the fucker instead) |
| /datum/bt_node/ai_behavior/recruit_monkeys | Rallies nearby monkeys against the current attack target |
| /datum/bt_node/ai_behavior/monkey_find_patrons | Scans nearby humans for patrons to serve; fails if bartender present or fewer than 1 patron found |
| /datum/target_source/monkey_press_target | Gathers press targets: filtered to BB_MONKEY_PRESS_TYPEPATH's type if set, else any nearby obj. |
| /datum/bt_node/ai_behavior/monkey_idle | Idle wander/emote behavior. Reads emote lists from BB_MONKEY_IDLE_COMMON_EMOTES and BB_MONKEY_IDLE_RARE_EMOTES. |
| /datum/bt_node/subtree/monkey_combat | monkey trees |