From 0bb7400136dd84c00abdaf96c5dbdb63c02f836f Mon Sep 17 00:00:00 2001 From: Aetias <144526980+AetiasHax@users.noreply.github.com> Date: Tue, 12 May 2026 20:50:44 +0200 Subject: [PATCH] ActorItemSeller OK (#164) --- config/eur/arm9/overlays/ov014/symbols.txt | 6 +- config/eur/arm9/overlays/ov018/symbols.txt | 2 +- config/eur/arm9/overlays/ov031/delinks.txt | 6 + config/eur/arm9/overlays/ov031/relocs.txt | 6 +- config/eur/arm9/overlays/ov031/symbols.txt | 57 +++---- config/usa/arm9/overlays/ov014/symbols.txt | 6 +- config/usa/arm9/overlays/ov018/symbols.txt | 2 +- config/usa/arm9/overlays/ov031/delinks.txt | 6 + config/usa/arm9/overlays/ov031/relocs.txt | 6 +- config/usa/arm9/overlays/ov031/symbols.txt | 57 +++---- include/Actor/ActorTypeId.hpp | 4 + include/Actor/Character/ActorCharacter.hpp | 15 +- include/Actor/Character/ActorItemSeller.hpp | 50 +++--- include/Message/MsgProc.hpp | 1 + .../Actor/Character/ActorCharacter.cpp | 4 +- .../Actor/Character/ActorGenericCharacter.cpp | 2 +- src/31_Shop/Actor/ActorBeedle.cpp | 14 +- src/31_Shop/Actor/ActorItemSeller.cpp | 149 ++++++++++++++++-- 18 files changed, 268 insertions(+), 125 deletions(-) diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 2d7d3ff0..00f849fe 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -1105,7 +1105,7 @@ _ZN14ActorCharacterD2Ev kind:function(arm,size=0x48) addr:0x021450a8 _ZN14ActorCharacter4InitEv kind:function(arm,size=0x10) addr:0x021450f0 _ZN14ActorCharacter8vfunc_20Eb kind:function(arm,size=0x78) addr:0x02145100 _ZN14ActorCharacter19func_ov014_02145178Ev kind:function(arm,size=0x78) addr:0x02145178 -_ZN14ActorCharacter19func_ov014_021451f0EPi kind:function(arm,size=0x68) addr:0x021451f0 +_ZN14ActorCharacter19func_ov014_021451f0EPKi kind:function(arm,size=0x68) addr:0x021451f0 _ZN14ActorCharacter19func_ov014_02145258Ev kind:function(arm,size=0x58) addr:0x02145258 _ZN14ActorCharacter19func_ov014_021452b0Ev kind:function(arm,size=0x68) addr:0x021452b0 _ZN14ActorCharacter19func_ov014_02145318Ev kind:function(arm,size=0xdc) addr:0x02145318 @@ -1128,10 +1128,10 @@ _ZN14ActorCharacter8vfunc_98Ev kind:function(arm,size=0x2c) addr:0x02145874 _ZN14ActorCharacter8vfunc_d0Ev kind:function(arm,size=0x10) addr:0x021458a0 _ZN14ActorCharacter8vfunc_9cEv kind:function(arm,size=0x1c) addr:0x021458b0 _ZN14ActorCharacter8vfunc_ecEi kind:function(arm,size=0x34) addr:0x021458cc -_ZN14ActorCharacter8vfunc_f0Eii kind:function(arm,size=0x1c) addr:0x02145900 +_ZN14ActorCharacter8vfunc_f0Ebi kind:function(arm,size=0x1c) addr:0x02145900 _ZN14ActorCharacter19func_ov014_0214591cEv kind:function(arm,size=0x58) addr:0x0214591c _ZN14ActorCharacter15IsHitboxTouchedEb kind:function(arm,size=0x100) addr:0x02145974 -func_ov014_02145a74 kind:function(arm,size=0x74) addr:0x02145a74 +_ZN18ActorCharacter_1d819func_ov014_02145a74Eii kind:function(arm,size=0x74) addr:0x02145a74 func_ov014_02145ae8 kind:function(arm,size=0x30) addr:0x02145ae8 func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145b18 func_ov014_02145bcc kind:function(arm,size=0xb0) addr:0x02145bcc diff --git a/config/eur/arm9/overlays/ov018/symbols.txt b/config/eur/arm9/overlays/ov018/symbols.txt index 137ee419..245da2d3 100644 --- a/config/eur/arm9/overlays/ov018/symbols.txt +++ b/config/eur/arm9/overlays/ov018/symbols.txt @@ -154,7 +154,7 @@ func_ov018_021608c8 kind:function(arm,size=0x90) addr:0x021608c8 func_ov018_02160958 kind:function(arm,size=0x10) addr:0x02160958 func_ov018_02160968 kind:function(arm,size=0xa8) addr:0x02160968 func_ov018_02160a10 kind:function(arm,size=0x44) addr:0x02160a10 -func_ov018_02160a54 kind:function(arm,size=0x10) addr:0x02160a54 +_ZN17UnkClass_027e0e2819func_ov018_02160a54Ei kind:function(arm,size=0x10) addr:0x02160a54 _ZN17UnkClass_027e0e2819func_ov018_02160a64Eii kind:function(arm,size=0x10) addr:0x02160a64 func_ov018_02160a74 kind:function(arm,size=0x10) addr:0x02160a74 func_ov018_02160a84 kind:function(arm,size=0x1c) addr:0x02160a84 diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index a3cb0bf0..fa333ce4 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -21,7 +21,13 @@ src/31_Shop/Actor/ActorShopItem.cpp: .bss start:0x02183e88 end:0x02184154 src/31_Shop/Actor/ActorItemSeller.cpp: + complete .text start:0x02180708 end:0x02180a84 + .rodata start:0x02181a88 end:0x02181abc + .init start:0x02181f58 end:0x02182000 + .ctor start:0x02182084 end:0x02182088 + .data start:0x02183a98 end:0x02183c00 + .bss start:0x02184154 end:0x021841b4 src/31_Shop/Actor/ActorBeedle.cpp: .text start:0x02180a84 end:0x02181448 diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 32e0c7c3..8f806fd5 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -713,15 +713,15 @@ from:0x021806fc kind:arm_call to:0x0217e6b4 module:overlay(31) from:0x02180720 kind:arm_call to:0x0202e9dc module:main from:0x0218072c kind:arm_call to:0x0217cf2c module:overlay(31) from:0x02180740 kind:load to:0x027e0fe0 module:dtcm -from:0x02180748 kind:load to:0x02183ae0 module:overlay(31) +from:0x02180748 kind:load to:0x02183ad8 module:overlay(31) add:0x8 from:0x02180764 kind:arm_call to:0x0202e9dc module:main from:0x02180770 kind:arm_call to:0x0217cf2c module:overlay(31) from:0x02180784 kind:load to:0x027e0fe0 module:dtcm -from:0x0218078c kind:load to:0x02183ae0 module:overlay(31) +from:0x0218078c kind:load to:0x02183ad8 module:overlay(31) add:0x8 from:0x021807a8 kind:arm_call to:0x0202e9dc module:main from:0x021807b4 kind:arm_call to:0x0217cf2c module:overlay(31) from:0x021807c8 kind:load to:0x027e0fe0 module:dtcm -from:0x021807d0 kind:load to:0x02183ae0 module:overlay(31) +from:0x021807d0 kind:load to:0x02183ad8 module:overlay(31) add:0x8 from:0x02180820 kind:arm_call to:0x02145a74 module:overlay(14) from:0x02180834 kind:arm_call to:0x021451f0 module:overlay(14) from:0x02180844 kind:arm_call to:0x0217cfd4 module:overlay(31) diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 71bfb654..e5027138 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -242,19 +242,19 @@ _ZN16ActorItemSeller16CreateEv kind:function(arm,size=0x44) addr:0x02180708 _ZN16ActorItemSeller26CreateEv kind:function(arm,size=0x44) addr:0x0218074c _ZN16ActorItemSeller36CreateEv kind:function(arm,size=0x44) addr:0x02180790 _ZN15ActorItemSeller4InitEv kind:function(arm,size=0x84) addr:0x021807d4 -_ZN15ActorItemSeller9vfunc_114Ev kind:function(arm,size=0x108) addr:0x02180858 -_ZN15ActorItemSeller8vfunc_f4Ev kind:function(arm,size=0xc) addr:0x02180960 -_ZN15ActorItemSeller8vfunc_f8Ev kind:function(arm,size=0xc) addr:0x0218096c -_ZN15ActorItemSeller8vfunc_fcEv kind:function(arm,size=0xc) addr:0x02180978 -_ZN15ActorItemSeller9vfunc_100Ev kind:function(arm,size=0xc) addr:0x02180984 -_ZN15ActorItemSeller9vfunc_104Ev kind:function(arm,size=0xc) addr:0x02180990 +_ZN15ActorItemSeller9vfunc_114Ei kind:function(arm,size=0x108) addr:0x02180858 +_ZN15ActorItemSeller16GetPromptMessageEv kind:function(arm,size=0xc) addr:0x02180960 +_ZN15ActorItemSeller18GetPurchaseMessageEv kind:function(arm,size=0xc) addr:0x0218096c +_ZN15ActorItemSeller24GetNotEnoughMoneyMessageEv kind:function(arm,size=0xc) addr:0x02180978 +_ZN15ActorItemSeller17GetGoodbyeMessageEv kind:function(arm,size=0xc) addr:0x02180984 +_ZN15ActorItemSeller23GetInventoryFullMessageEv kind:function(arm,size=0xc) addr:0x02180990 _ZN15ActorItemSeller9vfunc_118Ev kind:function(arm,size=0x18) addr:0x0218099c _ZN15ActorItemSeller8vfunc_d4Ev kind:function(arm,size=0xc) addr:0x021809b4 _ZN15ActorItemSeller9vfunc_108Ev kind:function(arm,size=0x18) addr:0x021809c0 -_ZN15ActorItemSeller9vfunc_10cEv kind:function(arm,size=0x2c) addr:0x021809d8 +_ZN15ActorItemSeller9vfunc_10cEb kind:function(arm,size=0x2c) addr:0x021809d8 _ZN15ActorItemSeller9vfunc_110Ev kind:function(arm,size=0x50) addr:0x02180a04 -_ZN15ActorItemSellerD1Ev kind:function(arm,size=0x1c) addr:0x02180a54 -_ZN15ActorItemSellerD0Ev kind:function(arm,size=0x14) addr:0x02180a70 +_ZN15ActorItemSellerD0Ev kind:function(arm,size=0x1c) addr:0x02180a54 +_ZN15ActorItemSellerD1Ev kind:function(arm,size=0x14) addr:0x02180a70 _ZN11ActorBeedle6CreateEv kind:function(arm,size=0x44) addr:0x02180a84 _ZN11ActorBeedle4InitEv kind:function(arm,size=0x108) addr:0x02180ac8 _ZN11ActorBeedle8vfunc_c4Ev kind:function(arm,size=0x118) addr:0x02180bd0 @@ -294,8 +294,8 @@ sShopItemBaseNames kind:data(any) addr:0x021818e8 local unk$1534 kind:data(any) addr:0x02181a58 local unk$1554 kind:data(any) addr:0x02181a6c local @2460 kind:data(any) addr:0x02181a80 local -data_ov031_02181a88 kind:data(any) addr:0x02181a88 -data_ov031_02181a94 kind:data(any) addr:0x02181a94 +sUnk1$1294 kind:data(any) addr:0x02181a88 local +sUnk2$1295 kind:data(any) addr:0x02181a94 local data_ov031_02181abc kind:data(any) addr:0x02181abc data_ov031_02181ac8 kind:data(any) addr:0x02181ac8 data_ov031_02181ad4 kind:data(any) addr:0x02181ad4 @@ -303,11 +303,11 @@ data_ov031_02181b10 kind:data(any) addr:0x02181b10 data_ov031_02181b24 kind:data(any) addr:0x02181b24 data_ov031_02181b30 kind:data(any) addr:0x02181b30 __sinit_ActorShopItem.cpp kind:function(arm,size=0x3ec) addr:0x02181b6c local -__sinit_ov031_02181f58 kind:function(arm,size=0xa8) addr:0x02181f58 +__sinit_ActorItemSeller.cpp kind:function(arm,size=0xa8) addr:0x02181f58 local __sinit_ov031_02182000 kind:function(arm,size=0x40) addr:0x02182000 __sinit_ov031_02182040 kind:function(arm,size=0x40) addr:0x02182040 .p__sinit_ActorShopItem.cpp kind:data(word) addr:0x02182080 local -.p__sinit_ov031_02181f58 kind:data(word) addr:0x02182084 +.p__sinit_ActorItemSeller.cpp kind:data(word) addr:0x02182084 local .p__sinit_ov031_02182000 kind:data(word) addr:0x02182088 .p__sinit_ov031_02182040 kind:data(word) addr:0x0218208c data_ov031_021820a0 kind:data(any) addr:0x021820a0 @@ -406,15 +406,16 @@ _ZTV17ActorShopItemBase kind:data(any) addr:0x021834a4 @1262 kind:data(any) addr:0x02183a44 local @1263 kind:data(any) addr:0x02183a60 local @1264 kind:data(any) addr:0x02183a7c local -data_ov031_02183a98 kind:data(any) addr:0x02183a98 -data_ov031_02183a9c kind:data(any) addr:0x02183a9c -data_ov031_02183aa0 kind:data(any) addr:0x02183aa0 -data_ov031_02183aa4 kind:data(any) addr:0x02183aa4 -data_ov031_02183aa8 kind:data(any) addr:0x02183aa8 -data_ov031_02183aac kind:data(any) addr:0x02183aac -data_ov031_02183ab0 kind:data(any) addr:0x02183ab0 -data_ov031_02183ab4 kind:data(any) addr:0x02183ab4 -data_ov031_02183ae0 kind:data(any) addr:0x02183ae0 +@1278 kind:data(any) addr:0x02183a98 local +@1279 kind:data(any) addr:0x02183a9c local +@1280 kind:data(any) addr:0x02183aa0 local +@1281 kind:data(any) addr:0x02183aa4 local +@1282 kind:data(any) addr:0x02183aa8 local +@1283 kind:data(any) addr:0x02183aac local +@1284 kind:data(any) addr:0x02183ab0 local +@1285 kind:data(any) addr:0x02183ab4 local +sShipTypes kind:data(any) addr:0x02183ab8 local +_ZTV15ActorItemSeller kind:data(any) addr:0x02183ad8 data_ov031_02183c00 kind:data(any) addr:0x02183c00 data_ov031_02183c04 kind:data(any) addr:0x02183c04 data_ov031_02183c08 kind:data(any) addr:0x02183c08 @@ -472,12 +473,12 @@ sShopItemShip2TextureFile kind:bss addr:0x02184144 local sSoldOutModel kind:bss addr:0x02184148 local sShipModel kind:bss addr:0x0218414c local sShip2Model kind:bss addr:0x02184150 local -data_ov031_02184154 kind:bss addr:0x02184154 -data_ov031_02184160 kind:bss addr:0x02184160 -data_ov031_02184174 kind:bss addr:0x02184174 -data_ov031_02184180 kind:bss addr:0x02184180 -data_ov031_02184194 kind:bss addr:0x02184194 -data_ov031_021841a0 kind:bss addr:0x021841a0 +@1233 kind:bss addr:0x02184154 local +_ZN16ActorItemSeller15gTypeE kind:bss addr:0x02184160 +@1235 kind:bss addr:0x02184174 local +_ZN16ActorItemSeller25gTypeE kind:bss addr:0x02184180 +@1237 kind:bss addr:0x02184194 local +_ZN16ActorItemSeller35gTypeE kind:bss addr:0x021841a0 data_ov031_021841b4 kind:bss addr:0x021841b4 data_ov031_021841c0 kind:bss addr:0x021841c0 data_ov031_021841d4 kind:bss addr:0x021841d4 diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index 12439e82..f4dc05c2 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -1105,7 +1105,7 @@ _ZN14ActorCharacterD2Ev kind:function(arm,size=0x48) addr:0x02145004 _ZN14ActorCharacter4InitEv kind:function(arm,size=0x10) addr:0x0214504c _ZN14ActorCharacter8vfunc_20Eb kind:function(arm,size=0x78) addr:0x0214505c _ZN14ActorCharacter19func_ov014_02145178Ev kind:function(arm,size=0x78) addr:0x021450d4 -_ZN14ActorCharacter19func_ov014_021451f0EPi kind:function(arm,size=0x68) addr:0x0214514c +_ZN14ActorCharacter19func_ov014_021451f0EPKi kind:function(arm,size=0x68) addr:0x0214514c _ZN14ActorCharacter19func_ov014_02145258Ev kind:function(arm,size=0x58) addr:0x021451b4 _ZN14ActorCharacter19func_ov014_021452b0Ev kind:function(arm,size=0x68) addr:0x0214520c _ZN14ActorCharacter19func_ov014_02145318Ev kind:function(arm,size=0xdc) addr:0x02145274 @@ -1128,10 +1128,10 @@ _ZN14ActorCharacter8vfunc_98Ev kind:function(arm,size=0x2c) addr:0x021457d0 _ZN14ActorCharacter8vfunc_d0Ev kind:function(arm,size=0x10) addr:0x021457fc _ZN14ActorCharacter8vfunc_9cEv kind:function(arm,size=0x1c) addr:0x0214580c _ZN14ActorCharacter8vfunc_ecEi kind:function(arm,size=0x34) addr:0x02145828 -_ZN14ActorCharacter8vfunc_f0Eii kind:function(arm,size=0x1c) addr:0x0214585c +_ZN14ActorCharacter8vfunc_f0Ebi kind:function(arm,size=0x1c) addr:0x0214585c _ZN14ActorCharacter19func_ov014_0214591cEv kind:function(arm,size=0x58) addr:0x02145878 _ZN14ActorCharacter15IsHitboxTouchedEb kind:function(arm,size=0x100) addr:0x021458d0 -func_ov014_02145a74 kind:function(arm,size=0x74) addr:0x021459d0 +_ZN18ActorCharacter_1d819func_ov014_02145a74Eii kind:function(arm,size=0x74) addr:0x021459d0 func_ov014_02145ae8 kind:function(arm,size=0x30) addr:0x02145a44 func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145a74 func_ov014_02145bcc kind:function(arm,size=0xb0) addr:0x02145b28 diff --git a/config/usa/arm9/overlays/ov018/symbols.txt b/config/usa/arm9/overlays/ov018/symbols.txt index ad671c78..3f32d3ed 100644 --- a/config/usa/arm9/overlays/ov018/symbols.txt +++ b/config/usa/arm9/overlays/ov018/symbols.txt @@ -154,7 +154,7 @@ func_ov018_021608c8 kind:function(arm,size=0x90) addr:0x02160828 func_ov018_02160958 kind:function(arm,size=0x10) addr:0x021608b8 func_ov018_02160968 kind:function(arm,size=0xa8) addr:0x021608c8 func_ov018_02160a10 kind:function(arm,size=0x44) addr:0x02160970 -func_ov018_02160a54 kind:function(arm,size=0x10) addr:0x021609b4 +_ZN17UnkClass_027e0e2819func_ov018_02160a54Ei kind:function(arm,size=0x10) addr:0x021609b4 _ZN17UnkClass_027e0e2819func_ov018_02160a64Eii kind:function(arm,size=0x10) addr:0x021609c4 func_ov018_02160a74 kind:function(arm,size=0x10) addr:0x021609d4 func_ov018_02160a84 kind:function(arm,size=0x1c) addr:0x021609e4 diff --git a/config/usa/arm9/overlays/ov031/delinks.txt b/config/usa/arm9/overlays/ov031/delinks.txt index e38623a9..1803b432 100644 --- a/config/usa/arm9/overlays/ov031/delinks.txt +++ b/config/usa/arm9/overlays/ov031/delinks.txt @@ -21,7 +21,13 @@ src/31_Shop/Actor/ActorShopItem.cpp: .bss start:0x02183de8 end:0x021840b4 src/31_Shop/Actor/ActorItemSeller.cpp: + complete .text start:0x02180668 end:0x021809e4 + .rodata start:0x021819e8 end:0x02181a1c + .init start:0x02181eb8 end:0x02181f60 + .ctor start:0x02181fe4 end:0x02181fe8 + .data start:0x021839f8 end:0x02183b60 + .bss start:0x021840b4 end:0x02184114 src/31_Shop/Actor/ActorBeedle.cpp: .text start:0x021809e4 end:0x021813a8 diff --git a/config/usa/arm9/overlays/ov031/relocs.txt b/config/usa/arm9/overlays/ov031/relocs.txt index b6672951..43c25370 100644 --- a/config/usa/arm9/overlays/ov031/relocs.txt +++ b/config/usa/arm9/overlays/ov031/relocs.txt @@ -713,15 +713,15 @@ from:0x0218065c kind:arm_call to:0x0217e614 module:overlay(31) from:0x02180680 kind:arm_call to:0x0202e9d8 module:main from:0x0218068c kind:arm_call to:0x0217ce8c module:overlay(31) from:0x021806a0 kind:load to:0x027e0fe0 module:dtcm -from:0x021806a8 kind:load to:0x02183a40 module:overlay(31) +from:0x021806a8 kind:load to:0x02183a38 module:overlay(31) add:0x8 from:0x021806c4 kind:arm_call to:0x0202e9d8 module:main from:0x021806d0 kind:arm_call to:0x0217ce8c module:overlay(31) from:0x021806e4 kind:load to:0x027e0fe0 module:dtcm -from:0x021806ec kind:load to:0x02183a40 module:overlay(31) +from:0x021806ec kind:load to:0x02183a38 module:overlay(31) add:0x8 from:0x02180708 kind:arm_call to:0x0202e9d8 module:main from:0x02180714 kind:arm_call to:0x0217ce8c module:overlay(31) from:0x02180728 kind:load to:0x027e0fe0 module:dtcm -from:0x02180730 kind:load to:0x02183a40 module:overlay(31) +from:0x02180730 kind:load to:0x02183a38 module:overlay(31) add:0x8 from:0x02180780 kind:arm_call to:0x021459d0 module:overlay(14) from:0x02180794 kind:arm_call to:0x0214514c module:overlay(14) from:0x021807a4 kind:arm_call to:0x0217cf34 module:overlay(31) diff --git a/config/usa/arm9/overlays/ov031/symbols.txt b/config/usa/arm9/overlays/ov031/symbols.txt index 2ce790e2..39758fa7 100644 --- a/config/usa/arm9/overlays/ov031/symbols.txt +++ b/config/usa/arm9/overlays/ov031/symbols.txt @@ -242,19 +242,19 @@ _ZN16ActorItemSeller16CreateEv kind:function(arm,size=0x44) addr:0x02180668 _ZN16ActorItemSeller26CreateEv kind:function(arm,size=0x44) addr:0x021806ac _ZN16ActorItemSeller36CreateEv kind:function(arm,size=0x44) addr:0x021806f0 _ZN15ActorItemSeller4InitEv kind:function(arm,size=0x84) addr:0x02180734 -_ZN15ActorItemSeller9vfunc_114Ev kind:function(arm,size=0x108) addr:0x021807b8 -_ZN15ActorItemSeller8vfunc_f4Ev kind:function(arm,size=0xc) addr:0x021808c0 -_ZN15ActorItemSeller8vfunc_f8Ev kind:function(arm,size=0xc) addr:0x021808cc -_ZN15ActorItemSeller8vfunc_fcEv kind:function(arm,size=0xc) addr:0x021808d8 -_ZN15ActorItemSeller9vfunc_100Ev kind:function(arm,size=0xc) addr:0x021808e4 -_ZN15ActorItemSeller9vfunc_104Ev kind:function(arm,size=0xc) addr:0x021808f0 +_ZN15ActorItemSeller9vfunc_114Ei kind:function(arm,size=0x108) addr:0x021807b8 +_ZN15ActorItemSeller16GetPromptMessageEv kind:function(arm,size=0xc) addr:0x021808c0 +_ZN15ActorItemSeller18GetPurchaseMessageEv kind:function(arm,size=0xc) addr:0x021808cc +_ZN15ActorItemSeller24GetNotEnoughMoneyMessageEv kind:function(arm,size=0xc) addr:0x021808d8 +_ZN15ActorItemSeller17GetGoodbyeMessageEv kind:function(arm,size=0xc) addr:0x021808e4 +_ZN15ActorItemSeller23GetInventoryFullMessageEv kind:function(arm,size=0xc) addr:0x021808f0 _ZN15ActorItemSeller9vfunc_118Ev kind:function(arm,size=0x18) addr:0x021808fc _ZN15ActorItemSeller8vfunc_d4Ev kind:function(arm,size=0xc) addr:0x02180914 _ZN15ActorItemSeller9vfunc_108Ev kind:function(arm,size=0x18) addr:0x02180920 -_ZN15ActorItemSeller9vfunc_10cEv kind:function(arm,size=0x2c) addr:0x02180938 +_ZN15ActorItemSeller9vfunc_10cEb kind:function(arm,size=0x2c) addr:0x02180938 _ZN15ActorItemSeller9vfunc_110Ev kind:function(arm,size=0x50) addr:0x02180964 -_ZN15ActorItemSellerD1Ev kind:function(arm,size=0x1c) addr:0x021809b4 -_ZN15ActorItemSellerD0Ev kind:function(arm,size=0x14) addr:0x021809d0 +_ZN15ActorItemSellerD0Ev kind:function(arm,size=0x1c) addr:0x021809b4 +_ZN15ActorItemSellerD1Ev kind:function(arm,size=0x14) addr:0x021809d0 _ZN11ActorBeedle6CreateEv kind:function(arm,size=0x44) addr:0x021809e4 _ZN11ActorBeedle4InitEv kind:function(arm,size=0x108) addr:0x02180a28 _ZN11ActorBeedle8vfunc_c4Ev kind:function(arm,size=0x118) addr:0x02180b30 @@ -294,8 +294,8 @@ sShopItemBaseNames kind:data(any) addr:0x02181848 local unk$1534 kind:data(any) addr:0x021819b8 local unk$1554 kind:data(any) addr:0x021819cc local @2460 kind:data(any) addr:0x021819e0 local -data_ov031_02181a88 kind:data(any) addr:0x021819e8 -data_ov031_02181a94 kind:data(any) addr:0x021819f4 +sUnk1$1294 kind:data(any) addr:0x021819e8 local +sUnk2$1295 kind:data(any) addr:0x021819f4 local data_ov031_02181abc kind:data(any) addr:0x02181a1c data_ov031_02181ac8 kind:data(any) addr:0x02181a28 data_ov031_02181ad4 kind:data(any) addr:0x02181a34 @@ -303,11 +303,11 @@ data_ov031_02181b10 kind:data(any) addr:0x02181a70 data_ov031_02181b24 kind:data(any) addr:0x02181a84 data_ov031_02181b30 kind:data(any) addr:0x02181a90 __sinit_ActorShopItem.cpp kind:function(arm,size=0x3ec) addr:0x02181acc local -__sinit_ov031_02181f58 kind:function(arm,size=0xa8) addr:0x02181eb8 +__sinit_ActorItemSeller.cpp kind:function(arm,size=0xa8) addr:0x02181eb8 local __sinit_ov031_02182000 kind:function(arm,size=0x40) addr:0x02181f60 __sinit_ov031_02182040 kind:function(arm,size=0x40) addr:0x02181fa0 .p__sinit_ActorShopItem.cpp kind:data(word) addr:0x02181fe0 local -.p__sinit_ov031_02181f58 kind:data(word) addr:0x02181fe4 +.p__sinit_ActorItemSeller.cpp kind:data(word) addr:0x02181fe4 local .p__sinit_ov031_02182000 kind:data(word) addr:0x02181fe8 .p__sinit_ov031_02182040 kind:data(word) addr:0x02181fec data_ov031_021820a0 kind:data(any) addr:0x02182000 @@ -406,15 +406,16 @@ _ZTV17ActorShopItemBase kind:data(any) addr:0x02183404 @1262 kind:data(any) addr:0x021839a4 local @1263 kind:data(any) addr:0x021839c0 local @1264 kind:data(any) addr:0x021839dc local -data_ov031_02183a98 kind:data(any) addr:0x021839f8 -data_ov031_02183a9c kind:data(any) addr:0x021839fc -data_ov031_02183aa0 kind:data(any) addr:0x02183a00 -data_ov031_02183aa4 kind:data(any) addr:0x02183a04 -data_ov031_02183aa8 kind:data(any) addr:0x02183a08 -data_ov031_02183aac kind:data(any) addr:0x02183a0c -data_ov031_02183ab0 kind:data(any) addr:0x02183a10 -data_ov031_02183ab4 kind:data(any) addr:0x02183a14 -data_ov031_02183ae0 kind:data(any) addr:0x02183a40 +@1278 kind:data(any) addr:0x021839f8 local +@1279 kind:data(any) addr:0x021839fc local +@1280 kind:data(any) addr:0x02183a00 local +@1281 kind:data(any) addr:0x02183a04 local +@1282 kind:data(any) addr:0x02183a08 local +@1283 kind:data(any) addr:0x02183a0c local +@1284 kind:data(any) addr:0x02183a10 local +@1285 kind:data(any) addr:0x02183a14 local +sShipTypes kind:data(any) addr:0x02183a18 local +_ZTV15ActorItemSeller kind:data(any) addr:0x02183a38 data_ov031_02183c00 kind:data(any) addr:0x02183b60 data_ov031_02183c04 kind:data(any) addr:0x02183b64 data_ov031_02183c08 kind:data(any) addr:0x02183b68 @@ -472,12 +473,12 @@ sShopItemShip2TextureFile kind:bss addr:0x021840a4 local sSoldOutModel kind:bss addr:0x021840a8 local sShipModel kind:bss addr:0x021840ac local sShip2Model kind:bss addr:0x021840b0 local -data_ov031_02184154 kind:bss addr:0x021840b4 -data_ov031_02184160 kind:bss addr:0x021840c0 -data_ov031_02184174 kind:bss addr:0x021840d4 -data_ov031_02184180 kind:bss addr:0x021840e0 -data_ov031_02184194 kind:bss addr:0x021840f4 -data_ov031_021841a0 kind:bss addr:0x02184100 +@1233 kind:bss addr:0x021840b4 local +_ZN16ActorItemSeller15gTypeE kind:bss addr:0x021840c0 +@1235 kind:bss addr:0x021840d4 local +_ZN16ActorItemSeller25gTypeE kind:bss addr:0x021840e0 +@1237 kind:bss addr:0x021840f4 local +_ZN16ActorItemSeller35gTypeE kind:bss addr:0x02184100 data_ov031_021841b4 kind:bss addr:0x02184114 data_ov031_021841c0 kind:bss addr:0x02184120 data_ov031_021841d4 kind:bss addr:0x02184134 diff --git a/include/Actor/ActorTypeId.hpp b/include/Actor/ActorTypeId.hpp index b0c6a5ee..fc4a5b23 100644 --- a/include/Actor/ActorTypeId.hpp +++ b/include/Actor/ActorTypeId.hpp @@ -32,6 +32,10 @@ enum ActorTypeId_ { ActorTypeId_ShopItemGem = 'ITSR', ActorTypeId_ShopItemTreasure = 'ITTR', + ActorTypeId_ItemSeller1 = 'ITSN', + ActorTypeId_ItemSeller2 = 'ITS2', + ActorTypeId_ItemSeller3 = 'ITS3', + ActorTypeId_RefillArrows = 'FLAL', ActorTypeId_RefillBombs = 'FLBM', ActorTypeId_RefillBombchus = 'FLBT', diff --git a/include/Actor/Character/ActorCharacter.hpp b/include/Actor/Character/ActorCharacter.hpp index c39e893e..b35f5a66 100644 --- a/include/Actor/Character/ActorCharacter.hpp +++ b/include/Actor/Character/ActorCharacter.hpp @@ -159,13 +159,19 @@ struct ActorCharacter_1d8_248 { } }; +struct ActorCharacter_1d8_230 { + /* 00 */ char mUnk_00[16]; + /* 10 */ unk32 mUnk_10; + /* 14 */ +}; + class ActorCharacter_1d8 : public UnkStruct_ov000_020c5c2c { public: /* 000 (base) */ /* 020 */ ActorCharacterModel mUnk_020; /* 0b0 */ ActorCharacter_1d8_b0 mUnk_0b0[2]; /* 1b0 */ ActorCharacter_1d8_b0 mUnk_1b0; - /* 230 */ unk32 mUnk_230; + /* 230 */ const ActorCharacter_1d8_230 *mUnk_230; /* 234 */ unk32 mUnk_234; /* 238 */ unk32 mUnk_238; /* 23c */ unk32 mUnk_23c; @@ -186,6 +192,7 @@ public: mUnk_240(0x1000), mUnk_244(0x11f) {} + void func_ov014_02145a74(unk32 param1, unk32 param2); void func_ov014_02145cac(); void func_ov014_02145e48(unk32 param1); bool func_ov014_02145f0c(unk32 param1); @@ -232,7 +239,7 @@ public: /* cc */ virtual void vfunc_cc() override; /* d0 */ virtual void vfunc_d0() override; /* ec */ virtual void vfunc_ec(unk32 param1); - /* f0 */ virtual void vfunc_f0(unk32 param1, unk32 param2); + /* f0 */ virtual void vfunc_f0(bool param1, unk32 param2); /* f4 */ ActorCharacter(); @@ -246,7 +253,7 @@ public: bool func_ov014_02144e74(); void func_ov014_02145178(); - void func_ov014_021451f0(unk32 *param1); + void func_ov014_021451f0(const unk32 *param1); void func_ov014_02145258(); unk32 func_ov014_021452b0(); unk32 func_ov014_02145318(); @@ -290,7 +297,7 @@ public: /* 00 */ virtual ~ActorGenericCharacter() override; /* 08 */ virtual bool Init() override; - /* 68 */ virtual void vfunc_68() override; + /* 68 */ virtual void vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) override; /* 80 */ virtual void vfunc_80() override; /* 84 */ virtual void vfunc_84() override; /* c0 */ virtual bool vfunc_c0() override; diff --git a/include/Actor/Character/ActorItemSeller.hpp b/include/Actor/Character/ActorItemSeller.hpp index 26ce1ad6..2440b4ce 100644 --- a/include/Actor/Character/ActorItemSeller.hpp +++ b/include/Actor/Character/ActorItemSeller.hpp @@ -27,16 +27,16 @@ public: /* 0c0 */ virtual bool vfunc_c0() override; /* 0c4 */ virtual void vfunc_c4() override; /* 0d4 */ virtual unk32 vfunc_d4() override; - /* 0f4 */ virtual void vfunc_f4() = 0; - /* 0f8 */ virtual void vfunc_f8() = 0; - /* 0fc */ virtual void vfunc_fc() = 0; - /* 100 */ virtual void vfunc_100() = 0; - /* 104 */ virtual void vfunc_104() = 0; - /* 108 */ virtual void vfunc_108() = 0; - /* 10c */ virtual void vfunc_10c() = 0; - /* 110 */ virtual void vfunc_110() = 0; - /* 114 */ virtual unk32 vfunc_114(unk32 param1) = 0; - /* 118 */ virtual void vfunc_118() = 0; + /* 0f4 */ virtual unk32 GetPromptMessage() = 0; + /* 0f8 */ virtual unk32 GetPurchaseMessage() = 0; + /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() = 0; + /* 100 */ virtual unk32 GetGoodbyeMessage() = 0; + /* 104 */ virtual unk32 GetInventoryFullMessage() = 0; + /* 108 */ virtual void vfunc_108() = 0; + /* 10c */ virtual void vfunc_10c(bool param1) = 0; + /* 110 */ virtual void vfunc_110() = 0; + /* 114 */ virtual unk32 vfunc_114(unk32 param1) = 0; + /* 118 */ virtual bool vfunc_118() = 0; /* 11c */ virtual bool vfunc_11c(); /* 120 */ @@ -71,19 +71,19 @@ class ActorItemSeller : public ActorItemSellerBase { /* 000 (base) */ /* 484 */ - /* 000 */ virtual ~ActorItemSeller() override; + /* 000 (implicit dtor) */ /* 008 */ virtual bool Init() override; /* 0d4 */ virtual unk32 vfunc_d4() override; - /* 0f4 */ virtual void vfunc_f4() override; - /* 0f8 */ virtual void vfunc_f8() override; - /* 0fc */ virtual void vfunc_fc() override; - /* 100 */ virtual void vfunc_100() override; - /* 104 */ virtual void vfunc_104() override; + /* 0f4 */ virtual unk32 GetPromptMessage() override; + /* 0f8 */ virtual unk32 GetPurchaseMessage() override; + /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() override; + /* 100 */ virtual unk32 GetGoodbyeMessage() override; + /* 104 */ virtual unk32 GetInventoryFullMessage() override; /* 108 */ virtual void vfunc_108() override; - /* 10c */ virtual void vfunc_10c() override; + /* 10c */ virtual void vfunc_10c(bool param1) override; /* 110 */ virtual void vfunc_110() override; /* 114 */ virtual unk32 vfunc_114(unk32 param1) override; - /* 118 */ virtual void vfunc_118() override; + /* 118 */ virtual bool vfunc_118() override; /* 120 */ }; @@ -118,16 +118,16 @@ public: /* 0d8 */ virtual unk32 vfunc_d8(unk32 param1) override; /* 0dc */ virtual unk32 vfunc_dc(unk32 param1) override; /* 0e0 */ virtual unk32 vfunc_e0(unk32 param1) override; - /* 0f4 */ virtual void vfunc_f4() override; - /* 0f8 */ virtual void vfunc_f8() override; - /* 0fc */ virtual void vfunc_fc() override; - /* 100 */ virtual void vfunc_100() override; - /* 104 */ virtual void vfunc_104() override; + /* 0f4 */ virtual unk32 GetPromptMessage() override; + /* 0f8 */ virtual unk32 GetPurchaseMessage() override; + /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() override; + /* 100 */ virtual unk32 GetGoodbyeMessage() override; + /* 104 */ virtual unk32 GetInventoryFullMessage() override; /* 108 */ virtual void vfunc_108() override; - /* 10c */ virtual void vfunc_10c() override; + /* 10c */ virtual void vfunc_10c(bool param1) override; /* 110 */ virtual void vfunc_110() override; /* 114 */ virtual unk32 vfunc_114(unk32 param1) override; - /* 118 */ virtual void vfunc_118() override; + /* 118 */ virtual bool vfunc_118() override; /* 11c */ virtual bool vfunc_11c() override; static ActorBeedle *Create(); diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp index 41dc85ce..b8140223 100644 --- a/include/Message/MsgProc.hpp +++ b/include/Message/MsgProc.hpp @@ -125,6 +125,7 @@ public: unk32 func_ov000_0207bc48(); void func_ov000_0207bc9c(); + bool func_ov018_02160a54(unk32); bool func_ov018_02160a64(unk32, unk32); }; extern UnkClass_027e0e28 data_027e0e28; diff --git a/src/14_Land/Actor/Character/ActorCharacter.cpp b/src/14_Land/Actor/Character/ActorCharacter.cpp index 1b679778..d3755391 100644 --- a/src/14_Land/Actor/Character/ActorCharacter.cpp +++ b/src/14_Land/Actor/Character/ActorCharacter.cpp @@ -102,7 +102,7 @@ ARM void ActorCharacter::func_ov014_02145178() { func_ov005_021082e4(data_027e0ff8, &mRef, &mPos, &mPrevPos, &unk, mUnk_448, -1); } -ARM void ActorCharacter::func_ov014_021451f0(unk32 *param1) { +ARM void ActorCharacter::func_ov014_021451f0(const unk32 *param1) { unk32 iVar1 = param1[0]; mHitbox.pos.x = 0; mHitbox.pos.y = iVar1; @@ -373,7 +373,7 @@ ARM void ActorCharacter::vfunc_ec(unk32 param1) { } } -ARM void ActorCharacter::vfunc_f0(unk32 param1, unk32 param2) { +ARM void ActorCharacter::vfunc_f0(bool param1, unk32 param2) { mUnk_1d8.func_ov014_02145f0c(param1 ? 2 : 0); } diff --git a/src/14_Land/Actor/Character/ActorGenericCharacter.cpp b/src/14_Land/Actor/Character/ActorGenericCharacter.cpp index a378ed48..98498916 100644 --- a/src/14_Land/Actor/Character/ActorGenericCharacter.cpp +++ b/src/14_Land/Actor/Character/ActorGenericCharacter.cpp @@ -4,7 +4,7 @@ ActorGenericCharacter::ActorGenericCharacter() {} bool ActorGenericCharacter::Init() {} -void ActorGenericCharacter::vfunc_68() {} +void ActorGenericCharacter::vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) {} bool ActorGenericCharacter::vfunc_c0() {} void ActorGenericCharacter::vfunc_c4() {} void ActorGenericCharacter::func_ov014_02147940() {} diff --git a/src/31_Shop/Actor/ActorBeedle.cpp b/src/31_Shop/Actor/ActorBeedle.cpp index 9a31a491..d74dbbbc 100644 --- a/src/31_Shop/Actor/ActorBeedle.cpp +++ b/src/31_Shop/Actor/ActorBeedle.cpp @@ -9,23 +9,23 @@ unk32 ActorBeedle::vfunc_d4() {} static unk32 func_ov031_02180e44(unk32 param1, unk32 param2) {} -void ActorBeedle::vfunc_f4() {} -void ActorBeedle::vfunc_f8() {} -void ActorBeedle::vfunc_fc() {} -void ActorBeedle::vfunc_100() {} -void ActorBeedle::vfunc_104() {} +unk32 ActorBeedle::GetPromptMessage() {} +unk32 ActorBeedle::GetPurchaseMessage() {} +unk32 ActorBeedle::GetNotEnoughMoneyMessage() {} +unk32 ActorBeedle::GetGoodbyeMessage() {} +unk32 ActorBeedle::GetInventoryFullMessage() {} unk32 ActorBeedle::vfunc_d8(unk32 param1) {} unk32 ActorBeedle::vfunc_dc(unk32 param1) {} unk32 ActorBeedle::vfunc_e0(unk32 param1) {} bool ActorBeedle::vfunc_70() {} bool ActorBeedle::vfunc_6c() {} void ActorBeedle::vfunc_108() {} -void ActorBeedle::vfunc_10c() {} +void ActorBeedle::vfunc_10c(bool param1) {} void ActorBeedle::vfunc_110() {} unk32 ActorBeedle::func_ov031_021812e4(unk32 param1) {} void ActorBeedle::func_ov031_0218132c(unk32 param1) {} bool ActorBeedle::vfunc_11c() {} -void ActorBeedle::vfunc_118() {} +bool ActorBeedle::vfunc_118() {} ActorBeedle::~ActorBeedle() {} diff --git a/src/31_Shop/Actor/ActorItemSeller.cpp b/src/31_Shop/Actor/ActorItemSeller.cpp index fd1f9a4d..16fc017c 100644 --- a/src/31_Shop/Actor/ActorItemSeller.cpp +++ b/src/31_Shop/Actor/ActorItemSeller.cpp @@ -1,21 +1,138 @@ #include "Actor/Character/ActorItemSeller.hpp" +#include "Actor/ActorType.hpp" +#include "Actor/ActorTypeId.hpp" +#include "Item/ItemManager.hpp" +#include "Message/BMG.hpp" +#include "Message/MsgProc.hpp" +#include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_ov000_020e8b08.hpp" -ActorItemSeller *ActorItemSeller1::Create() {} -ActorItemSeller *ActorItemSeller2::Create() {} -ActorItemSeller *ActorItemSeller3::Create() {} +extern u32 **data_027e0fe0[]; +ARM ActorItemSeller *ActorItemSeller1::Create() { + return new(*data_027e0fe0[0], 4) ActorItemSeller(); +} -bool ActorItemSeller::Init() {} -unk32 ActorItemSeller::vfunc_114(unk32 param1) {} -void ActorItemSeller::vfunc_f4() {} -void ActorItemSeller::vfunc_f8() {} -void ActorItemSeller::vfunc_fc() {} -void ActorItemSeller::vfunc_100() {} -void ActorItemSeller::vfunc_104() {} -void ActorItemSeller::vfunc_118() {} +ARM ActorItemSeller *ActorItemSeller2::Create() { + return new(*data_027e0fe0[0], 4) ActorItemSeller(); +} -unk32 ActorItemSeller::vfunc_d4() {} +ARM ActorItemSeller *ActorItemSeller3::Create() { + return new(*data_027e0fe0[0], 4) ActorItemSeller(); +} -void ActorItemSeller::vfunc_108() {} -void ActorItemSeller::vfunc_10c() {} -void ActorItemSeller::vfunc_110() {} -ActorItemSeller::~ActorItemSeller() {} +static const char *sShipTypes[8] = { + [7] = "brg", [6] = "fnl", [5] = "pdl", [4] = "dco", [3] = "can", [2] = "hul", [1] = "bow", [0] = "anc"}; + +ActorType ActorItemSeller1::gType = ActorType(ActorTypeId_ItemSeller1, (ActorCreateFunc) ActorItemSeller1::Create, NULL); +ActorType ActorItemSeller2::gType = ActorType(ActorTypeId_ItemSeller2, (ActorCreateFunc) ActorItemSeller2::Create, NULL); +ActorType ActorItemSeller3::gType = ActorType(ActorTypeId_ItemSeller3, (ActorCreateFunc) ActorItemSeller3::Create, NULL); + +ARM bool ActorItemSeller::Init() { + unk32 unk; + switch (mType) { + case ActorTypeId_ItemSeller2: + unk = 0x3d; + break; + case ActorTypeId_ItemSeller3: + unk = 0x3e; + break; + case ActorTypeId_ItemSeller1: + default: + unk = 0x3c; + break; + } + mUnk_1d8.func_ov014_02145a74(unk, 0x3f); + static const unk32 sUnk1[] = {0x800, 0x4cd, 0x14cd}; + static const ActorCharacter_1d8_230 sUnk2[] = {{"choice", 0}, {"bow", 1}}; + mUnk_1d8.mUnk_230 = sUnk2; + this->func_ov014_021451f0(sUnk1); + mUnk_470 = 2; + return ActorItemSellerBase::Init(); +} + +ARM unk32 ActorItemSeller::vfunc_114(unk32 param1) { + u16 uVar1; + int iVar2; + unk32 uVar3; + + uVar1 = mUnk_020.mUnk_00[0]; + switch (param1) { + case 0: + return uVar1 == 2 ? 0x4 : 0x2; + case 1: + return uVar1 == 0 ? 0xa : 0x3; + case 2: + return uVar1 == 2 ? 0x11 : 0xf; + case 3: + if (!gAdventureFlags->Get(AdventureFlag_Unk_105)) { + return 0xc; + } + if (!gAdventureFlags->Get(AdventureFlag_Unk_107)) { + return 0x7; + } + if (!gAdventureFlags->Get(AdventureFlag_Unk_108)) { + return 0x8; + } + if (!gAdventureFlags->Get(AdventureFlag_Unk_103)) { + return 0x5; + } + return uVar1 == 2 ? 0xa : 0x1; + case 4: + if (gItemManager->HasItem(ItemFlag_WoodenShield)) { + return 0x10; + } + return 0xe; + default: + return 0x1; + } +} + +ARM unk32 ActorItemSeller::GetPromptMessage() { + return BMG_ID(BMG_FILE_INDEX_FIELD, 0x41); +} + +ARM unk32 ActorItemSeller::GetPurchaseMessage() { + return BMG_ID(BMG_FILE_INDEX_FIELD, 0x50); +} + +ARM unk32 ActorItemSeller::GetNotEnoughMoneyMessage() { + return BMG_ID(BMG_FILE_INDEX_FIELD, 0x52); +} + +ARM unk32 ActorItemSeller::GetGoodbyeMessage() { + return BMG_ID(BMG_FILE_INDEX_FIELD, 0x51); +} + +ARM unk32 ActorItemSeller::GetInventoryFullMessage() { + return BMG_ID(BMG_FILE_INDEX_FIELD, 0x56); +} + +ARM bool ActorItemSeller::vfunc_118() { + return data_027e0e28.func_ov018_02160a54(2); +} + +ARM unk32 ActorItemSeller::vfunc_d4() { + return ActorItemSellerBase::vfunc_d4(); +} + +ARM void ActorItemSeller::vfunc_108() { + this->vfunc_ec(3); +} + +ARM void ActorItemSeller::vfunc_10c(bool param1) { + if (param1) { + mUnk_1d8.func_ov014_02145f0c(4); + return; + } + this->vfunc_ec(4); +} + +ARM void ActorItemSeller::vfunc_110() { + bool unk; + if (data_ov000_020e8b08 != NULL) { + unk = mRef.id == data_ov000_020e8b08->mUnk_20[data_ov000_020e8b08->mUnk_55].id; + } else { + unk = true; + } + this->vfunc_f0(unk, 0); +}