skip bottling big poes (#5247)

* setting to skip bottling big poes

empty bottle still required to collect

avoids logic needing to work around player soft locking by filling bottles without poe collector access

* No option, zero option

* TEXT_BIG_POE_COLLECTED_RANDO

* update preset

* fix talking to poe collector after receiving item
This commit is contained in:
Philip Dubé
2025-05-23 21:00:35 +00:00
committed by GitHub
parent 1d716a5975
commit 24013e2e5c
19 changed files with 97 additions and 92 deletions

View File

@@ -288,19 +288,21 @@ void func_80A2F83C(EnGb* this, PlayState* play) {
}
}
if (Actor_ProcessTalkRequest(&this->dyna.actor, play)) {
switch (func_8002F368(play)) {
case EXCH_ITEM_NONE:
func_80A2F180(this);
this->actionFunc = func_80A2F94C;
break;
case EXCH_ITEM_POE:
player->actor.textId = 0x70F6;
this->actionFunc = func_80A2F9C0;
break;
case EXCH_ITEM_BIG_POE:
player->actor.textId = 0x70F7;
this->actionFunc = func_80A2FA50;
break;
if (GameInteractor_Should(VB_SELL_POES_TO_POE_COLLECTOR, true, this)) {
switch (func_8002F368(play)) {
case EXCH_ITEM_NONE:
func_80A2F180(this);
this->actionFunc = func_80A2F94C;
break;
case EXCH_ITEM_POE:
player->actor.textId = 0x70F6;
this->actionFunc = func_80A2F9C0;
break;
case EXCH_ITEM_BIG_POE:
player->actor.textId = 0x70F7;
this->actionFunc = func_80A2FA50;
break;
}
}
return;
}

View File

@@ -47,6 +47,7 @@ typedef struct EnGb {
/* 0x0388 */ EnGbCagedSoul cagedSouls[4];
} EnGb; // size = 0x0438
void func_80A2FC0C(EnGb* actor, PlayState* play);
void func_80A2FB40(EnGb* actor, PlayState* play);
void func_80A2F83C(EnGb* actor, PlayState* play);
#endif

View File

@@ -712,7 +712,7 @@ void EnPoField_SoulInteract(EnPoField* this, PlayState* play) {
if (this->actor.params == 0) {
Item_Give(play, ITEM_POE);
this->actor.textId = 0x5008;
} else {
} else if (GameInteractor_Should(VB_BOTTLE_BIG_POE, true, this)) {
this->actor.textId = 0x508F;
Item_Give(play, ITEM_BIG_POE);
Flags_SetSwitch(play, sEnPoFieldSpawnSwitchFlags[this->spawnFlagIndex]);