mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 09:22:18 -05:00
VBify poe collector giving for rando. (#4458)
* VBify poe collector giving for rando. * Forgot an include. * Further refinement so all the action happens in the handler. Virtual full restoration of vanilla code flow. * Restored 1000 point messages before rando item give. * Cleanup redundant GI Should call.
This commit is contained in:
parent
b2e99b8ff5
commit
4663bd152a
@ -365,6 +365,8 @@ typedef enum {
|
|||||||
VB_GIVE_ITEM_FROM_THAWING_KING_ZORA,
|
VB_GIVE_ITEM_FROM_THAWING_KING_ZORA,
|
||||||
// Opt: *EnGo2
|
// Opt: *EnGo2
|
||||||
VB_GIVE_ITEM_FROM_GORON,
|
VB_GIVE_ITEM_FROM_GORON,
|
||||||
|
// Opt: *EnGb
|
||||||
|
VB_GIVE_ITEM_FROM_POE_COLLECTOR,
|
||||||
// Opt: *EnJs
|
// Opt: *EnJs
|
||||||
VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN,
|
VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN,
|
||||||
VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
|
VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
|
||||||
|
@ -19,6 +19,7 @@ extern "C" {
|
|||||||
#include "src/overlays/actors/ovl_En_Cow/z_en_cow.h"
|
#include "src/overlays/actors/ovl_En_Cow/z_en_cow.h"
|
||||||
#include "src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.h"
|
#include "src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.h"
|
||||||
#include "src/overlays/actors/ovl_En_Dns/z_en_dns.h"
|
#include "src/overlays/actors/ovl_En_Dns/z_en_dns.h"
|
||||||
|
#include "src/overlays/actors/ovl_En_Gb/z_en_gb.h"
|
||||||
#include "src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h"
|
#include "src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h"
|
||||||
#include "src/overlays/actors/ovl_En_Ko/z_en_ko.h"
|
#include "src/overlays/actors/ovl_En_Ko/z_en_ko.h"
|
||||||
#include "src/overlays/actors/ovl_En_Mk/z_en_mk.h"
|
#include "src/overlays/actors/ovl_En_Mk/z_en_mk.h"
|
||||||
@ -904,6 +905,16 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l
|
|||||||
*should = false;
|
*should = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case VB_GIVE_ITEM_FROM_POE_COLLECTOR: {
|
||||||
|
EnGb* enGb = va_arg(args, EnGb*);
|
||||||
|
if (!Flags_GetRandomizerInf(RAND_INF_10_BIG_POES)) {
|
||||||
|
Flags_SetRandomizerInf(RAND_INF_10_BIG_POES);
|
||||||
|
enGb->dyna.actor.parent = NULL;
|
||||||
|
enGb->actionFunc = func_80A2FC0C;
|
||||||
|
*should = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN: {
|
case VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN: {
|
||||||
if (EnJs_RandoCanGetCarpetMerchantItem()){
|
if (EnJs_RandoCanGetCarpetMerchantItem()){
|
||||||
*should = gSaveContext.rupees < OTRGlobals::Instance->gRandoContext->GetItemLocation(RC_WASTELAND_BOMBCHU_SALESMAN)->GetPrice();
|
*should = gSaveContext.rupees < OTRGlobals::Instance->gRandoContext->GetItemLocation(RC_WASTELAND_BOMBCHU_SALESMAN)->GetPrice();
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "z_en_gb.h"
|
#include "z_en_gb.h"
|
||||||
#include "objects/object_ps/object_ps.h"
|
#include "objects/object_ps/object_ps.h"
|
||||||
#include "soh/frame_interpolation.h"
|
#include "soh/frame_interpolation.h"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
||||||
|
|
||||||
@ -337,10 +338,7 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
|
|||||||
Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE);
|
Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE);
|
||||||
Rupees_ChangeBy(50);
|
Rupees_ChangeBy(50);
|
||||||
HIGH_SCORE(HS_POE_POINTS) += 100;
|
HIGH_SCORE(HS_POE_POINTS) += 100;
|
||||||
if (
|
if (HIGH_SCORE(HS_POE_POINTS) != 1000) {
|
||||||
(!IS_RANDO && HIGH_SCORE(HS_POE_POINTS) != 1000) ||
|
|
||||||
(IS_RANDO && (HIGH_SCORE(HS_POE_POINTS) != 1000 || Flags_GetRandomizerInf(RAND_INF_10_BIG_POES)))
|
|
||||||
) {
|
|
||||||
if (HIGH_SCORE(HS_POE_POINTS) > 1100) {
|
if (HIGH_SCORE(HS_POE_POINTS) > 1100) {
|
||||||
HIGH_SCORE(HS_POE_POINTS) = 1100;
|
HIGH_SCORE(HS_POE_POINTS) = 1100;
|
||||||
}
|
}
|
||||||
@ -348,7 +346,6 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
|
|||||||
} else {
|
} else {
|
||||||
Player* player = GET_PLAYER(play);
|
Player* player = GET_PLAYER(play);
|
||||||
|
|
||||||
Flags_SetRandomizerInf(RAND_INF_10_BIG_POES);
|
|
||||||
player->exchangeItemId = EXCH_ITEM_NONE;
|
player->exchangeItemId = EXCH_ITEM_NONE;
|
||||||
this->textId = 0x70F8;
|
this->textId = 0x70F8;
|
||||||
Message_ContinueTextbox(play, this->textId);
|
Message_ContinueTextbox(play, this->textId);
|
||||||
@ -359,27 +356,20 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
|
|||||||
|
|
||||||
void func_80A2FB40(EnGb* this, PlayState* play) {
|
void func_80A2FB40(EnGb* this, PlayState* play) {
|
||||||
if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) {
|
if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) {
|
||||||
if (!IS_RANDO) {
|
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_POE_COLLECTOR, true, this)) {
|
||||||
Actor_OfferGetItem(&this->dyna.actor, play, GI_BOTTLE, 100.0f, 10.0f);
|
Actor_OfferGetItem(&this->dyna.actor, play, GI_BOTTLE, 100.0f, 10.0f);
|
||||||
} else {
|
|
||||||
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_MARKET_10_BIG_POES, GI_BOTTLE);
|
|
||||||
GiveItemEntryFromActor(&this->dyna.actor, play, getItemEntry, 100.0f, 10.0f);
|
|
||||||
}
|
|
||||||
this->actionFunc = func_80A2FBB0;
|
this->actionFunc = func_80A2FBB0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80A2FBB0(EnGb* this, PlayState* play) {
|
void func_80A2FBB0(EnGb* this, PlayState* play) {
|
||||||
if (Actor_HasParent(&this->dyna.actor, play)) {
|
if (Actor_HasParent(&this->dyna.actor, play)) {
|
||||||
this->dyna.actor.parent = NULL;
|
this->dyna.actor.parent = NULL;
|
||||||
this->actionFunc = func_80A2FC0C;
|
this->actionFunc = func_80A2FC0C;
|
||||||
} else {
|
|
||||||
if (!IS_RANDO) {
|
|
||||||
Actor_OfferGetItem(&this->dyna.actor, play, GI_BOTTLE, 100.0f, 10.0f);
|
|
||||||
} else {
|
|
||||||
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_MARKET_10_BIG_POES, GI_BOTTLE);
|
|
||||||
GiveItemEntryFromActor(&this->dyna.actor, play, getItemEntry, 100.0f, 10.0f);
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
Actor_OfferGetItem(&this->dyna.actor, play, GI_BOTTLE, 100.0f, 10.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,4 +47,6 @@ typedef struct EnGb {
|
|||||||
/* 0x0388 */ EnGbCagedSoul cagedSouls[4];
|
/* 0x0388 */ EnGbCagedSoul cagedSouls[4];
|
||||||
} EnGb; // size = 0x0438
|
} EnGb; // size = 0x0438
|
||||||
|
|
||||||
|
void func_80A2FC0C(EnGb* actor, PlayState* play);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user