diff --git a/include/npc.h b/include/npc.h index 20e66117..2be97262 100644 --- a/include/npc.h +++ b/include/npc.h @@ -19,6 +19,38 @@ #include "structures.h" +typedef enum { + DIALOG_ROOM_FLAG, + DIALOG_LOCAL_FLAG, + DIALOG_GLOBAL_FLAG, + DIALOG_KINSTONE, + DIALOG_INVENTORY, +} DialogFlagType; + +typedef enum { + DIALOG_NONE, + DIALOG_NORMAL, + DIALOG_SET_FLAG, + DIALOG_TOGGLE_FLAG, + DIALOG_CHECK_FLAG, + DIALOG_CALL_FUNC, + DIALOG_MINISH, +} DialogType; + +typedef struct { + u32 flag : 12; + DialogFlagType flagType : 4; + DialogType type : 4; + u32 fromSelf : 1; + union { + struct { + u16 a; + u16 b; + } indices; + void (*func)(Entity* e); + } data; +} Dialog; + void sub_0806EC20(Entity* ent); void sub_0806EC38(void); u32 sub_0806ED78(Entity* ent); diff --git a/include/structures.h b/include/structures.h index 0f77cac0..88798071 100644 --- a/include/structures.h +++ b/include/structures.h @@ -175,20 +175,6 @@ typedef struct { } struct_02034480; extern struct_02034480 gUnk_02034480; -typedef struct { - u32 flag : 12; - u32 flagType : 4; - u32 type : 4; - u32 unk : 1; - union { - struct { - u16 a; - u16 b; - } indices; - void (*func)(Entity* e); - } data; -} Dialog; - extern u16 gBG0Buffer[0x400]; extern u16 gBG1Buffer[0x400]; extern u16 gBG2Buffer[0x400]; diff --git a/src/npc/brocco.c b/src/npc/brocco.c index 78e05325..80aa132d 100644 --- a/src/npc/brocco.c +++ b/src/npc/brocco.c @@ -99,10 +99,16 @@ void sub_0806362C(Entity* this) { void sub_080636D8(Entity* this) { static const Dialog gUnk_0810CAAC[] = { - { 0, 0, 1, 1, { 0, 0x2510 } }, { 0, 0, 1, 1, { 0, 0x2510 } }, { 5, 0, 3, 1, { 0x3424, 0x3423 } }, - { 5, 0, 3, 1, { 0x3424, 0x3423 } }, { 5, 0, 3, 1, { 0x351f, 0x351e } }, { 5, 0, 3, 1, { 0x361e, 0x361d } }, - { 5, 0, 3, 1, { 0x371f, 0x371e } }, { 5, 0, 3, 1, { 0x381f, 0x381e } }, { 5, 0, 3, 1, { 0x3919, 0x3918 } }, - { 5, 0, 3, 1, { 0x3919, 0x3918 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x2510 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x2510 } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3424, 0x3423 } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3424, 0x3423 } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x351f, 0x351e } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x361e, 0x361d } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x371f, 0x371e } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x381f, 0x381e } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3919, 0x3918 } }, + { 5, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3919, 0x3918 } }, }; ShowNPCDialogue(this, &gUnk_0810CAAC[gSave.global_progress]); diff --git a/src/npc/carpenter.c b/src/npc/carpenter.c index 846c5d5a..cf0eaec8 100644 --- a/src/npc/carpenter.c +++ b/src/npc/carpenter.c @@ -82,7 +82,7 @@ void sub_080672C8(Entity* this) { } void sub_08067304(Entity* this) { - static const Dialog dialog = { 0xb, 3, 4, 1, { 0x3642, 0x3641 } }; + static const Dialog dialog = { 0xb, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x3642, 0x3641 } }; ShowNPCDialogue(this, &dialog); } diff --git a/src/npc/castleMaid.c b/src/npc/castleMaid.c index 701dfc2c..50b1009d 100644 --- a/src/npc/castleMaid.c +++ b/src/npc/castleMaid.c @@ -126,10 +126,16 @@ void sub_0806464C(Entity* this) { void sub_08064688(Entity* this) { static const Dialog gUnk_0810F894[] = { - { 7, 0, 3, 1, { 0x3426, 0x3425 } }, { 7, 0, 3, 1, { 0x3426, 0x3425 } }, { 7, 0, 3, 1, { 0x3426, 0x3425 } }, - { 7, 0, 3, 1, { 0x3426, 0x3425 } }, { 7, 0, 3, 1, { 0x3521, 0x3520 } }, { 0, 0, 1, 1, { 0, 0x361f } }, - { 0, 0, 1, 1, { 0, 0x3720 } }, { 0, 0, 1, 1, { 0, 0x3820 } }, { 0, 0, 1, 1, { 0, 0x3820 } }, - { 0, 0, 1, 1, { 0, 0x3820 } }, + { 7, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3426, 0x3425 } }, + { 7, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3426, 0x3425 } }, + { 7, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3426, 0x3425 } }, + { 7, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3426, 0x3425 } }, + { 7, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3521, 0x3520 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x361f } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3720 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3820 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3820 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3820 } }, }; ShowNPCDialogue(this, &gUnk_0810F894[gSave.global_progress]); } diff --git a/src/npc/cat.c b/src/npc/cat.c index d82b1b0f..5fa32b1f 100644 --- a/src/npc/cat.c +++ b/src/npc/cat.c @@ -35,66 +35,66 @@ extern Hitbox* gUnk_08111154[8]; void sub_08067790(Entity* this) { static const Dialog dialogs[][10] = { - { { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3503, 0x3504 }, - { 0, 0, 6, 1, 0x3603, 0x3604 }, - { 0, 0, 6, 1, 0x3703, 0x3704 }, - { 0, 0, 6, 1, 0x3803, 0x3804 }, - { 0, 0, 6, 1, 0x3902, 0x3903 }, - { 0, 0, 6, 1, 0x3902, 0x3903 } }, - { { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3503, 0x3504 }, - { 0, 0, 6, 1, 0x3603, 0x3604 }, - { 0, 0, 6, 1, 0x3703, 0x3704 }, - { 0, 0, 6, 1, 0x3803, 0x3804 }, - { 0, 0, 6, 1, 0x3902, 0x3903 }, - { 0, 0, 6, 1, 0x3902, 0x3903 } }, - { { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3503, 0x3504 }, - { 0, 0, 6, 1, 0x3603, 0x3604 }, - { 0, 0, 6, 1, 0x3703, 0x3704 }, - { 0, 0, 6, 1, 0x3803, 0x3804 }, - { 0, 0, 6, 1, 0x3902, 0x3903 }, - { 0, 0, 6, 1, 0x3902, 0x3903 } }, - { { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3503, 0x3504 }, - { 0, 0, 6, 1, 0x3603, 0x3604 }, - { 0, 0, 6, 1, 0x3703, 0x3704 }, - { 0, 0, 6, 1, 0x3803, 0x3804 }, - { 0, 0, 6, 1, 0x3902, 0x3903 }, - { 0, 0, 6, 1, 0x3902, 0x3903 } }, - { { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 }, - { 0, 0, 6, 1, 0x4e17, 0x4e18 } }, - { { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3407, 0x3408 }, - { 0, 0, 6, 1, 0x3503, 0x3504 }, - { 0, 0, 6, 1, 0x3603, 0x3604 }, - { 0, 0, 6, 1, 0x3703, 0x3704 }, - { 0, 0, 6, 1, 0x3803, 0x3804 }, - { 0, 0, 6, 1, 0x3902, 0x3903 }, - { 0, 0, 6, 1, 0x3902, 0x3903 } }, + { { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3503, 0x3504 }, + { 0, 0, DIALOG_MINISH, 1, 0x3603, 0x3604 }, + { 0, 0, DIALOG_MINISH, 1, 0x3703, 0x3704 }, + { 0, 0, DIALOG_MINISH, 1, 0x3803, 0x3804 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 } }, + { { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3503, 0x3504 }, + { 0, 0, DIALOG_MINISH, 1, 0x3603, 0x3604 }, + { 0, 0, DIALOG_MINISH, 1, 0x3703, 0x3704 }, + { 0, 0, DIALOG_MINISH, 1, 0x3803, 0x3804 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 } }, + { { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3503, 0x3504 }, + { 0, 0, DIALOG_MINISH, 1, 0x3603, 0x3604 }, + { 0, 0, DIALOG_MINISH, 1, 0x3703, 0x3704 }, + { 0, 0, DIALOG_MINISH, 1, 0x3803, 0x3804 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 } }, + { { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3503, 0x3504 }, + { 0, 0, DIALOG_MINISH, 1, 0x3603, 0x3604 }, + { 0, 0, DIALOG_MINISH, 1, 0x3703, 0x3704 }, + { 0, 0, DIALOG_MINISH, 1, 0x3803, 0x3804 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 } }, + { { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 }, + { 0, 0, DIALOG_MINISH, 1, 0x4e17, 0x4e18 } }, + { { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3407, 0x3408 }, + { 0, 0, DIALOG_MINISH, 1, 0x3503, 0x3504 }, + { 0, 0, DIALOG_MINISH, 1, 0x3603, 0x3604 }, + { 0, 0, DIALOG_MINISH, 1, 0x3703, 0x3704 }, + { 0, 0, DIALOG_MINISH, 1, 0x3803, 0x3804 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 }, + { 0, 0, DIALOG_MINISH, 1, 0x3902, 0x3903 } }, }; ShowNPCDialogue(this, &dialogs[this->type][gSave.global_progress]); } diff --git a/src/npc/cow.c b/src/npc/cow.c index 7333a0a0..cb1efc31 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -189,11 +189,11 @@ void sub_080691E0(Entity* ent) { // Show dialogue void Cow_ShowDialogue(Entity* ent) { - static const Dialog gUnk_08111938[] = { { 0x0, 0x0, 6, 1, { 0x2018, 0x3f34 } }, - { 0x0, 0x0, 6, 1, { 0x2018, 0x3f35 } }, - { 0x0, 0x0, 6, 1, { 0x2018, 0x3f36 } }, - { 0x0, 0x0, 6, 1, { 0x2018, 0x3f37 } }, - { 0x0, 0x0, 6, 1, { 0x2018, 0x3f38 } } }; + static const Dialog gUnk_08111938[] = { { 0x0, 0x0, DIALOG_MINISH, 1, { 0x2018, 0x3f34 } }, + { 0x0, 0x0, DIALOG_MINISH, 1, { 0x2018, 0x3f35 } }, + { 0x0, 0x0, DIALOG_MINISH, 1, { 0x2018, 0x3f36 } }, + { 0x0, 0x0, DIALOG_MINISH, 1, { 0x2018, 0x3f37 } }, + { 0x0, 0x0, DIALOG_MINISH, 1, { 0x2018, 0x3f38 } } }; ShowNPCDialogue(ent, &gUnk_08111938[ent->type]); } diff --git a/src/npc/epona.c b/src/npc/epona.c index 7673b726..6b566b12 100644 --- a/src/npc/epona.c +++ b/src/npc/epona.c @@ -57,7 +57,7 @@ void sub_08065A34(Entity* this) { void sub_08065A50(Entity* this) { static const Dialog typeDialogs[] = { - { 0, 0, 6, 1, { 0x2017, 0x3f3c } }, + { 0, 0, DIALOG_MINISH, 1, { 0x2017, 0x3f3c } }, }; ShowNPCDialogue(this, &typeDialogs[this->type]); } diff --git a/src/npc/farmers.c b/src/npc/farmers.c index 7b1c4def..c6a23274 100644 --- a/src/npc/farmers.c +++ b/src/npc/farmers.c @@ -65,8 +65,8 @@ void sub_0806BCD4(Entity* this) { void sub_0806BCE8(Entity* this) { static const Dialog gUnk_08113158[] = { - { 0x29, 3, 4, 1, { 0x1a07, 0x1a02 } }, - { 0x29, 3, 4, 1, { 0x1a11, 0x1a0d } }, + { 0x29, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x1a07, 0x1a02 } }, + { 0x29, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x1a11, 0x1a0d } }, }; ShowNPCDialogue(this, &gUnk_08113158[this->type]); } diff --git a/src/npc/ghostBrothers.c b/src/npc/ghostBrothers.c index fc641bba..c626f8a3 100644 --- a/src/npc/ghostBrothers.c +++ b/src/npc/ghostBrothers.c @@ -239,22 +239,22 @@ void sub_08065F20(Entity* this) { void sub_08065F64(Entity* this) { static const Dialog dialogs[][8] = { - { { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } }, - { 0, 0, 1, 1, { 0, 0x3f31 } } }, - { { 4, 0, 3, 1, { 0x3417, 0x3416 } }, - { 4, 0, 3, 1, { 0x3417, 0x3416 } }, - { 4, 0, 3, 1, { 0x3513, 0x3512 } }, - { 4, 0, 3, 1, { 0x3613, 0x3612 } }, - { 4, 0, 3, 1, { 0x3713, 0x3712 } }, - { 4, 0, 3, 1, { 0x3813, 0x3812 } }, - { 4, 0, 3, 1, { 0x3912, 0x3911 } }, - { 0, 0, 1, 1, { 0, 0x3A03 } } }, + { { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f31 } } }, + { { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3417, 0x3416 } }, + { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3417, 0x3416 } }, + { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3513, 0x3512 } }, + { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3613, 0x3612 } }, + { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3713, 0x3712 } }, + { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3813, 0x3812 } }, + { 4, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3912, 0x3911 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3A03 } } }, }; s32 tmp = gSave.global_progress - 2; if (tmp < 0) { diff --git a/src/npc/goron.c b/src/npc/goron.c index 912847e3..cde65f8e 100644 --- a/src/npc/goron.c +++ b/src/npc/goron.c @@ -124,9 +124,12 @@ void sub_080694B0(Entity* this) { void sub_080694D8(Entity* this) { static const Dialog gUnk_08111A94[] = { - { 0x2f, 3, 4, 1, { 0x3f13, 0x3f0e } }, { 0x2f, 3, 4, 1, { 0x3f14, 0x3f0f } }, - { 0x2f, 3, 4, 1, { 0x3f15, 0x3f10 } }, { 0x2f, 3, 4, 1, { 0x3f16, 0x3f11 } }, - { 0x2f, 3, 4, 1, { 0x3f17, 0x3f12 } }, { 0, 0, 1, 1, { 0, 0x3f18 } }, + { 0x2f, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x3f13, 0x3f0e } }, + { 0x2f, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x3f14, 0x3f0f } }, + { 0x2f, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x3f15, 0x3f10 } }, + { 0x2f, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x3f16, 0x3f11 } }, + { 0x2f, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x3f17, 0x3f12 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3f18 } }, }; ShowNPCDialogue(this, &gUnk_08111A94[this->type]); } diff --git a/src/npc/hurdyGurdyMan.c b/src/npc/hurdyGurdyMan.c index a9a848bb..838bb544 100644 --- a/src/npc/hurdyGurdyMan.c +++ b/src/npc/hurdyGurdyMan.c @@ -55,12 +55,14 @@ void HurdyGurdyMan_Head(Entity* this) { } void sub_0806E418(Entity* this) { - static const Dialog dialogs[] = { - { 0x59, 0x1, 3, 1, { 0x4f52, 0x4f51 } }, { 0x59, 0x1, 3, 1, { 0x4f52, 0x4f51 } }, - { 0x59, 0x1, 3, 1, { 0x4f54, 0x4f53 } }, { 0x59, 0x1, 3, 1, { 0x4f56, 0x4f55 } }, - { 0x59, 0x1, 3, 1, { 0x4f58, 0x4f57 } }, { 0x59, 0x1, 3, 1, { 0x4f5a, 0x4f59 } }, - { 0x59, 0x1, 3, 1, { 0x4f5c, 0x4f5b } }, { 0x59, 0x1, 3, 1, { 0x4f5e, 0x4f5d } } - }; + static const Dialog dialogs[] = { { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f52, 0x4f51 } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f52, 0x4f51 } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f54, 0x4f53 } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f56, 0x4f55 } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f58, 0x4f57 } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f5a, 0x4f59 } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f5c, 0x4f5b } }, + { 0x59, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f5e, 0x4f5d } } }; s32 tmp = gSave.global_progress - 2; if (tmp < 0) { tmp = 0; diff --git a/src/npc/mama.c b/src/npc/mama.c index 11f291d2..bf703fb8 100644 --- a/src/npc/mama.c +++ b/src/npc/mama.c @@ -78,10 +78,16 @@ void sub_0806C4A8(Entity* this, ScriptExecutionContext* context) { void sub_0806C4DC(Entity* this) { static const Dialog dialogs[] = { - { 1, 0, 3, 1, { 0x4f03, 0x4f02 } }, { 1, 0, 3, 1, { 0x4f03, 0x4f02 } }, { 1, 0, 3, 1, { 0x4f03, 0x4f02 } }, - { 1, 0, 3, 1, { 0x4f03, 0x4f02 } }, { 1, 0, 3, 1, { 0x4f0d, 0x4f0c } }, { 1, 0, 3, 1, { 0x4f1b, 0x4f1a } }, - { 1, 0, 3, 1, { 0x4f27, 0x4f26 } }, { 1, 0, 3, 1, { 0x4f33, 0x4f32 } }, { 1, 0, 3, 1, { 0x4f3f, 0x4f3e } }, - { 1, 0, 3, 1, { 0x4f49, 0x4f48 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f03, 0x4f02 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f03, 0x4f02 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f03, 0x4f02 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f03, 0x4f02 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f0d, 0x4f0c } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f1b, 0x4f1a } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f27, 0x4f26 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f33, 0x4f32 } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f3f, 0x4f3e } }, + { 1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f49, 0x4f48 } }, }; ShowNPCDialogue(this, &dialogs[gSave.global_progress]); } diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index d0f25712..76a86205 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -50,11 +50,21 @@ void sub_0806CE5C(Entity* this) { void sub_0806CE80(Entity* this) { static const Dialog dialogs[] = { - { 0x89, 1, 2, 1, 0x4c0d, 0x4c01 }, { 0x89, 1, 2, 1, 0x4c0d, 0x4c01 }, { 0x89, 1, 2, 1, 0x4c0d, 0x4c01 }, - { 0x89, 1, 2, 1, 0x4c0d, 0x4c01 }, { 0, 0, 1, 1, 0, 0x4c0e }, { 0, 0, 1, 1, 0, 0x4c0e }, - { 0, 0, 1, 1, 0, 0x4c0f }, { 0, 0, 1, 1, 0, 0x4c10 }, { 0, 0, 1, 1, 0, 0x4c11 }, - { 0, 0, 1, 1, 0, 0x4c12 }, { 0, 0, 1, 1, 0, 0x4c14 }, { 0, 0, 1, 1, 0, 0x4c02 }, - { 0, 0, 1, 1, 0, 0x4c0c }, { 0, 0, 1, 1, 0, 0x4c03 }, { 0, 0, 1, 1, 0, 0x4c04 }, + { 0x89, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, 0x4c0d, 0x4c01 }, + { 0x89, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, 0x4c0d, 0x4c01 }, + { 0x89, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, 0x4c0d, 0x4c01 }, + { 0x89, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, 0x4c0d, 0x4c01 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c0e }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c0e }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c0f }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c10 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c11 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c12 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c14 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c02 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c0c }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c03 }, + { 0, 0, DIALOG_NORMAL, 1, 0, 0x4c04 }, }; u32 v; u32 v2; diff --git a/src/npc/mutoh.c b/src/npc/mutoh.c index 6171f818..f69b56a1 100644 --- a/src/npc/mutoh.c +++ b/src/npc/mutoh.c @@ -68,11 +68,16 @@ void sub_080670B4(Entity* this) { void sub_080670E4(Entity* this) { static const Dialog dialogs[] = { - { 0, 0, 3, 1, { 0x4101, 0x4100 } }, { 0, 0, 3, 1, { 0x4101, 0x4100 } }, - { 0, 0, 3, 1, { 0x4101, 0x4100 } }, { 0, 0, 3, 1, { 0x4101, 0x4100 } }, - { 0, 0, 3, 1, { 0x4101, 0x4100 } }, { 0xb, 3, 4, 1, { 0x4104, 0x4102 } }, - { 0xb, 3, 4, 1, { 0x4104, 0x4103 } }, { 0xb, 3, 4, 1, { 0x4104, 0x4103 } }, - { 0xb, 3, 4, 1, { 0x4104, 0x4105 } }, { 0xb, 3, 4, 1, { 0x4104, 0x4105 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4101, 0x4100 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4101, 0x4100 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4101, 0x4100 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4101, 0x4100 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4101, 0x4100 } }, + { 0xb, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x4104, 0x4102 } }, + { 0xb, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x4104, 0x4103 } }, + { 0xb, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x4104, 0x4103 } }, + { 0xb, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x4104, 0x4105 } }, + { 0xb, DIALOG_KINSTONE, DIALOG_CHECK_FLAG, 1, { 0x4104, 0x4105 } }, }; ShowNPCDialogue(this, &dialogs[gSave.global_progress]); } diff --git a/src/npc/percy.c b/src/npc/percy.c index c06fa9b5..be9683d6 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -90,11 +90,11 @@ void sub_0806B41C(Entity* this) { void sub_0806B4F0(Entity* this) { static const Dialog gUnk_08112E2C[5] = { - { 0, 0, 5, 0, { .func = sub_0806B504 } }, - { 0, 0, 1, 1, { 0, 0x2312 } }, - { 0, 0, 1, 1, { 0, 0x2311 } }, - { 0, 0, 1, 1, { 0, 0x2519 } }, - { 0, 0, 5, 0, { .func = sub_0806B540 } }, + { 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806B504 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x2312 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x2311 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x2519 } }, + { 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806B540 } }, }; ShowNPCDialogue(this, &gUnk_08112E2C[this->type2]); } diff --git a/src/npc/pina.c b/src/npc/pina.c index a6ff993e..7f9c6ddf 100644 --- a/src/npc/pina.c +++ b/src/npc/pina.c @@ -136,10 +136,16 @@ void sub_08063C74(void) { void sub_08063C90(Entity* this) { static const Dialog gUnk_0810CE04[] = { - { 6, 0, 3, 1, { 0x3422, 0x3421 } }, { 6, 0, 3, 1, { 0x3422, 0x3421 } }, { 6, 0, 3, 1, { 0x3422, 0x3421 } }, - { 6, 0, 3, 1, { 0x3422, 0x3421 } }, { 6, 0, 3, 1, { 0x351d, 0x351c } }, { 6, 0, 3, 1, { 0x361c, 0x361b } }, - { 6, 0, 3, 1, { 0x371d, 0x371c } }, { 6, 0, 3, 1, { 0x381d, 0x381c } }, { 6, 0, 3, 1, { 0x3917, 0x3916 } }, - { 6, 0, 3, 1, { 0x3917, 0x3916 } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3422, 0x3421 } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3422, 0x3421 } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3422, 0x3421 } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3422, 0x3421 } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x351d, 0x351c } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x361c, 0x361b } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x371d, 0x371c } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x381d, 0x381c } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3917, 0x3916 } }, + { 6, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3917, 0x3916 } }, }; ShowNPCDialogue(this, &gUnk_0810CE04[gSave.global_progress]); } diff --git a/src/npc/smallTownMinish.c b/src/npc/smallTownMinish.c index 77f99193..e0fd0c7c 100644 --- a/src/npc/smallTownMinish.c +++ b/src/npc/smallTownMinish.c @@ -5,6 +5,7 @@ #include "save.h" #include "npc.h" #include "functions.h" +#include "item.h" void SmallTownMinish(Entity* this) { static const Hitbox gUnk_081142FC = { -2, 1, { 0, 0, 0, 0 }, 6, 6 }; @@ -25,62 +26,64 @@ void SmallTownMinish(Entity* this) { } void sub_0806E2DC(Entity* this) { - static const Dialog gUnk_08114308[][8] = { { { 0x0, 0x0, 1, 1, { 0x0, 0x3539 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3539 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3539 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3638 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3737 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3839 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392c } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x353a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x353a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x353a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3639 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3738 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x383a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392d } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392d } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x353b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x353b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x353b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x363a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3739 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x383b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392e } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392e } } }, - { { 0x45, 0x4, 4, 1, { 0x363c, 0x363b } }, - { 0x45, 0x4, 4, 1, { 0x363c, 0x363b } }, - { 0x45, 0x4, 4, 1, { 0x363c, 0x363b } }, - { 0x45, 0x4, 4, 1, { 0x363c, 0x363b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x373a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x383c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x392f } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x373b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x373b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x373b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x373b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x373b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x383d } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3930 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x3930 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e1c } } }, - { { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } }, - { 0x45, 0x4, 4, 1, { 0x4e1e, 0x4e1d } } } }; + static const Dialog gUnk_08114308[][8] = { + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3539 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3539 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3539 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3638 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3737 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3839 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392c } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x353a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x353a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x353a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3639 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3738 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x383a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392d } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392d } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x353b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x353b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x353b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x363a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3739 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x383b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392e } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392e } } }, + { { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x363c, 0x363b } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x363c, 0x363b } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x363c, 0x363b } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x363c, 0x363b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x373a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x383c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x392f } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x373b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x373b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x373b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x373b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x373b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x383d } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3930 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x3930 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e1c } } }, + { { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } }, + { ITEM_POWER_BRACELETS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4e1e, 0x4e1d } } } + }; s32 dialog = gSave.global_progress - 2; if (dialog < 0) { dialog = 0; diff --git a/src/npc/smith.c b/src/npc/smith.c index 4ea07d06..18b960cb 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -144,10 +144,14 @@ void sub_08066218(Entity* this) { void sub_0806622C(Entity* this) { static const Dialog dialogs[] = { - { 0x15, 2, 4, 1, { 0x3201, 0x100e } }, { 0x15, 2, 4, 1, { 0x3201, 0x100e } }, - { 0x15, 2, 4, 1, { 0x3202, 0x100e } }, { 0x15, 2, 4, 1, { 0x3203, 0x100e } }, - { 0x15, 2, 4, 1, { 0x3204, 0x100e } }, { 0x15, 2, 4, 1, { 0x3205, 0x100e } }, - { 0x15, 2, 4, 1, { 0x3206, 0x100e } }, { 0x15, 2, 4, 1, { 0x3206, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3201, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3201, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3202, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3203, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3204, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3205, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3206, 0x100e } }, + { TABIDACHI, DIALOG_GLOBAL_FLAG, DIALOG_CHECK_FLAG, 1, { 0x3206, 0x100e } }, }; u32 index; diff --git a/src/npc/stamp.c b/src/npc/stamp.c index aedc91c6..9d48c06c 100644 --- a/src/npc/stamp.c +++ b/src/npc/stamp.c @@ -80,8 +80,8 @@ void sub_08062CA4(Entity* ent) { void sub_08062CBC(Entity* ent) { static const Dialog gUnk_0810C2E4[2] = { - { 0, 0, 0x3, 1, { 0x4001, 0x4000 } }, - { 0, 0, 0x3, 1, { 0x4003, 0x4002 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4001, 0x4000 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4003, 0x4002 } }, }; u32 uVar1; if (CheckKinstoneFused(44)) { diff --git a/src/npc/teachers.c b/src/npc/teachers.c index 8515a05c..45a9e551 100644 --- a/src/npc/teachers.c +++ b/src/npc/teachers.c @@ -72,22 +72,22 @@ void Teachers_Head(Entity* this) { void sub_0806C70C(Entity* this) { static const Dialog gUnk_08113930[][8] = { - { { 0, 0, 1, 1, { 0, 0x3e01 } }, - { 0, 0, 1, 1, { 0, 0x3e01 } }, - { 0, 0, 1, 1, { 0, 0x3e01 } }, - { 0, 0, 1, 1, { 0, 0x3e01 } }, - { 0, 0, 1, 1, { 0, 0x3e01 } }, - { 0, 0, 1, 1, { 0, 0x3e01 } }, - { 0, 0, 1, 1, { 0, 0x3e09 } }, - { 0, 0, 1, 1, { 0, 0x3e09 } } }, - { { 0xa, 0, 3, 1, { 0x3435, 0x3434 } }, - { 0xa, 0, 3, 1, { 0x3435, 0x3434 } }, - { 0xa, 0, 3, 1, { 0x3528, 0x3527 } }, - { 0xa, 0, 3, 1, { 0x3625, 0x3624 } }, - { 0, 0, 3, 1, { 0x3e03, 0x3e02 } }, - { 0, 0, 1, 1, { 0, 0x3e06 } }, - { 0, 0, 1, 1, { 0, 0x3e0a } }, - { 0, 0, 1, 1, { 0, 0x3e0a } } }, + { { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e01 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e01 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e01 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e01 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e01 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e01 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e09 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e09 } } }, + { { 0xa, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3435, 0x3434 } }, + { 0xa, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3435, 0x3434 } }, + { 0xa, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3528, 0x3527 } }, + { 0xa, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3625, 0x3624 } }, + { 0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x3e03, 0x3e02 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e06 } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e0a } }, + { 0, 0, DIALOG_NORMAL, 1, { 0, 0x3e0a } } }, }; int offset; diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 213fa8c7..a7bafa74 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -354,166 +354,168 @@ void sub_0806AFA0(Entity* this) { void sub_0806AFBC(Entity* this, ScriptExecutionContext* context) { //! @bug sub_0806B004 uses context but ShowNPCDialogue doesn't pass it. // In fact r1 contains sub_0806B004's address. - static const Dialog dialogs[][8] = { { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } } }, - { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } } }, - { { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, - { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } } }, - { { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, - { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } } }, - { { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, - { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, - { 0x46, 0x4, 4, 1, { 0x4c0a, 0x4c05 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, - { 0x46, 0x4, 4, 1, { 0x4c0b, 0x4c06 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } } }, - { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } } }, - { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } } }, - { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } } }, - { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, - { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e30 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e31 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e32 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e33 } } }, - { { 0x0, 0x0, 3, 1, { 0x4f15, 0x4f14 } }, - { 0x0, 0x0, 3, 1, { 0x4f15, 0x4f14 } }, - { 0x0, 0x0, 3, 1, { 0x4f15, 0x4f14 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f22 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f2e } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f3a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f3a } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f3a } } }, - { { 0x1, 0x0, 3, 1, { 0x4f17, 0x4f16 } }, - { 0x1, 0x0, 3, 1, { 0x4f17, 0x4f16 } }, - { 0x1, 0x0, 3, 1, { 0x4f17, 0x4f16 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f23 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f2f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f3b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f3b } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4f3b } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b11 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b11 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b15 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b15 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b12 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b12 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b16 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b16 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b13 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b13 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b17 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b17 } } }, - { { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b14 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b14 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b18 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4b18 } } }, - { { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, - { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } } }, - { { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, - { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } } } }; + static const Dialog dialogs[][8] = { + { { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B004 } } }, + { { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B064 } } }, + { { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b0a, 0x4b04 } } }, + { { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b07, 0x4b01 } } }, + { { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4b08, 0x4b02 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4c0a, 0x4c05 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c05 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } }, + { ITEM_FLIPPERS, DIALOG_INVENTORY, DIALOG_CHECK_FLAG, 1, { 0x4c0b, 0x4c06 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4c06 } } }, + { { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } } }, + { { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B098 } } }, + { { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B0E0 } } }, + { { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, DIALOG_CALL_FUNC, 0, { .func = (EntityActionPtr)sub_0806B134 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e30 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e31 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e32 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e33 } } }, + { { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f15, 0x4f14 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f15, 0x4f14 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f15, 0x4f14 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f22 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f2e } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f3a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f3a } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f3a } } }, + { { 0x1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f17, 0x4f16 } }, + { 0x1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f17, 0x4f16 } }, + { 0x1, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4f17, 0x4f16 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f23 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f2f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f3b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f3b } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4f3b } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b11 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b11 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b15 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b15 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b12 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b12 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b16 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b16 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b13 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b13 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b17 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b17 } } }, + { { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b14 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b14 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b18 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4b18 } } }, + { { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e26, 0x4e25 } } }, + { { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x4e28, 0x4e27 } } } + }; int idx = gSave.global_progress - 2; if (idx < 0) idx = 0; diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index 6db0a78f..baddcd73 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -128,11 +128,16 @@ void sub_0806C90C(Entity* this, ScriptExecutionContext* context) { void sub_0806C928(Entity* this, ScriptExecutionContext* context) { static const Dialog gUnk_08113ABC[] = { - { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, - { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e21 } }, { 0x0, 0x0, 1, 1, { 0x0, 0x4e22 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e23 } }, { 0x0, 0x0, 1, 1, { 0x0, 0x4e23 } }, - { 0x0, 0x0, 1, 1, { 0x0, 0x4e24 } }, { 0x0, 0x0, 1, 1, { 0x0, 0x4e24 } } + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e20, 0x4e1f } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e20, 0x4e1f } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e20, 0x4e1f } }, + { 0x0, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { 0x4e20, 0x4e1f } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e21 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e22 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e23 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e23 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e24 } }, + { 0x0, 0x0, DIALOG_NORMAL, 1, { 0x0, 0x4e24 } }, }; ShowNPCDialogue(this, &gUnk_08113ABC[gSave.global_progress]); } @@ -223,40 +228,13 @@ void sub_0806CA2C(Entity* this, ScriptExecutionContext* context) { } void sub_0806CA3C(Entity* this, ScriptExecutionContext* context) { - static const Dialog gUnk_08113B28 = { -#if defined(DEMO_JP) || defined(EU) || defined(JP) - 0xf5, - 1, - 2, - 1, - { 0x2f19, 0x2f16 } -#else - 0xf8, - 1, - 2, - 1, - { 0x2f19, 0x2f16 } -#endif - - }; + static const Dialog gUnk_08113B28 = { KUMOUE_GIRL_TALK, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x2f19, 0x2f16 } }; ShowNPCDialogue(this, &gUnk_08113B28); } void sub_0806CA4C(Entity* this, ScriptExecutionContext* context) { static const Dialog gUnk_08113B30 = { -#if defined(DEMO_JP) || defined(EU) || defined(JP) - 0xf4, - 0x1, - 2, - 1, - { 0x2f18, 0x2f17 } -#else - 0xf7, - 0x1, - 2, - 1, - { 0x2f18, 0x2f17 } -#endif + KUMOUE_UNCLE_TALK, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { 0x2f18, 0x2f17 } }; ShowNPCDialogue(this, &gUnk_08113B30); } diff --git a/src/npcUtils.c b/src/npcUtils.c index 3bbc8db0..65735394 100644 --- a/src/npcUtils.c +++ b/src/npcUtils.c @@ -337,122 +337,128 @@ void sub_0806F188(Entity* ent) { } void ShowNPCDialogue(Entity* ent, const Dialog* dia) { - u32 uVar1; + u32 fromSelf; s32 temp; u32 uVar2; u32 uVar3; + u32 flagType; s32 uVar4; - int iVar5; + bool32 isFlagSet; temp = *(((u16*)dia) + 1); - uVar1 = (temp >> 4) & 1; + fromSelf = (temp >> 4) & 1; temp &= 0xf; switch (temp) { - case 2: + case DIALOG_SET_FLAG: uVar3 = (int)*(u32*)dia; temp = (s32)uVar3 >> 0xc & 0xf; uVar3 = uVar3 & 0xfff; - iVar5 = 0; + isFlagSet = FALSE; switch (temp) { - case 0: - iVar5 = CheckRoomFlag(uVar3); - _SetRoomFlag: + case DIALOG_ROOM_FLAG: + isFlagSet = CheckRoomFlag(uVar3); SetRoomFlag(uVar3); break; - case 1: - iVar5 = CheckLocalFlag(uVar3); - _SetLocalFlag: + case DIALOG_LOCAL_FLAG: + isFlagSet = CheckLocalFlag(uVar3); SetLocalFlag(uVar3); break; - case 2: - iVar5 = CheckGlobalFlag(uVar3); + case DIALOG_GLOBAL_FLAG: + isFlagSet = CheckGlobalFlag(uVar3); SetGlobalFlag(uVar3); break; } - _check: - if (iVar5 == 0) { + if (!isFlagSet) { uVar2 = dia->data.indices.b; } else { uVar2 = dia->data.indices.a; } break; - case 3: + case DIALOG_TOGGLE_FLAG: uVar3 = (int)*(u32*)dia; uVar4 = (s32)uVar3 >> 0xc & 0xf; uVar3 = uVar3 & 0xfff; - iVar5 = 0; + isFlagSet = 0; switch (uVar4) { - case 0: - iVar5 = CheckRoomFlag(uVar3); - if (iVar5 == 0) { - goto _SetRoomFlag; + case DIALOG_ROOM_FLAG: + isFlagSet = CheckRoomFlag(uVar3); + if (!isFlagSet) { + SetRoomFlag(uVar3); } else { ClearRoomFlag(uVar3); } break; - case 1: - iVar5 = CheckLocalFlag(uVar3); - if (iVar5 == 0) { - goto _SetLocalFlag; + case DIALOG_LOCAL_FLAG: + isFlagSet = CheckLocalFlag(uVar3); + if (!isFlagSet) { + SetLocalFlag(uVar3); } else { ClearLocalFlag(uVar3); } break; - case 2: - iVar5 = CheckGlobalFlag(uVar3); - if (iVar5 == 0) { + case DIALOG_GLOBAL_FLAG: + isFlagSet = CheckGlobalFlag(uVar3); + if (!isFlagSet) { SetGlobalFlag(uVar3); } else { ClearGlobalFlag(uVar3); } break; } - goto _check; - case 4: + if (!isFlagSet) { + uVar2 = dia->data.indices.b; + } else { + uVar2 = dia->data.indices.a; + } + break; + case DIALOG_CHECK_FLAG: uVar3 = (int)*(u32*)dia; uVar4 = (s32)uVar3 >> 0xc & 0xf; uVar3 = uVar3 & 0xfff; - iVar5 = 0; + isFlagSet = FALSE; { - u32 local; + bool32 local; switch (uVar4) { - case 0: - local = CheckRoomFlag(uVar3); + case DIALOG_ROOM_FLAG: + isFlagSet = CheckRoomFlag(uVar3); break; - case 1: - local = CheckLocalFlag(uVar3); + case DIALOG_LOCAL_FLAG: + isFlagSet = CheckLocalFlag(uVar3); break; - case 2: - local = CheckGlobalFlag(uVar3); + case DIALOG_GLOBAL_FLAG: + isFlagSet = CheckGlobalFlag(uVar3); break; - case 3: - local = CheckKinstoneFused(uVar3); + case DIALOG_KINSTONE: + isFlagSet = CheckKinstoneFused(uVar3); break; - case 4: + case DIALOG_INVENTORY: local = GetInventoryValue(uVar3); if (local != 0) { local = 1; } + isFlagSet = local; break; - default: - goto _check; } - iVar5 = local; } - goto _check; - case 5: + if (!isFlagSet) { + uVar2 = dia->data.indices.b; + } else { + uVar2 = dia->data.indices.a; + } + break; + case DIALOG_CALL_FUNC: if (dia->data.func != 0) { dia->data.func(ent); return; } default: - case 0: + case DIALOG_NONE: uVar2 = 0; break; - case 1: + case DIALOG_NORMAL: uVar2 = dia->data.indices.b; break; - case 6: + case DIALOG_MINISH: if ((gPlayerState.flags & PL_MINISH) != 0) { uVar2 = dia->data.indices.b; } else { @@ -461,7 +467,7 @@ void ShowNPCDialogue(Entity* ent, const Dialog* dia) { break; } - if (uVar1 != 0) { + if (fromSelf) { MessageNoOverlap(uVar2, ent); } else { MessageFromTarget(uVar2);