90 lines
3.4 KiB
Markdown
90 lines
3.4 KiB
Markdown
# Legacy Economy and Monthly Updates
|
||
|
||
This document summarizes the legacy economic pipeline: monthly income,
|
||
maintenance, population growth, city supply recalculation, and nation level
|
||
updates. References include `legacy/hwe/func_time_event.php`,
|
||
`legacy/hwe/sammo/Event/Action/*`, and `legacy/hwe/sammo/TurnExecutionHelper.php`.
|
||
|
||
## Entry Points
|
||
|
||
- `TurnExecutionHelper::executeAllCommand()`
|
||
- Calls `runEventHandler(PRE_MONTH)` → `preUpdateMonthly()` → `turnDate()` →
|
||
`runEventHandler(MONTH)` → `postUpdateMonthly()`.
|
||
- Event actions under `legacy/hwe/sammo/Event/Action/` execute concrete
|
||
economic updates.
|
||
|
||
## Monthly Income (ProcessIncome)
|
||
|
||
`Event/Action/ProcessIncome` distributes **gold** and **rice** on schedule:
|
||
|
||
- Collects all nations and cities, groups generals per nation.
|
||
- Computes income using:
|
||
- `getGoldIncome()` / `getRiceIncome()` from `func_time_event.php`.
|
||
- `getWallIncome()` for rice from walls (same file).
|
||
- Applies nation tax rate (`rate_tmp`) and salary ratio (`bill`).
|
||
- Pays generals by `dedication` via `getBill()`.
|
||
- Updates `nation_env.prev_income_{gold|rice}` and logs to history.
|
||
|
||
Key dependencies:
|
||
|
||
- `GameConst::$basegold`, `GameConst::$baserice` for minimum reserves.
|
||
- `GameConst::$resourceActionAmountGuide` for action amounts.
|
||
- `iAction::onCalcNationalIncome()` for nation-type modifiers.
|
||
|
||
## Semiannual Maintenance (ProcessSemiAnnual)
|
||
|
||
`Event/Action/ProcessSemiAnnual` applies upkeep and growth:
|
||
|
||
- City stats decay by 1% (agri/comm/secu/def/wall).
|
||
- Population growth via `popIncrease()`:
|
||
- Uses tax rate (`rate_tmp`) and security.
|
||
- Nation type can adjust via `onCalcNationalIncome('pop', ...)`.
|
||
- General and nation resources decay (1–5% bands based on thresholds).
|
||
|
||
## War Income and Casualties (ProcessWarIncome)
|
||
|
||
`Event/Action/ProcessWarIncome`:
|
||
|
||
- Converts `city.dead` into national gold income (supply-based war income).
|
||
- Returns 20% of `dead` to population (`pop += dead * 0.2`), then clears `dead`.
|
||
|
||
## City Supply and Isolation (UpdateCitySupply)
|
||
|
||
`Event/Action/UpdateCitySupply`:
|
||
|
||
- BFS from each nation capital through `CityConst` paths to mark `supply = 1`.
|
||
- Unsupplied cities (`supply = 0`) receive 10% stat/pop loss monthly.
|
||
- Generals in unsupplied cities lose 5% crew/train/atmos.
|
||
- Cities with `trust < 30` become neutral (nation = 0), and officers are reset.
|
||
|
||
## Nation Level Updates (UpdateNationLevel)
|
||
|
||
`Event/Action/UpdateNationLevel`:
|
||
|
||
- Nation level increases based on number of level≥4 cities.
|
||
- On level-up:
|
||
- Grants gold/rice bonus.
|
||
- Logs global and national history.
|
||
- Initializes `nation_turn` rows for new chief levels.
|
||
- Runs a unique-item lottery (deterministic RNG tagged `nationLevelUp`).
|
||
|
||
## City Trade Rates (RandomizeCityTradeRate)
|
||
|
||
- Once per month, adjusts `city.trade` with deterministic RNG:
|
||
- Probability depends on city level.
|
||
- Trade rate ranges 95–105 when triggered.
|
||
|
||
## RNG Notes
|
||
|
||
Economic events using RNG seed with `UniqueConst::$hiddenSeed` and a
|
||
feature-specific tag:
|
||
|
||
- `RandomizeCityTradeRate`: `hiddenSeed + 'randomizeCityTradeRate' + year + month`
|
||
- `UpdateNationLevel`: `hiddenSeed + 'nationLevelUp' + year + month + nationID`
|
||
|
||
## Open Questions / Follow-ups
|
||
|
||
- `preUpdateMonthly()`, `postUpdateMonthly()`, and `turnDate()` live in
|
||
`legacy/hwe/func_time_event.php` and `legacy/hwe/func.php`; their full
|
||
side effects should be expanded alongside this document.
|