Files
Bubberstation/code/modules/mob/living/basic/alien/alien_ai.dm
SkyratBot c462c462d8 [MIRROR] Simple animal xenos are now basic animal xenos (#27051)
* Simple animal xenos are now basic animal xenos

* Conflict + updatepaths

* more repaths

* file repath

* womp womp

* bam me thinks

* mapfix

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Waterpig <wtryoutube@seznam.cz>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
2024-04-11 10:27:17 +02:00

74 lines
2.4 KiB
Plaintext

/datum/ai_controller/basic_controller/alien
ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_random_walk
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/attack_obstacle_in_path,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
)
movement_delay = 0.8 SECONDS
/datum/ai_controller/basic_controller/alien/sentinel
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/attack_obstacle_in_path,
/datum/ai_planning_subtree/basic_ranged_attack_subtree/alien,
)
/datum/ai_controller/basic_controller/alien/drone
idle_behavior = /datum/idle_behavior/idle_random_walk/plant_weeds
/datum/ai_controller/basic_controller/alien/queen
idle_behavior = /datum/idle_behavior/idle_random_walk/plant_weeds/queen
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/attack_obstacle_in_path,
/datum/ai_planning_subtree/basic_ranged_attack_subtree/alien,
)
/**
* Alien projectile
* Try to avoid friendly fire, and has a 3 second delay.
*/
/datum/ai_planning_subtree/basic_ranged_attack_subtree/alien
ranged_attack_behavior = /datum/ai_behavior/basic_ranged_attack/alien
/datum/ai_behavior/basic_ranged_attack/alien
action_cooldown = 3 SECONDS
required_distance = 3
avoid_friendly_fire = TRUE
/datum/idle_behavior/idle_random_walk/plant_weeds
var/plant_cooldown = 30
var/plants_off = 0
/datum/idle_behavior/idle_random_walk/plant_weeds/perform_idle_behavior(seconds_per_tick, datum/ai_controller/controller)
. = ..()
if(!.)
return .
plant_cooldown--
var/mob/living/basic/alien/alien_pawn = controller.pawn
if(alien_pawn.can_plant_weeds && !plants_off && plant_cooldown <= 0)
plant_cooldown = initial(plant_cooldown)
alien_pawn.place_weeds()
/datum/idle_behavior/idle_random_walk/plant_weeds/queen
var/eggs_off = 0
var/egg_cooldown = 30
/datum/idle_behavior/idle_random_walk/plant_weeds/queen/perform_idle_behavior(seconds_per_tick, datum/ai_controller/controller)
. = ..()
if(!.)
return .
egg_cooldown--
var/mob/living/basic/alien/alien_pawn = controller.pawn
if(alien_pawn.can_lay_eggs && !eggs_off && egg_cooldown <= 0)
egg_cooldown = initial(egg_cooldown)
alien_pawn.lay_alien_egg()