mirror of https://github.com/zeldaret/tmc.git
				
				
				
			Merge pull request #663 from Henny022p/SortKinstoneBag
Match SortKinstoneBag
This commit is contained in:
		
						commit
						22ed1e35d7
					
				|  | @ -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
								
								
								
								
							|  | @ -1049,13 +1049,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) { | ||||
|  | @ -1074,17 +1074,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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -1092,12 +1092,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; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -1106,92 +1106,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; | ||||
|  | @ -1259,7 +1217,7 @@ void UpdateVisibleFusionMapMarkers(void) { | |||
| #else | ||||
|             if (sub_0807CB24(tmp, s->flag)) { | ||||
| #endif | ||||
|                 WriteBit(&gSave.fusionUnmarked, kinstoneId); | ||||
|                 WriteBit(&gSave.kinstones.fusionUnmarked, kinstoneId); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | @ -1280,8 +1238,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) { | ||||
|  | @ -1312,8 +1270,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
	
	 Theo
						Theo