summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorballoondude2 <55861555+balloondude2@users.noreply.github.com>2025-03-15 11:02:59 -0600
committerGitHub <noreply@github.com>2025-03-15 12:02:59 -0500
commit2cf85deb8fe94c5ed4e21196b6e438e80da00af1 (patch)
treef10617cc031aab1c0aabf06c3a2348b3f1490e9f
parent63bf45fb55f5f549301ca004173c8d523b1629a0 (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.cpp1
-rw-r--r--mm/2s2h/Rando/ActorBehavior/ActorBehavior.h1
-rw-r--r--mm/2s2h/Rando/ActorBehavior/EnOt.cpp25
-rw-r--r--mm/2s2h/Rando/Logic/Regions/West.cpp28
-rw-r--r--mm/2s2h/Rando/StaticData/Checks.cpp1
-rw-r--r--mm/2s2h/Rando/Types.h1
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,