mirror of https://github.com/zeldaret/tmc.git
Match SortKinstoneBag
extract kinstone related data from SaveFile into it's own struct Co-authored-by: KEKW555 <152369890+KEKW555@users.noreply.github.com>
This commit is contained in:
parent
040b1f3a59
commit
1944bf5e6d
|
@ -28,6 +28,24 @@ typedef enum {
|
|||
*/
|
||||
extern SaveResult HandleSave(u32 idx);
|
||||
|
||||
/**
|
||||
* Contains save data regarding kinstones
|
||||
*/
|
||||
typedef struct {
|
||||
u8 unused[2]; /**< unused */
|
||||
u8 didAllFusions; /**< completed all 100 kinstone fusions */
|
||||
u8 fusedCount; /**< number of kinstones fused */
|
||||
u8 types[19]; /**< item id for each kinstone type present in kinstone bag */
|
||||
u8 amounts[19]; /**< amount of each kinstone type above */
|
||||
u8 filler[3]; /**< unused filler */
|
||||
u8 fuserProgress[128]; /**< indexed by fuser id, incremented after fusion */
|
||||
u8 fuserOffers[128]; /**< available kinstone fusion for each fuser */
|
||||
u8 fusedKinstones[13]; /**< bitfield for fused kinstones
|
||||
* @see CheckKinstoneFused */
|
||||
u8 fusionUnmarked[13]; /**< bitfield for disabled fusion map markers
|
||||
* @see CheckFusionMapMarkerDisabled */
|
||||
} KinstoneSave;
|
||||
|
||||
/**
|
||||
* Contains all information about a save file.
|
||||
* The contents of this structure are read from and written to EEPROM.
|
||||
|
@ -58,19 +76,8 @@ typedef struct {
|
|||
/*0x0A8*/ Stats stats; /**< Player stats. */
|
||||
/*0x0CC*/ u8 fillerCC[2]; /**< unused filler */
|
||||
/*0x0D0*/ u8 figurines[36]; /**< figurine bitset */
|
||||
/*0x0F2*/ u8 inventory[36]; /**< 2 bit per item @see Item */
|
||||
/*0x116*/ u8 didAllFusions; /**< completed all 100 kinstone fusions */
|
||||
/*0x117*/ u8 fusedKinstoneCount; /**< number of kinstones fused */
|
||||
/*0x118*/ u8 kinstoneTypes[19]; /**< item id for each kinstone type present in kinstone bag */
|
||||
/*0x12B*/ u8 kinstoneAmounts[19]; /**< amount of each kinstone type above */
|
||||
/*0x13E*/ u8 filler13E[3]; /**< unused filler */
|
||||
/*0x141*/ u8 fuserProgress[128]; /**< indexed by fuser id, incremented after fusion */
|
||||
/*0x1C1*/ u8 fuserOffers[128]; /**< available kinstone fusion for each fuser */
|
||||
/*0x241*/ u8 fusedKinstones[13]; /**< bitfield for fused kinstones
|
||||
* @see CheckKinstoneFused */
|
||||
/*0x24E*/ u8 fusionUnmarked[13]; /**< bitfield for disabled fusion map markers
|
||||
* @see CheckFusionMapMarkerDisabled */
|
||||
/*0x25B*/ u8 filler25B; /**< unused filler */
|
||||
/*0x0F2*/ u8 inventory[34]; /**< 2 bit per item @see Item */
|
||||
/*0x114*/ KinstoneSave kinstones; /**< save data for kinstones @see KinstoneSave */
|
||||
/*0x25C*/ u8 flags[0x200]; /**< flags */
|
||||
/*0x45C*/ u8 dungeonKeys[0x10]; /**< indexed by dungeon id, keys per dungeon */
|
||||
/*0x46C*/ u8 dungeonItems[0x10]; /**< dungeon items 4: compass, 2: big key, 1: small key */
|
||||
|
|
108
src/common.c
108
src/common.c
|
@ -1054,13 +1054,13 @@ void NotifyFusersOnFusionDone(KinstoneId kinstoneId) {
|
|||
u32 index;
|
||||
if (kinstoneId - 1 < 100) {
|
||||
for (index = 0; index < 0x80; index++) {
|
||||
if (kinstoneId == gSave.fuserOffers[index]) {
|
||||
gSave.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT;
|
||||
if (kinstoneId == gSave.kinstones.fuserOffers[index]) {
|
||||
gSave.kinstones.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT;
|
||||
}
|
||||
}
|
||||
tmp = GetFuserId(gFuseInfo.entity);
|
||||
if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) {
|
||||
gSave.fuserOffers[tmp] = KINSTONE_JUST_FUSED;
|
||||
if ((tmp - 1 < 0x7f) && (gSave.kinstones.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) {
|
||||
gSave.kinstones.fuserOffers[tmp] = KINSTONE_JUST_FUSED;
|
||||
}
|
||||
for (index = 0; index < 0x20; index++) {
|
||||
if (kinstoneId == gPossibleInteraction.candidates[index].kinstoneId) {
|
||||
|
@ -1079,17 +1079,17 @@ void AddKinstoneToBag(KinstoneId kinstoneId) {
|
|||
index = GetIndexInKinstoneBag(kinstoneId);
|
||||
if (index < 0) {
|
||||
index = 0;
|
||||
while (gSave.kinstoneTypes[index] != KINSTONE_NONE) {
|
||||
while (gSave.kinstones.types[index] != KINSTONE_NONE) {
|
||||
index++;
|
||||
}
|
||||
}
|
||||
if ((u32)index < 0x12) {
|
||||
gSave.kinstoneTypes[index] = kinstoneId;
|
||||
tmp = gSave.kinstoneAmounts[index] + 1;
|
||||
gSave.kinstones.types[index] = kinstoneId;
|
||||
tmp = gSave.kinstones.amounts[index] + 1;
|
||||
if (tmp > 99) {
|
||||
tmp = 99;
|
||||
}
|
||||
gSave.kinstoneAmounts[index] = tmp;
|
||||
gSave.kinstones.amounts[index] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1097,12 +1097,12 @@ void AddKinstoneToBag(KinstoneId kinstoneId) {
|
|||
void RemoveKinstoneFromBag(KinstoneId kinstoneId) {
|
||||
s32 idx = GetIndexInKinstoneBag(kinstoneId);
|
||||
if (idx >= 0) {
|
||||
s32 next = gSave.kinstoneAmounts[idx] - 1;
|
||||
s32 next = gSave.kinstones.amounts[idx] - 1;
|
||||
if (next <= 0) {
|
||||
gSave.kinstoneTypes[idx] = KINSTONE_NONE;
|
||||
gSave.kinstones.types[idx] = KINSTONE_NONE;
|
||||
next = 0;
|
||||
}
|
||||
gSave.kinstoneAmounts[idx] = next;
|
||||
gSave.kinstones.amounts[idx] = next;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1111,92 +1111,50 @@ u32 GetAmountInKinstoneBag(KinstoneId kinstoneId) {
|
|||
if (index < 0) {
|
||||
return 0;
|
||||
}
|
||||
return gSave.kinstoneAmounts[index];
|
||||
return gSave.kinstones.amounts[index];
|
||||
}
|
||||
|
||||
u32 CheckKinstoneFused(KinstoneId kinstoneId) {
|
||||
if (kinstoneId - 1 >= 100) {
|
||||
return 0;
|
||||
}
|
||||
return ReadBit(&gSave.fusedKinstones, kinstoneId);
|
||||
return ReadBit(&gSave.kinstones.fusedKinstones, kinstoneId);
|
||||
}
|
||||
|
||||
bool32 CheckFusionMapMarkerDisabled(KinstoneId kinstoneId) {
|
||||
if (kinstoneId - 1 >= 100) {
|
||||
return FALSE;
|
||||
}
|
||||
return ReadBit(&gSave.fusionUnmarked, kinstoneId);
|
||||
return ReadBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
|
||||
}
|
||||
|
||||
void SortKinstoneBag(void) {
|
||||
#ifdef NON_MATCHING
|
||||
u32 r5;
|
||||
u32 i;
|
||||
|
||||
for (r5 = 0; r5 < 0x13; r5++) {
|
||||
if (gSave.kinstoneAmounts[r5] == 0) {
|
||||
gSave.kinstoneTypes[r5] = gSave.kinstoneAmounts[r5];
|
||||
KinstoneSave* ptr = &gSave.kinstones;
|
||||
|
||||
for (i = 0; i < 19; i++) {
|
||||
if (ptr->amounts[i] == 0) {
|
||||
ptr->types[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
gSave.kinstoneTypes[0x12] = 0;
|
||||
gSave.kinstoneAmounts[0x12] = 0;
|
||||
ptr->types[18] = 0;
|
||||
ptr->amounts[18] = 0;
|
||||
|
||||
for (r5 = 0; r5 < 0x12; r5++) {
|
||||
if ((gSave.kinstoneTypes[r5] - 0x65) > 0x10) {
|
||||
MemCopy(&gSave.kinstoneTypes[r5 + 1], &gSave.kinstoneTypes[r5], 0x12 - r5);
|
||||
MemCopy(&gSave.kinstoneAmounts[r5 + 1], &gSave.kinstoneAmounts[r5], 0x12 - r5);
|
||||
for (i = 0; i < 18; i++) {
|
||||
u32 t = ptr->types[i];
|
||||
if (t < 0x65 || t > 0x75) {
|
||||
MemCopy(&ptr->types[i + 1], &ptr->types[i], 0x12 - i);
|
||||
MemCopy(&ptr->amounts[i + 1], &ptr->amounts[i], 0x12 - i);
|
||||
}
|
||||
}
|
||||
#else
|
||||
u32 r0, r4, r5;
|
||||
u32 new_var;
|
||||
u8 *r1, *r2, *r3, *r6, *r7, *r8, *r9, *r10;
|
||||
|
||||
new_var = 4;
|
||||
r1 = &gSave.inventory[34];
|
||||
r5 = 0;
|
||||
r2 = gSave.kinstoneTypes;
|
||||
code0_0:
|
||||
r0 = r2[0x13];
|
||||
r3 = &r1[4];
|
||||
r10 = r3;
|
||||
if (r0 == 0) {
|
||||
*r2 = r0;
|
||||
}
|
||||
r2++;
|
||||
r5++;
|
||||
if (r5 <= 0x12)
|
||||
goto code0_0;
|
||||
|
||||
r1[0x16] = 0;
|
||||
r1[0x29] = 0;
|
||||
r5 = 0;
|
||||
r9 = &r1[0x17];
|
||||
r3 = &r1[0x18];
|
||||
r8 = r3;
|
||||
r7 = &r1[new_var];
|
||||
r6 = &r1[5];
|
||||
code0_2:
|
||||
r0 = r10[r5] - 0x65;
|
||||
if (r0 > 0x10) {
|
||||
MemCopy(r6, r7, 0x12 - r5);
|
||||
MemCopy(r8, r9, 0x12 - r5);
|
||||
}
|
||||
r9++;
|
||||
r8++;
|
||||
r7++;
|
||||
r6++;
|
||||
r5++;
|
||||
if (r5 <= 0x11)
|
||||
goto code0_2;
|
||||
#endif
|
||||
}
|
||||
|
||||
s32 GetIndexInKinstoneBag(KinstoneId kinstoneId) {
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < 0x12; ++i) {
|
||||
if (kinstoneId == gSave.kinstoneTypes[i])
|
||||
if (kinstoneId == gSave.kinstones.types[i])
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
|
@ -1264,7 +1222,7 @@ void UpdateVisibleFusionMapMarkers(void) {
|
|||
#else
|
||||
if (sub_0807CB24(tmp, s->flag)) {
|
||||
#endif
|
||||
WriteBit(&gSave.fusionUnmarked, kinstoneId);
|
||||
WriteBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1285,8 +1243,8 @@ KinstoneId GetFusionToOffer(Entity* entity) {
|
|||
if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) {
|
||||
return KINSTONE_NONE;
|
||||
}
|
||||
offeredFusion = gSave.fuserOffers[fuserId];
|
||||
fuserProgress = gSave.fuserProgress[fuserId];
|
||||
offeredFusion = gSave.kinstones.fuserOffers[fuserId];
|
||||
fuserProgress = gSave.kinstones.fuserProgress[fuserId];
|
||||
fuserFusionData = (u8*)(fuserProgress + (u32)fuserData);
|
||||
while (TRUE) { // loop through fusions for this fuser
|
||||
switch (offeredFusion) {
|
||||
|
@ -1317,8 +1275,8 @@ KinstoneId GetFusionToOffer(Entity* entity) {
|
|||
}
|
||||
offeredFusion = KINSTONE_NEEDS_REPLACEMENT; // already completed, try next fusion in the list
|
||||
}
|
||||
gSave.fuserOffers[fuserId] = offeredFusion;
|
||||
gSave.fuserProgress[fuserId] = fuserProgress;
|
||||
gSave.kinstones.fuserOffers[fuserId] = offeredFusion;
|
||||
gSave.kinstones.fuserProgress[fuserId] = fuserProgress;
|
||||
randomMood = Random();
|
||||
fuserStability = fuserData[1];
|
||||
if (fuserStability <= randomMood % 100) {
|
||||
|
|
|
@ -480,7 +480,7 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
|
|||
ptr2 = &gDroptableModifiers[DROPTABLE_NO_SHELLS];
|
||||
}
|
||||
// don't drop kinstones anymore
|
||||
if (gSave.didAllFusions != 0) {
|
||||
if (gSave.kinstones.didAllFusions != 0) {
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NO_KINSTONES];
|
||||
}
|
||||
// vector addition, s0 = s0 + ptr2 + ptr3
|
||||
|
|
|
@ -86,7 +86,7 @@ const ScreenTransitionData gUnk_08128024[] = {
|
|||
u32 sub_080A3B48(void) {
|
||||
u32 index;
|
||||
for (index = 0; index <= 0x12; index++) {
|
||||
if (gSave.kinstoneAmounts[index] == 0) {
|
||||
if (gSave.kinstones.amounts[index] == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -206,7 +206,7 @@ void KinstoneMenu_Type1(void) {
|
|||
case A_BUTTON:
|
||||
if (gMenu.column_idx == 2) {
|
||||
tmp3 = gGenericMenu.unk10.i / 0x10000;
|
||||
gGenericMenu.unk2a = gSave.kinstoneTypes[tmp3];
|
||||
gGenericMenu.unk2a = gSave.kinstones.types[tmp3];
|
||||
SetMenuType(3);
|
||||
}
|
||||
break;
|
||||
|
@ -319,9 +319,9 @@ void KinstoneMenu_Type5(void) {
|
|||
|
||||
void KinstoneMenu_Type5_Overlay0(void) {
|
||||
gMenu.column_idx = 5;
|
||||
WriteBit(gSave.fusedKinstones, gFuseInfo.kinstoneId);
|
||||
if (++gSave.fusedKinstoneCount > 99) {
|
||||
gSave.didAllFusions = 1;
|
||||
WriteBit(gSave.kinstones.fusedKinstones, gFuseInfo.kinstoneId);
|
||||
if (++gSave.kinstones.fusedCount > 99) {
|
||||
gSave.kinstones.didAllFusions = 1;
|
||||
}
|
||||
KinstoneMenu_080A4468();
|
||||
SoundReq(SFX_TASK_COMPLETE);
|
||||
|
@ -462,7 +462,7 @@ void KinstoneMenu_080A414C(void) {
|
|||
OamCmd->x = ((ptr[((uVar1 & tmp1) + 0x40) & tmp1] * 0x42) / 0x100) - 0x10;
|
||||
iVar2 = gKinstoneMenu.unk10.WORD / 0x10000 + i;
|
||||
if (iVar2 >= 0) {
|
||||
uVar3 = gSave.kinstoneAmounts[iVar2];
|
||||
uVar3 = gSave.kinstones.amounts[iVar2];
|
||||
if (i == 0) {
|
||||
switch (gMenu.column_idx) {
|
||||
case 3:
|
||||
|
@ -474,7 +474,7 @@ void KinstoneMenu_080A414C(void) {
|
|||
}
|
||||
}
|
||||
if (uVar3 > 0) {
|
||||
sub_080A42E0(gSave.kinstoneTypes[iVar2], uVar3);
|
||||
sub_080A42E0(gSave.kinstones.types[iVar2], uVar3);
|
||||
}
|
||||
}
|
||||
uVar1 += 0x17;
|
||||
|
|
|
@ -666,7 +666,7 @@ void sub_080A5594(void) {
|
|||
iVar5 = 0;
|
||||
if (GetInventoryValue(ITEM_KINSTONE_BAG) != 0) {
|
||||
for (i = 0; i < 0x13; i++) {
|
||||
iVar5 += gSave.kinstoneAmounts[i];
|
||||
iVar5 += gSave.kinstones.amounts[i];
|
||||
}
|
||||
|
||||
if (iVar5 >= 0x50) {
|
||||
|
@ -1305,11 +1305,11 @@ void sub_080A6044(void) {
|
|||
gOamCmd._6 = 0;
|
||||
uVar4 = 0;
|
||||
uVar2 = 0;
|
||||
uVar1 = gSave.kinstoneTypes[0];
|
||||
uVar1 = gSave.kinstones.types[0];
|
||||
while (uVar1 != 0) {
|
||||
gOamCmd.x = (uVar4 & 3) * 0x30 + 0x2b;
|
||||
gOamCmd.y = (uVar4 >> 2) * 0x24 + 0x34;
|
||||
uVar3 = gSave.kinstoneAmounts[uVar2];
|
||||
uVar3 = gSave.kinstones.amounts[uVar2];
|
||||
gMenu.column_idx = 0;
|
||||
sub_080A42E0(uVar1, uVar3);
|
||||
uVar4++;
|
||||
|
@ -1320,7 +1320,7 @@ void sub_080A6044(void) {
|
|||
if (0x11 < uVar2) {
|
||||
return;
|
||||
}
|
||||
uVar1 = gSave.kinstoneTypes[uVar2];
|
||||
uVar1 = gSave.kinstones.types[uVar2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,7 +126,7 @@ void sub_0806E65C(Entity* this) {
|
|||
void Cucco_ShowMessage(Entity* this) {
|
||||
u32 val = 0;
|
||||
u32 index = GetFuserId(this);
|
||||
if (gSave.fuserOffers[index] == KINSTONE_FUSER_DONE) {
|
||||
if (gSave.kinstones.fuserOffers[index] == KINSTONE_FUSER_DONE) {
|
||||
val = 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ void Din(DinEntity* this) {
|
|||
|
||||
void Din_MakeInteractable(Entity* this) {
|
||||
u32 kinstoneId = GetFusionToOffer(this);
|
||||
if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
|
||||
if ((gSave.kinstones.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
|
||||
kinstoneId = KINSTONE_NONE;
|
||||
}
|
||||
AddInteractableWhenBigFuser(this, kinstoneId);
|
||||
|
|
|
@ -44,7 +44,7 @@ void Farore(FaroreEntity* this) {
|
|||
|
||||
void Farore_MakeInteractable(Entity* this) {
|
||||
u32 kinstoneId = GetFusionToOffer(this);
|
||||
if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
|
||||
if ((gSave.kinstones.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
|
||||
kinstoneId = KINSTONE_NONE;
|
||||
}
|
||||
AddInteractableWhenBigFuser(this, kinstoneId);
|
||||
|
|
|
@ -44,7 +44,7 @@ void Nayru(NayruEntity* this) {
|
|||
|
||||
void Nayru_MakeInteractable(Entity* this) {
|
||||
u32 kinstoneId = GetFusionToOffer(this);
|
||||
if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
|
||||
if ((gSave.kinstones.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
|
||||
kinstoneId = KINSTONE_NONE;
|
||||
}
|
||||
AddInteractableWhenBigFuser(this, kinstoneId);
|
||||
|
|
|
@ -146,7 +146,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) {
|
|||
context->condition = 0;
|
||||
roomFlag = gUnk_0810FC50[this->type];
|
||||
if (CheckRoomFlag(roomFlag) == 0) {
|
||||
bVar2 = gSave.fuserProgress[GetFuserId(this)];
|
||||
bVar2 = gSave.kinstones.fuserProgress[GetFuserId(this)];
|
||||
if (bVar2 >= 2) {
|
||||
uVar5 = 3;
|
||||
} else {
|
||||
|
@ -163,7 +163,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) {
|
|||
remainingFusions = -1;
|
||||
} else {
|
||||
if (CheckGlobalFlag(KAKERA_COMPLETE) == 0) {
|
||||
remainingFusions = 100 - gSave.fusedKinstoneCount;
|
||||
remainingFusions = 100 - gSave.kinstones.fusedCount;
|
||||
if (remainingFusions < 1) {
|
||||
uVar5 = 8;
|
||||
remainingFusions = 0;
|
||||
|
|
|
@ -356,7 +356,7 @@ u32 UpdateFuseInteraction(Entity* entity) {
|
|||
void MarkFuserDone(Entity* entity) {
|
||||
u32 fuserId = GetFuserId(entity);
|
||||
if (fuserId != 0)
|
||||
gSave.fuserOffers[fuserId] = KINSTONE_FUSER_DONE;
|
||||
gSave.kinstones.fuserOffers[fuserId] = KINSTONE_FUSER_DONE;
|
||||
}
|
||||
|
||||
void ShowNPCDialogue(Entity* ent, const Dialog* dia) {
|
||||
|
|
|
@ -214,7 +214,7 @@ void CuccoMinigame_WinItem(CuccoMinigameEntity* this) {
|
|||
}
|
||||
break;
|
||||
case ITEM_KINSTONE:
|
||||
if (gSave.didAllFusions) {
|
||||
if (gSave.kinstones.didAllFusions) {
|
||||
skipItem = 1;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -44,14 +44,14 @@ void Object37_Init(Object37Entity* this) {
|
|||
void Object37_Action1(Object37Entity* this) {
|
||||
Entity* item;
|
||||
|
||||
if ((gSave.fusionUnmarked[0] != 0) && (this->unk70 != *this->unk78)) {
|
||||
if ((gSave.kinstones.fusionUnmarked[0] != 0) && (this->unk70 != *this->unk78)) {
|
||||
item = CreateGroundItem(super, ITEM_RUPEE100, 0);
|
||||
if (item != 0) {
|
||||
item->direction = gPlayerEntity.animationState << 2;
|
||||
item->speed = 0x80;
|
||||
item->zVelocity = Q_16_16(2.0);
|
||||
}
|
||||
gSave.fusionUnmarked[0] = 1;
|
||||
gSave.kinstones.fusionUnmarked[0] = 1;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1113,7 +1113,7 @@ bool32 sub_080782C0(void) {
|
|||
if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) &&
|
||||
((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) {
|
||||
AddKinstoneToBag(KINSTONE_NONE);
|
||||
if (gSave.kinstoneAmounts[0] != 0) {
|
||||
if (gSave.kinstones.amounts[0] != 0) {
|
||||
gPossibleInteraction.kinstoneId = gPossibleInteraction.currentObject->kinstoneId;
|
||||
gPossibleInteraction.currentObject->entity->interactType = INTERACTION_FUSE;
|
||||
gPlayerState.queued_action = PLAYER_08070E9C;
|
||||
|
|
Loading…
Reference in New Issue