Files
DarkflameServer/dDatabase/CDClientDatabase/CDClientTables/CDDestructibleComponentTable.h
Aaron Kimbrell e017c11aa2 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>
2026-09-29 21:44:48 -05:00

29 lines
1.4 KiB
C++

#pragma once
// Custom Classes
#include "CDTable.h"
struct CDDestructibleComponent {
uint32_t id; //!< The component ID from the ComponentsRegistry Table
int32_t faction; //!< The Faction ID of the object
std::string factionList; //!< A list of the faction IDs
int32_t life; //!< The amount of life of the object
uint32_t imagination; //!< The amount of imagination of the object
int32_t LootMatrixIndex; //!< The Loot Matrix Index
int32_t CurrencyIndex; //!< The Currency Index
uint32_t level; //!< ???
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
int32_t attack_priority; //!< TacArc target order, lower first; 1 when unset
bool isSmashable; //!< Whether or not the object is smashable
int32_t difficultyLevel; //!< ???
};
class CDDestructibleComponentTable : public CDTable<CDDestructibleComponentTable, std::vector<CDDestructibleComponent>> {
public:
void LoadValuesFromDatabase();
// Queries the table with a custom "where" clause
std::vector<CDDestructibleComponent> Query(std::function<bool(CDDestructibleComponent)> predicate);
};