feat(combat): destroyables keep their attack priority

DestructibleComponent.attack_priority is loaded onto the DestroyableComponent as a signed value. The client's
LWODestroyableComponent (LoadDataFromTemplate, 0x00c9f900) starts it at 1 and keeps 1 when the column is empty, and
answers GetAttackPriority with it; the server now does the same so TacArcs can order their targets by it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-29 20:58:12 -05:00
parent 044933ebee
commit e017c11aa2
4 changed files with 12 additions and 2 deletions

View File

@@ -31,7 +31,7 @@ void CDDestructibleComponentTable::LoadValuesFromDatabase() {
entry.armor = tableData.getFloatField("armor", -1.0f);
entry.death_behavior = tableData.getIntField("death_behavior", -1);
entry.isnpc = tableData.getIntField("isnpc", -1) == 1 ? true : false;
entry.attack_priority = tableData.getIntField("attack_priority", -1);
entry.attack_priority = tableData.getIntField("attack_priority", 1);
entry.isSmashable = tableData.getIntField("isSmashable", -1) == 1 ? true : false;
entry.difficultyLevel = tableData.getIntField("difficultyLevel", -1);

View File

@@ -15,7 +15,7 @@ struct CDDestructibleComponent {
float armor; //!< The amount of armor of the object
uint32_t death_behavior; //!< The behavior ID of the death behavior
bool isnpc; //!< Whether or not the object is an NPC
uint32_t attack_priority; //!< ???
int32_t attack_priority; //!< TacArc target order, lower first; 1 when unset
bool isSmashable; //!< Whether or not the object is smashable
int32_t difficultyLevel; //!< ???
};