mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-04-28 21:27:58 +03:00
Merge 9debacff64
into fbbfc07ff1
This commit is contained in:
commit
924bde0a25
5 changed files with 41 additions and 17 deletions
|
@ -162,6 +162,7 @@ typedef enum {
|
|||
TEXT_ANJU_THANKS_FOR_FINDING_MY_CUCCOS = 0x503B,
|
||||
TEXT_ANJU_ROUND_THEM_UP_OR_YOULL_PAY = 0x503C,
|
||||
TEXT_ANJU_DONT_TEASE_MY_CUCCOS = 0x503D,
|
||||
TEXT_GERUDO_GUARD_FRIENDLY = 0x6005,
|
||||
TEXT_HBA_NOT_ON_HORSE = 0x603F,
|
||||
TEXT_HBA_INITIAL_EXPLAINATION = 0x6040,
|
||||
TEXT_HBA_WANT_TO_TRY_AGAIN_YES_NO = 0x6041,
|
||||
|
|
|
@ -498,6 +498,14 @@ typedef enum {
|
|||
// - None
|
||||
VB_GANON_HEAL_BEFORE_FIGHT,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// true
|
||||
// ```
|
||||
// #### `args`
|
||||
// - `*EnGe2`
|
||||
VB_GERUDO_GUARD_SET_ACTION_AFTER_TALK,
|
||||
|
||||
// #### `result`
|
||||
// See logic in
|
||||
// ```c
|
||||
|
|
|
@ -46,6 +46,7 @@ extern "C" {
|
|||
#include "src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h"
|
||||
#include "src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h"
|
||||
#include "src/overlays/actors/ovl_En_Ge1/z_en_ge1.h"
|
||||
#include "src/overlays/actors/ovl_En_Ge2/z_en_ge2.h"
|
||||
#include "src/overlays/actors/ovl_En_Ds/z_en_ds.h"
|
||||
#include "src/overlays/actors/ovl_En_Gm/z_en_gm.h"
|
||||
#include "src/overlays/actors/ovl_En_Js/z_en_js.h"
|
||||
|
@ -55,7 +56,6 @@ extern "C" {
|
|||
#include "src/overlays/actors/ovl_En_Xc/z_en_xc.h"
|
||||
#include "src/overlays/actors/ovl_Fishing/z_fishing.h"
|
||||
#include "src/overlays/actors/ovl_En_Mk/z_en_mk.h"
|
||||
#include "src/overlays/actors/ovl_En_Ge1/z_en_ge1.h"
|
||||
#include "draw.h"
|
||||
|
||||
extern SaveContext gSaveContext;
|
||||
|
@ -69,6 +69,8 @@ extern void EnMk_Wait(EnMk* enMk, PlayState* play);
|
|||
extern void func_80ABA778(EnNiwLady* enNiwLady, PlayState* play);
|
||||
extern void EnGe1_Wait_Archery(EnGe1* enGe1, PlayState* play);
|
||||
extern void EnGe1_SetAnimationIdle(EnGe1* enGe1);
|
||||
extern void EnGe1_SetAnimationIdle(EnGe1* enGe1);
|
||||
extern void EnGe2_SetupCapturePlayer(EnGe2* enGe2, PlayState* play);
|
||||
}
|
||||
|
||||
#define RAND_GET_OPTION(option) Rando::Context::GetInstance()->GetOption(option).Get()
|
||||
|
@ -1421,6 +1423,13 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l
|
|||
}
|
||||
break;
|
||||
}
|
||||
case VB_GERUDO_GUARD_SET_ACTION_AFTER_TALK:
|
||||
if (gPlayState->msgCtx.choiceIndex == 0) {
|
||||
EnGe2* enGe2 = va_arg(args, EnGe2*);
|
||||
EnGe2_SetupCapturePlayer(enGe2, gPlayState);
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case VB_GERUDOS_BE_FRIENDLY: {
|
||||
*should = CHECK_QUEST_ITEM(QUEST_GERUDO_CARD);
|
||||
break;
|
||||
|
|
|
@ -2222,7 +2222,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
|||
(Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) == RO_GOSSIP_STONES_NEED_STONE &&
|
||||
CHECK_QUEST_ITEM(QUEST_STONE_OF_AGONY)))) {
|
||||
|
||||
Actor* stone = GET_PLAYER(play)->talkActor;
|
||||
Actor* stone = player->talkActor;
|
||||
RandomizerHint stoneHint = RH_NONE;
|
||||
s16 hintParams = stone->params & 0xFF;
|
||||
|
||||
|
@ -2280,7 +2280,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
|||
(RandomizerInf)((textId - TEXT_SHOP_ITEM_RANDOM_CONFIRM) + RAND_INF_SHOP_ITEMS_KF_SHOP_ITEM_1));
|
||||
messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(rc, TEXT_SHOP_ITEM_RANDOM_CONFIRM);
|
||||
} else if (textId == TEXT_SCRUB_RANDOM) {
|
||||
EnDns* enDns = (EnDns*)GET_PLAYER(play)->talkActor;
|
||||
EnDns* enDns = (EnDns*)player->talkActor;
|
||||
RandomizerCheck rc = OTRGlobals::Instance->gRandomizer->GetCheckFromRandomizerInf(
|
||||
(RandomizerInf)enDns->sohScrubIdentity.randomizerInf);
|
||||
messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(
|
||||
|
@ -2330,7 +2330,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
|||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::merchantMessageTableID, textId,
|
||||
MF_AUTO_FORMAT);
|
||||
} else if (textId == TEXT_SKULLTULA_PEOPLE_IM_CURSED) {
|
||||
actorParams = GET_PLAYER(play)->talkActor->params;
|
||||
actorParams = player->talkActor->params;
|
||||
if (actorParams == 1 && ctx->GetOption(RSK_KAK_10_SKULLS_HINT)) {
|
||||
messageEntry = ctx->GetHint(RH_KAK_10_SKULLS_HINT)->GetHintMessage(MF_AUTO_FORMAT);
|
||||
} else if (actorParams == 2 && ctx->GetOption(RSK_KAK_20_SKULLS_HINT)) {
|
||||
|
@ -2426,6 +2426,10 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
|||
CustomMessageManager::Instance->RetrieveMessage(customMessageTableID, textId, MF_AUTO_FORMAT);
|
||||
} else if (textId == TEXT_MASK_SHOP_SIGN && ctx->GetOption(RSK_MASK_SHOP_HINT)) {
|
||||
messageEntry = ctx->GetHint(RH_MASK_SHOP_HINT)->GetHintMessage(MF_AUTO_FORMAT);
|
||||
} else if (textId == TEXT_GERUDO_GUARD_FRIENDLY && player->talkActor->id == ACTOR_EN_GE2) {
|
||||
// TODO_TRANSLATE Translate into french and german
|
||||
messageEntry = CustomMessage("Want me to throw you in jail?&\x1B#Yes please&No thanks#", { QM_GREEN });
|
||||
messageEntry.AutoFormat();
|
||||
}
|
||||
}
|
||||
if (textId == TEXT_GS_NO_FREEZE || textId == TEXT_GS_FREEZE) {
|
||||
|
|
|
@ -54,6 +54,7 @@ void EnGe2_Walk(EnGe2* this, PlayState* play);
|
|||
void EnGe2_Stand(EnGe2* this, PlayState* play);
|
||||
void EnGe2_WaitLookAtPlayer(EnGe2* this, PlayState* play);
|
||||
void EnGe2_ForceTalk(EnGe2* this, PlayState* play);
|
||||
void EnGe2_SetupCapturePlayer(EnGe2* this, PlayState* play);
|
||||
|
||||
// Update functions
|
||||
void EnGe2_UpdateFriendly(Actor* thisx, PlayState* play);
|
||||
|
@ -439,20 +440,21 @@ void EnGe2_LookAtPlayer(EnGe2* this, PlayState* play) {
|
|||
|
||||
void EnGe2_SetActionAfterTalk(EnGe2* this, PlayState* play) {
|
||||
if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
|
||||
switch (this->actor.params & 0xFF) {
|
||||
case GE2_TYPE_PATROLLING:
|
||||
EnGe2_ChangeAction(this, GE2_ACTION_ABOUTTURN);
|
||||
break;
|
||||
case GE2_TYPE_STATIONARY:
|
||||
EnGe2_ChangeAction(this, GE2_ACTION_STAND);
|
||||
break;
|
||||
case GE2_TYPE_GERUDO_CARD_GIVER:
|
||||
this->actionFunc = EnGe2_WaitLookAtPlayer;
|
||||
break;
|
||||
if (GameInteractor_Should(VB_GERUDO_GUARD_SET_ACTION_AFTER_TALK, true, this)) {
|
||||
switch (this->actor.params & 0xFF) {
|
||||
case GE2_TYPE_PATROLLING:
|
||||
EnGe2_ChangeAction(this, GE2_ACTION_ABOUTTURN);
|
||||
break;
|
||||
case GE2_TYPE_STATIONARY:
|
||||
EnGe2_ChangeAction(this, GE2_ACTION_STAND);
|
||||
break;
|
||||
case GE2_TYPE_GERUDO_CARD_GIVER:
|
||||
this->actionFunc = EnGe2_WaitLookAtPlayer;
|
||||
break;
|
||||
}
|
||||
this->actor.update = EnGe2_UpdateFriendly;
|
||||
this->actor.flags &= ~ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED;
|
||||
}
|
||||
this->actor.update = EnGe2_UpdateFriendly;
|
||||
this->actor.flags &= ~ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED;
|
||||
}
|
||||
EnGe2_TurnToFacePlayer(this, play);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue