mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-12 18:51:53 +00:00
143 lines
5.1 KiB
Plaintext
143 lines
5.1 KiB
Plaintext
/// Basetype with normal parameters
|
|
/datum/ai_controller/basic_controller/simple
|
|
blackboard = list(
|
|
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
|
|
)
|
|
|
|
ai_movement = /datum/ai_movement/basic_avoidance
|
|
idle_behavior = /datum/idle_behavior/idle_random_walk
|
|
|
|
/// The most basic AI tree which just finds a guy and then runs at them to click them
|
|
/datum/ai_controller/basic_controller/simple/simple_hostile
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
/// Find a target, walk at target, attack intervening obstacles
|
|
/datum/ai_controller/basic_controller/simple/simple_hostile_obstacles
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
/// Find a target, walk at target, attack intervening obstacles
|
|
/datum/ai_controller/basic_controller/simple/simple_ranged
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/maintain_distance,
|
|
/datum/ai_planning_subtree/ranged_skirmish,
|
|
)
|
|
|
|
/datum/ai_controller/basic_controller/simple/simple_ranged_retaliate
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/target_retaliate,
|
|
/datum/ai_planning_subtree/maintain_distance,
|
|
/datum/ai_planning_subtree/ranged_skirmish,
|
|
)
|
|
|
|
/// Find a target, walk towards it AND shoot it
|
|
/datum/ai_controller/basic_controller/simple/simple_skirmisher
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/ranged_skirmish,
|
|
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
/// Use an ability on target on cooldown
|
|
/datum/ai_controller/basic_controller/simple/simple_ability
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/maintain_distance,
|
|
/datum/ai_planning_subtree/targeted_mob_ability,
|
|
)
|
|
|
|
/datum/ai_controller/basic_controller/simple/simple_ability_retaliate
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/target_retaliate,
|
|
/datum/ai_planning_subtree/maintain_distance,
|
|
/datum/ai_planning_subtree/targeted_mob_ability,
|
|
)
|
|
|
|
/// Use an ability on target on cooldown, then try to punch them
|
|
/datum/ai_controller/basic_controller/simple/simple_ability_melee
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/targeted_mob_ability,
|
|
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
/// Use an ability on target on cooldown, then try to shoot them
|
|
/datum/ai_controller/basic_controller/simple/simple_ability_ranged
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/maintain_distance,
|
|
/datum/ai_planning_subtree/targeted_mob_ability,
|
|
/datum/ai_planning_subtree/ranged_skirmish,
|
|
)
|
|
|
|
/// Fight back if attacked
|
|
/datum/ai_controller/basic_controller/simple/simple_retaliate
|
|
ai_traits = DEFAULT_AI_FLAGS | STOP_MOVING_WHEN_PULLED
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/target_retaliate,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
/// Get pissed at random people for no reason
|
|
/datum/ai_controller/basic_controller/simple/simple_capricious
|
|
ai_traits = DEFAULT_AI_FLAGS | STOP_MOVING_WHEN_PULLED
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/capricious_retaliate,
|
|
/datum/ai_planning_subtree/target_retaliate,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
/// Runs away from anyone it sees
|
|
/datum/ai_controller/basic_controller/simple/simple_fearful
|
|
ai_traits = PASSIVE_AI_FLAGS
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/simple_find_nearest_target_to_flee,
|
|
/datum/ai_planning_subtree/flee_target,
|
|
)
|
|
|
|
/// Runs away when attacked
|
|
/datum/ai_controller/basic_controller/simple/simple_skittish
|
|
ai_traits = PASSIVE_AI_FLAGS
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee,
|
|
/datum/ai_planning_subtree/flee_target,
|
|
)
|
|
|
|
/// Does what it is told and protects da boss
|
|
/datum/ai_controller/basic_controller/simple/simple_goon
|
|
blackboard = list(
|
|
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends,
|
|
BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends,
|
|
)
|
|
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/escape_captivity,
|
|
/datum/ai_planning_subtree/pet_planning,
|
|
)
|
|
|
|
/// Literally does nothing except random speedh
|
|
/datum/ai_controller/basic_controller/talk
|
|
idle_behavior = null
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/random_speech/blackboard,
|
|
)
|