mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
ensure some ai behavior procs call parent (#30703)
* ensure some ai behavior procs call parent * fix slippage
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/basic_melee_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
|
||||
. = ..()
|
||||
if(isliving(controller.pawn))
|
||||
var/mob/living/pawn = controller.pawn
|
||||
if(world.time < pawn.next_move)
|
||||
@@ -70,6 +71,7 @@
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/basic_ranged_attack/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
|
||||
. = ..()
|
||||
var/mob/living/basic/basic_mob = controller.pawn
|
||||
//targeting strategy will kill the action if not real anymore
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
/datum/ai_behavior/befriend_target
|
||||
|
||||
/datum/ai_behavior/befriend_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key, befriend_message)
|
||||
. = ..()
|
||||
var/mob/living/living_pawn = controller.pawn
|
||||
var/mob/living/living_target = controller.blackboard[target_key]
|
||||
if(QDELETED(living_target))
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
set_movement_target(controller, hunt_target)
|
||||
|
||||
/datum/ai_behavior/emote_on_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key, list/emote_list)
|
||||
. = ..()
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
if(!length(emote_list) || isnull(target))
|
||||
return AI_BEHAVIOR_FAILED | AI_BEHAVIOR_DELAY
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/interact_with_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
if(QDELETED(target) || !pre_interact(controller, target))
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/ai_behavior/run_away_from_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key, hiding_location_key)
|
||||
. = ..()
|
||||
if(controller.blackboard[BB_BASIC_MOB_STOP_FLEEING])
|
||||
return AI_BEHAVIOR_DELAY
|
||||
var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key]
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
return cooldown_for.blackboard[BB_STATIONARY_COOLDOWN]
|
||||
|
||||
/datum/ai_behavior/stop_and_stare/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/atom/movable/target = controller.blackboard[target_key]
|
||||
if(!ismovable(target) || !isturf(target.loc)) // just to make sure that nothing funky happened between setup and perform
|
||||
return AI_BEHAVIOR_DELAY
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/swirl_around_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
var/mob/living/living_pawn = controller.pawn
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
/datum/ai_behavior/targeted_mob_ability
|
||||
|
||||
/datum/ai_behavior/targeted_mob_ability/perform(seconds_per_tick, datum/ai_controller/controller, ability_key, target_key)
|
||||
. = ..()
|
||||
var/datum/action/cooldown/ability = controller.blackboard[ability_key]
|
||||
var/mob/living/target = controller.blackboard[target_key]
|
||||
if(QDELETED(ability) || QDELETED(target))
|
||||
|
||||
@@ -26,6 +26,7 @@ GLOBAL_LIST_INIT(target_interested_atoms, typecacheof(list(
|
||||
return ..()
|
||||
|
||||
/datum/ai_behavior/find_potential_targets/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key)
|
||||
. = ..()
|
||||
var/mob/living/living_mob = controller.pawn
|
||||
var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
/datum/ai_behavior/tipped_reaction
|
||||
|
||||
/datum/ai_behavior/tipped_reaction/perform(seconds_per_tick, datum/ai_controller/controller, tipper_key, reacting_key)
|
||||
. = ..()
|
||||
var/mob/living/carbon/tipper = controller.blackboard[tipper_key]
|
||||
|
||||
// visible part of the visible message
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
set_movement_target(controller, target, new_movement_type)
|
||||
|
||||
/datum/ai_behavior/travel_towards/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
|
||||
/datum/ai_behavior/travel_towards/finish_action(datum/ai_controller/controller, succeeded, target_key)
|
||||
@@ -53,4 +54,5 @@
|
||||
set_movement_target(controller, target_atom)
|
||||
|
||||
/datum/ai_behavior/travel_towards_atom/perform(seconds_per_tick, datum/ai_controller/controller, atom/target_atom)
|
||||
. = ..()
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
var/can_attack_dense_objects = TRUE
|
||||
|
||||
/datum/ai_behavior/attack_obstructions/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/mob/living/basic/basic_mob = controller.pawn
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
action_cooldown = 1 SECONDS
|
||||
|
||||
/datum/ai_behavior/capricious_retaliate/perform(seconds_per_tick, datum/ai_controller/controller, targeting_strategy_key, ignore_faction)
|
||||
. = ..()
|
||||
var/atom/pawn = controller.pawn
|
||||
if(controller.blackboard_key_exists(BB_BASIC_MOB_RETALIATE_LIST))
|
||||
var/deaggro_chance = controller.blackboard[BB_RANDOM_DEAGGRO_CHANCE] || 10
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
var/look_range = 7
|
||||
|
||||
/datum/ai_behavior/find_mom/perform(seconds_per_tick, datum/ai_controller/controller, mom_key, ignore_mom_key, found_mom)
|
||||
. = ..()
|
||||
var/mob/living_pawn = controller.pawn
|
||||
var/list/mom_types = controller.blackboard[mom_key]
|
||||
var/list/all_moms = list()
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
return FALSE
|
||||
|
||||
/datum/ai_behavior/step_away/perform(seconds_per_tick, datum/ai_controller/controller)
|
||||
. = ..()
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
|
||||
/datum/ai_behavior/step_away/finish_action(datum/ai_controller/controller, succeeded)
|
||||
@@ -81,6 +82,7 @@
|
||||
set_movement_target(controller, current_target)
|
||||
|
||||
/datum/ai_behavior/pursue_to_range/perform(seconds_per_tick, datum/ai_controller/controller, target_key, range)
|
||||
. = ..()
|
||||
var/atom/current_target = controller.blackboard[target_key]
|
||||
if(!QDELETED(current_target) && get_dist(controller.pawn, current_target) > range)
|
||||
return AI_BEHAVIOR_INSTANT
|
||||
@@ -112,4 +114,5 @@
|
||||
set_movement_target(controller, target = chosen_turf)
|
||||
|
||||
/datum/ai_behavior/cover_minimum_distance/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
var/max_nearby_pop = 3
|
||||
|
||||
/datum/ai_behavior/find_partner/perform(seconds_per_tick, datum/ai_controller/controller, target_key, partner_types_key, child_types_key)
|
||||
. = ..()
|
||||
var/maximum_pop = controller.blackboard[BB_MAX_CHILDREN] || max_nearby_pop
|
||||
var/mob/pawn_mob = controller.pawn
|
||||
var/list/similar_species_types = controller.blackboard[partner_types_key] + controller.blackboard[child_types_key]
|
||||
@@ -84,6 +85,7 @@
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/make_babies/perform(seconds_per_tick, datum/ai_controller/controller, target_key, child_types_key)
|
||||
. = ..()
|
||||
var/mob/target = controller.blackboard[target_key]
|
||||
if(QDELETED(target) || target.stat != CONSCIOUS)
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/ai_behavior/find_mineral_wall
|
||||
|
||||
/datum/ai_behavior/find_mineral_wall/perform(seconds_per_tick, datum/ai_controller/controller, found_wall_key)
|
||||
. = ..()
|
||||
var/mob/living_pawn = controller.pawn
|
||||
|
||||
for(var/turf/simulated/mineral/potential_wall in oview(9, living_pawn))
|
||||
@@ -45,6 +46,7 @@
|
||||
action_cooldown = 15 SECONDS
|
||||
|
||||
/datum/ai_behavior/interact_with_target/mine_wall/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/mob/living/basic/living_pawn = controller.pawn
|
||||
var/turf/simulated/mineral/target = controller.blackboard[target_key]
|
||||
if(!controller.ai_interact(target = target))
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
search_turf_types = TRUE
|
||||
|
||||
/datum/ai_behavior/find_hunt_target/prowl/perform(seconds_per_tick, datum/ai_controller/controller, hunting_target_key, types_to_hunt, hunt_range)
|
||||
. = ..()
|
||||
var/mob/living/living_mob = controller.pawn
|
||||
var/list/interesting_objects = search_turf_types ? RANGE_TURFS(hunt_range, living_mob) : oview(hunt_range, living_mob)
|
||||
shuffle_inplace(interesting_objects)
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
return !QDELETED(target)
|
||||
|
||||
/datum/ai_behavior/ranged_skirmish/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key, max_range, min_range)
|
||||
. = ..()
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
if(QDELETED(target))
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
var/vision_range = 9
|
||||
|
||||
/datum/ai_behavior/target_from_retaliate_list/perform(seconds_per_tick, datum/ai_controller/controller, shitlist_key, target_key, targeting_strategy_key, hiding_location_key, check_faction)
|
||||
. = ..()
|
||||
var/mob/living/living_mob = controller.pawn
|
||||
var/datum/targeting_strategy/targeting_strategy = GET_TARGETING_STRATEGY(controller.blackboard[targeting_strategy_key])
|
||||
if(!targeting_strategy)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
/datum/ai_behavior/use_mob_ability
|
||||
|
||||
/datum/ai_behavior/use_mob_ability/perform(seconds_per_tick, datum/ai_controller/controller, ability_key)
|
||||
. = ..()
|
||||
var/datum/action/using_action = controller.blackboard[ability_key]
|
||||
if(QDELETED(using_action))
|
||||
return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
action_cooldown = 45 SECONDS
|
||||
|
||||
/datum/ai_behavior/find_ventcrawl_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key, range)
|
||||
. = ..()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(range, controller.pawn))
|
||||
if(!v.welded)
|
||||
|
||||
@@ -156,6 +156,7 @@
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/interact_with_vent/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
if(QDELETED(target))
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
var/search_turf_types = FALSE
|
||||
|
||||
/datum/ai_behavior/find_hunt_target/perform(seconds_per_tick, datum/ai_controller/controller, hunting_target_key, types_to_hunt, hunt_range)
|
||||
. = ..()
|
||||
var/mob/living/living_mob = controller.pawn
|
||||
var/list/interesting_objects = search_turf_types ? RANGE_TURFS(hunt_range, living_mob) : oview(hunt_range, living_mob)
|
||||
for(var/atom/possible_dinner as anything in typecache_filter_list(interesting_objects, types_to_hunt))
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
set_movement_target(controller, hunt_target)
|
||||
|
||||
/datum/ai_behavior/hunt_target/perform(seconds_per_tick, datum/ai_controller/controller, hunting_target_key, hunting_cooldown_key)
|
||||
. = ..()
|
||||
var/mob/living/hunter = controller.pawn
|
||||
var/atom/hunted = controller.blackboard[hunting_target_key]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user