mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-31 09:08:30 +01:00
AI controllers interactions refactor (#86492)
## About The Pull Request refactors all behaviors to work through clicking. also removes some now redundant behaviors. in the future ill try to generalize more of these behaviors ## Why It's Good For The Game makes AI controllers work through clicks which may help with swing combat implementation ## Changelog 🆑 refactor: basic mob AI interactions has been refactored. please report any bugs /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
@@ -8,8 +8,6 @@
|
||||
. = ..()
|
||||
if(!controller.blackboard[targeting_strategy_key])
|
||||
CRASH("No targeting strategy was supplied in the blackboard for [controller.pawn]")
|
||||
if(HAS_TRAIT(controller.pawn, TRAIT_HANDS_BLOCKED))
|
||||
return FALSE
|
||||
//Hiding location is priority
|
||||
var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key]
|
||||
if(QDELETED(target))
|
||||
@@ -35,11 +33,8 @@
|
||||
|
||||
controller.set_blackboard_key(hiding_location_key, hiding_target)
|
||||
|
||||
if(hiding_target) //Slap it!
|
||||
basic_mob.melee_attack(hiding_target)
|
||||
else
|
||||
basic_mob.melee_attack(target)
|
||||
|
||||
var/atom/final_target = hiding_target || target
|
||||
controller.ai_interact(target = final_target, combat_mode = TRUE)
|
||||
if(terminate_after_action)
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
return AI_BEHAVIOR_DELAY
|
||||
|
||||
@@ -24,9 +24,8 @@
|
||||
var/mob/living/basic/living_pawn = controller.pawn
|
||||
var/turf/closed/mineral/target = controller.blackboard[target_key]
|
||||
var/is_gibtonite_turf = istype(target, /turf/closed/mineral/gibtonite)
|
||||
if(QDELETED(target))
|
||||
if(!controller.ai_interact(target = target))
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
|
||||
living_pawn.melee_attack(target)
|
||||
if(is_gibtonite_turf)
|
||||
living_pawn.manual_emote("sighs...") //accept whats about to happen to us
|
||||
|
||||
|
||||
@@ -43,6 +43,5 @@
|
||||
if (distance > max_range || distance < min_range)
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
|
||||
|
||||
var/mob/living/basic/gunman = controller.pawn
|
||||
gunman.RangedAttack(target)
|
||||
controller.ai_interact(target = target, combat_mode = TRUE)
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
if(!basic_pawn.Adjacent(snack))
|
||||
return AI_BEHAVIOR_DELAY
|
||||
|
||||
basic_pawn.melee_attack(snack) // snack attack!
|
||||
controller.ai_interact(target = snack)
|
||||
|
||||
if(QDELETED(snack)) // we ate it!
|
||||
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
|
||||
|
||||
Reference in New Issue
Block a user