Giant changeling spider aggression fix (#30274)

* Giant changeling spider aggression fix

* Moved changeling spiders to _DEFINES and used them as needed
This commit is contained in:
PollardTheDragon
2025-09-04 11:50:00 -04:00
committed by GitHub
parent 69a3b5835b
commit a4b1ac0444
4 changed files with 15 additions and 13 deletions
@@ -0,0 +1,4 @@
#define FOLLOW_AGGRESSIVE 0
#define FOLLOW_RETALIATE 1
#define IDLE_AGGRESSIVE 2
#define IDLE_RETALIATE 3
@@ -1,8 +1,3 @@
#define FOLLOW_AGGRESSIVE 0
#define FOLLOW_RETALIATE 1
#define IDLE_AGGRESSIVE 2
#define IDLE_RETALIATE 3
/datum/action/changeling/spiders
name = "Spread Infestation"
desc = "Our form divides, creating an aggressive arachnid which will regard us as a friend. Costs 30 chemicals."
@@ -120,8 +115,3 @@
if(IDLE_AGGRESSIVE)
to_chat(user, "<span class='notice'>We order the giant spider to remain idle, but ready to attack anyone on sight.</span>")
ai_controller.set_blackboard_key(BB_CHANGELING_SPIDER_ORDER, IDLE_AGGRESSIVE)
#undef IDLE_AGGRESSIVE
#undef FOLLOW_AGGRESSIVE
#undef FOLLOW_RETALIATE
#undef IDLE_RETALIATE
@@ -33,7 +33,7 @@
/datum/ai_controller/basic_controller/giant_spider/changeling
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends,
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends/changeling_spiders,
)
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target/cling_spider,
@@ -52,6 +52,13 @@
/datum/ai_planning_subtree/basic_melee_attack_subtree,
)
/datum/targeting_strategy/basic/not_friends/changeling_spiders
/datum/targeting_strategy/basic/not_friends/changeling_spiders/can_attack(mob/living/living_mob, atom/target, vision_range)
if(living_mob?.ai_controller?.blackboard[BB_CHANGELING_SPIDER_ORDER] && (living_mob?.ai_controller?.blackboard[BB_CHANGELING_SPIDER_ORDER] == FOLLOW_RETALIATE || living_mob?.ai_controller?.blackboard[BB_CHANGELING_SPIDER_ORDER] == IDLE_RETALIATE))
return FALSE
return ..()
/datum/ai_planning_subtree/random_speech/insect
speech_chance = 2
sound = list('sound/creatures/chitter.ogg')
@@ -259,7 +266,7 @@
/datum/ai_planning_subtree/simple_find_target/cling_spider
/datum/ai_planning_subtree/simple_find_target/cling_spider/select_behaviors(datum/ai_controller/controller, seconds_per_tick)
if(controller.blackboard[BB_CHANGELING_SPIDER_ORDER] == 1 || controller.blackboard[BB_CHANGELING_SPIDER_ORDER] == 3)
if(controller.blackboard[BB_CHANGELING_SPIDER_ORDER] == FOLLOW_RETALIATE || controller.blackboard[BB_CHANGELING_SPIDER_ORDER] == IDLE_RETALIATE)
return
return ..()
@@ -269,7 +276,7 @@
var/target_key = BB_CURRENT_PET_TARGET
/datum/ai_planning_subtree/cling_spider_follow/select_behaviors(datum/ai_controller/controller, seconds_per_tick)
if(controller.blackboard_key_exists(target_key) && controller.blackboard[BB_CHANGELING_SPIDER_ORDER] < 2)
if(controller.blackboard_key_exists(target_key) && controller.blackboard[BB_CHANGELING_SPIDER_ORDER] < IDLE_AGGRESSIVE)
controller.queue_behavior(/datum/ai_behavior/cling_spider_follow, target_key)
return SUBTREE_RETURN_FINISH_PLANNING
+1
View File
@@ -157,6 +157,7 @@
#include "code\__DEFINES\zoom.dm"
#include "code\__DEFINES\ai\ai_defines.dm"
#include "code\__DEFINES\ai\blackboard_defines.dm"
#include "code\__DEFINES\ai\changeling_giant_spider_ai_defines.dm"
#include "code\__DEFINES\dcs\ai_signals.dm"
#include "code\__DEFINES\dcs\area_signals.dm"
#include "code\__DEFINES\dcs\atom_signals.dm"