mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 17:32:19 -05:00
vb treasure chest game (#103)
This commit is contained in:
parent
bbbd2520b1
commit
f3273e7627
@ -575,8 +575,6 @@ void Flags_UnsetRandomizerInf(RandomizerInf flag);
|
||||
u16 func_80037C30(PlayState* play, s16 arg1);
|
||||
s32 func_80037D98(PlayState* play, Actor* actor, s16 arg2, s32* arg3);
|
||||
s32 func_80038290(PlayState* play, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f arg4);
|
||||
GetItemEntry GetChestGameRandoGetItem(s8 room, s16 ogDrawId, PlayState* play);
|
||||
s16 GetChestGameRandoGiDrawId(s8 room, s16 ogDrawId, PlayState* play);
|
||||
|
||||
// ? func_80038600(?);
|
||||
u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList*);
|
||||
|
@ -254,6 +254,7 @@ typedef enum {
|
||||
|
||||
/*** Give Items ***/
|
||||
|
||||
// Opt: *EnBox
|
||||
GI_VB_GIVE_ITEM_FROM_CHEST,
|
||||
GI_VB_GIVE_ITEM_FROM_BLUE_WARP,
|
||||
// Opt: *EnItem00
|
||||
|
@ -904,11 +904,16 @@ void GenerateItemPool() {
|
||||
} else if (ctx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK)) {
|
||||
AddItemToMainPool(RG_TREASURE_GAME_SMALL_KEY); // 1 key which will behave as a pack of 6
|
||||
} else {
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, RG_GREEN_RUPEE, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, RG_GREEN_RUPEE, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_BLUE_RUPEE, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_BLUE_RUPEE, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_RED_RUPEE, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
ctx->PlaceItemInLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TREASURE_GAME_SMALL_KEY, false, true);
|
||||
};
|
||||
|
||||
if (ctx->GetOption(RSK_SHUFFLE_TOKENS).Is(RO_TOKENSANITY_OFF)) {
|
||||
|
@ -234,11 +234,11 @@ void AreaTable_Init_CastleTown() {
|
||||
//Locations
|
||||
LocationAccess(RC_GREG_HINT, {[]{return true;}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_REWARD, {[]{return logic->ChildsWallet && ((logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 6)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 2)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 3)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 4)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 5)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 2)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 3)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 4)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
LocationAccess(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, {[]{return logic->ChildsWallet && ((randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_SINGLE_KEYS) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 5)) || (randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME).Is(RO_CHEST_GAME_PACK) && logic->SmallKeys(RR_MARKET_TREASURE_CHEST_GAME, 1)) || (logic->CanUse(RG_LENS_OF_TRUTH) && !randoCtx->GetOption(RSK_SHUFFLE_CHEST_MINIGAME)));}}),
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(RR_THE_MARKET, {[]{return true;}}),
|
||||
|
@ -26,6 +26,7 @@ extern "C" {
|
||||
#include "src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h"
|
||||
#include "src/overlays/actors/ovl_En_Sth/z_en_sth.h"
|
||||
#include "src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h"
|
||||
#include "src/overlays/actors/ovl_En_Box/z_en_box.h"
|
||||
#include "adult_trade_shuffle.h"
|
||||
extern SaveContext gSaveContext;
|
||||
extern PlayState* gPlayState;
|
||||
@ -282,6 +283,12 @@ void ItemEtcetera_DrawRandomizedItem(ItemEtcetera* itemEtcetera, PlayState* play
|
||||
GetItemEntry_Draw(play, itemEtcetera->sohItemEntry);
|
||||
}
|
||||
|
||||
void ItemEtcetera_DrawRandomizedItemThroughLens(ItemEtcetera* itemEtcetera, PlayState* play) {
|
||||
if (play->actorCtx.lensActive) {
|
||||
ItemEtcetera_DrawRandomizedItem(itemEtcetera, play);
|
||||
}
|
||||
}
|
||||
|
||||
void ItemEtcetera_func_80B858B4_Randomized(ItemEtcetera* itemEtcetera, PlayState* play) {
|
||||
if (itemEtcetera->actor.xzDistToPlayer < 30.0f &&
|
||||
fabsf(itemEtcetera->actor.yDistToPlayer) < 50.0f) {
|
||||
@ -394,9 +401,50 @@ RandomizerCheck EnFr_RandomizerCheckFromSongIndex(u16 songIndex) {
|
||||
}
|
||||
}
|
||||
|
||||
void RandomizerSetChestGameRandomizerInf(RandomizerCheck rc) {
|
||||
switch (rc) {
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_ITEM_1:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_1);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_ITEM_2:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_2);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_ITEM_3:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_3);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_ITEM_4:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_4);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_ITEM_5:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_5);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_KEY_1:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_KEY_2:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_KEY_3:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_KEY_4:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4);
|
||||
break;
|
||||
case RC_MARKET_TREASURE_CHEST_GAME_KEY_5:
|
||||
Flags_SetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void* optionalArg) {
|
||||
switch (id) {
|
||||
case GI_VB_GIVE_ITEM_FROM_CHEST: {
|
||||
EnBox* chest = static_cast<EnBox*>(optionalArg);
|
||||
RandomizerCheck rc = OTRGlobals::Instance->gRandomizer->GetCheckFromActor(chest->dyna.actor.id, gPlayState->sceneNum, chest->dyna.actor.params);
|
||||
|
||||
// if this is a treasure chest game chest then set the appropriate rando inf
|
||||
RandomizerSetChestGameRandomizerInf(rc);
|
||||
|
||||
Player* player = GET_PLAYER(gPlayState);
|
||||
player->av2.actionVar2 = 1;
|
||||
player->getItemId = GI_NONE;
|
||||
@ -895,6 +943,32 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
|
||||
void RandomizerOnSceneInitHandler(int16_t sceneNum) {
|
||||
// Treasure Chest Game
|
||||
// todo: for now we're just unsetting all of them, we will
|
||||
// probably need to do something different when we implement shuffle
|
||||
if (sceneNum == SCENE_TREASURE_BOX_SHOP) {
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_1);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_2);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_3);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_4);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_5);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_1)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_2)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_3)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_4)->MarkAsNotObtained();
|
||||
Flags_UnsetRandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5);
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_MARKET_TREASURE_CHEST_GAME_KEY_5)->MarkAsNotObtained();
|
||||
}
|
||||
|
||||
// LACs & Prelude checks
|
||||
static uint32_t updateHook = 0;
|
||||
|
||||
@ -1035,6 +1109,17 @@ void RandomizerOnActorInitHandler(void* actorRef) {
|
||||
itemEtcetera->futureActionFunc = (ItemEtceteraActionFunc)ItemEtcetera_UpdateRandomizedFireArrow;
|
||||
break;
|
||||
}
|
||||
case ITEM_ETC_RUPEE_GREEN_CHEST_GAME:
|
||||
case ITEM_ETC_RUPEE_BLUE_CHEST_GAME:
|
||||
case ITEM_ETC_RUPEE_RED_CHEST_GAME:
|
||||
case ITEM_ETC_RUPEE_PURPLE_CHEST_GAME:
|
||||
case ITEM_ETC_HEART_PIECE_CHEST_GAME:
|
||||
case ITEM_ETC_KEY_SMALL_CHEST_GAME: {
|
||||
if (rc != RC_UNKNOWN_CHECK) {
|
||||
itemEtcetera->drawFunc = (ActorFunc)ItemEtcetera_DrawRandomizedItemThroughLens;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -207,6 +207,11 @@ std::vector<RandomizerCheck> Rando::StaticData::overworldLocations = {
|
||||
RC_MARKET_TREASURE_CHEST_GAME_ITEM_3,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_ITEM_4,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_ITEM_5,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_1,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_2,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_3,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_4,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_5,
|
||||
|
||||
// Market Shops
|
||||
RC_MARKET_BOMBCHU_SHOP_ITEM_1,
|
||||
@ -674,11 +679,16 @@ void Rando::StaticData::InitLocationTable() { //
|
||||
locationTable[RC_MARKET_LOST_DOG] = Location::Base(RC_MARKET_LOST_DOG, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_MARKET, ACTOR_ID_MAX, SCENE_DOG_LADY_HOUSE, 0x00, 0x3E, "Lost Dog", "MK Lost Dog", RHT_MARKET_LOST_DOG, RG_PIECE_OF_HEART, {}, SpoilerCollectionCheck::InfTable(INFTABLE_191), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE, true);
|
||||
locationTable[RC_MARKET_SHOOTING_GALLERY_REWARD] = Location::Base(RC_MARKET_SHOOTING_GALLERY_REWARD, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_MARKET, ACTOR_ID_MAX, SCENE_SHOOTING_GALLERY, 0x00, 0x60, "Shooting Gallery", "MK Shooting Gallery", RHT_MARKET_SHOOTING_GALLERY_REWARD, RG_PROGRESSIVE_SLINGSHOT, {}, SpoilerCollectionCheck::ItemGetInf(ITEMGETINF_0D), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE, true);
|
||||
locationTable[RC_MARKET_10_BIG_POES] = Location::Base(RC_MARKET_10_BIG_POES, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_MARKET, ACTOR_ID_MAX, SCENE_MARKET_GUARD_HOUSE, 0x00, 0x0F, "10 Big Poes", "MK 10 Big Poes", RHT_MARKET_10_BIG_POES, RG_EMPTY_BOTTLE, {}, SpoilerCollectionCheck::RandomizerInf(RAND_INF_10_BIG_POES), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE, true);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0x01, "Chest Game First Room Chest", "MK Chest Game First Room Chest", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_1, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0x03, "Chest Game Second Room Chest", "MK Chest Game Second Room Chest", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_2, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0x05, "Chest Game Third Room Chest", "MK Chest Game Third Room Chest", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0x07, "Chest Game Fourth Room Chest", "MK Chest Game Fourth Room Chest", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0x09, "Chest Game Fifth Room Chest", "MK Chest Game Fifth Room Chest", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game First Room Item", "MK Chest Game First Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_1, RG_GREEN_RUPEE, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Second Room Item", "MK Chest Game Second Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_2, RG_GREEN_RUPEE, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Third Room Item", "MK Chest Game Third Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_3, RG_BLUE_RUPEE, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Fourth Room Item", "MK Chest Game Fourth Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_4, RG_BLUE_RUPEE, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_ITEM_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Fifth Room Item", "MK Chest Game Fifth Room Item", RHT_MARKET_TREASURE_CHEST_GAME_ITEM_5, RG_RED_RUPEE, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_1] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_1, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game First Room Key", "MK Chest Game First Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_1, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_2] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_2, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Second Room Key", "MK Chest Game Second Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_2, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_3] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_3, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Third Room Key", "MK Chest Game Third Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_3, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_4] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_4, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Fourth Room Key", "MK Chest Game Fourth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_4, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
locationTable[RC_MARKET_TREASURE_CHEST_GAME_KEY_5] = Location::Chest(RC_MARKET_TREASURE_CHEST_GAME_KEY_5, RCQUEST_BOTH, RCTYPE_CHEST_GAME, RCAREA_MARKET, ACTOR_EN_BOX, SCENE_TREASURE_BOX_SHOP, 0x00, 0xFF, "Chest Game Fifth Room Key", "MK Chest Game Fifth Room Key", RHT_MARKET_TREASURE_CHEST_GAME_KEY_5, RG_TREASURE_GAME_SMALL_KEY, { Category::cChestMinigame }, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE);
|
||||
// Hyrule Castle
|
||||
locationTable[RC_HC_MALON_EGG] = Location::Base(RC_HC_MALON_EGG, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, ACTOR_ID_MAX, SCENE_HYRULE_CASTLE, 0x00, 0x47, "Malon Egg", "HC Malon Egg", RHT_HC_MALON_EGG, RG_WEIRD_EGG, {}, SpoilerCollectionCheck::EventChkInf(0x12), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE, true);
|
||||
locationTable[RC_HC_ZELDAS_LETTER] = Location::Base(RC_HC_ZELDAS_LETTER, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, ACTOR_ID_MAX, SCENE_CASTLE_COURTYARD_ZELDA, 0x00, 0x0B, "Zeldas Letter", "HC Zeldas Letter", RHT_HC_ZELDAS_LETTER, RG_ZELDAS_LETTER, {}, SpoilerCollectionCheck::EventChkInf(0x40), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE, true);
|
||||
|
@ -1649,21 +1649,28 @@ Rando::Location* Randomizer::GetCheckObjectFromActor(s16 actorId, s16 sceneNum,
|
||||
RandomizerCheck specialRc = RC_UNKNOWN_CHECK;
|
||||
// TODO: Migrate these special cases into table, or at least document why they are special
|
||||
switch(sceneNum) {
|
||||
case SCENE_TREASURE_BOX_SHOP:
|
||||
if(actorParams == 20170) specialRc = RC_MARKET_TREASURE_CHEST_GAME_REWARD;
|
||||
case SCENE_TREASURE_BOX_SHOP: {
|
||||
if ((actorId == ACTOR_EN_BOX && actorParams == 20170) || (actorId == ACTOR_ITEM_ETCETERA && actorParams == 2572)) {
|
||||
specialRc = RC_MARKET_TREASURE_CHEST_GAME_REWARD;
|
||||
}
|
||||
|
||||
// RANDOTODO update logic to match 3ds rando when we implement keysanity
|
||||
// keep keys og
|
||||
if ((actorParams & 0x60) == 0x20) break;
|
||||
|
||||
if (GetRandoSettingValue(RSK_SHUFFLE_CHEST_MINIGAME)) {
|
||||
if((actorParams & 0xF) < 2) specialRc = RC_MARKET_TREASURE_CHEST_GAME_ITEM_1;
|
||||
if((actorParams & 0xF) < 4) specialRc = RC_MARKET_TREASURE_CHEST_GAME_ITEM_2;
|
||||
if((actorParams & 0xF) < 6) specialRc = RC_MARKET_TREASURE_CHEST_GAME_ITEM_3;
|
||||
if((actorParams & 0xF) < 8) specialRc = RC_MARKET_TREASURE_CHEST_GAME_ITEM_4;
|
||||
if((actorParams & 0xF) < 10) specialRc = RC_MARKET_TREASURE_CHEST_GAME_ITEM_5;
|
||||
// todo: handle the itemetc part of this so drawing works when we implement shuffle
|
||||
if (actorId == ACTOR_EN_BOX) {
|
||||
bool isAKey = (actorParams & 0x60) == 0x20;
|
||||
if ((actorParams & 0xF) < 2) {
|
||||
specialRc = isAKey ? RC_MARKET_TREASURE_CHEST_GAME_KEY_1 : RC_MARKET_TREASURE_CHEST_GAME_ITEM_1;
|
||||
} else if ((actorParams & 0xF) < 4) {
|
||||
specialRc = isAKey ? RC_MARKET_TREASURE_CHEST_GAME_KEY_2 : RC_MARKET_TREASURE_CHEST_GAME_ITEM_2;
|
||||
} else if ((actorParams & 0xF) < 6) {
|
||||
specialRc = isAKey ? RC_MARKET_TREASURE_CHEST_GAME_KEY_3 : RC_MARKET_TREASURE_CHEST_GAME_ITEM_3;
|
||||
} else if ((actorParams & 0xF) < 8) {
|
||||
specialRc = isAKey ? RC_MARKET_TREASURE_CHEST_GAME_KEY_4 : RC_MARKET_TREASURE_CHEST_GAME_ITEM_4;
|
||||
} else if ((actorParams & 0xF) < 10) {
|
||||
specialRc = isAKey ? RC_MARKET_TREASURE_CHEST_GAME_KEY_5 : RC_MARKET_TREASURE_CHEST_GAME_ITEM_5;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
if (actorId == ACTOR_EN_SA) {
|
||||
specialRc = RC_SONG_FROM_SARIA;
|
||||
|
@ -733,6 +733,11 @@ typedef enum {
|
||||
RC_MARKET_TREASURE_CHEST_GAME_ITEM_3,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_ITEM_4,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_ITEM_5,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_1,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_2,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_3,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_4,
|
||||
RC_MARKET_TREASURE_CHEST_GAME_KEY_5,
|
||||
RC_MARKET_GS_GUARD_HOUSE,
|
||||
RC_MARKET_BAZAAR_ITEM_1,
|
||||
RC_MARKET_BAZAAR_ITEM_2,
|
||||
@ -2332,6 +2337,11 @@ typedef enum {
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_ITEM_3,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_ITEM_4,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_ITEM_5,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_KEY_1,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_KEY_2,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_KEY_3,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_KEY_4,
|
||||
RHT_MARKET_TREASURE_CHEST_GAME_KEY_5,
|
||||
RHT_MARKET_GS_GUARD_HOUSE,
|
||||
RHT_MARKET_BAZAAR_ITEM_1,
|
||||
RHT_MARKET_BAZAAR_ITEM_2,
|
||||
|
@ -282,6 +282,17 @@ typedef enum {
|
||||
RAND_INF_COLOSSUS_GREAT_FAIRY_REWARD,
|
||||
RAND_INF_OGC_GREAT_FAIRY_REWARD,
|
||||
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_1,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_2,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_3,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_4,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_ITEM_5,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_1,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_2,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_3,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_4,
|
||||
RAND_INF_MARKET_TREASURE_CHEST_GAME_KEY_5,
|
||||
|
||||
// If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16)
|
||||
|
||||
RAND_INF_MAX,
|
||||
|
@ -6275,58 +6275,3 @@ s32 func_80038290(PlayState* play, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
GetItemEntry GetChestGameRandoGetItem(s8 room, s16 ogDrawId, PlayState* play) {
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_CHEST_MINIGAME)) {
|
||||
// RANDOTODO update this logic when we implement keysanity
|
||||
// because 3drando replaces the keys not the rupees
|
||||
if (ogDrawId == GID_RUPEE_GREEN ||
|
||||
ogDrawId == GID_RUPEE_BLUE ||
|
||||
ogDrawId == GID_RUPEE_RED)
|
||||
{
|
||||
switch(room) {
|
||||
case 1:
|
||||
if(!Flags_GetCollectible(play, 0x1B)) {
|
||||
return Randomizer_GetItemFromKnownCheck(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, GI_RUPEE_GREEN);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if(!Flags_GetCollectible(play, 0x1C)) {
|
||||
return Randomizer_GetItemFromKnownCheck(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, GI_RUPEE_GREEN);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if(!Flags_GetCollectible(play, 0x1D)) {
|
||||
return Randomizer_GetItemFromKnownCheck(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, GI_RUPEE_BLUE);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if(!Flags_GetCollectible(play, 0x1E)) {
|
||||
return Randomizer_GetItemFromKnownCheck(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, GI_RUPEE_BLUE);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if(!Flags_GetCollectible(play, 0x1F)) {
|
||||
return Randomizer_GetItemFromKnownCheck(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, GI_RUPEE_RED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(ogDrawId == GID_HEART_PIECE) {
|
||||
return Randomizer_GetItemFromKnownCheck(RC_MARKET_TREASURE_CHEST_GAME_REWARD, GI_HEART_PIECE);
|
||||
}
|
||||
|
||||
return (GetItemEntry)GET_ITEM_NONE;
|
||||
}
|
||||
|
||||
s16 GetChestGameRandoGiDrawId(s8 room, s16 ogDrawId, PlayState* play) {
|
||||
GetItemEntry randoGetItem = GetChestGameRandoGetItem(room, ogDrawId, play);
|
||||
|
||||
if (randoGetItem.itemId != ITEM_NONE) {
|
||||
return randoGetItem.gid;
|
||||
}
|
||||
|
||||
return ogDrawId;
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ void DoorAna_WaitClosed(DoorAna* this, PlayState* play);
|
||||
void DoorAna_WaitOpen(DoorAna* this, PlayState* play);
|
||||
void DoorAna_GrabPlayer(DoorAna* this, PlayState* play);
|
||||
|
||||
s16 GetChestGameRandoGiDrawId(s8 room, s16 ogDrawId, PlayState* play);
|
||||
void Grotto_OverrideActorEntrance(Actor* thisx);
|
||||
|
||||
const ActorInit Door_Ana_InitVars = {
|
||||
|
@ -229,25 +229,19 @@ void EnExItem_WaitForObject(EnExItem* this, PlayState* play) {
|
||||
this->scale = 0.5f;
|
||||
this->unkFloat = 0.5f;
|
||||
this->actor.velocity.y = 10.0f;
|
||||
if (!IS_RANDO || !Randomizer_GetSettingValue(RSK_SHUFFLE_CHEST_MINIGAME)) {
|
||||
switch (this->type) {
|
||||
case EXITEM_GREEN_RUPEE_CHEST:
|
||||
this->giDrawId = GID_RUPEE_GREEN;
|
||||
break;
|
||||
case EXITEM_BLUE_RUPEE_CHEST:
|
||||
this->giDrawId = GID_RUPEE_BLUE;
|
||||
break;
|
||||
case EXITEM_RED_RUPEE_CHEST:
|
||||
this->giDrawId = GID_RUPEE_RED;
|
||||
break;
|
||||
case EXITEM_14:
|
||||
this->giDrawId = GID_RUPEE_PURPLE;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (play->sceneNum == SCENE_TREASURE_BOX_SHOP) {
|
||||
this->giDrawId = GetChestGameRandoGiDrawId(play->roomCtx.curRoom.num, GID_RUPEE_GREEN, play);
|
||||
}
|
||||
switch (this->type) {
|
||||
case EXITEM_GREEN_RUPEE_CHEST:
|
||||
this->giDrawId = GID_RUPEE_GREEN;
|
||||
break;
|
||||
case EXITEM_BLUE_RUPEE_CHEST:
|
||||
this->giDrawId = GID_RUPEE_BLUE;
|
||||
break;
|
||||
case EXITEM_RED_RUPEE_CHEST:
|
||||
this->giDrawId = GID_RUPEE_RED;
|
||||
break;
|
||||
case EXITEM_14:
|
||||
this->giDrawId = GID_RUPEE_PURPLE;
|
||||
break;
|
||||
}
|
||||
this->actionFunc = EnExItem_ExitChest;
|
||||
break;
|
||||
|
@ -206,16 +206,6 @@ void ItemEtcetera_DrawThroughLens(Actor* thisx, PlayState* play) {
|
||||
if (play->actorCtx.lensActive) {
|
||||
func_8002EBCC(&this->actor, play, 0);
|
||||
func_8002ED80(&this->actor, play, 0);
|
||||
|
||||
if(IS_RANDO && play->sceneNum == SCENE_TREASURE_BOX_SHOP) {
|
||||
GetItemEntry randoGetItem = GetChestGameRandoGetItem(this->actor.room, this->giDrawId, play);
|
||||
EnItem00_CustomItemsParticles(&this->actor, play, randoGetItem);
|
||||
if (randoGetItem.itemId != ITEM_NONE) {
|
||||
GetItemEntry_Draw(play, randoGetItem);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GetItem_Draw(play, this->giDrawId);
|
||||
}
|
||||
}
|
||||
|
@ -6866,7 +6866,7 @@ s32 Player_ActionChange_2(Player* this, PlayState* play) {
|
||||
}
|
||||
|
||||
func_80836898(play, this, func_8083A434);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_CHEST, true, &giEntry)) {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_CHEST, true, chest)) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_GETTING_ITEM | PLAYER_STATE1_ITEM_OVER_HEAD | PLAYER_STATE1_IN_CUTSCENE;
|
||||
func_8083AE40(this, giEntry.objectId);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user