# Bot Logic Implementation ## Changes - **Client/Server Types**: Added `isBot` to `PlayerState` interface. - **GameManager**: - Updated `createGame` to persist `isBot` flag from room players. - Implemented `processBotActions` method: - **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 `triggerBotCheck` public method to manually trigger bot automation (e.g. at game start). - Updated `handleStrictAction` to include a `while` loop that processes consecutive bot turns until a human receives priority. - **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. ## Bot Behavior The bots are currently "Aggressive/Linear": 1. They essentially dump their hand (Lands -> Creatures). 2. They always attack with everything. 3. They never block. 4. 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).