make repair ships standby with rest of fleet if there is no one to repair (instead of advancing towards the enemy stations)

This commit is contained in:
2026-06-18 21:43:55 +02:00
parent abab2bbb6e
commit c371b43a6d
14 changed files with 208 additions and 4 deletions

View File

@@ -6,6 +6,7 @@ enum class BehaviorKind
{
None,
Advance,
Standby,
Rally,
Retreat,
Attack,

View File

@@ -3,12 +3,13 @@
// Score bands for ship-behavior evaluation. The AiSystem selection pass picks
// the behavior with the highest score per ship; these constants define a single
// comparable scale so the desired priority falls out:
// Retreat > Attack > Repair / Salvage / Deliver > Rally > Advance.
// Retreat > Attack > Repair / Salvage / Deliver > Rally > Standby > Advance.
// Evaluators may return kInactive when their behavior does not apply this tick.
namespace BehaviorScores
{
constexpr float kInactive = 0.0f;
constexpr float kAdvance = 0.05f; // baseline fallback; always present
constexpr float kStandby = 0.10f; // repair-capable ships; hold with the fleet
constexpr float kRally = 0.20f;
constexpr float kDeliver = 0.50f; // cargo full
constexpr float kRepair = 0.55f;

View File

@@ -23,6 +23,7 @@ SET(HDRS
${CMAKE_CURRENT_SOURCE_DIR}/SelectedBehaviorComponent.h
${CMAKE_CURRENT_SOURCE_DIR}/SensorRangeComponent.h
${CMAKE_CURRENT_SOURCE_DIR}/ShipIdentityComponent.h
${CMAKE_CURRENT_SOURCE_DIR}/StandbyBehavior.h
${CMAKE_CURRENT_SOURCE_DIR}/StationBodyComponent.h
${CMAKE_CURRENT_SOURCE_DIR}/WeaponComponent.h
PARENT_SCOPE

View File

@@ -0,0 +1,11 @@
#pragma once
// Fallback for ships with a repair capability: instead of charging the enemy
// like AdvanceBehavior, the ship holds with its fleet so damaged allies stay in
// sensor range and it can heal them. Scored just above Advance and below Rally,
// so it only wins when no more urgent behavior applies. The executor decides the
// destination (StandbyExecutor).
struct StandbyBehavior
{
float score = 0.0f;
};