Decomp ItemManager::GiveItem

This commit is contained in:
Aetias
2024-04-18 19:37:21 +02:00
parent d14d3113b7
commit ce73f7f765
34 changed files with 339 additions and 833 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once
.extern Divide
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager7AddItemEi
.extern _ZN11ItemManager8GiveKeysEj
.extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j
+1 -1
View File
@@ -76814,7 +76814,7 @@ _0203826c:
ldr r1, [r4, #4]
ldr r0, [r0]
mov r2, #1
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
add sp, sp, #0x18
mov r0, #2
ldmia sp!, {r3, r4, r5, pc}
+2 -2
View File
@@ -21,6 +21,6 @@
.extern func_ov00_020cf374
.extern func_ov00_020d73bc
.extern func_ov05_02104004
.extern func_ov09_0211c700
.extern func_ov09_0211ca20
.extern EquipLinebeckCannon
.extern GiveShipPart
.extern gItemManager
+12 -785
View File
@@ -3,782 +3,9 @@
.text
.global _ZN11ItemManager8GiveItemEi
thumb_func_start _ZN11ItemManager8GiveItemEi
_ZN11ItemManager8GiveItemEi: ; 0x020adcdc
push {r3, r4, r5, lr}
cmp r1, #0x76
bgt _020addd2
blt _020adce6
b _020ae128
_020adce6:
cmp r1, #0x6f
bgt _020adda0
blt _020adcee
b _020ae0ec
_020adcee:
cmp r1, #0x6c
bgt _020add8e
blt _020adcf6
b _020ae0bc
_020adcf6:
cmp r1, #0x3d
bgt _020add86
cmp r1, #0
blt _020add8c
add r2, r1, r1
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_020add0a: ; jump table
.short _020ae222 - _020add0a - 2 ; case 0
.short _020ade36 - _020add0a - 2 ; case 1
.short _020ade3e - _020add0a - 2 ; case 2
.short _020ade7c - _020add0a - 2 ; case 3
.short _020ade98 - _020add0a - 2 ; case 4
.short _020ae222 - _020add0a - 2 ; case 5
.short _020ae1fe - _020add0a - 2 ; case 6
.short _020adeb4 - _020add0a - 2 ; case 7
.short _020adec8 - _020add0a - 2 ; case 8
.short _020ade5c - _020add0a - 2 ; case 9
.short _020ae1fe - _020add0a - 2 ; case 10
.short _020ae1fe - _020add0a - 2 ; case 11
.short _020aded2 - _020add0a - 2 ; case 12
.short _020adedc - _020add0a - 2 ; case 13
.short _020adebe - _020add0a - 2 ; case 14
.short _020ae1fe - _020add0a - 2 ; case 15
.short _020ae222 - _020add0a - 2 ; case 16
.short _020ae1fe - _020add0a - 2 ; case 17
.short _020adefa - _020add0a - 2 ; case 18
.short _020adf12 - _020add0a - 2 ; case 19
.short _020adf2c - _020add0a - 2 ; case 20
.short _020adf46 - _020add0a - 2 ; case 21
.short _020adf60 - _020add0a - 2 ; case 22
.short _020ae1fe - _020add0a - 2 ; case 23
.short _020ade48 - _020add0a - 2 ; case 24
.short _020ade52 - _020add0a - 2 ; case 25
.short _020ade66 - _020add0a - 2 ; case 26
.short _020ade70 - _020add0a - 2 ; case 27
.short _020ae1fe - _020add0a - 2 ; case 28
.short _020ae1fe - _020add0a - 2 ; case 29
.short _020ae1fe - _020add0a - 2 ; case 30
.short _020adee6 - _020add0a - 2 ; case 31
.short _020adef0 - _020add0a - 2 ; case 32
.short _020ae1fe - _020add0a - 2 ; case 33
.short _020ae1fe - _020add0a - 2 ; case 34
.short _020ae1fe - _020add0a - 2 ; case 35
.short _020adf7a - _020add0a - 2 ; case 36
.short _020adf96 - _020add0a - 2 ; case 37
.short _020adfbe - _020add0a - 2 ; case 38
.short _020adfd8 - _020add0a - 2 ; case 39
.short _020adff2 - _020add0a - 2 ; case 40
.short _020adff8 - _020add0a - 2 ; case 41
.short _020adffe - _020add0a - 2 ; case 42
.short _020ae1fe - _020add0a - 2 ; case 43
.short _020ae004 - _020add0a - 2 ; case 44
.short _020ae024 - _020add0a - 2 ; case 45
.short _020ae032 - _020add0a - 2 ; case 46
.short _020ae040 - _020add0a - 2 ; case 47
.short _020ae1fe - _020add0a - 2 ; case 48
.short _020ae1fe - _020add0a - 2 ; case 49
.short _020ae1fe - _020add0a - 2 ; case 50
.short _020ae1fe - _020add0a - 2 ; case 51
.short _020ae1fe - _020add0a - 2 ; case 52
.short _020ae1fe - _020add0a - 2 ; case 53
.short _020ae1fe - _020add0a - 2 ; case 54
.short _020ae1fe - _020add0a - 2 ; case 55
.short _020ae014 - _020add0a - 2 ; case 56
.short _020ae1fe - _020add0a - 2 ; case 57
.short _020ae1fe - _020add0a - 2 ; case 58
.short _020ae1fe - _020add0a - 2 ; case 59
.short _020ae1fe - _020add0a - 2 ; case 60
.short _020ae04e - _020add0a - 2 ; case 61
_020add86:
cmp r1, #0x6b
bne _020add8c
b _020ae0ac
_020add8c:
b _020ae1fe
_020add8e:
cmp r1, #0x6d
bgt _020add98
bne _020add96
b _020ae0cc
_020add96:
b _020ae1fe
_020add98:
cmp r1, #0x6e
bne _020add9e
b _020ae0dc
_020add9e:
b _020ae1fe
_020adda0:
cmp r1, #0x72
bgt _020addba
blt _020adda8
b _020ae082
_020adda8:
cmp r1, #0x70
bgt _020addb2
bne _020addb0
b _020ae0fc
_020addb0:
b _020ae1fe
_020addb2:
cmp r1, #0x71
bne _020addb8
b _020ae072
_020addb8:
b _020ae1fe
_020addba:
cmp r1, #0x74
bgt _020addca
blt _020addc2
b _020ae09e
_020addc2:
cmp r1, #0x73
bne _020addc8
b _020ae090
_020addc8:
b _020ae1fe
_020addca:
cmp r1, #0x75
bne _020addd0
b _020ae10c
_020addd0:
b _020ae1fe
_020addd2:
cmp r1, #0x7c
bgt _020ade06
blt _020addda
b _020ae1b0
_020addda:
cmp r1, #0x79
bgt _020addf4
blt _020adde2
b _020ae16c
_020adde2:
cmp r1, #0x77
bgt _020addec
bne _020addea
b _020ae144
_020addea:
b _020ae1fe
_020addec:
cmp r1, #0x78
bne _020addf2
b _020ae160
_020addf2:
b _020ae1fe
_020addf4:
cmp r1, #0x7a
bgt _020addfe
bne _020addfc
b _020ae182
_020addfc:
b _020ae1fe
_020addfe:
cmp r1, #0x7b
bne _020ade04
thumb_func_end _ZN11ItemManager8GiveItemEi
_020ade02:
b _020ae198
_020ade04:
b _020ae1fe
_020ade06:
cmp r1, #0x81
bgt _020ade20
blt _020ade0e
b _020ae1e6
_020ade0e:
cmp r1, #0x7f
bgt _020ade18
bne _020ade16
b _020ae1c6
_020ade16:
b _020ae1fe
_020ade18:
cmp r1, #0x80
bne _020ade1e
b _020ae1d6
_020ade1e:
b _020ae1fe
_020ade20:
cmp r1, #0x83
bgt _020ade2e
bge _020ade32
cmp r1, #0x82
bne _020ade2c
b _020ae1f2
_020ade2c:
b _020ae1fe
_020ade2e:
cmp r1, #0x84
bne _020ade34
_020ade32:
b _020ae222
_020ade34:
b _020ae1fe
_020ade36:
mov r1, #1
bl _ZN11ItemManager8GiveKeysEj
b _020ae222
_020ade3e:
mov r1, #1
add r2, r1, #0
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ade48:
mov r1, #5
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ade52:
mov r1, #0x14
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ade5c:
mov r1, #0x64
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ade66:
mov r1, #0xc8
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ade70:
mov r1, #0x4b
lsl r1, r1, #2
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ade7c:
mov r2, #0x4a
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #1
orr r1, r3
str r1, [r0, r2]
mov r1, #0
blx _ZN11ItemManager12GetEquipItemEi
ldr r2, [r0]
mov r1, #1
ldr r2, [r2, #0x20]
blx r2
b _020ae222
_020ade98:
mov r2, #0x4a
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #2
orr r1, r3
str r1, [r0, r2]
mov r1, #1
blx _ZN11ItemManager12GetEquipItemEi
ldr r2, [r0]
mov r1, #1
ldr r2, [r2, #0x20]
blx r2
b _020ae222
_020adeb4:
mov r1, #4
mov r2, #0xa
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020adebe:
mov r1, #7
mov r2, #0xa
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020adec8:
mov r1, #5
mov r2, #0x14
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020aded2:
mov r1, #2
mov r2, #1
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020adedc:
mov r1, #3
mov r2, #1
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020adee6:
mov r1, #8
mov r2, #1
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020adef0:
mov r1, #6
mov r2, #1
bl _ZN11ItemManager13GiveEquipItemEij
b _020ae222
_020adefa:
mov r1, #0x4b
lsl r1, r1, #2
ldr r3, [r0, r1]
mov r2, #1
orr r3, r2
str r3, [r0, r1]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x13
ldr r0, [r0]
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adf12:
mov r2, #0x4b
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #2
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #9
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adf2c:
mov r2, #0x4b
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #4
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0xa
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adf46:
mov r2, #0x4b
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #8
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0xb
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adf60:
mov r2, #0x4b
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #0x10
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0xc
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adf7a:
mov r2, #0x4b
lsl r2, r2, #2
add r1, r2, #0
ldr r3, [r0, r2]
sub r1, #0x2c
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x2b
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adf96:
mov r2, #0x4b
lsl r2, r2, #2
add r1, r2, #0
ldr r3, [r0, r2]
add r1, #0xd4
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x30
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
mov r0, #3
mov r1, #0
bl func_ov09_0211ca20
bl func_ov09_0211c700
b _020ae222
_020adfbe:
mov r2, #0x4b
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #0x40
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x16
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adfd8:
mov r2, #0x4b
lsl r2, r2, #2
ldr r3, [r0, r2]
mov r1, #0x80
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x17
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020adff2:
bl _ZN11ItemManager13UpgradeQuiverEv
b _020ae222
_020adff8:
bl _ZN11ItemManager14UpgradeBombBagEv
b _020ae222
_020adffe:
bl _ZN11ItemManager17UpgradeBombchuBagEv
b _020ae222
_020ae004:
mov r2, #0x4b
lsl r2, r2, #2
mov r1, #1
ldr r3, [r0, r2]
lsl r1, r1, #0xa
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae014:
mov r2, #0x4b
lsl r2, r2, #2
mov r1, #2
ldr r3, [r0, r2]
lsl r1, r1, #0xa
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae024:
add r1, r0, #0
add r1, #0x25
ldrb r1, [r1]
add r0, #0x25
add r1, r1, #1
strb r1, [r0]
b _020ae222
_020ae032:
add r1, r0, #0
add r1, #0x26
ldrb r1, [r1]
add r0, #0x26
add r1, r1, #1
strb r1, [r0]
b _020ae222
_020ae040:
add r1, r0, #0
add r1, #0x24
ldrb r1, [r1]
add r0, #0x24
add r1, r1, #1
strb r1, [r0]
b _020ae222
_020ae04e:
mov r2, #0x4b
lsl r2, r2, #2
mov r1, #1
ldr r3, [r0, r2]
lsl r1, r1, #0xc
orr r1, r3
str r1, [r0, r2]
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x8c
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
ldr r0, _020ae248 ; =gHealthManager
mov r1, #5
ldr r0, [r0]
strh r1, [r0, #8]
b _020ae222
_020ae072:
mov r2, #0x4b
lsl r2, r2, #2
mov r1, #2
ldr r3, [r0, r2]
lsl r1, r1, #0xc
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae082:
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x7e
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020ae090:
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x7d
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020ae09e:
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x7f
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
b _020ae222
_020ae0ac:
mov r2, #0x4a
lsl r2, r2, #2
mov r1, #1
ldr r3, [r0, r2]
lsl r1, r1, #0x18
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae0bc:
mov r2, #0x4a
lsl r2, r2, #2
mov r1, #2
ldr r3, [r0, r2]
lsl r1, r1, #0x18
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae0cc:
mov r2, #0x4a
lsl r2, r2, #2
mov r1, #2
ldr r3, [r0, r2]
lsl r1, r1, #0x16
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae0dc:
mov r2, #0x4a
lsl r2, r2, #2
mov r1, #2
ldr r3, [r0, r2]
lsl r1, r1, #0x1a
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae0ec:
mov r2, #0x4a
lsl r2, r2, #2
mov r1, #1
ldr r3, [r0, r2]
lsl r1, r1, #0x1c
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae0fc:
mov r2, #0x4a
lsl r2, r2, #2
mov r1, #1
ldr r3, [r0, r2]
lsl r1, r1, #0x1a
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae10c:
mov r1, #0
_020ae10e:
add r2, r0, r1
add r2, #0xbc
ldrb r2, [r2]
cmp r2, #0
bne _020ae120
mov r2, #1
blx _ZN11ItemManager9SetPotionEjj
b _020ae222
_020ae120:
add r1, r1, #1
cmp r1, #2
blt _020ae10e
b _020ae222
_020ae128:
mov r1, #0
_020ae12a:
add r2, r0, r1
add r2, #0xbc
ldrb r2, [r2]
cmp r2, #0
bne _020ae13c
mov r2, #2
blx _ZN11ItemManager9SetPotionEjj
b _020ae222
_020ae13c:
add r1, r1, #1
cmp r1, #2
blt _020ae12a
b _020ae222
_020ae144:
mov r1, #0
_020ae146:
add r2, r0, r1
add r2, #0xbc
ldrb r2, [r2]
cmp r2, #0
bne _020ae158
mov r2, #3
blx _ZN11ItemManager9SetPotionEjj
b _020ae222
_020ae158:
add r1, r1, #1
cmp r1, #2
blt _020ae146
b _020ae222
_020ae160:
mov r1, #0xe1
ldr r2, [r0, #0xc]
lsl r1, r1, #4
add r1, r2, r1
str r1, [r0, #0xc]
b _020ae222
_020ae16c:
ldr r0, _020ae244 ; =gAdventureFlags
ldr r1, _020ae24c ; =0x00000126
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
mov r0, #6
mov r1, #8
bl func_ov09_0211ca20
b _020ae222
_020ae182:
ldr r0, _020ae244 ; =gAdventureFlags
ldr r1, _020ae250 ; =0x00000127
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
mov r0, #4
mov r1, #8
bl func_ov09_0211ca20
b _020ae222
_020ae198:
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x4a
ldr r0, [r0]
lsl r1, r1, #2
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
mov r0, #3
mov r1, #8
bl func_ov09_0211ca20
b _020ae222
_020ae1b0:
ldr r0, _020ae244 ; =gAdventureFlags
ldr r1, _020ae254 ; =0x00000129
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
mov r0, #2
mov r1, #8
bl func_ov09_0211ca20
b _020ae222
_020ae1c6:
mov r2, #0x4b
lsl r2, r2, #2
mov r1, #1
ldr r3, [r0, r2]
lsl r1, r1, #0xe
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae1d6:
mov r2, #0x4b
lsl r2, r2, #2
mov r1, #2
ldr r3, [r0, r2]
lsl r1, r1, #0xe
orr r1, r3
str r1, [r0, r2]
b _020ae222
_020ae1e6:
mov r1, #9
mvn r1, r1
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ae1f2:
mov r1, #0x31
mvn r1, r1
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
b _020ae222
_020ae1fe:
cmp r1, #0x4b
blt _020ae222
cmp r1, #0x6a
bgt _020ae222
mov r2, #0x4a
lsl r2, r2, #2
add r1, #0x15
add r3, r0, r2
lsr r0, r1, #5
mov r4, #0x1f
lsl r2, r0, #2
mov r5, #1
and r1, r4
add r4, r5, #0
ldr r0, [r3, r2]
lsl r4, r1
orr r0, r4
str r0, [r3, r2]
_020ae222:
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x7d
ldr r0, [r0]
blx _ZN14AdventureFlags3GetEj
cmp r0, #0
beq _020ae270
ldr r0, _020ae244 ; =gAdventureFlags
mov r1, #0x7e
ldr r0, [r0]
blx _ZN14AdventureFlags3GetEj
cmp r0, #0
beq _020ae270
ldr r0, _020ae244 ; =gAdventureFlags
b _020ae258
nop
_020ae244: .word gAdventureFlags
_020ae248: .word gHealthManager
_020ae24c: .word 0x00000126
_020ae250: .word 0x00000127
_020ae254: .word 0x00000129
_020ae258:
mov r1, #0x7f
ldr r0, [r0]
blx _ZN14AdventureFlags3GetEj
cmp r0, #0
beq _020ae270
ldr r0, _020ae274 ; =gAdventureFlags
mov r1, #0x80
ldr r0, [r0]
mov r2, #1
blx _ZN14AdventureFlags3SetEjb
_020ae270:
pop {r3, r4, r5, pc}
nop
_020ae274: .word gAdventureFlags
.global _ZN11ItemManager13GiveEquipItemEij
thumb_func_start _ZN11ItemManager13GiveEquipItemEij
_ZN11ItemManager13GiveEquipItemEij: ; 0x020ae278
.global _ZN11ItemManager13GiveEquipItemEit
thumb_func_start _ZN11ItemManager13GiveEquipItemEit
_ZN11ItemManager13GiveEquipItemEit: ; 0x020ae278
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
str r2, [sp]
@@ -815,7 +42,7 @@ _ZN11ItemManager13GiveEquipItemEij: ; 0x020ae278
_020ae2bc:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end _ZN11ItemManager13GiveEquipItemEij
thumb_func_end _ZN11ItemManager13GiveEquipItemEit
.global _ZN11ItemManager13UnequipPotionEv
thumb_func_start _ZN11ItemManager13UnequipPotionEv
@@ -842,9 +69,9 @@ _ZNK11ItemManager12GetMaxRupeesEv: ; 0x020ae2d4
arm_func_end _ZNK11ItemManager12GetMaxRupeesEv
_020ae2dc: .word 0x0000270f
.global _ZN11ItemManager10GiveRupeesEjj
arm_func_start _ZN11ItemManager10GiveRupeesEjj
_ZN11ItemManager10GiveRupeesEjj: ; 0x020ae2e0
.global _ZN11ItemManager10GiveRupeesEsi
arm_func_start _ZN11ItemManager10GiveRupeesEsi
_ZN11ItemManager10GiveRupeesEsi: ; 0x020ae2e0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrh r3, [r6, #0x22]
@@ -876,7 +103,7 @@ _020ae344:
strh r4, [r6, #0x22]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
arm_func_end _ZN11ItemManager10GiveRupeesEjj
arm_func_end _ZN11ItemManager10GiveRupeesEsi
_020ae34c: .word data_027e103c
.global _ZNK11ItemManager18func_ov00_020ae350Ev
@@ -1115,9 +342,9 @@ _ZN11ItemManager18func_ov00_020ae4dcEj: ; 0x020ae4dc
bx lr
arm_func_end _ZN11ItemManager18func_ov00_020ae4dcEj
.global _ZN11ItemManager9SetPotionEjj
arm_func_start _ZN11ItemManager9SetPotionEjj
_ZN11ItemManager9SetPotionEjj: ; 0x020ae50c
.global _ZN11ItemManager9SetPotionEjh
arm_func_start _ZN11ItemManager9SetPotionEjh
_ZN11ItemManager9SetPotionEjh: ; 0x020ae50c
add r3, r0, r1
strb r2, [r3, #0xbc]
cmp r2, #0
@@ -1141,7 +368,7 @@ _020ae544:
orr r0, r2, r1, lsl r0
str r0, [ip, r3, lsl #2]
bx lr
arm_func_end _ZN11ItemManager9SetPotionEjj
arm_func_end _ZN11ItemManager9SetPotionEjh
.global _ZNK11ItemManager9HasPotionEj
arm_func_start _ZNK11ItemManager9HasPotionEj
+1 -1
View File
@@ -8,7 +8,7 @@
.extern _ZN10PlayerBase8TeleportEP5Vec3psibb
.extern _ZN10PlayerBase8vfunc_04Ev
.extern _ZN10PlayerBase9AddHealthEs
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager12GetEquipItemEi
.extern _ZN11ItemManager12GetItemModelEj
.extern _ZN11ItemManager13UnequipPotionEv
+1 -1
View File
@@ -15332,7 +15332,7 @@ func_ov00_020bd510: ; 0x020bd510
ldmltia sp!, {r3, r4, r5, pc}
rsb r1, r2, #0
mov r2, #0
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
mvn lr, #0
mov r3, #0
str r3, [sp, #0xc]
+1 -1
View File
@@ -510,7 +510,7 @@
.extern func_ov09_02118cd4
.extern func_ov09_0211c724
.extern func_ov09_0211c808
.extern func_ov09_0211ca20
.extern GiveShipPart
.extern func_ov09_0211cac0
.extern func_ov12_02134208
.extern func_ov14_02127df4
+1 -1
View File
@@ -9681,7 +9681,7 @@ _02108b9c:
str r0, [r4, #0x74]
ldr r0, [sp, #4]
ldr r1, [sp]
blx func_ov09_0211ca20
blx GiveShipPart
b _02108be8
_02108bb4:
ldr r0, _02108cf0 ; =gItemManager
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once
.extern Divide
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager13EquipShipPartEjj
.extern _ZN11ItemManager16SetShipPartCountEjjc
.extern _ZN11ItemManager16SetTreasureCountEjc
+10 -10
View File
@@ -16992,9 +16992,9 @@ _0211c6f2:
thumb_func_end func_ov09_0211c6b4
_0211c6fc: .word gItemManager
.global func_ov09_0211c700
thumb_func_start func_ov09_0211c700
func_ov09_0211c700: ; 0x0211c700
.global EquipLinebeckCannon
thumb_func_start EquipLinebeckCannon
EquipLinebeckCannon: ; 0x0211c700
push {r3, lr}
ldr r0, _0211c720 ; =gItemManager
mov r1, #3
@@ -17010,7 +17010,7 @@ func_ov09_0211c700: ; 0x0211c700
_0211c71c:
pop {r3, pc}
nop
thumb_func_end func_ov09_0211c700
thumb_func_end EquipLinebeckCannon
_0211c720: .word gItemManager
.global func_ov09_0211c724
@@ -17414,7 +17414,7 @@ func_ov09_0211c9a8: ; 0x0211c9a8
add r1, r0, #0
add r0, r6, #0
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
blx _ZN11ItemManager10GiveRupeesEsi
ldr r0, _0211c9e4 ; =gItemManager
add r1, r5, #0
ldr r6, [r0]
@@ -17445,7 +17445,7 @@ func_ov09_0211c9e8: ; 0x0211c9e8
add r1, r0, #0
add r0, r4, #0
mov r2, #1
blx _ZN11ItemManager10GiveRupeesEjj
blx _ZN11ItemManager10GiveRupeesEsi
ldr r0, _0211ca1c ; =gItemManager
add r1, r5, #0
ldr r4, [r0]
@@ -17463,9 +17463,9 @@ func_ov09_0211c9e8: ; 0x0211c9e8
thumb_func_end func_ov09_0211c9e8
_0211ca1c: .word gItemManager
.global func_ov09_0211ca20
thumb_func_start func_ov09_0211ca20
func_ov09_0211ca20: ; 0x0211ca20
.global GiveShipPart
thumb_func_start GiveShipPart
GiveShipPart: ; 0x0211ca20
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r0, #0
@@ -17538,7 +17538,7 @@ _0211ca94:
add sp, #4
pop {r3, r4, r5, r6, pc}
.align 2, 0
thumb_func_end func_ov09_0211ca20
thumb_func_end GiveShipPart
_0211caa8: .word gItemManager
_0211caac: .word data_ov09_0211f294
_0211cab0: .word data_ov09_0211f298
+1 -1
View File
@@ -1,5 +1,5 @@
#pragma once
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN5Actor10SetUnk_11bEv
.extern _ZN5Actor11SetVelocityEP5Vec3p
.extern _ZN5Actor12ApplyGravityEv
+1 -1
View File
@@ -371,7 +371,7 @@ _0213b2f8:
mov r1, r0
mov r0, r6
mov r2, #0
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
ldr r0, [r5, #0x158]
mvn r1, #0
cmp r0, #0
+1 -1
View File
@@ -13,7 +13,7 @@
.extern _ZN11ItemManager18EquipItem_vfunc_38Ei
.extern _ZN11ItemManager18func_ov00_020ae648Ejjj
.extern _ZN11ItemManager8GiveItemEi
.extern _ZN11ItemManager9SetPotionEjj
.extern _ZN11ItemManager9SetPotionEjh
.extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList
.extern _ZN12ActorManager13FindActorByIdEj
.extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j
+1 -1
View File
@@ -5280,7 +5280,7 @@ _0213f516:
ldr r0, _0213f598 ; =gItemManager
mov r2, #0
ldr r0, [r0]
blx _ZN11ItemManager9SetPotionEjj
blx _ZN11ItemManager9SetPotionEjh
b _0213f534
_0213f52c:
add r1, r1, #1
+2 -2
View File
@@ -9,7 +9,7 @@
.extern _ZN10PlayerBase8TeleportEP5Vec3psibb
.extern _ZN10PlayerBase8vfunc_04Ev
.extern _ZN10PlayerBase9AddHealthEs
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager10SetUnk_09eEjt
.extern _ZN11ItemManager15LoadFanfareItemEi
.extern _ZN11ItemManager18func_ov00_020ad528Ev
@@ -892,7 +892,7 @@
.extern func_ov09_0211c6b4
.extern func_ov09_0211c724
.extern func_ov09_0211c808
.extern func_ov09_0211ca20
.extern GiveShipPart
.extern func_ov09_0211cac0
.extern func_ov09_0211cc74
.extern func_ov09_0211cc98
+4 -4
View File
@@ -44522,7 +44522,7 @@ _021452d4:
bl func_ov15_0214651c
mov r1, r0
mov r0, r4
blx func_ov09_0211ca20
blx GiveShipPart
b _02145334
_02145300:
cmp r5, #0x30
@@ -54185,7 +54185,7 @@ func_ov15_0214d358: ; 0x0214d358
mov r1, r0
mov r0, r5
mov r2, #0
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
ldr r1, [r4, #0x158]
ldr r0, _0214d3dc ; =data_ov00_020eec9c
add r1, r1, #0xfa
@@ -88224,7 +88224,7 @@ _0216a8a8:
bl func_ov15_0214651c
mov r1, r0
mov r0, r6
blx func_ov09_0211ca20
blx GiveShipPart
b _0216a8f8
_0216a8cc:
cmp r4, #0x30
@@ -99853,7 +99853,7 @@ func_ov15_02174794: ; 0x02174794
mov r1, r0
mov r0, r5
mov r2, #0
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
ldr r1, [r4, #0x2c]
ldr r0, _02174878 ; =data_ov00_020eec9c
add r1, r1, #0xfa
+1 -1
View File
@@ -323,7 +323,7 @@
.extern func_ov09_0211c45c
.extern func_ov09_0211c724
.extern func_ov09_0211c808
.extern func_ov09_0211ca20
.extern GiveShipPart
.extern func_ov09_0211cac0
.extern func_ov14_02120ac4
.extern func_ov14_021231d4
+1 -1
View File
@@ -2701,7 +2701,7 @@ _0216faf8:
blx func_ov09_0211c724
ldr r0, [sp, #4]
ldr r1, [sp]
blx func_ov09_0211ca20
blx GiveShipPart
_0216fb20:
mov r0, r4
add sp, sp, #0xc
+2 -2
View File
@@ -1,7 +1,7 @@
#pragma once
.extern Divide
.extern LoadTreasureItemFanfare
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager8GiveAmmoEit
.extern _ZN12ActorManager8GetActorEP8ActorRef
.extern _ZN5Actor10SetUnk_11bEv
@@ -183,7 +183,7 @@
.extern func_ov09_0211c1a8
.extern func_ov09_0211c980
.extern func_ov09_0211c9a0
.extern func_ov09_0211ca20
.extern GiveShipPart
.extern func_ov09_0211cac0
.extern func_ov09_0211cca4
.extern func_ov09_0211ccb4
+2 -2
View File
@@ -1049,7 +1049,7 @@ _0217cae4:
ldr r0, [r0]
rsb r1, r1, #0
mov r2, #1
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
bl func_ov31_0217cf1c
ldr r0, [r0, #0x470]
cmp r0, #0
@@ -5443,7 +5443,7 @@ func_ov31_0217ff08: ; 0x0217ff08
bl func_ov31_02180260
mov r1, r0
mov r0, r4
blx func_ov09_0211ca20
blx GiveShipPart
bl func_ov31_0217bdb8
bl func_ov31_0217bd80
cmp r0, #0
+1 -1
View File
@@ -239,7 +239,7 @@
.extern func_ov09_0211c9a0
.extern func_ov09_0211c9a8
.extern func_ov09_0211c9e8
.extern func_ov09_0211ca20
.extern GiveShipPart
.extern func_ov09_0211cac0
.extern func_ov09_0211cb3c
.extern func_ov09_0211cb5c
+1 -1
View File
@@ -1976,7 +1976,7 @@ func_ov45_0218ad80: ; 0x0218ad80
add r0, ip, r0, asr #1
sub r1, lr, r1
mov r4, #0x2b
blx func_ov09_0211ca20
blx GiveShipPart
b _0218ae0c
_0218ae00:
sub r0, lr, #0x48
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once
.extern Approach_thunk
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager16SetTreasureCountEjc
.extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j
.extern _ZN12ActorManager22FindNearestActorOfTypeEP8ActorRefPS_jP5Vec3p
+1 -1
View File
@@ -3035,7 +3035,7 @@ _02192754:
strb r2, [r5, #0x48b]
ldr r0, [r0]
mov r2, #1
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
ldrb r2, [r5, #0x48a]
ldr r0, _021927d0 ; =gItemManager
sub r1, r4, #1
+1 -1
View File
@@ -2,7 +2,7 @@
.extern Divide
.extern _ZN10ActorRupee18func_ov14_0213b5f4EjiP5Vec3pb
.extern _ZN10PlayerBase18func_ov00_020a7c1cEP8Cylinder
.extern _ZN11ItemManager10GiveRupeesEjj
.extern _ZN11ItemManager10GiveRupeesEsi
.extern _ZN11ItemManager10RemoveItemEi
.extern _ZN11ItemManager12GetItemModelEj
.extern _ZN5Actor10SetUnk_11bEv
+1 -1
View File
@@ -894,7 +894,7 @@ _02196068:
mov r0, r5
rsb r1, r1, #0
mov r2, #0
bl _ZN11ItemManager10GiveRupeesEjj
bl _ZN11ItemManager10GiveRupeesEsi
ldrb r1, [r4, #0x5c9]
ldr r0, _021960f0 ; =gItemManager
add r1, r1, #1
+1 -1
View File
@@ -169,7 +169,7 @@
.extern func_ov05_021082e4
.extern func_ov09_0211c724
.extern func_ov09_0211c808
.extern func_ov09_0211ca20
.extern GiveShipPart
.extern func_ov09_0211cac0
.extern func_ov14_021448f4
.extern func_ov14_02144a90
+1 -1
View File
@@ -1159,7 +1159,7 @@ _021963c4:
blx func_ov09_0211c724
ldr r0, [sp, #4]
ldr r1, [sp]
blx func_ov09_0211ca20
blx GiveShipPart
_021963ec:
mov r0, r4
add sp, sp, #0xc
+1 -1
View File
@@ -1,7 +1,7 @@
#pragma once
.extern _ZN11ItemManager12GetItemModelEj
.extern _ZN11ItemManager17EquipPreviousItemEv
.extern _ZN11ItemManager9SetPotionEjj
.extern _ZN11ItemManager9SetPotionEjh
.extern _ZN12ActorManager8GetActorEP8ActorRef
.extern _ZN13LinkStateBase12GetGrabActorEv
.extern _ZN13LinkStateBase12GetPlayerPosEv
+1 -1
View File
@@ -432,7 +432,7 @@ _02199244:
ldr r1, [r4, #0xc]
ldr r0, [r0]
mov r2, #0
bl _ZN11ItemManager9SetPotionEjj
bl _ZN11ItemManager9SetPotionEjh
ldr r0, _0219926c ; =gItemManager
ldr r0, [r0]
bl _ZN11ItemManager17EquipPreviousItemEv
+1 -1
View File
@@ -224,7 +224,7 @@ enum ItemId_ {
/* 0x80 */ ItemId_Unk_128 = 128,
/* 0x81 */ ItemId_Rupoor10 = 129,
/* 0x82 */ ItemId_Rupoor50 = 130,
/* 0x83 */ ItemId_Unk_131 = 131,
/* 0x84 */ ItemId_Unk_132 = 132,
/* 0x85 */ ItemId_Unk_133 = 133,
/* 0x86 */ ItemId_Unk_134 = 134,
+1 -1
View File
@@ -307,7 +307,7 @@ public:
// Rupees
u32 GetMaxRupees() const;
void GiveRupees(u16 amount, unk32 param2);
void GiveRupees(s16 amount, unk32 param2);
// Potion
void SetPotion(u32 index, Potion potion);
+1 -1
View File
@@ -23,7 +23,7 @@ enum AdventureFlag_ {
/* 0x30 */ AdventureFlag_Cannon = 48,
/* 0x7d */ AdventureFlag_Azurine = 126,
/* 0x7d */ AdventureFlag_Azurine = 125,
/* 0x7e */ AdventureFlag_Crimsonine = 126,
/* 0x7f */ AdventureFlag_Aquanine = 127,
/* 0x80 */ AdventureFlag_Unk_128 = 128,
+279
View File
@@ -458,3 +458,282 @@ THUMB bool ItemManager::GetFanfareItemScale(Vec3p *scale) const {
return false;
}
extern "C" void GiveShipPart(ShipPart part, ShipType type);
extern "C" void EquipLinebeckCannon();
THUMB void ItemManager::GiveItem(ItemId id) {
switch (id) {
case ItemId_SmallKey: {
this->GiveKeys(1);
} break;
case ItemId_GreenRupee: {
this->GiveRupees(1, true);
} break;
case ItemId_BlueRupee: {
this->GiveRupees(5, true);
} break;
case ItemId_RedRupee: {
this->GiveRupees(20, true);
} break;
case ItemId_BigGreenRupee: {
this->GiveRupees(100, true);
} break;
case ItemId_BigRedRupee: {
this->GiveRupees(200, true);
} break;
case ItemId_GoldRupee: {
this->GiveRupees(300, true);
} break;
case ItemId_OshusSword: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_OshusSword);
this->GetEquipItem(ItemFlag_OshusSword)->GiveAmmo(1);
} break;
case ItemId_WoodenShield: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_WoodenShield);
this->GetEquipItem(ItemFlag_WoodenShield)->GiveAmmo(1);
} break;
case ItemId_BombBag: {
this->GiveEquipItem(ItemFlag_BombBag, 10);
} break;
case ItemId_BombchuBag: {
this->GiveEquipItem(ItemFlag_BombchuBag, 10);
} break;
case ItemId_Bow: {
this->GiveEquipItem(ItemFlag_Bow, 20);
} break;
case ItemId_Boomerang: {
this->GiveEquipItem(ItemFlag_Boomerang, 1);
} break;
case ItemId_Scoop: {
this->GiveEquipItem(ItemFlag_Shovel, 1);
} break;
case ItemId_Hammer: {
this->GiveEquipItem(ItemFlag_Hammer, 1);
} break;
case ItemId_Rope: {
this->GiveEquipItem(ItemFlag_GrapplingHook, 1);
} break;
case ItemId_PhantomHourglass: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_Hourglass);
gAdventureFlags->Set(AdventureFlag_Hourglass, true);
} break;
case ItemId_SWSeaChart: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SeaChartSW);
gAdventureFlags->Set(AdventureFlag_SWSeaChart, true);
} break;
case ItemId_NWSeaChart: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SeaChartNW);
gAdventureFlags->Set(AdventureFlag_NWSeaChart, true);
} break;
case ItemId_SESeaChart: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SeaChartSE);
gAdventureFlags->Set(AdventureFlag_SESeaChart, true);
} break;
case ItemId_NESeaChart: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SeaChartNE);
gAdventureFlags->Set(AdventureFlag_NESeaChart, true);
} break;
case ItemId_FishingRod: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_FishingRod);
gAdventureFlags->Set(AdventureFlag_FishingRod, true);
} break;
case ItemId_Cannon: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_Cannon);
gAdventureFlags->Set(AdventureFlag_Cannon, true);
GiveShipPart(ShipPart_Cannon, ShipType_Linebeck);
EquipLinebeckCannon();
} break;
case ItemId_SunKey: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SunKey);
gAdventureFlags->Set(AdventureFlag_SunKey, true);
} break;
case ItemId_Unk_39: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_Unk_39);
gAdventureFlags->Set(AdventureFlag_Unk_23, true);
} break;
case ItemId_Quiver: {
this->UpgradeQuiver();
} break;
case ItemId_BigBombBag: {
this->UpgradeBombBag();
} break;
case ItemId_BigBombchuBag: {
this->UpgradeBombchuBag();
} break;
case ItemId_KingsKey: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_KingsKey);
} break;
case ItemId_GhostKey: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_GhostKey);
} break;
case ItemId_PowerGem: {
this->mNumGems[Gem_Power] += 1;
} break;
case ItemId_WisdomGem: {
this->mNumGems[Gem_Wisdom] += 1;
} break;
case ItemId_CourageGem: {
this->mNumGems[Gem_Courage] += 1;
} break;
case ItemId_SalvageArm: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SalvageArm);
gAdventureFlags->Set(AdventureFlag_SalvageArm, true);
gHealthManager->mSalvageArmHealth = 5;
} break;
case ItemId_SwordsmanScroll: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_SwordsmansScroll);
} break;
case ItemId_Crimsonine: {
gAdventureFlags->Set(AdventureFlag_Crimsonine, true);
} break;
case ItemId_Azurine: {
gAdventureFlags->Set(AdventureFlag_Azurine, true);
} break;
case ItemId_Aquanine: {
gAdventureFlags->Set(AdventureFlag_Aquanine, true);
} break;
case ItemId_SpiritOfPowerUpgradeLvl1: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_PowerLv1);
} break;
case ItemId_SpiritOfWisdomUpgradeLvl1: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_WisdomLv1);
} break;
case ItemId_SpiritOfCourageUpgradeLvl1: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_CourageLv1);
} break;
case ItemId_SpiritOfPowerUpgradeLvl2: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_PowerLv2);
} break;
case ItemId_SpiritOfWisdomUpgradeLvl2: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_WisdomLv2);
} break;
case ItemId_SpiritOfCourageUpgradeLvl2: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_CourageLv2);
} break;
case ItemId_RedPotion: {
for (s32 i = 0; i < 2; ++i) {
if (this->mPotions[i] != Potion_None) continue;
this->SetPotion(i, Potion_Red);
break;
}
} break;
case ItemId_PurplePotion: {
for (s32 i = 0; i < 2; ++i) {
if (this->mPotions[i] != Potion_None) continue;
this->SetPotion(i, Potion_Purple);
break;
}
} break;
case ItemId_YellowPotion: {
for (s32 i = 0; i < 2; ++i) {
if (this->mPotions[i] != Potion_None) continue;
this->SetPotion(i, Potion_Yellow);
break;
}
} break;
case ItemId_SandOfHours: {
this->mHourglassSandFrames += 3600;
} break;
case ItemId_GoldenChimney: {
gAdventureFlags->Set(AdventureFlag_ReceivedGoldenChimney, true);
GiveShipPart(ShipPart_Chimney, ShipType_Golden);
} break;
case ItemId_GoldenHandrail: {
gAdventureFlags->Set(AdventureFlag_ReceivedGoldenHandrail, true);
GiveShipPart(ShipPart_Handrail, ShipType_Golden);
} break;
case ItemId_GoldenCannon: {
gAdventureFlags->Set(AdventureFlag_ReceivedGoldenCannon, true);
GiveShipPart(ShipPart_Cannon, ShipType_Golden);
} break;
case ItemId_GoldenHull: {
gAdventureFlags->Set(AdventureFlag_ReceivedGoldenHull, true);
GiveShipPart(ShipPart_Hull, ShipType_Golden);
} break;
case ItemId_CycloneSlate: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_CycloneSlate);
} break;
case ItemId_Unk_128: {
SET_FLAG(this->mItemFlags.flags, ItemFlag_Unk_47);
} break;
case ItemId_Rupoor10: {
this->GiveRupees(-10, true);
} break;
case ItemId_Rupoor50: {
this->GiveRupees(-50, true);
} break;
case ItemId_Unk_0: break;
case ItemId_Unk_5: break;
case ItemId_Unk_16: break;
case ItemId_Unk_131: break;
case ItemId_Unk_132: break;
default: {
if (ItemId_TREASURE_CHART_START <= id && id <= ItemId_TREASURE_CHART_END) {
SET_FLAG(this->mItemFlags.flags, id + ItemFlag_TREASURE_CHART_START - ItemId_TreasureChart1);
}
} break;
}
if (
gAdventureFlags->Get(AdventureFlag_Azurine) &&
gAdventureFlags->Get(AdventureFlag_Crimsonine) &&
gAdventureFlags->Get(AdventureFlag_Aquanine)
) {
gAdventureFlags->Set(AdventureFlag_Unk_128, true);
}
}