Commit graph

76 commits

Author SHA1 Message Date
91d32a71ee
Add campfireRest function with tests 2026-02-25 10:32:55 -05:00
febb05764b
Wire map into game loop with node-driven combat 2026-02-25 10:25:41 -05:00
4d0692cf44
Add map screen rendering and HTML section 2026-02-25 10:25:41 -05:00
7dfcc416d4
Add enemy pools and getNodeEnemy by node type 2026-02-25 09:53:16 -05:00
a7c5cbc56a
Add map state module with createMap, advanceMap, getCurrentNode 2026-02-25 09:52:22 -05:00
4f91396e3a
Add keyword integration tests
Exercises exhaust, ethereal, retain, poison, unplayable, and ironclad
heal-on-victory in a single test file using manual state construction
to control hand contents without relying on random draws.
2026-02-25 09:44:54 -05:00
ac45cb8758
Add ironclad end-of-combat heal passive 2026-02-25 09:44:54 -05:00
dd343be64a
Add poison tick at start of enemy turn 2026-02-25 09:44:54 -05:00
02f9e1ec2c
Add poison effect to enemies 2026-02-25 09:24:13 -05:00
62a1ef051c
Add retain keyword to endTurn 2026-02-25 09:22:19 -05:00
8a6a2f7662
Add ethereal keyword to endTurn 2026-02-25 09:22:02 -05:00
e05663d1c7
Add unplayable keyword to playCard 2026-02-25 09:20:19 -05:00
fe95c03529
Add exhaust keyword to playCard 2026-02-25 09:19:59 -05:00
77f65ace98
Wire run loop with victory rewards, defeat restart, and combat chaining 2026-02-25 08:02:04 -05:00
4e457b80af
Add createCombatFromRun to create combat state from run 2026-02-25 08:02:04 -05:00
46bd6e6d2b
Add reward reveal, pick, and skip functions to run module 2026-02-25 08:02:04 -05:00
11e12ee906
Add run state module with createRunState and rewards deck builder 2026-02-24 22:35:21 -05:00
28e54d502f
Export shuffle from state and add getAllCards to cards module 2026-02-24 22:34:19 -05:00
970796f85a
Add background, logo, and tick assets 2026-02-24 16:23:25 -05:00
75a2c2e408
Move board game rulebook PDF into docs 2026-02-24 16:23:22 -05:00
ea166ff59e
Add raw board game asset sheets to gitignore 2026-02-24 16:23:19 -05:00
27bfdc71b1
Wire board game image paths into card, relic, potion, and enemy data 2026-02-24 16:19:46 -05:00
9e11d7d423
Add script to wire board game image paths into data files 2026-02-24 16:19:46 -05:00
e541011b94
Add summon identifications and remove blank colorless entries from manifest 2026-02-24 14:59:50 -05:00
0466945217
Add enemies, elites, events, and upgraded cards to image manifest 2026-02-24 14:59:50 -05:00
d5a0751d5a
Add rare, colorless, and curse card identifications to manifest 2026-02-24 14:59:50 -05:00
85f89080f4
Add card identifications to image manifest (starters + commons) 2026-02-24 14:59:50 -05:00
f4cbf91687
Add initial image manifest for relics and potions 2026-02-24 14:59:50 -05:00
6bd11f9f40
Extract and organize board game assets into individual images
1053 cropped from sheets + 111 copied individual files
2026-02-24 14:59:50 -05:00
bda9c8c552
Add board game sheet cropping scripts 2026-02-24 13:33:00 -05:00
cf53fad0a4
Add script to copy individual board game assets 2026-02-24 13:33:00 -05:00
a2f61b0128
Add run loop implementation plan 2026-02-24 10:07:28 -05:00
22d7b1a54e
Add run loop design doc 2026-02-24 10:04:01 -05:00
886b744db8
Refactor playCard to options-based API instead of overloaded positional args 2026-02-23 23:30:06 -05:00
7e46b190f1
Ensure backward compatibility for single-player mode
Added explicit tests documenting that createCombatState, drawCards,
playCard, and endTurn all accept the original single-string/no-index
signatures and keep state.player and state.enemy aliases in sync.
2026-02-23 23:30:06 -05:00
62425eadd7
Update combat orchestration for multiplayer turns
startTurn resets energy/block for all players and draws 5 cards each,
also resets playersReady. resolveEnemyTurn iterates all enemies,
resets each enemy's block, and has each enemy act against player 0.
checkCombatEnd checks all enemies (victory) and any player (defeat).
2026-02-23 23:30:06 -05:00
e03b9b2dd7
Update effect resolver for indexed player/enemy targets
Added tests and verified resolveEffects handles {type, index}
descriptors for multi-player and multi-enemy state. getEntity and
setEntity helpers resolve either legacy string keys or typed index
objects, so all existing string-based call sites continue working.
2026-02-23 23:29:14 -05:00
86287a30c2
Update draw and play functions for player indexing
Added tests covering drawCards(state, playerIndex, count) and
playCard(state, playerIndex, handIndex, targetIndex) signatures.
Also tests the per-player endTurn path with playersReady tracking.
2026-02-23 23:29:14 -05:00
b2056d8368
Expand state model for multiple players and enemies
createCombatState now accepts arrays of characters and enemy IDs,
producing players[] and enemies[] arrays. Backward compat aliases
(state.player, state.enemy) are kept in sync. effects.js updated
to resolve entity descriptors as either legacy string keys or
{type, index} objects so both old and new call sites work.
2026-02-23 23:29:13 -05:00
57d15914f4
Complete watcher card extraction into cards.json
Merged 120 watcher cards from watcher_cards.json into the unified
cards.json database, replacing the previous 8 stub entries. Deleted
watcher_cards.json since the data is now consolidated.
2026-02-23 23:28:56 -05:00
6c5f935610
Add a roadmap and reference file 2026-02-23 23:23:12 -05:00
eb094a5138
Add data validation tests for cards and enemies 2026-02-23 23:23:12 -05:00
a11439eb58
Switch cards.js to load full cards.json database 2026-02-23 23:23:12 -05:00
426443bc9e
Update combat test to match real jaw_worm board game data 2026-02-23 23:23:12 -05:00
bdb83e40a2
Extract Act 1 enemy data from board game sheets 2026-02-23 23:23:12 -05:00
6ad8dd05e8
Apply biome formatting to cards.json 2026-02-23 23:23:12 -05:00
8a9439ed74
Update starter-ironclad.json with extracted data and image paths 2026-02-23 23:23:12 -05:00
429e1bbc2a
Map watcher card images to data 2026-02-23 23:23:12 -05:00
f3f092185b
Map defect card images to data 2026-02-23 18:53:22 -05:00
a4f449fef9
Map silent card images to data 2026-02-23 18:51:50 -05:00