mostly have carpet guy working
This commit is contained in:
parent
a3e2e7dfd4
commit
bd463be256
|
@ -289,6 +289,7 @@ typedef enum {
|
|||
VB_GIVE_ITEM_FROM_GORON,
|
||||
// Opt: *EnJs
|
||||
VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
|
||||
VB_GIVE_BOMBCHUS_FROM_CARPET_SALESMAN,
|
||||
// Opt: *EnGm
|
||||
VB_GIVE_ITEM_FROM_MEDIGORON,
|
||||
// Opt: *EnMs
|
||||
|
|
|
@ -786,6 +786,10 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
|||
Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN);
|
||||
break;
|
||||
}
|
||||
case VB_GIVE_BOMBCHUS_FROM_CARPET_SALESMAN: {
|
||||
*should = RAND_GET_OPTION(RSK_BOMBCHUS_IN_LOGIC) == false || INV_CONTENT(ITEM_BOMBCHU) == ITEM_BOMBCHU;
|
||||
break;
|
||||
}
|
||||
case VB_GIVE_ITEM_FROM_MEDIGORON: {
|
||||
// fallthrough
|
||||
case VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE:
|
||||
|
|
|
@ -2625,9 +2625,9 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
|||
messageEntry = messageEntry = ctx->GetHint(RH_MEDIGORON)->GetHintMessage(MF_AUTO_FORMAT);
|
||||
}
|
||||
else if (textId == TEXT_CARPET_SALESMAN_1 && !Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN) && Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF){
|
||||
messageEntry = messageEntry = ctx->GetHint(RH_CARPET_SALESMAN)->GetHintMessage(MF_AUTO_FORMAT);
|
||||
messageEntry = ctx->GetHint(RH_CARPET_SALESMAN)->GetHintMessage(MF_AUTO_FORMAT);
|
||||
}
|
||||
else if (textId == TEXT_CARPET_SALESMAN_2 && !Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN) && Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF){
|
||||
else if (textId == TEXT_CARPET_SALESMAN_2 && !ctx->GetItemLocation(RC_WASTELAND_BOMBCHU_SALESMAN)->HasObtained() && Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF){
|
||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::merchantMessageTableID, textId);//KNOWN BUG does not play due to I assume a change in when RAND_INF_MERCHANTS_CARPET_SALESMAN gets set.
|
||||
} else if (textId == TEXT_SKULLTULA_PEOPLE_IM_CURSED) {
|
||||
actorParams = GET_PLAYER(play)->targetActor->params;
|
||||
|
|
|
@ -148,8 +148,14 @@ void func_80A891C4(EnJs* this, PlayState* play) {
|
|||
Message_ContinueTextbox(play, 0x6075);
|
||||
func_80A89008(this);
|
||||
} else {
|
||||
Rupees_ChangeBy(-200);
|
||||
En_Js_SetupAction(this, func_80A89160);
|
||||
if (GameInteractor_Should(VB_GIVE_BOMBCHUS_FROM_CARPET_SALESMAN, true, this) ||
|
||||
(Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_CARPET_SALESMAN, true, this))){
|
||||
Rupees_ChangeBy(-200);
|
||||
En_Js_SetupAction(this, func_80A89160);
|
||||
} else{
|
||||
Message_ContinueTextbox(play, 0x6073);
|
||||
func_80A89008(this);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1: // no
|
||||
|
@ -159,56 +165,8 @@ void func_80A891C4(EnJs* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
// #region [Randomizer]
|
||||
void func_80A89160Rando(EnJs* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play)) {
|
||||
this->actor.parent = NULL;
|
||||
En_Js_SetupAction(this, func_80A8910C);
|
||||
} else {
|
||||
GetItemEntry itemEntry = Randomizer_GetItemFromKnownCheck(RC_WASTELAND_BOMBCHU_SALESMAN, GI_BOMBCHUS_10);
|
||||
gSaveContext.pendingSale = itemEntry.itemId;
|
||||
gSaveContext.pendingSaleMod = itemEntry.modIndex;
|
||||
GiveItemEntryFromActor(&this->actor, play, itemEntry, 10000.0f, 50.0f);
|
||||
Flags_SetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A891C4Rando(EnJs* this, PlayState* play) {
|
||||
if (Message_GetState(&play->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(play)) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0: // yes
|
||||
if (gSaveContext.rupees < 200) {
|
||||
Message_ContinueTextbox(play, 0x6075);
|
||||
func_80A89008(this);
|
||||
} else if (Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF &&
|
||||
!Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN)){
|
||||
Rupees_ChangeBy(-200);
|
||||
En_Js_SetupAction(this, func_80A89160Rando);
|
||||
} else if (Randomizer_GetSettingValue(RSK_BOMBCHUS_IN_LOGIC) && INV_CONTENT(ITEM_BOMBCHU) == ITEM_NONE){
|
||||
Message_ContinueTextbox(play, 0x6073);
|
||||
func_80A89008(this);
|
||||
} else {
|
||||
Rupees_ChangeBy(-200);
|
||||
En_Js_SetupAction(this, func_80A89160);
|
||||
}
|
||||
break;
|
||||
case 1: // no
|
||||
Message_ContinueTextbox(play, 0x6074);
|
||||
func_80A89008(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
// #endregion
|
||||
|
||||
void func_80A89294(EnJs* this) {
|
||||
// #region [Randomizer]
|
||||
if (IS_RANDO){
|
||||
En_Js_SetupAction(this, func_80A891C4Rando);
|
||||
}
|
||||
//#endregion
|
||||
else{
|
||||
En_Js_SetupAction(this, func_80A891C4);
|
||||
}
|
||||
En_Js_SetupAction(this, func_80A891C4);
|
||||
Animation_Change(&this->skelAnime, &gCarpetMerchantIdleAnim, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(&gCarpetMerchantIdleAnim), ANIMMODE_ONCE, -4.0f);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue