#pragma once #include #include #include #include "Formula.h" #include "RecipesConfig.h" // A single stat modifier contributed by a module instance. // REQ-MOD-STAT-CALC: final = base * (1 + sum(m_i - 1)) + sum(additives). struct ModuleStatModifier { std::string stat; // e.g. "hp", "speed", "sensor_range" std::string modifierType; // "additive" or "multiplicative" Formula formula; }; // Capability sections — present when the module grants that capability. struct ModuleWeaponCapability { Formula damageFormula; Formula attackRangeFormula; Formula attackRateFormula; }; struct ModuleSalvageCapability { Formula collectionRangeFormula; Formula cargoCapacityFormula; Formula collectionRateFormula; }; struct ModuleRepairCapability { Formula repairRateFormula; Formula repairRangeFormula; }; struct ModuleDef { std::string id; std::vector surfaceMask; std::vector materials; int playerProductionLevel; double productionTimeSeconds; double threatCost; std::string fillColor; std::string glyph; std::vector statModifiers; std::optional weaponCapability; std::optional salvageCapability; std::optional repairCapability; }; struct ModulesConfig { std::vector modules; };