implement golden wolf checks

This commit is contained in:
gymnast86
2026-04-27 04:05:36 -07:00
parent 8acdbf03bf
commit 3149f929c1
12 changed files with 600 additions and 374 deletions
+25
View File
@@ -0,0 +1,25 @@
#include "flags.h"
#include "stages.h"
#include "tools.h"
goldenWolfFlags getCurrentGoldenWolfFlags(u8 roomNo) {
switch (getStageID()) {
case Ordon_Spring:
return {0x41, HOWLED_AT_DEATH_MOUNTAIN_STONE, GOT_SKILL_FROM_ORDON_WOLF};
case Faron_Woods:
return {0xFF, 0xFFFF, 0x3C10}; // Custom flag for rando
case Kakariko_Graveyard:
return {0x79, HOWLED_AT_SNOWPEAK_STONE, GOT_SKILL_FROM_GRAVEYARD_WOLF};
case Outside_Castle_Town:
if (roomNo == 8) {
return {0x29, HOWLED_AT_UPPER_ZORAS_RIVER_STONE, GOT_SKILL_FROM_WEST_CT_WOLF};
}
return {0x2A, HOWLED_AT_SACRED_GROVE_OUTSIDE_STONE, GOT_SKILL_FROM_SOUTH_CT_FIELD_WOLF};
case Castle_Town:
return {0x32, HOWLED_AT_HIDDEN_VILLAGE_STONE, GOT_SKILL_FROM_BARRIER_WOLF};
case Gerudo_Desert:
return {0x32, HOWLED_AT_LAKE_HYLIA_STONE, GOT_SKILL_FROM_BULBLIN_CAMP_WOLF};
default:
return {0xFF, 0xFFFF, 0xFFFF};
}
}
+9 -1
View File
@@ -398,7 +398,7 @@ enum EventFlags
TALKED_TO_YETA_AFTER_WINNING_RACE_AGAINST_YETO = 0x3B20,
WON_SNOWBOARD_RACE_AGAINST_YETO = 0x3B40,
GOT_CORAL_EARRING_FROM_RALIS = 0x3B80,
GOT_SKILL_FROM_BULBLIN_CAMP_WOLF = 0x3C01,
GOT_SKILL_FROM_BULBLIN_CAMP_WOLF = 0x3C01,
GOT_SKILL_FROM_SOUTH_CT_FIELD_WOLF = 0x3C02,
GOT_SKILL_FROM_WEST_CT_WOLF = 0x3C04,
GOT_SKILL_FROM_ORDON_WOLF = 0x3C08,
@@ -616,3 +616,11 @@ enum EventFlags
TALKED_TO_COLIN_ORDON_DAY_1 = 0x6280,
HENA_BEAT_ROLLGOAL_8_8 = 0x6302
};
struct goldenWolfFlags {
u8 mapMarkerFlag{};
u16 howledAtStoneFlag{};
u16 obtainedItemFlag{};
};
goldenWolfFlags getCurrentGoldenWolfFlags(u8 roomNo);
@@ -67,6 +67,9 @@ std::optional<std::string> RandomizerContext::WriteToFile() {
const std::unordered_map<u16, u16> u16SkyCharacterOverrides(this->mSkyCharacterOverrides.begin(), this->mSkyCharacterOverrides.end());
out["mSkyCharacterOverrides"] = u16SkyCharacterOverrides;
const std::unordered_map<u16, u16> u16GoldenWolfOverrides(this->mGoldenWolfOverrides.begin(), this->mGoldenWolfOverrides.end());
out["mGoldenWolfOverrides"] = u16GoldenWolfOverrides;
out["mItemLocations"] = this->mItemLocations;
out["mStartHour"] = static_cast<u16>(this->mStartHour);
@@ -172,6 +175,13 @@ std::optional<std::string> RandomizerContext::LoadFromHash(const std::string& ha
this->mSkyCharacterOverrides[key] = itemId;
}
// Golden Wolves
for (const auto& goldenWolfNode : in["mGoldenWolfOverrides"]) {
u16 key = goldenWolfNode.first.as<u16>();
u8 itemId = goldenWolfNode.second.as<u8>();
this->mGoldenWolfOverrides[key] = itemId;
}
// Items we call by location name
for (const auto& locationNode : in["mItemLocations"]) {
const auto& locationName = locationNode.first.as<std::string>();
@@ -624,6 +634,14 @@ void GenerateAndWriteSeed(std::string& generationStatusMsg) {
randoData.mSkyCharacterOverrides[key] = itemId;
}
// Golden Wolves
// Keyed by u16 of the event flag for obtaining the golden wolf item
if (location->HasCategories("Golden Wolf")) {
u16 flag = metaData[0]["Flag"].as<u16>();
u8 itemId = location->GetCurrentItem()->GetID();
randoData.mGoldenWolfOverrides[flag] = itemId;
}
// Items that we lookup just by calling their location name
if (location->HasCategories("Location Name Lookup")) {
const auto& locationName = metaData.as<std::string>();
@@ -833,4 +851,4 @@ void GenerateAndWriteSeed(std::string& generationStatusMsg) {
}
generationStatusMsg = fmt::format("Seed generated! Hash: {}", randoData.mHash);
}
}
@@ -33,6 +33,7 @@ public:
std::unordered_map<u8, std::unordered_map<u8, u8>> mFreestandingItemOverrides{};
std::unordered_map<u8, u8> mBugRewardOverrides{};
std::unordered_map<u16, u8> mSkyCharacterOverrides{};
std::unordered_map<u16, u8> mGoldenWolfOverrides{};
std::unordered_map<std::string, int> mItemLocations{};
u8 mStartHour{0};
u8 mMapBits{};
@@ -4,6 +4,24 @@
ACTR: # Objects which have the ACTR dzx type
# Faron Woods
F_SP108:
# Room 6 - North Faron Woods
6:
# Spawn Item for Golden Wolf in North Faron Woods layer 3
- name: htPiece
parameters: 0xFFFFFFE1
position:
x: -36699.4375
y: 428.600311279297
z: -23663.64453125
angle:
x: 0x0000
y: 0x0000
z: 0x00FF
layers:
- 3
F_SP115: # Lake Hylia
0: # Room 0 - Main Lake
# Spawn Auru on layers 1 & 3
@@ -111,6 +111,28 @@ F_SP103:
layers:
- 0
# Ordon Spring
F_SP104:
# Room 1 - Main Spring
1:
# Golden Wolf in Ordon Spring
- name: GWolf
parameters: 0x0E4102FF
position:
x: -1855.69543457031
y: 311.160461425781
z: -8084.61572265625
angle:
x: 0x0BD1
y: 0x8000
z: 0x00FF
patch:
# Turn the golden wolf into a htPiece actor with the hidden skill item
name: htPiece
parameters: 0xFFFFFFE1
layers:
- 2
# Kakariko Graveyard
F_SP111:
# Room 0 - Main graveyard
@@ -135,6 +157,25 @@ F_SP111:
- 2
- 3
# Golden Wolf in Kakariko Graveyard
- name: GWolf
parameters: 0x037906FF
position:
x: 17575.34375
y: 500.0
z: -51.3761901855469
angle:
x: 0x0BD1
y: 0xC000
z: 0x00FF
patch:
# Turn the golden wolf into a htPiece actor with the hidden skill item
name: htPiece
parameters: 0xFFFFFFE1
layers:
- 2
- 3
# Zora's Domain
F_SP113:
# Room 1 - Main Zora's Domain Area
@@ -183,6 +224,28 @@ F_SP115:
- 3
- 4
# Castle Town
F_SP116:
# Room 1 - North Castle Town
1:
# Golden Wolf in North Castle Town
- name: GWolf
parameters: 0x013207FF
position:
x: 0.0
y: 800.0
z: -9500.0
angle:
x: 0x0BD1
y: 0x0000
z: 0x00FF
patch:
# Turn the golden wolf into a htPiece actor with the hidden skill item
name: htPiece
parameters: 0xFFFFFFE1
layers:
- 1
# Sacred Grove
F_SP117:
# Room 1 - Pedestal of Time
@@ -542,6 +605,28 @@ F_SP122:
- 0
- 6
# Golden Wolf Outside Castle Town West
- name: GWolf
parameters: 0x042903FF
position:
x: -68310.15625
y: -1050.0
z: 5925.4560546875
angle:
x: 0x0BD1
y: 0xC16D
z: 0x00FF
patch:
# Turn the golden wolf into a htPiece actor with the hidden skill item
name: htPiece
parameters: 0xFFFFFFE1
layers:
- 0
- 4
- 6
- 13
- 14
# Room 16 - Outside South Castle Town
16:
# Male Ladybug
@@ -586,6 +671,28 @@ F_SP122:
- 1
- 6
# Golden Wolf Outside Castle Town South
- name: GWolf
parameters: 0x022A04FF
position:
x: -55927.09375
y: -6100.0
z: 25315.892578125
angle:
x: 0x0BD1
y: 0xE9F5
z: 0x00FF
patch:
# Turn the golden wolf into a htPiece actor with the hidden skill item
name: htPiece
parameters: 0xFFFFFFE1
layers:
- 0
- 4
- 6
- 13
- 14
# Gerudo Desert
F_SP124:
# Room 0 - Main Desert
@@ -626,6 +733,24 @@ F_SP124:
layers:
- 0
# Golden Wolf in Desert
- name: GWolf
parameters: 0x0B3205FF
position:
x: 1112.08215332031
y: -162.940002441406
z: 12659.6689453125
angle:
x: 0x0BD1
y: 0x0000
z: 0x00FF
patch:
# Turn the golden wolf into a htPiece actor with the hidden skill item
name: htPiece
parameters: 0xFFFFFFE1
layers:
- 0
# Upper Zora's River
F_SP126:
# Room 0 - Main area
@@ -272,15 +272,14 @@
- Tbox ID: 7
Stage: D_SB05
# TODO
- Name: Ordon Spring Golden Wolf
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Ordona Province
Metadata:
- None
- Flag: 0x3C08
- Name: Ordon Spring Warp Portal
Original Item: Ordon Spring Portal
@@ -582,15 +581,14 @@
Metadata:
- None
# TODO
- Name: Faron Woods Golden Wolf
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Faron Woods
Metadata:
- None
- Flag: 0x3C10
- Name: North Faron Woods Deku Baba Chest
Original Item: Yellow Rupee
@@ -1452,15 +1450,14 @@
Metadata:
- None
# TODO
- Name: Kakariko Graveyard Golden Wolf
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Kakariko Graveyard
Metadata:
- None
- Flag: 0x3D80
- Name: Kakariko Graveyard Open Poe
Original Item: Poe Soul
@@ -2188,15 +2185,14 @@
- Tbox ID: 0
Stage: D_SB05
# TODO
- Name: West Hyrule Field Golden Wolf
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Hyrule Field - Lanayru Province
Metadata:
- None
- Flag: 0x3C04
- Name: Hyrule Field Amphitheater Owl Statue Chest
Original Item: Orange Rupee
@@ -2288,10 +2284,10 @@
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Castle Town
Metadata:
- None
- Flag: 0x3D40
- Name: Doctors Office Balcony Chest
Original Item: Red Rupee
@@ -2686,15 +2682,14 @@
- Tbox ID: 1
Stage: D_SB09
# TODO
- Name: Outside South Castle Town Golden Wolf
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Hyrule Field - Lanayru Province
Metadata:
- None
- Flag: 0x3C02
- Name: Outside South Castle Town Double Clawshot Chasm Chest
Original Item: Orange Rupee
@@ -4337,15 +4332,14 @@
- Tbox ID: 13
Stage: F_SP124
# TODO
- Name: Gerudo Desert Golden Wolf
Original Item: Progressive Hidden Skill
Categories:
- Overworld
- Hidden Skill
- Golden Wolf
- Gerudo Desert
Metadata:
- None
- Flag: 0x3C01
- Name: Outside Bulblin Camp Poe
Original Item: Poe Soul
@@ -186,7 +186,7 @@
Kakariko Graveyard Male Ant: Nothing
Kakariko Graveyard Grave Poe: Can_Use_Senses and Night
Kakariko Graveyard Open Poe: Can_Use_Senses and Night
Kakariko Graveyard Golden Wolf: "'Howl_at_Snowpeak_Mountain_Howling_Stone'"
Kakariko Graveyard Golden Wolf: Can_Complete_Eldin_Twilight and 'Howl_at_Snowpeak_Mountain_Howling_Stone'
Kakariko Graveyard Twilit Insect: Can_Defeat_Eldin_Twilit_Insect
Exits:
Kakariko Graveyard Pond: "'Can_Follow_Rutella'"
@@ -231,7 +231,7 @@
Locations:
North Faron Warp Portal: Can_Complete_Prologue
North Faron Woods Deku Baba Chest: Nothing
Faron Woods Golden Wolf: Nothing
Faron Woods Golden Wolf: Can_Complete_Faron_Twilight
North Faron Woods Twilit Insect 1: Can_Defeat_Faron_Twilit_Insect
North Faron Woods Twilit Insect 2: Can_Defeat_Faron_Twilit_Insect
Exits: