change repair_tool application and add beams for salvager and repair_tool
This commit is contained in:
@@ -60,7 +60,7 @@ ShipStats calculateShipStats(const GameConfig& config,
|
||||
// --- Pass 1: base capability stats per module instance -------------------
|
||||
struct WeaponInstance { float damage; float range_tiles; float rate_hz; };
|
||||
struct SalvageInstance { float range_tiles; float rate; };
|
||||
struct RepairInstance { float rate_hps; float range_tiles; };
|
||||
struct RepairInstance { float rate_hz; float amount_hp; float range_tiles; };
|
||||
|
||||
std::vector<WeaponInstance> weaponInstances;
|
||||
std::vector<SalvageInstance> salvageInstances;
|
||||
@@ -93,7 +93,8 @@ ShipStats calculateShipStats(const GameConfig& config,
|
||||
if (def->repairCapability)
|
||||
{
|
||||
RepairInstance ri;
|
||||
ri.rate_hps = static_cast<float>(def->repairCapability->repairRateFormula.evaluate(mx));
|
||||
ri.rate_hz = static_cast<float>(def->repairCapability->repairRateFormula.evaluate(mx));
|
||||
ri.amount_hp = static_cast<float>(def->repairCapability->repairAmountHpFormula.evaluate(mx));
|
||||
ri.range_tiles = static_cast<float>(def->repairCapability->repairRangeFormula.evaluate(mx) / tileSize);
|
||||
repairInstances.push_back(ri);
|
||||
}
|
||||
@@ -238,9 +239,9 @@ ShipStats calculateShipStats(const GameConfig& config,
|
||||
float maxRange = 0.0f;
|
||||
for (RepairInstance& ri : repairInstances)
|
||||
{
|
||||
applyMod(ri.rate_hps, "repair_rate", repairMods);
|
||||
applyMod(ri.rate_hz, "repair_rate", repairMods);
|
||||
applyMod(ri.range_tiles, "repair_range", repairMods);
|
||||
combinedRate += ri.rate_hps;
|
||||
combinedRate += ri.rate_hz * ri.amount_hp;
|
||||
if (ri.range_tiles > maxRange) { maxRange = ri.range_tiles; }
|
||||
}
|
||||
result.repair = ShipStats::RepairStats{combinedRate, maxRange};
|
||||
@@ -303,7 +304,10 @@ ShipStats buildShipStatsFromEntity(const EntityAdmin& admin, entt::entity shipEn
|
||||
{
|
||||
if (owner.owner != shipEntity) { return; }
|
||||
hasRepair = true;
|
||||
repairRate += r.ratePerTick * kTickRateHz;
|
||||
const float cyclesPerSec = (r.repairIntervalTicks > 0)
|
||||
? static_cast<float>(kTickRateHz) / static_cast<float>(r.repairIntervalTicks)
|
||||
: 0.0f;
|
||||
repairRate += cyclesPerSec * r.repairAmountHp;
|
||||
if (r.range_tiles > repairMaxRange) { repairMaxRange = r.range_tiles; }
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user