# Role You are a Senior Flutter Developer. You are continuing the development of "Colosseum's Choice". The basic battle prototype is already working. Now, you need to implement the **Item & Progression System**. # Goal Modify the existing code to implement the following features: 1. **Item Model:** Create items that boost stats (ATK, MaxHP). 2. **Inventory System:** Player can equip items, and stats are calculated dynamically (Base + Item Bonus). 3. **Battle Loop:** - **Victory:** When Enemy HP <= 0, show a dialog to choose 1 of 3 random items. - **Progression:** After picking an item, the next battle starts immediately with a slightly stronger enemy. - **HP Rule:** Player HP is NOT fully restored between battles (Roguelike element). # Required Changes & Implementation Details Please generate the updated code for the following files. **IMPORTANT:** Preserve the existing "Risk vs Return" and "Armor Decay" logic. --- ## 1. `lib/models/item.dart` (New File) **Description:** - **Fields:** `String name`, `String description`, `int atkBonus`, `int hpBonus`. - **Constructor:** Standard constructor. ## 2. `lib/models/character.dart` (Modify) **Description:** Update to support equipment. - **New Fields:** `List equipment`. - **Stat Logic:** - `int get totalAtk`: Returns `baseAtk` + sum of all equipped items' `atkBonus`. - `int get totalMaxHp`: Returns `baseMaxHp` + sum of all equipped items' `hpBonus`. - **Important:** Use `totalAtk` and `totalMaxHp` for battle logic instead of raw fields. - **Methods:** - `void equip(Item item)`: Add to equipment. If `hpBonus` > 0, increase current `hp` by that amount as well (optional heal). ## 3. `lib/providers/battle_provider.dart` (Modify) **Description:** Handle Victory and Stage Progression. - **New Properties:** - `int stage`: Tracks current stage number (starts at 1). - `List rewardOptions`: Stores the 3 random items generated upon victory. - `bool showRewardPopup`: Flag to trigger UI dialog. - **Methods:** - `initializeBattle()`: Reset Player (Stage 1). - `_onVictory()` (Internal): Called when Enemy dies. Generate 3 random items (e.g., "Rusty Sword (+2 ATK)", "Leather Vest (+10 HP)"). Set `showRewardPopup = true`. - `selectReward(Item item)`: Equip item to player -> Increase Stage -> Spawn stronger Enemy (Scale Enemy stats by Stage) -> Reset `showRewardPopup`. - **Update `playerAction`**: Ensure it uses `player.totalAtk` for damage calculation. ## 4. `lib/screens/battle_screen.dart` (Modify) **Description:** Add UI for stats and rewards. - **Top Area:** Display `Stage: X`. Update HP bars to show `current / totalMaxHp`. - **Victory Handling:** - Use `Consumer` to listen to `battleProvider`. - If `provider.showRewardPopup` is true, show a `SimpleDialog` (or similar) listing the `rewardOptions`. - Clicking an option calls `provider.selectReward(item)`. --- # Output Format Please provide the complete code for the modified/new files.