문서 수정: 레거시 엔진 문서에 aux 및 penalty 동작 관련 내용 추가
This commit is contained in:
@@ -51,6 +51,8 @@ Unit availability is controlled by `GameUnitConstraint` implementations:
|
|||||||
|
|
||||||
- `ReqTech`, `ReqCities`, `ReqRegions`, `ReqMinRelYear`, `Impossible`, etc.
|
- `ReqTech`, `ReqCities`, `ReqRegions`, `ReqMinRelYear`, `Impossible`, etc.
|
||||||
- Each constraint exposes `test(...)` and `getInfo()` for UI display.
|
- Each constraint exposes `test(...)` and `getInfo()` for UI display.
|
||||||
|
- `ReqNationAux` gates unit availability by `nation.aux` flags (e.g. research
|
||||||
|
unlocks like `can_화시병사용`), which are written by nation commands.
|
||||||
|
|
||||||
## Open Questions / Follow-ups
|
## Open Questions / Follow-ups
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ Constraints declare required inputs using bit flags:
|
|||||||
`Constraint::checkInputValues()` enforces these expectations and throws if
|
`Constraint::checkInputValues()` enforces these expectations and throws if
|
||||||
inputs are missing or malformed.
|
inputs are missing or malformed.
|
||||||
|
|
||||||
|
Some constraints expect `general.aux` to be preloaded as `auxVar`. Command
|
||||||
|
evaluation calls `General::unpackAux()` before constraint checks to satisfy
|
||||||
|
these requirements.
|
||||||
|
|
||||||
## Constraint Helper DSL
|
## Constraint Helper DSL
|
||||||
|
|
||||||
`ConstraintHelper` provides factory-style helpers used in command definitions:
|
`ConstraintHelper` provides factory-style helpers used in command definitions:
|
||||||
|
|||||||
@@ -76,8 +76,12 @@ For each general with `turntime < targetDate` (ordered by `turntime, no`):
|
|||||||
- Updates `killturn` based on NPC status, autorun, or `휴식`.
|
- Updates `killturn` based on NPC status, autorun, or `휴식`.
|
||||||
8. **Queue maintenance & turntime**
|
8. **Queue maintenance & turntime**
|
||||||
- `pullNationCommand()` / `pullGeneralCommand()` advance queues.
|
- `pullNationCommand()` / `pullGeneralCommand()` advance queues.
|
||||||
- `updateTurnTime()` handles deletion/retirement and sets next `turntime`.
|
- `updateTurnTime()` handles deletion/retirement and sets next `turntime`.
|
||||||
- Persist via `General::applyDB()`.
|
- Persist via `General::applyDB()`.
|
||||||
|
9. **LastTurn persistence**
|
||||||
|
- General `LastTurn` lives in `general.last_turn` JSON.
|
||||||
|
- Nation `LastTurn` is stored in `nation_env` under `turn_last_{officer_level}`.
|
||||||
|
- `LastTurn.term` only advances when the same command + arg repeats across turns.
|
||||||
|
|
||||||
## Command Semantics (BaseCommand)
|
## Command Semantics (BaseCommand)
|
||||||
|
|
||||||
@@ -100,6 +104,16 @@ For each general with `turntime < targetDate` (ordered by `turntime, no`):
|
|||||||
- **Scheduling**: next `turntime` is `addTurn(current, turnterm)` with
|
- **Scheduling**: next `turntime` is `addTurn(current, turnterm)` with
|
||||||
optional `nextTurnTimeBase` override (aux var).
|
optional `nextTurnTimeBase` override (aux var).
|
||||||
|
|
||||||
|
## killturn, block, autorun
|
||||||
|
|
||||||
|
- `killturn` acts as an inactivity counter; it is reset to `game_env.killturn`
|
||||||
|
when a non-rest player action completes, and decremented for NPCs, autorun,
|
||||||
|
rest commands, or block states.
|
||||||
|
- `block >= 2` forces `killturn` decrement and logs a block message.
|
||||||
|
- When `killturn <= 0`, the general is converted to NPC (owner removed) or
|
||||||
|
deleted depending on NPC type and `deadyear`.
|
||||||
|
- `autorun_limit` is stored in general `aux` and used to decide AI takeover.
|
||||||
|
|
||||||
## Deterministic RNG Seeds
|
## Deterministic RNG Seeds
|
||||||
|
|
||||||
RNG uses `LiteHashDRBG` with `UniqueConst::$hiddenSeed`:
|
RNG uses `LiteHashDRBG` with `UniqueConst::$hiddenSeed`:
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ exposes trigger hooks. The main reference is `legacy/hwe/sammo/General.php`.
|
|||||||
- `last_turn` is parsed into `LastTurn`, and a separate `resultTurn` is
|
- `last_turn` is parsed into `LastTurn`, and a separate `resultTurn` is
|
||||||
maintained for updates.
|
maintained for updates.
|
||||||
- `penalty` JSON is decoded into `PenaltyKey -> value` map.
|
- `penalty` JSON is decoded into `PenaltyKey -> value` map.
|
||||||
|
- `aux` JSON is lazily decoded and only written when aux values change.
|
||||||
- Rank data is tracked with:
|
- Rank data is tracked with:
|
||||||
- `rankVarRead` (current read view)
|
- `rankVarRead` (current read view)
|
||||||
- `rankVarIncrease` (increment queue)
|
- `rankVarIncrease` (increment queue)
|
||||||
@@ -53,6 +54,16 @@ Convenience wrappers:
|
|||||||
`BaseCommand::addTermStack()` to advance multi-turn commands.
|
`BaseCommand::addTermStack()` to advance multi-turn commands.
|
||||||
- `applyDB()` persists updated fields and writes `last_turn` if it changed.
|
- `applyDB()` persists updated fields and writes `last_turn` if it changed.
|
||||||
|
|
||||||
|
## Aux and Penalty Behavior
|
||||||
|
|
||||||
|
- `aux` is loaded on demand (`unpackAux()`), and `setAuxVar()` writes through to
|
||||||
|
`general.aux` only when values changed.
|
||||||
|
- Setting an aux value to `null` deletes the key from JSON.
|
||||||
|
- Command constraints that require aux values trigger `General::unpackAux()`
|
||||||
|
before evaluation.
|
||||||
|
- `penalty` is used in both `General` logic (AI and permission checks) and
|
||||||
|
API flows (messages, nation tools); runtime expiration is not automatic.
|
||||||
|
|
||||||
## Trigger and Modifier Hooks
|
## Trigger and Modifier Hooks
|
||||||
|
|
||||||
`General` delegates calculations and trigger lists through action objects:
|
`General` delegates calculations and trigger lists through action objects:
|
||||||
|
|||||||
Reference in New Issue
Block a user