1.5 KiB
1.5 KiB
Bot Logic Implementation
Changes
- Client/Server Types: Added
isBottoPlayerStateinterface. - GameManager:
- Updated
createGameto persistisBotflag from room players. - Implemented
processBotActionsmethod:- Mulligan: Always keeps hand.
- Main Phase: Plays a Land if available and not played yet.
- Main Phase: Casts first available Creature card from hand (simplified cost check).
- Combat: Attacks with all available creatures.
- Default: Passes priority.
- Added
triggerBotCheckpublic method to manually trigger bot automation (e.g. at game start). - Updated
handleStrictActionto include awhileloop that processes consecutive bot turns until a human receives priority.
- Updated
- Server Entry (index.ts):
- Injected
gameManager.triggerBotCheck(roomId)at all game start points (Normal start, Solo test, Deck timeout, etc.) to ensure bots act immediately if they win the coin flip or during mulligan.
- Injected
Bot Behavior
The bots are currently "Aggressive/Linear":
- They essentially dump their hand (Lands -> Creatures).
- They always attack with everything.
- They never block.
- They pass priority instantly if they can't do anything.
Future Improvements
- Implement mana cost checking (currently relying on loose engine rules or implicit valid state).
- Implement target selection logic (currently casting only if no targets needed or using empty array).
- Implement blocking logic.
- Implement "Smart" mulligans (currently always keep).