code/modules/mob/living/basic/space_fauna/carp/carp_controllers.dm 
| /datum/ai_controller/basic_controller/carp | AI controller for carp Expected flow is: |
|---|---|
| /datum/ai_controller/basic_controller/carp/mega | Megacarps. The only difference is that they don't flee from scary fishermen and prioritize them. |
| /datum/ai_controller/basic_controller/carp/pet | Carp which bites back, but doesn't look for targets. 'Not hunting targets' includes food (and can rings), because they have been well trained. |
| /datum/ai_controller/basic_controller/carp/ranged | AI for carp with a spell. Flow is basically the same as regular carp, except it will try and cast a spell at its target whenever possible and not fleeing. |
| /datum/ai_controller/basic_controller/carp/passive | Carp which bites back, but doesn't look for targets and doesnt do as much damage Still migrate and stuff |
| /datum/bt_node/subtree/basic_carp_tree | Shared carp skeleton: escape -> pet command -> (flee / combat / migrate-or-idle) with a target-finding secondary. |
| /datum/bt_node/subtree/carp_flee | Flee or panic-teleport away from a keyed target. |
| /datum/bt_node/subtree/carp_combat | Attack our current target: cast a spell, teleport in, smash obstacles or bite. |
| /datum/bt_node/subtree/carp_migration | Travel a migration path, riding or punching through rifts and walls along the way. |
| /datum/bt_node/subtree/carp_target_selection | Hunting target finder: flee the nearest threat when injured, otherwise hunt prioritising scary fishermen. |
| /datum/bt_node/subtree/carp_retaliate_selection | Bite-back target finder: target whoever has attacked us. |
| /datum/bt_node/subtree/carp_passive_selection | Passive flee finder: flag scary fishermen and attackers as things to run away from. |