summaryrefslogtreecommitdiff
path: root/Disable-Bag-Use-In-Battle.md
blob: 8f1a6a893ee9f5d6b9b49ddd82f0bba1f465fe9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
## Disable Bag Use In Battle

Credit to ghoulslash.

Using a flag, we can prevent the player from using items in battle.

### Define the flag.
In [include/constants/flags.h](../blob/master/include/constants/flags.h), replace an unused flag with `FLAG_DISABLE_BAG`, eg.
```c
#define FLAG_DISABLE_BAG 0x493
```

### Toggle Bag Usage
Open [src/battle_main.c](../blob/master/src/battle_main.c). Search for the line, [case B_ACTION_USE_ITEM:](../blob/master/src/battle_main.c#L4262) in the function `static void HandleTurnActionSelectionState(void)`. Change the code directly underneath to:
```c
if (FlagGet(FLAG_DISABLE_BAG) || gBattleTypeFlags & (BATTLE_TYPE_LINK
                                            | BATTLE_TYPE_FRONTIER_NO_PYRAMID
                                            | BATTLE_TYPE_EREADER_TRAINER
                                            | BATTLE_TYPE_x2000000))
{
    // etc.
```

If `FLAG_DISABLE_BAG` is set, selecting `BAG` in battle will display the message `Items can't be used now.`

### Reset after Whiteout
Open [src/overworld.c](../blob/master/src/overworld.c) and find the function `Overworld_ResetStateAfterWhiteOut`. Add the following alongside the other `FlagClear` functions:
```
FlagClear(FLAG_DISABLE_BAG);
```

<a href="https://imgur.com/IaSvW30"><img src="https://i.imgur.com/IaSvW30.png" title="source: imgur.com" /></a>