mirror of
https://github.com/zeldaret/tmc
synced 2026-05-26 07:39:08 -04:00
Merge pull request #386 from hatal175/stockwell
Decompile stockwell asm_funcs
This commit is contained in:
@@ -1,107 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
ldr r6, _080650F8 @ =gRoomVars
|
||||
ldr r0, [r6, #0x68]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08065100
|
||||
movs r1, #0
|
||||
movs r0, #4
|
||||
strb r0, [r5, #0xc]
|
||||
strb r1, [r5, #0xd]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x84
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080650FC @ =script_StockwellDogFood
|
||||
bl InitScriptExecutionContext
|
||||
b _080651A6
|
||||
.align 2, 0
|
||||
_080650F8: .4byte gRoomVars
|
||||
_080650FC: .4byte script_StockwellDogFood
|
||||
_08065100:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x5a
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
cmp r4, #0
|
||||
bne _0806517C
|
||||
adds r3, r5, #0
|
||||
adds r3, #0x39
|
||||
movs r0, #0
|
||||
ldrsb r0, [r3, r0]
|
||||
cmp r0, #0
|
||||
beq _0806517C
|
||||
strb r4, [r3]
|
||||
ldrb r0, [r5, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
adds r0, r5, #0
|
||||
movs r1, #7
|
||||
bl InitializeAnimation
|
||||
ldrb r0, [r6, #6]
|
||||
cmp r0, #0
|
||||
bne _0806513C
|
||||
ldr r7, _08065138 @ =0x00002C01
|
||||
b _0806515E
|
||||
.align 2, 0
|
||||
_08065138: .4byte 0x00002C01
|
||||
_0806513C:
|
||||
ldrb r0, [r6, #6]
|
||||
bl GetSaleItemConfirmMessageID
|
||||
adds r7, r0, #0
|
||||
ldrb r0, [r6, #6]
|
||||
bl GetItemPrice
|
||||
mov r8, r0
|
||||
movs r0, #4
|
||||
strb r0, [r5, #0xc]
|
||||
strb r4, [r5, #0xd]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x84
|
||||
ldr r0, [r0]
|
||||
ldr r1, _08065174 @ =script_StockwellBuy
|
||||
bl InitScriptExecutionContext
|
||||
_0806515E:
|
||||
adds r0, r7, #0
|
||||
adds r1, r5, #0
|
||||
bl MessageNoOverlap
|
||||
ldr r1, _08065178 @ =gMessage
|
||||
mov r2, r8
|
||||
lsls r0, r2, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
str r0, [r1, #0x10]
|
||||
b _080651A6
|
||||
.align 2, 0
|
||||
_08065174: .4byte script_StockwellBuy
|
||||
_08065178: .4byte gMessage
|
||||
_0806517C:
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080651A0
|
||||
ldr r4, _0806519C @ =gUnk_0810FDB8
|
||||
bl Random
|
||||
movs r1, #0xf
|
||||
ands r1, r0
|
||||
adds r1, r1, r4
|
||||
ldrb r1, [r1]
|
||||
adds r0, r5, #0
|
||||
bl InitializeAnimation
|
||||
b _080651A6
|
||||
.align 2, 0
|
||||
_0806519C: .4byte gUnk_0810FDB8
|
||||
_080651A0:
|
||||
adds r0, r5, #0
|
||||
bl GetNextFrame
|
||||
_080651A6:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,368 +0,0 @@
|
||||
.syntax unified
|
||||
|
||||
.ifdef EU
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
mov r8, r1
|
||||
movs r6, #1
|
||||
ldr r0, _08064E14 @ =gRoomVars
|
||||
ldrb r5, [r0, #6]
|
||||
movs r0, #0
|
||||
mov sb, r0
|
||||
cmp r5, #0x66
|
||||
beq _08064E8E
|
||||
cmp r5, #0x66
|
||||
bhi _08064E1E
|
||||
cmp r5, #0x61
|
||||
beq _08064E94
|
||||
cmp r5, #0x61
|
||||
bhi _08064E18
|
||||
cmp r5, #0xd
|
||||
beq _08064E44
|
||||
b _08064EAA
|
||||
.align 2, 0
|
||||
_08064E14: .4byte gRoomVars
|
||||
_08064E18:
|
||||
cmp r5, #0x64
|
||||
beq _08064E88
|
||||
b _08064EAA
|
||||
_08064E1E:
|
||||
cmp r5, #0x6c
|
||||
blo _08064EAA
|
||||
cmp r5, #0x6d
|
||||
bls _08064E60
|
||||
cmp r5, #0x6f
|
||||
bhi _08064EAA
|
||||
ldr r2, _08064E3C @ =gQuiverSizes
|
||||
ldr r1, _08064E40 @ =gSave
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xaf
|
||||
ldrb r0, [r0]
|
||||
adds r0, r0, r2
|
||||
adds r1, #0xad
|
||||
b _08064E6E
|
||||
.align 2, 0
|
||||
_08064E3C: .4byte gQuiverSizes
|
||||
_08064E40: .4byte gSave
|
||||
_08064E44:
|
||||
movs r0, #0xd
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
bne _08064E58
|
||||
movs r0, #0xe
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
beq _08064EAA
|
||||
_08064E58:
|
||||
ldr r0, _08064E5C @ =0x00002C0B
|
||||
b _08064F32
|
||||
.align 2, 0
|
||||
_08064E5C: .4byte 0x00002C0B
|
||||
_08064E60:
|
||||
ldr r2, _08064E7C @ =gBombBagSizes
|
||||
ldr r1, _08064E80 @ =gSave
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xae
|
||||
ldrb r0, [r0]
|
||||
adds r0, r0, r2
|
||||
adds r1, #0xac
|
||||
_08064E6E:
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bhi _08064EAA
|
||||
ldr r0, _08064E84 @ =0x00002C0E
|
||||
b _08064F32
|
||||
.align 2, 0
|
||||
_08064E7C: .4byte gBombBagSizes
|
||||
_08064E80: .4byte gSave
|
||||
_08064E84: .4byte 0x00002C0E
|
||||
_08064E88:
|
||||
movs r1, #0x55
|
||||
mov sb, r1
|
||||
b _08064EAA
|
||||
_08064E8E:
|
||||
movs r0, #0x56
|
||||
mov sb, r0
|
||||
b _08064EAA
|
||||
_08064E94:
|
||||
ldr r0, _08064F04 @ =gSave
|
||||
adds r0, #0xc2
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08064F08 @ =0x000003E6
|
||||
cmp r1, r0
|
||||
bls _08064EAA
|
||||
ldr r0, _08064F0C @ =0x00002C0E
|
||||
adds r1, r4, #0
|
||||
bl MessageNoOverlap
|
||||
movs r6, #0
|
||||
_08064EAA:
|
||||
cmp r6, #0
|
||||
beq _08064F38
|
||||
adds r0, r5, #0
|
||||
bl GetItemPrice
|
||||
adds r6, r0, #0
|
||||
ldr r7, _08064F04 @ =gSave
|
||||
adds r0, r7, #0
|
||||
adds r0, #0xc0
|
||||
ldrh r0, [r0]
|
||||
cmp r6, r0
|
||||
bhi _08064F30
|
||||
rsbs r0, r6, #0
|
||||
bl ModRupees
|
||||
ldr r4, _08064F10 @ =gRoomVars
|
||||
ldrb r1, [r4, #7]
|
||||
adds r0, r5, #0
|
||||
movs r2, #2
|
||||
bl sub_080A7C18
|
||||
movs r0, #0
|
||||
strb r0, [r4, #6]
|
||||
strb r0, [r4, #7]
|
||||
movs r0, #1
|
||||
mov r1, r8
|
||||
str r0, [r1, #0x14]
|
||||
mov r0, sb
|
||||
cmp r0, #0
|
||||
beq _08064EEA
|
||||
bl SetLocalFlag
|
||||
_08064EEA:
|
||||
ldr r1, [r7, #0x5c]
|
||||
movs r0, #2
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bhi _08064EF8
|
||||
adds r0, r1, #1
|
||||
str r0, [r7, #0x5c]
|
||||
_08064EF8:
|
||||
ldr r0, [r7, #0x5c]
|
||||
cmp r0, #9
|
||||
bls _08064F18
|
||||
ldr r0, _08064F14 @ =0x00002C11
|
||||
b _08064F26
|
||||
.align 2, 0
|
||||
_08064F04: .4byte gSave
|
||||
_08064F08: .4byte 0x000003E6
|
||||
_08064F0C: .4byte 0x00002C0E
|
||||
_08064F10: .4byte gRoomVars
|
||||
_08064F14: .4byte 0x00002C11
|
||||
_08064F18:
|
||||
cmp r6, #0x63
|
||||
bls _08064F24
|
||||
ldr r0, _08064F20 @ =0x00002C10
|
||||
b _08064F26
|
||||
.align 2, 0
|
||||
_08064F20: .4byte 0x00002C10
|
||||
_08064F24:
|
||||
ldr r0, _08064F2C @ =0x00002C0F
|
||||
_08064F26:
|
||||
mov r1, r8
|
||||
str r0, [r1, #4]
|
||||
b _08064F3E
|
||||
.align 2, 0
|
||||
_08064F2C: .4byte 0x00002C0F
|
||||
_08064F30:
|
||||
ldr r0, _08064F48 @ =0x00002C0D
|
||||
_08064F32:
|
||||
adds r1, r4, #0
|
||||
bl MessageNoOverlap
|
||||
_08064F38:
|
||||
movs r0, #0
|
||||
mov r1, r8
|
||||
str r0, [r1, #0x14]
|
||||
_08064F3E:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08064F48: .4byte 0x00002C0D
|
||||
.else
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
mov r8, r1
|
||||
movs r6, #1
|
||||
ldr r0, _0806539C @ =gRoomVars
|
||||
ldrb r5, [r0, #6]
|
||||
movs r0, #0
|
||||
mov sb, r0
|
||||
cmp r5, #0x66
|
||||
beq _0806541A
|
||||
cmp r5, #0x66
|
||||
bhi _080653AA
|
||||
cmp r5, #0x61
|
||||
beq _08065426
|
||||
cmp r5, #0x61
|
||||
bhi _080653A0
|
||||
cmp r5, #0xd
|
||||
beq _080653D0
|
||||
b _0806543C
|
||||
.align 2, 0
|
||||
_0806539C: .4byte gRoomVars
|
||||
_080653A0:
|
||||
cmp r5, #0x64
|
||||
beq _08065414
|
||||
cmp r5, #0x65
|
||||
beq _08065420
|
||||
b _0806543C
|
||||
_080653AA:
|
||||
cmp r5, #0x6c
|
||||
blo _0806543C
|
||||
cmp r5, #0x6d
|
||||
bls _080653EC
|
||||
cmp r5, #0x6f
|
||||
bhi _0806543C
|
||||
ldr r2, _080653C8 @ =gQuiverSizes
|
||||
ldr r1, _080653CC @ =gSave
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xaf
|
||||
ldrb r0, [r0]
|
||||
adds r0, r0, r2
|
||||
adds r1, #0xad
|
||||
b _080653FA
|
||||
.align 2, 0
|
||||
_080653C8: .4byte gQuiverSizes
|
||||
_080653CC: .4byte gSave
|
||||
_080653D0:
|
||||
movs r0, #0xd
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
bne _080653E4
|
||||
movs r0, #0xe
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
beq _0806543C
|
||||
_080653E4:
|
||||
ldr r0, _080653E8 @ =0x00002C0B
|
||||
b _080654C2
|
||||
.align 2, 0
|
||||
_080653E8: .4byte 0x00002C0B
|
||||
_080653EC:
|
||||
ldr r2, _08065408 @ =gBombBagSizes
|
||||
ldr r1, _0806540C @ =gSave
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xae
|
||||
ldrb r0, [r0]
|
||||
adds r0, r0, r2
|
||||
adds r1, #0xac
|
||||
_080653FA:
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bhi _0806543C
|
||||
ldr r0, _08065410 @ =0x00002C0E
|
||||
b _080654C2
|
||||
.align 2, 0
|
||||
_08065408: .4byte gBombBagSizes
|
||||
_0806540C: .4byte gSave
|
||||
_08065410: .4byte 0x00002C0E
|
||||
_08065414:
|
||||
movs r1, #0x55
|
||||
mov sb, r1
|
||||
b _0806543C
|
||||
_0806541A:
|
||||
movs r0, #0x56
|
||||
mov sb, r0
|
||||
b _0806543C
|
||||
_08065420:
|
||||
movs r1, #0xcd
|
||||
mov sb, r1
|
||||
b _0806543C
|
||||
_08065426:
|
||||
ldr r0, _08065494 @ =gSave
|
||||
adds r0, #0xc2
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08065498 @ =0x000003E6
|
||||
cmp r1, r0
|
||||
bls _0806543C
|
||||
ldr r0, _0806549C @ =0x00002C0E
|
||||
adds r1, r4, #0
|
||||
bl MessageNoOverlap
|
||||
movs r6, #0
|
||||
_0806543C:
|
||||
cmp r6, #0
|
||||
beq _080654C8
|
||||
adds r0, r5, #0
|
||||
bl GetItemPrice
|
||||
adds r6, r0, #0
|
||||
ldr r7, _08065494 @ =gSave
|
||||
adds r0, r7, #0
|
||||
adds r0, #0xc0
|
||||
ldrh r0, [r0]
|
||||
cmp r6, r0
|
||||
bhi _080654C0
|
||||
rsbs r0, r6, #0
|
||||
bl ModRupees
|
||||
ldr r4, _080654A0 @ =gRoomVars
|
||||
ldrb r1, [r4, #7]
|
||||
adds r0, r5, #0
|
||||
movs r2, #2
|
||||
bl sub_080A7C18
|
||||
movs r0, #0
|
||||
strb r0, [r4, #6]
|
||||
strb r0, [r4, #7]
|
||||
movs r0, #1
|
||||
mov r1, r8
|
||||
str r0, [r1, #0x14]
|
||||
mov r0, sb
|
||||
cmp r0, #0
|
||||
beq _0806547C
|
||||
bl SetLocalFlag
|
||||
_0806547C:
|
||||
ldr r1, [r7, #0x5c]
|
||||
movs r0, #2
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bhi _0806548A
|
||||
adds r0, r1, #1
|
||||
str r0, [r7, #0x5c]
|
||||
_0806548A:
|
||||
ldr r0, [r7, #0x5c]
|
||||
cmp r0, #9
|
||||
bls _080654A8
|
||||
ldr r0, _080654A4 @ =0x00002C11
|
||||
b _080654B6
|
||||
.align 2, 0
|
||||
_08065494: .4byte gSave
|
||||
_08065498: .4byte 0x000003E6
|
||||
_0806549C: .4byte 0x00002C0E
|
||||
_080654A0: .4byte gRoomVars
|
||||
_080654A4: .4byte 0x00002C11
|
||||
_080654A8:
|
||||
cmp r6, #0x63
|
||||
bls _080654B4
|
||||
ldr r0, _080654B0 @ =0x00002C10
|
||||
b _080654B6
|
||||
.align 2, 0
|
||||
_080654B0: .4byte 0x00002C10
|
||||
_080654B4:
|
||||
ldr r0, _080654BC @ =0x00002C0F
|
||||
_080654B6:
|
||||
mov r1, r8
|
||||
str r0, [r1, #4]
|
||||
b _080654CE
|
||||
.align 2, 0
|
||||
_080654BC: .4byte 0x00002C0F
|
||||
_080654C0:
|
||||
ldr r0, _080654D8 @ =0x00002C0D
|
||||
_080654C2:
|
||||
adds r1, r4, #0
|
||||
bl MessageNoOverlap
|
||||
_080654C8:
|
||||
movs r0, #0
|
||||
mov r1, r8
|
||||
str r0, [r1, #0x14]
|
||||
_080654CE:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080654D8: .4byte 0x00002C0D
|
||||
.endif
|
||||
.syntax divided
|
||||
+1
-1
@@ -258,7 +258,7 @@ typedef struct {
|
||||
/*0x13*/ u8 hasAllFigurines;
|
||||
/*0x14*/ u8 filler3[4];
|
||||
/*0x18*/ u16 rupees;
|
||||
/*0x1a*/ u16 field_0x1a;
|
||||
/*0x1a*/ u16 shells;
|
||||
/*0x1c*/ u16 charmTimer;
|
||||
/*0x1e*/ u16 picolyteTimer;
|
||||
/*0x20*/ u16 effectTimer;
|
||||
|
||||
+2
-1
@@ -45,7 +45,8 @@ typedef struct {
|
||||
/*0x040*/ u32 windcrests; /**< Windcrest flags. */
|
||||
/*0x044*/ u8 filler44[0xC];
|
||||
/*0x050*/ u32 unk50;
|
||||
/*0x054*/ u8 filler54[0xC];
|
||||
/*0x054*/ u8 filler54[0x8];
|
||||
/*0x05C*/ u32 unk5C;
|
||||
/*0x060*/ u32 areaVisitFlags[8]; /**< Area visit flags. */
|
||||
/*0x080*/ char name[FILENAME_LENGTH]; /**< Save file name. */
|
||||
/*0x086*/ u8 filler86[0x2];
|
||||
|
||||
+123
-5
@@ -6,12 +6,16 @@
|
||||
#include "npc.h"
|
||||
#include "object.h"
|
||||
#include "item.h"
|
||||
#include "game.h"
|
||||
|
||||
extern void (*const gUnk_0810FDC8[])(Entity*);
|
||||
|
||||
extern void (*const gUnk_0810FDA4[])(Entity*);
|
||||
extern u16 script_StockwellBuy[];
|
||||
extern u16 script_StockwellDogFood[];
|
||||
extern u8 gUnk_0810FDB8[];
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u8, u32*);
|
||||
extern void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script);
|
||||
extern u32 gUnk_0810FDA0;
|
||||
extern u16 script_Stockwell;
|
||||
|
||||
@@ -36,7 +40,41 @@ void sub_08065080(Entity* this) {
|
||||
*(ScriptExecutionContext**)&this->cutsceneBeh = context;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/stockwell/sub_080650CC.inc", void sub_080650CC(Entity* this))
|
||||
void sub_080650CC(Entity* this) {
|
||||
u32 bVar2;
|
||||
u32 confirmMsgId;
|
||||
u32 itemPrice;
|
||||
|
||||
if ((gRoomVars.animFlags & 1)) {
|
||||
this->action = 4;
|
||||
this->subAction = 0;
|
||||
InitScriptExecutionContext(*(ScriptExecutionContext**)&this->cutsceneBeh, script_StockwellDogFood);
|
||||
} else {
|
||||
bVar2 = this->frame & 0x20;
|
||||
if ((bVar2 == 0) && (this->interactType != 0)) {
|
||||
this->interactType = bVar2;
|
||||
this->action = this->action + 1;
|
||||
InitializeAnimation(this, 7);
|
||||
if (gRoomVars.shopItemType == 0) {
|
||||
confirmMsgId = 0x2c01;
|
||||
} else {
|
||||
confirmMsgId = GetSaleItemConfirmMessageID(gRoomVars.shopItemType);
|
||||
itemPrice = GetItemPrice(gRoomVars.shopItemType);
|
||||
this->action = 4;
|
||||
this->subAction = bVar2;
|
||||
InitScriptExecutionContext(*(ScriptExecutionContext**)&this->cutsceneBeh, script_StockwellBuy);
|
||||
}
|
||||
MessageNoOverlap(confirmMsgId, this);
|
||||
|
||||
//! @bug itemPrice (r8) is not initialized if gRoomVars.shopItemType == 0
|
||||
gMessage.field_0x10 = (u16)itemPrice;
|
||||
} else if ((this->frame & 0x40)) {
|
||||
InitializeAnimation(this, gUnk_0810FDB8[Random() & 0xf]);
|
||||
} else {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080651AC(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
@@ -97,7 +135,7 @@ void sub_080652B0(Entity* this) {
|
||||
this->subAction += 1;
|
||||
this->actionDelay = 10;
|
||||
gRoomVars.animFlags = this->field_0xf;
|
||||
CreateItemEntity(0x36, 0, 0);
|
||||
CreateItemEntity(ITEM_QST_DOGFOOD, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,8 +170,88 @@ void sub_08065368(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/stockwell/sub_08065370.inc",
|
||||
void sub_08065370(Entity* this, ScriptExecutionContext* context))
|
||||
void sub_08065370(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 bVar1;
|
||||
u32 shopItemType;
|
||||
u32 itemPrice;
|
||||
u32 messageIndex;
|
||||
int localFlag;
|
||||
|
||||
bVar1 = 1;
|
||||
shopItemType = gRoomVars.shopItemType;
|
||||
localFlag = 0;
|
||||
switch (shopItemType) {
|
||||
case ITEM_ARROWS10:
|
||||
case ITEM_ARROWS30:
|
||||
if (gQuiverSizes[gSave.stats.quiverType] <= gSave.stats.arrowCount) {
|
||||
messageIndex = 0x2c0e;
|
||||
goto showmsg;
|
||||
}
|
||||
break;
|
||||
case ITEM_SHIELD:
|
||||
if (GetInventoryValue(ITEM_SHIELD) || GetInventoryValue(ITEM_MIRROR_SHIELD)) {
|
||||
messageIndex = 0x2c0b;
|
||||
goto showmsg;
|
||||
}
|
||||
break;
|
||||
case ITEM_BOMBS10:
|
||||
case ITEM_BOMBS30:
|
||||
if (gBombBagSizes[gSave.stats.bombBagType] <= gSave.stats.bombCount) {
|
||||
messageIndex = 0x2c0e;
|
||||
goto showmsg;
|
||||
}
|
||||
break;
|
||||
case ITEM_WALLET:
|
||||
localFlag = 0x55;
|
||||
break;
|
||||
case ITEM_LARGE_QUIVER:
|
||||
localFlag = 0x56;
|
||||
break;
|
||||
#ifndef EU
|
||||
case ITEM_BOMBBAG:
|
||||
localFlag = SHOP00_BOMBBAG;
|
||||
break;
|
||||
#endif
|
||||
case ITEM_SHELLS30:
|
||||
if (999 <= gSave.stats.shells) {
|
||||
MessageNoOverlap(0x2c0e, this);
|
||||
bVar1 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (bVar1) {
|
||||
itemPrice = GetItemPrice(shopItemType);
|
||||
if (itemPrice <= gSave.stats.rupees) {
|
||||
ModRupees(-itemPrice);
|
||||
sub_080A7C18(shopItemType, gRoomVars.shopItemType2, 2);
|
||||
gRoomVars.shopItemType = 0;
|
||||
gRoomVars.shopItemType2 = 0;
|
||||
context->condition = 1;
|
||||
if (localFlag) {
|
||||
SetLocalFlag(localFlag);
|
||||
}
|
||||
if (gSave.unk5C <= -2) {
|
||||
gSave.unk5C += 1;
|
||||
}
|
||||
|
||||
if (gSave.unk5C >= 10) {
|
||||
context->intVariable = 0x2c11;
|
||||
} else {
|
||||
if (itemPrice >= 100) {
|
||||
context->intVariable = 0x2c10;
|
||||
} else {
|
||||
context->intVariable = 0x2c0f;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
messageIndex = 0x2c0d;
|
||||
showmsg:
|
||||
MessageNoOverlap(messageIndex, this);
|
||||
}
|
||||
context->condition = 0;
|
||||
}
|
||||
|
||||
void sub_080654DC(Entity* this) {
|
||||
CreateSpeechBubbleQuestionMark(this, 8, 0xffffffe8);
|
||||
|
||||
+1
-1
@@ -823,7 +823,7 @@ void ScriptCommand_HasRupees(Entity* entity, ScriptExecutionContext* context) {
|
||||
}
|
||||
|
||||
void ScriptCommand_HasShells(Entity* entity, ScriptExecutionContext* context) {
|
||||
context->condition = (context->scriptInstructionPointer[1] <= gSave.stats.field_0x1a);
|
||||
context->condition = (context->scriptInstructionPointer[1] <= gSave.stats.shells);
|
||||
gActiveScriptInfo.flags |= 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user