mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-20 05:13:39 -07:00
Merge branch 'develop-rachael' into rachael-zhora
# Conflicts: # libultraship/libultraship/ImGuiImpl.cpp
This commit is contained in:
commit
53229f0905
12 changed files with 178 additions and 104 deletions
|
@ -238,10 +238,11 @@ void GivePlayerRandoRewardZeldaLightArrowsGift(GlobalContext* globalCtx, Randomi
|
|||
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) && LINK_IS_ADULT &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA) &&
|
||||
!Flags_GetTreasure(globalCtx, 0x1E) && player != NULL && !Player_InBlockingCsMode(globalCtx, player) &&
|
||||
globalCtx->sceneLoadFlag == 0 && player->getItemId == GI_NONE) {
|
||||
globalCtx->sceneLoadFlag == 0) {
|
||||
GetItemID getItemId = Randomizer_GetItemIdFromKnownCheck(check, GI_ARROW_LIGHT);
|
||||
GiveItemWithoutActor(globalCtx, getItemId);
|
||||
Flags_SetTreasure(globalCtx, 0x1E);
|
||||
player->pendingFlag.flagID = 0x1E;
|
||||
player->pendingFlag.flagType = FLAG_SCENE_TREASURE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1409,7 +1410,7 @@ void Gameplay_Draw(GlobalContext* globalCtx) {
|
|||
OVERLAY_DISP = sp70;
|
||||
globalCtx->unk_121C7 = 2;
|
||||
SREG(33) |= 1;
|
||||
} else {
|
||||
} else if (R_PAUSE_MENU_MODE != 3) {
|
||||
Gameplay_Draw_DrawOverlayElements:
|
||||
if ((HREG(80) != 10) || (HREG(89) != 0)) {
|
||||
Gameplay_DrawOverlayElements(globalCtx);
|
||||
|
|
|
@ -1059,7 +1059,7 @@ void EnSkj_SetupPostSariasSong(EnSkj* this) {
|
|||
}
|
||||
|
||||
void EnSkj_ChangeModeAfterSong(EnSkj* this, GlobalContext* globalCtx) {
|
||||
if ((Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(globalCtx)) {
|
||||
if (((Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(globalCtx)) || Randomizer_ItemIsIceTrap(RC_LW_SKULL_KID, GI_HEART_PIECE)) {
|
||||
gSaveContext.itemGetInf[1] |= 0x40;
|
||||
EnSkj_SetNaviId(this);
|
||||
EnSkj_SetupWaitInRange(this);
|
||||
|
|
|
@ -288,14 +288,16 @@ void func_80B3CA38(EnXc* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
void GivePlayerRandoRewardSheikSong(EnXc* sheik, GlobalContext* globalCtx, RandomizerCheck check, int sheikType, GetItemID ogSongId) {
|
||||
if (sheik->actor.parent != NULL && sheik->actor.parent->id == GET_PLAYER(globalCtx)->actor.id &&
|
||||
Player* player = GET_PLAYER(globalCtx);
|
||||
if (sheik->actor.parent != NULL && sheik->actor.parent->id == player->actor.id &&
|
||||
!(gSaveContext.eventChkInf[5] & sheikType)) {
|
||||
gSaveContext.eventChkInf[5] |= sheikType;
|
||||
} else if (!(gSaveContext.eventChkInf[5] & sheikType)) {
|
||||
GetItemID getItemId = Randomizer_GetItemIdFromKnownCheck(check, ogSongId);
|
||||
if (check == RC_SHEIK_AT_TEMPLE && !Flags_GetTreasure(globalCtx, 0x1F)) {
|
||||
if (func_8002F434(&sheik->actor, globalCtx, getItemId, 10000.0f, 100.0f)) {
|
||||
Flags_SetTreasure(globalCtx, 0x1F);
|
||||
player->pendingFlag.flagID = 0x1F;
|
||||
player->pendingFlag.flagType = FLAG_SCENE_TREASURE;
|
||||
}
|
||||
} else if (check != RC_SHEIK_AT_TEMPLE) {
|
||||
func_8002F434(&sheik->actor, globalCtx, getItemId, 10000.0f, 100.0f);
|
||||
|
|
|
@ -167,6 +167,7 @@ void func_8083CA20(GlobalContext* globalCtx, Player* this);
|
|||
void func_8083CA54(GlobalContext* globalCtx, Player* this);
|
||||
void func_8083CA9C(GlobalContext* globalCtx, Player* this);
|
||||
s32 func_8083E0FC(Player* this, GlobalContext* globalCtx);
|
||||
void Player_SetPendingFlag(Player* this, GlobalContext* globalCtx);
|
||||
s32 func_8083E5A8(Player* this, GlobalContext* globalCtx);
|
||||
s32 func_8083EB44(Player* this, GlobalContext* globalCtx);
|
||||
s32 func_8083F7BC(Player* this, GlobalContext* globalCtx);
|
||||
|
@ -6236,6 +6237,30 @@ void func_8083E4C4(GlobalContext* globalCtx, Player* this, GetItemEntry* giEntry
|
|||
func_80078884((this->getItemId < 0) ? NA_SE_SY_GET_BOXITEM : NA_SE_SY_GET_ITEM);
|
||||
}
|
||||
|
||||
// Sets a flag according to which type of flag is specified in player->pendingFlag.flagType
|
||||
// and which flag is specified in player->pendingFlag.flagID.
|
||||
void Player_SetPendingFlag(Player* this, GlobalContext* globalCtx) {
|
||||
switch (this->pendingFlag.flagType) {
|
||||
case FLAG_SCENE_CLEAR:
|
||||
Flags_SetClear(globalCtx, this->pendingFlag.flagID);
|
||||
break;
|
||||
case FLAG_SCENE_COLLECTIBLE:
|
||||
Flags_SetCollectible(globalCtx, this->pendingFlag.flagID);
|
||||
break;
|
||||
case FLAG_SCENE_SWITCH:
|
||||
Flags_SetSwitch(globalCtx, this->pendingFlag.flagID);
|
||||
break;
|
||||
case FLAG_SCENE_TREASURE:
|
||||
Flags_SetTreasure(globalCtx, this->pendingFlag.flagID);
|
||||
break;
|
||||
case FLAG_NONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this->pendingFlag.flagType = FLAG_NONE;
|
||||
this->pendingFlag.flagID = 0;
|
||||
}
|
||||
|
||||
s32 func_8083E5A8(Player* this, GlobalContext* globalCtx) {
|
||||
Actor* interactedActor;
|
||||
|
||||
|
@ -6259,6 +6284,7 @@ s32 func_8083E5A8(Player* this, GlobalContext* globalCtx) {
|
|||
this->stateFlags1 &= ~(PLAYER_STATE1_10 | PLAYER_STATE1_11);
|
||||
this->actor.colChkInfo.damage = 0;
|
||||
func_80837C0C(globalCtx, this, 3, 0.0f, 0.0f, 0, 20);
|
||||
Player_SetPendingFlag(this, globalCtx);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -12691,6 +12717,8 @@ s32 func_8084DFF4(GlobalContext* globalCtx, Player* this) {
|
|||
|
||||
Message_StartTextbox(globalCtx, giEntry->textId, &this->actor);
|
||||
Item_Give(globalCtx, giEntry->itemId);
|
||||
|
||||
Player_SetPendingFlag(this, globalCtx);
|
||||
|
||||
if (((this->getItemId >= GI_RUPEE_GREEN) && (this->getItemId <= GI_RUPEE_RED)) ||
|
||||
((this->getItemId >= GI_RUPEE_PURPLE) && (this->getItemId <= GI_RUPEE_GOLD)) ||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue