Use Randomizer_GetItemIdFromKnownCheck instead for shuffleCows
This commit is contained in:
parent
8c2feb537d
commit
ebcf574085
|
@ -2968,25 +2968,10 @@ RandomizerCheck Randomizer::GetCheckFromActor(s16 sceneNum, s16 actorId, s16 act
|
|||
return RC_KF_MIDOS_BOTTOM_RIGHT_CHEST;
|
||||
}
|
||||
break;
|
||||
case 52:
|
||||
switch (actorParams) {
|
||||
case 4546:
|
||||
return RC_KF_LINKS_HOUSE_COW;
|
||||
}
|
||||
break;
|
||||
case 54:
|
||||
switch (actorParams) {
|
||||
case 4543:
|
||||
return RC_LLR_STABLES_LEFT_COW;
|
||||
case 4542:
|
||||
return RC_LLR_STABLES_RIGHT_COW;
|
||||
}
|
||||
case 55:
|
||||
switch (actorParams) {
|
||||
case 262:
|
||||
return RC_KAK_IMPAS_HOUSE_FREESTANDING_POH;
|
||||
case 4547:
|
||||
return RC_KAK_IMPAS_HOUSE_COW;
|
||||
}
|
||||
break;
|
||||
case 56:
|
||||
|
@ -3023,10 +3008,6 @@ RandomizerCheck Randomizer::GetCheckFromActor(s16 sceneNum, s16 actorId, s16 act
|
|||
return RC_HF_DEKU_SCRUB_GROTTO;
|
||||
case 10:
|
||||
return RC_LW_DEKU_SCRUB_GROTTO_FRONT;
|
||||
case 4544:
|
||||
return RC_DMT_COW_GROTTO_COW;
|
||||
case 4545:
|
||||
return RC_HF_COW_GROTTO_COW;
|
||||
case 22988:
|
||||
return RC_KF_STORMS_GROTTO_CHEST;
|
||||
case -22988:
|
||||
|
@ -3113,10 +3094,6 @@ RandomizerCheck Randomizer::GetCheckFromActor(s16 sceneNum, s16 actorId, s16 act
|
|||
break;
|
||||
case 76:
|
||||
switch (actorParams) {
|
||||
case 4540:
|
||||
return RC_LLR_TOWER_LEFT_COW;
|
||||
case 4541:
|
||||
return RC_LLR_TOWER_RIGHT_COW;
|
||||
case 262:
|
||||
return RC_LLR_FREESTANDING_POH;
|
||||
}
|
||||
|
@ -3275,8 +3252,6 @@ RandomizerCheck Randomizer::GetCheckFromActor(s16 sceneNum, s16 actorId, s16 act
|
|||
break;
|
||||
case 90:
|
||||
switch (actorParams) {
|
||||
case 4548:
|
||||
return RC_GV_COW;
|
||||
case 23200:
|
||||
return RC_GV_CHEST;
|
||||
case 262:
|
||||
|
|
|
@ -18,7 +18,7 @@ void func_809E0070(Actor* thisx, GlobalContext* globalCtx);
|
|||
|
||||
void func_809DF494(EnCow* this, GlobalContext* globalCtx);
|
||||
void func_809DF6BC(EnCow* this, GlobalContext* globalCtx);
|
||||
int EnCow_GetCowId(EnCow* this, GlobalContext* globalCtx);
|
||||
struct CowInfo EnCow_GetCowInfo(EnCow* this, GlobalContext* globalCtx);
|
||||
void EnCow_MoveCowsForRandomizer(EnCow* this, GlobalContext* globalCtx);
|
||||
GetItemID EnCow_GetRandomizerItemFromCow(EnCow* this, GlobalContext* globalCtx, bool setFlag);
|
||||
void func_809DF778(EnCow* this, GlobalContext* globalCtx);
|
||||
|
@ -216,8 +216,14 @@ void func_809DF730(EnCow* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
}
|
||||
|
||||
int EnCow_GetCowId(EnCow* this, GlobalContext* globalCtx) {
|
||||
struct CowInfo {
|
||||
int cowId;
|
||||
RandomizerCheck randomizerCheck;
|
||||
};
|
||||
|
||||
struct CowInfo EnCow_GetCowInfo(EnCow* this, GlobalContext* globalCtx) {
|
||||
s32 uniqueCoords = this->actor.world.pos.x + this->actor.world.pos.z;
|
||||
struct CowInfo cowInfo;
|
||||
|
||||
switch (globalCtx->sceneNum) {
|
||||
case SCENE_SOUKO: // Lon Lon Tower
|
||||
|
@ -225,59 +231,90 @@ int EnCow_GetCowId(EnCow* this, GlobalContext* globalCtx) {
|
|||
// Two cases here cause this cow is moved in randomizer
|
||||
case -173:
|
||||
case -72:
|
||||
return 0;
|
||||
cowInfo.cowId = 0;
|
||||
cowInfo.randomizerCheck = RC_LLR_TOWER_LEFT_COW;
|
||||
break;
|
||||
default:
|
||||
return 1;
|
||||
cowInfo.cowId = 1;
|
||||
cowInfo.randomizerCheck = RC_LLR_TOWER_RIGHT_COW;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SCENE_MALON_STABLE:
|
||||
switch (uniqueCoords) {
|
||||
// Two cases here cause this cow is moved in randomizer
|
||||
case -257:
|
||||
case -138:
|
||||
return 2;
|
||||
cowInfo.cowId = 2;
|
||||
cowInfo.randomizerCheck = RC_LLR_STABLES_RIGHT_COW;
|
||||
break;
|
||||
default:
|
||||
return 3;
|
||||
cowInfo.cowId = 3;
|
||||
cowInfo.randomizerCheck = RC_LLR_STABLES_LEFT_COW;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SCENE_KAKUSIANA: // Grotto
|
||||
switch (uniqueCoords) {
|
||||
case 1973:
|
||||
return 4;
|
||||
cowInfo.cowId = 4;
|
||||
cowInfo.randomizerCheck = RC_DMT_COW_GROTTO_COW;
|
||||
break;
|
||||
default:
|
||||
return 5;
|
||||
cowInfo.cowId = 5;
|
||||
cowInfo.randomizerCheck = RC_HF_COW_GROTTO_COW;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SCENE_LINK_HOME:
|
||||
return 6;
|
||||
cowInfo.cowId = 6;
|
||||
cowInfo.randomizerCheck = RC_KF_LINKS_HOUSE_COW;
|
||||
break;
|
||||
case SCENE_LABO: // Impa's house
|
||||
return 7;
|
||||
cowInfo.cowId = 7;
|
||||
cowInfo.randomizerCheck = RC_KAK_IMPAS_HOUSE_COW;
|
||||
break;
|
||||
case SCENE_SPOT09: // Gerudo Valley
|
||||
return 8;
|
||||
// TODO: Handle Jabu MQ Cow
|
||||
cowInfo.cowId = 8;
|
||||
cowInfo.randomizerCheck = RC_GV_COW;
|
||||
break;
|
||||
case SCENE_SPOT08: // Jabu's Belly
|
||||
cowInfo.cowId = 9;
|
||||
cowInfo.randomizerCheck = RC_JABU_JABUS_BELLY_MQ_COW;
|
||||
break;
|
||||
}
|
||||
|
||||
return cowInfo;
|
||||
}
|
||||
|
||||
void EnCow_MoveCowsForRandomizer(EnCow* this, GlobalContext* globalCtx) {
|
||||
int cowId = EnCow_GetCowId(this, globalCtx);
|
||||
struct CowInfo cowInfo = EnCow_GetCowInfo(this, globalCtx);
|
||||
|
||||
// Only move the cow body (the tail will be moved with the body)
|
||||
if (this->actor.params != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Move left cow in lon lon tower
|
||||
if (cowId == 0) {
|
||||
if (cowInfo.cowId == 0) {
|
||||
this->actor.world.pos.x = -229.0f;
|
||||
this->actor.world.pos.z = 157.0f;
|
||||
this->actor.shape.rot.y = 15783.0f;
|
||||
// Move right cow in lon lon stable
|
||||
} else if (cowId == 2) {
|
||||
} else if (cowInfo.cowId == 2) {
|
||||
this->actor.world.pos.x += 119.0f;
|
||||
}
|
||||
}
|
||||
|
||||
GetItemID EnCow_GetRandomizerItemFromCow(EnCow* this, GlobalContext* globalCtx, bool setFlag) {
|
||||
GetItemID itemId = ITEM_NONE;
|
||||
int cowId = EnCow_GetCowId(this, globalCtx);
|
||||
struct CowInfo cowInfo = EnCow_GetCowInfo(this, globalCtx);
|
||||
|
||||
if (!gSaveContext.cowsMilked[cowId]) {
|
||||
itemId = Randomizer_GetRandomizedItemId(GI_MILK, this->actor.id, 4540 + cowId, globalCtx->sceneNum);
|
||||
if (!gSaveContext.cowsMilked[cowInfo.cowId]) {
|
||||
itemId = Randomizer_GetItemIdFromKnownCheck(cowInfo.randomizerCheck, GI_MILK);
|
||||
|
||||
if (setFlag) {
|
||||
gSaveContext.cowsMilked[cowId] = 1;
|
||||
gSaveContext.cowsMilked[cowInfo.cowId] = 1;
|
||||
}
|
||||
} else if (Inventory_HasEmptyBottle()) {
|
||||
itemId = GI_MILK;
|
||||
|
|
Loading…
Reference in New Issue