test!(lua.gamestate): cover remaining untested fields
- Dominant language
- Python
- Stars
- 72
- Forks
- 18
- PR merge metrics
- No merged PRs in 30d
Description
Tracking test coverage for `tests/lua/endpoints/test_gamestate.py` → `src/lua/utils/gamestate.lua`. Living checklist; update as tests land.
Source of truth: `src/lua/utils/types.lua` (`GameState` + nested classes), `src/lua/utils/enums.lua`. Full matrix in `tests/lua/endpoints/GAMESTATE_COVERAGE.md`.
- [x] **`hands` — poker hand levels (entire field missing)**
- type: `Hand` in `types.lua`; extractor `extract_hand_info()` in `gamestate.lua`
- game source: `G.GAME.hands` init `vendors/balatro/game.lua:2002-2013`; `level_up_hand` `vendors/balatro/functions/common_events.lua:464`
- reach non-defaults: Planet cards via `add`/`use` endpoints
- sub-fields: `order`, `level`, `chips`, `mult`, `played`, `played_this_round`, `example`
- [x] **`Card.Modifier` ×6 (all `# TODO` stubs)** — type `Card.Modifier`; extractor `extract_card_modifier()`
- [x] `seal`: Red/Blue/Gold/Purple (`Card.Modifier.Seal`)
- [x] `edition`: e_foil/e_holo/e_polychrome/e_negative (consumables = e_negative only)
- [x] `enhancement`: m_bonus/m_mult/m_wild/m_glass/m_steel/m_stone/m_gold/m_lucky
- [x] `eternal`/`perishable`/`rental`: jokers only
- reachable via `add` params
- [x] **`Card.State.debuff`** — `extract_card_state()`; `Blind:debuff_card` `vendors/balatro/blind.lua`; `set {boss:"bl_club|bl_head|bl_window|bl_goad|bl_plant"}`
- [x] **`Card.State.hidden`** — `bl_house` (deterministic first hand), `bl_mark`, `bl_wheel`, `bl_fish`
- [x] **`blinds.boss.reroll_available`** — `get_blinds_info()`; gate `G.FUNCS.reroll_boss_button`; `v_directors_cut`/`v_retcon` + money
- [x] **`challenge`** — `get_gamestate()` challenge branch; `Challenge` enum; `start {challenge:"c_omelette_1"}`
Contributor guide
Assessment
This issue has not been assessed yet.