diff options
| author | balloondude2 <55861555+balloondude2@users.noreply.github.com> | 2025-03-15 11:02:59 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-15 12:02:59 -0500 |
| commit | 2cf85deb8fe94c5ed4e21196b6e438e80da00af1 (patch) | |
| tree | f10617cc031aab1c0aabf06c3a2348b3f1490e9f | |
| parent | 63bf45fb55f5f549301ca004173c8d523b1629a0 (diff) | |
[Rando] Seahorse Reunion Check (#1051)
* implement seahorse hp check
* formatting
* be more explicit with the logic
| -rw-r--r-- | mm/2s2h/Rando/ActorBehavior/ActorBehavior.cpp | 1 | ||||
| -rw-r--r-- | mm/2s2h/Rando/ActorBehavior/ActorBehavior.h | 1 | ||||
| -rw-r--r-- | mm/2s2h/Rando/ActorBehavior/EnOt.cpp | 25 | ||||
| -rw-r--r-- | mm/2s2h/Rando/Logic/Regions/West.cpp | 28 | ||||
| -rw-r--r-- | mm/2s2h/Rando/StaticData/Checks.cpp | 1 | ||||
| -rw-r--r-- | mm/2s2h/Rando/Types.h | 1 |
6 files changed, 43 insertions, 14 deletions
diff --git a/mm/2s2h/Rando/ActorBehavior/ActorBehavior.cpp b/mm/2s2h/Rando/ActorBehavior/ActorBehavior.cpp index aee472078..984534ed9 100644 --- a/mm/2s2h/Rando/ActorBehavior/ActorBehavior.cpp +++ b/mm/2s2h/Rando/ActorBehavior/ActorBehavior.cpp @@ -106,6 +106,7 @@ void Rando::ActorBehavior::OnFileLoad() { Rando::ActorBehavior::InitEnMnkBehavior(); Rando::ActorBehavior::InitEnNbBehavior(); Rando::ActorBehavior::InitEnOsnBehavior(); + Rando::ActorBehavior::InitEnOtBehavior(); Rando::ActorBehavior::InitEnOwlBehavior(); Rando::ActorBehavior::InitEnPmBehavior(); Rando::ActorBehavior::InitEnRuppecrowBehavior(); diff --git a/mm/2s2h/Rando/ActorBehavior/ActorBehavior.h b/mm/2s2h/Rando/ActorBehavior/ActorBehavior.h index 177cb0f12..c08d4936b 100644 --- a/mm/2s2h/Rando/ActorBehavior/ActorBehavior.h +++ b/mm/2s2h/Rando/ActorBehavior/ActorBehavior.h @@ -62,6 +62,7 @@ void InitEnMaYtoBehavior(); void InitEnMnkBehavior(); void InitEnNbBehavior(); void InitEnOsnBehavior(); +void InitEnOtBehavior(); void InitEnOwlBehavior(); void InitEnPmBehavior(); void InitEnRuppecrowBehavior(); diff --git a/mm/2s2h/Rando/ActorBehavior/EnOt.cpp b/mm/2s2h/Rando/ActorBehavior/EnOt.cpp new file mode 100644 index 000000000..87a9953de --- /dev/null +++ b/mm/2s2h/Rando/ActorBehavior/EnOt.cpp @@ -0,0 +1,25 @@ +#include "ActorBehavior.h" +#include <libultraship/libultraship.h> + +extern "C" { +#include "variables.h" +} + +/* + * This is the same block found for non-scripted actors in OfferGetItem.cpp, with the removal + * of Player_TalkWithPlayer() + */ +void Rando::ActorBehavior::InitEnOtBehavior() { + COND_VB_SHOULD(VB_GIVE_ITEM_FROM_OFFER, IS_RANDO, { + GetItemId* item = va_arg(args, GetItemId*); + Actor* actor = va_arg(args, Actor*); + if (actor->id == ACTOR_EN_OT) { + Player* player = GET_PLAYER(gPlayState); + *should = false; + actor->parent = &player->actor; + player->talkActor = actor; + player->talkActorDistance = actor->xzDistToPlayer; + player->exchangeItemAction = PLAYER_IA_MINUS1; + } + }); +} diff --git a/mm/2s2h/Rando/Logic/Regions/West.cpp b/mm/2s2h/Rando/Logic/Regions/West.cpp index 01ddece73..9a93af27a 100644 --- a/mm/2s2h/Rando/Logic/Regions/West.cpp +++ b/mm/2s2h/Rando/Logic/Regions/West.cpp @@ -103,20 +103,20 @@ static RegisterShipInitFunc initFunc([]() { }; Regions[RR_PINNACLE_ROCK_INNER] = RandoRegion{ .name = "Inner", .sceneId = SCENE_SINKAI, .checks = { - CHECK(RC_PINNACLE_ROCK_CHEST_01, CAN_BE_ZORA), - CHECK(RC_PINNACLE_ROCK_CHEST_02, CAN_BE_ZORA && HAS_MAGIC), - CHECK(RC_PINNACLE_ROCK_POT_01, CAN_BE_ZORA && HAS_MAGIC), - CHECK(RC_PINNACLE_ROCK_POT_02, CAN_BE_ZORA && HAS_MAGIC), - CHECK(RC_PINNACLE_ROCK_POT_03, CAN_BE_ZORA && HAS_MAGIC), - CHECK(RC_PINNACLE_ROCK_POT_04, CAN_BE_ZORA && HAS_MAGIC), - CHECK(RC_PINNACLE_ROCK_POT_05, CAN_BE_ZORA && HAS_MAGIC), - CHECK(RC_PINNACLE_ROCK_POT_06, CAN_BE_ZORA), - CHECK(RC_PINNACLE_ROCK_POT_07, CAN_BE_ZORA), - CHECK(RC_PINNACLE_ROCK_POT_08, CAN_BE_ZORA), - CHECK(RC_PINNACLE_ROCK_POT_09, CAN_BE_ZORA), - CHECK(RC_PINNACLE_ROCK_POT_10, CAN_BE_ZORA), - CHECK(RC_PINNACLE_ROCK_POT_11, CAN_BE_ZORA), - // TODO: Missing HP check to add here later. + CHECK(RC_PINNACLE_ROCK_CHEST_01, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_CHEST_02, CAN_BE_ZORA && HAS_MAGIC), + CHECK(RC_PINNACLE_ROCK_POT_01, CAN_BE_ZORA && HAS_MAGIC), + CHECK(RC_PINNACLE_ROCK_POT_02, CAN_BE_ZORA && HAS_MAGIC), + CHECK(RC_PINNACLE_ROCK_POT_03, CAN_BE_ZORA && HAS_MAGIC), + CHECK(RC_PINNACLE_ROCK_POT_04, CAN_BE_ZORA && HAS_MAGIC), + CHECK(RC_PINNACLE_ROCK_POT_05, CAN_BE_ZORA && HAS_MAGIC), + CHECK(RC_PINNACLE_ROCK_POT_06, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_POT_07, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_POT_08, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_POT_09, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_POT_10, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_POT_11, CAN_BE_ZORA), + CHECK(RC_PINNACLE_ROCK_REUNITE_SEAHORSE, CAN_BE_ZORA && HAS_MAGIC && RANDO_EVENTS[RE_ACCESS_SEAHORSE]), }, .connections = { CONNECTION(RR_PINNACLE_ROCK_ENTRANCE, true) diff --git a/mm/2s2h/Rando/StaticData/Checks.cpp b/mm/2s2h/Rando/StaticData/Checks.cpp index 238a94697..0381c0e71 100644 --- a/mm/2s2h/Rando/StaticData/Checks.cpp +++ b/mm/2s2h/Rando/StaticData/Checks.cpp @@ -204,6 +204,7 @@ std::map<RandoCheckId, RandoStaticCheck> Checks = { RC(RC_PATH_TO_SNOWHEAD_PIECE_OF_HEART, RCTYPE_HEART, SCENE_14YUKIDAMANOMITI, FLAG_CYCL_SCENE_COLLECTIBLE, 0x08, RI_HEART_PIECE), RC(RC_PINNACLE_ROCK_CHEST_01, RCTYPE_CHEST, SCENE_SINKAI, FLAG_CYCL_SCENE_CHEST, 0x01, RI_RUPEE_RED), RC(RC_PINNACLE_ROCK_CHEST_02, RCTYPE_CHEST, SCENE_SINKAI, FLAG_CYCL_SCENE_CHEST, 0x02, RI_RUPEE_RED), + RC(RC_PINNACLE_ROCK_REUNITE_SEAHORSE, RCTYPE_NPC, SCENE_SINKAI, FLAG_WEEK_EVENT_REG, WEEKEVENTREG_32_01, RI_HEART_PIECE), RC(RC_PIRATE_FORTRESS_ENTRANCE_CHEST_01, RCTYPE_CHEST, SCENE_TORIDE, FLAG_CYCL_SCENE_CHEST, 0x00, RI_RUPEE_RED), RC(RC_PIRATE_FORTRESS_ENTRANCE_CHEST_02, RCTYPE_CHEST, SCENE_TORIDE, FLAG_CYCL_SCENE_CHEST, 0x01, RI_RUPEE_RED), RC(RC_PIRATE_FORTRESS_ENTRANCE_CHEST_03, RCTYPE_CHEST, SCENE_TORIDE, FLAG_CYCL_SCENE_CHEST, 0x02, RI_RUPEE_RED), diff --git a/mm/2s2h/Rando/Types.h b/mm/2s2h/Rando/Types.h index a291151b3..9df9ba029 100644 --- a/mm/2s2h/Rando/Types.h +++ b/mm/2s2h/Rando/Types.h @@ -211,6 +211,7 @@ typedef enum { RC_PATH_TO_SNOWHEAD_PIECE_OF_HEART, RC_PINNACLE_ROCK_CHEST_01, RC_PINNACLE_ROCK_CHEST_02, + RC_PINNACLE_ROCK_REUNITE_SEAHORSE, RC_PIRATE_FORTRESS_ENTRANCE_CHEST_01, RC_PIRATE_FORTRESS_ENTRANCE_CHEST_02, RC_PIRATE_FORTRESS_ENTRANCE_CHEST_03, |
