mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-26 01:58:51 -05:00
Merge pull request #2207 from HarbourMasters/develop-bradley
bradley -> dev
This commit is contained in:
commit
a95b1067b4
@ -49,8 +49,8 @@ endif()
|
||||
# Global configuration types
|
||||
################################################################################
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
|
||||
set(CMAKE_C_FLAGS_DEBUG "-O3 -ffast-math")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-O3 -ffast-math")
|
||||
set(CMAKE_C_FLAGS_DEBUG "-g -ffast-math -DDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -ffast-math -DDEBUG")
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
|
||||
else()
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Root>
|
||||
<File Name="object_d_hsblock" Segment="6">
|
||||
<Collision Name="gHookshotPostCol" Offset="0x578"/>
|
||||
<Collision Name="gHookshotTargetCol" Offset="0x730"/>
|
||||
<Collision Name="gHookshotTargetCol" Offset="0x578"/>
|
||||
<Collision Name="gHookshotPostCol" Offset="0x730"/>
|
||||
<DList Name="gHookshotPostDL" Offset="0x210"/>
|
||||
<DList Name="gHookshotTargetDL" Offset="0x470"/>
|
||||
<Texture Name="gHookshotTargetTex" OutName="hookshot_target" Format="i4" Width="64" Height="64" Offset="0x760"/>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<Array Name="ovl_Boss_Ganon2_Vtx_00CC98" Count="4" Offset="0x00C958">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
<DList Name="ovl_Boss_Ganon2_DL_00CCD8" Offset="0x00CA98"/>
|
||||
<DList Name="ovl_Boss_Ganon2_DL_00CCD8" Offset="0x00C998"/>
|
||||
<Texture Name="ovl_Boss_Ganon2_Tex_00CD58" OutName="tex_0000CD58" Format="i4" Width="32" Height="160" Offset="0x00CA18"/>
|
||||
<Array Name="ovl_Boss_Ganon2_Vtx_00D758" Count="4" Offset="0x00D418">
|
||||
<Vtx/>
|
||||
|
@ -909,6 +909,9 @@ void VanillaFill() {
|
||||
CreateItemOverrides();
|
||||
CreateEntranceOverrides();
|
||||
CreateAlwaysIncludedMessages();
|
||||
if (ShuffleWarpSongs) {
|
||||
CreateWarpSongTexts();
|
||||
}
|
||||
}
|
||||
|
||||
void ClearProgress() {
|
||||
@ -1071,6 +1074,9 @@ int Fill() {
|
||||
if (ShuffleMerchants.Is(SHUFFLEMERCHANTS_HINTS)) {
|
||||
CreateMerchantsHints();
|
||||
}
|
||||
if (ShuffleWarpSongs) {
|
||||
CreateWarpSongTexts();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
//Unsuccessful placement
|
||||
|
@ -779,7 +779,6 @@ void CreateAllHints() {
|
||||
|
||||
CreateGanonText();
|
||||
CreateAltarText();
|
||||
CreateWarpSongTexts();
|
||||
|
||||
SPDLOG_DEBUG("\nNOW CREATING HINTS\n");
|
||||
const HintSetting& hintSetting = hintSettingTable[Settings::HintDistribution.Value<uint8_t>()];
|
||||
|
@ -220,6 +220,7 @@ extern std::array<ConditionalAlwaysHint, 9> conditionalAlwaysHints;
|
||||
extern uint32_t GetHintRegionHintKey(const uint32_t area);
|
||||
extern void CreateAllHints();
|
||||
extern void CreateMerchantsHints();
|
||||
extern void CreateWarpSongTexts();
|
||||
|
||||
Text& GetChildAltarText();
|
||||
Text& GetAdultAltarText();
|
||||
|
@ -342,20 +342,20 @@ void Randomizer::LoadHintLocations(const char* spoilerFileName) {
|
||||
CustomMessageManager::Instance->CreateMessage(Randomizer::hintMessageTableID, TEXT_WARP_RANDOM_REPLACED_TEXT,
|
||||
{ TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM,
|
||||
"Warp to&{{location}}?\x1B&%gOK&No%w\x02",
|
||||
"Warp to&{{location}}?\x1B&%gOK&No%w\x02", // TODO: German translation
|
||||
"Zu {{location}}?\x1B&%gOK&No%w\x02",
|
||||
"Se téléporter vers&{{location}}?\x1B&%gOK!&Non%w\x02" });
|
||||
|
||||
CustomMessageManager::Instance->CreateMessage(Randomizer::hintMessageTableID, TEXT_LAKE_HYLIA_WATER_SWITCH_SIGN,
|
||||
{ TEXTBOX_TYPE_WOODEN, TEXTBOX_POS_BOTTOM,
|
||||
"Water level control system.&Keep away!",
|
||||
"Wasserstand Kontrollsystem&Finger weg!",
|
||||
"Contrôle du niveau de l'eau.&Ne pas toucher!"
|
||||
"Système de contrôle du niveau&d'eau.&Ne pas toucher!"
|
||||
});
|
||||
CustomMessageManager::Instance->CreateMessage(Randomizer::hintMessageTableID, TEXT_LAKE_HYLIA_WATER_SWITCH_NAVI,
|
||||
{ TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM,
|
||||
"This switch is rustier than you think.^Something must be wrong with the&pipe system in the Water Temple.",
|
||||
"Dieser Schalter scheint rostiger zu&sein als er aussieht.^Etwas muss mit dem Leitungssystem&im Wassertempel nicht stimmen.",
|
||||
"Cet interrupteur est très rouillé.^Quelque chose ne va pas avec&la tuyauterie du Temple de l'Eau."
|
||||
{ TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"%cThis switch is rustier than you think.^%cSomething must be wrong with the&pipe system in the %bWater Temple%c.",
|
||||
"%cDieser Schalter scheint rostiger zu&sein als er aussieht.^%cEtwas muss mit dem Leitungssystem&im %bWassertempel%c nicht stimmen.",
|
||||
"%cCet interrupteur est très rouillé.^%cIl doit y avoir un problème avec&la tuyauterie du %bTemple de l'Eau%c."
|
||||
});
|
||||
}
|
||||
|
||||
@ -471,9 +471,9 @@ void Randomizer::LoadMerchantMessages(const char* spoilerFileName) {
|
||||
{
|
||||
TEXTBOX_TYPE_BLACK,
|
||||
TEXTBOX_POS_TOP,
|
||||
"Finally! Now I can go back to being &an %rarms dealer!%w",
|
||||
"Finally! Now I can go back to being &an %rarms dealer%w!",
|
||||
"Endlich! Schon bald kann ich wieder &%rKrabbelminen-Händler%w sein!",
|
||||
"Squalala! Je vais enfin pouvoir &%rprendre des vacances!%w"
|
||||
"Squalala! Je vais enfin pouvoir &%rprendre des vacances%w!"
|
||||
}
|
||||
);
|
||||
|
||||
@ -4203,7 +4203,7 @@ CustomMessageEntry Randomizer::GetWarpSongMessage(u16 textId, bool mysterious) {
|
||||
if (mysterious) {
|
||||
std::vector<std::string> locationName ={
|
||||
"a mysterious place",
|
||||
"a mysterious place", // TODO: German translation
|
||||
"ein mysteriöser Ort",
|
||||
"un endroit mystérieux",
|
||||
};
|
||||
|
||||
|
@ -297,19 +297,17 @@ void Draw_SfxTab(const std::string& tabId, const std::map<u16, std::tuple<std::s
|
||||
ImGui::SameLine();
|
||||
ImGui::PushItemWidth(-FLT_MIN);
|
||||
if (ImGui::Button(randomizeButton.c_str())) {
|
||||
bool valid = false;
|
||||
uint32_t value;
|
||||
while (!valid) {
|
||||
value = Random(2, map.size());
|
||||
if (map.contains(value)) {
|
||||
auto [name, sfxKey, seqType] = map.at(value);
|
||||
if (seqType & type) {
|
||||
valid = true;
|
||||
}
|
||||
while (true) {
|
||||
auto it = map.begin();
|
||||
std::advance(it, rand() % map.size());
|
||||
const auto& [value, seqData] = *it;
|
||||
const auto& [name, sfxKey, seqType] = seqData;
|
||||
if (seqType & type) {
|
||||
CVar_SetS32(cvarKey.c_str(), value);
|
||||
SohImGui::RequestCvarSaveOnNextTick();
|
||||
break;
|
||||
}
|
||||
}
|
||||
CVar_SetS32(cvarKey.c_str(), value);
|
||||
SohImGui::RequestCvarSaveOnNextTick();
|
||||
}
|
||||
}
|
||||
ImGui::EndTable();
|
||||
@ -355,7 +353,7 @@ void DrawSfxEditor(bool& open) {
|
||||
CVar_SetS32("gSfxEditor", 0);
|
||||
return;
|
||||
}
|
||||
ImGui::SetNextWindowSize(ImVec2(465, 630), ImGuiCond_FirstUseEver);
|
||||
ImGui::SetNextWindowSize(ImVec2(900, 630), ImGuiCond_FirstUseEver);
|
||||
if (!ImGui::Begin("SFX Editor", &open)) {
|
||||
ImGui::End();
|
||||
return;
|
||||
|
@ -95,7 +95,7 @@ extern "C" void OTRMessage_Init()
|
||||
{
|
||||
TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"You got a %rGold Skulltula Token%w!&You've collected %r{{gsCount}}%w tokens&in total!\x0E\x3C",
|
||||
"Du erhälst ein %rGoldene&Skulltula-Symbol%w! Du hast&insgesamt %r{{gsCount}}%w symbol gesammelt!\x0E\x3C",
|
||||
"Ein %rGoldenes Skulltula-Symbol%w!&Du hast nun insgesamt %r{{gsCount}}%w Golende&Skulltula-Symbole gesammelt!\x0E\x3C",
|
||||
"Vous obtenez un %rSymbole de&Skulltula d'or%w! Vous avez&collecté %r{{gsCount}}%w symboles en tout!\x0E\x3C"
|
||||
}
|
||||
);
|
||||
@ -104,7 +104,7 @@ extern "C" void OTRMessage_Init()
|
||||
{
|
||||
TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"You got a %rGold Skulltula Token%w!&You've collected %r{{gsCount}}%w tokens&in total!",
|
||||
"Du erhälst ein %rGoldene&Skulltula-Symbol%w! Du hast&insgesamt %r{{gsCount}}%w symbol gesammelt!",
|
||||
"Ein %rGoldenes Skulltula-Symbol%w!&Du hast nun insgesamt %r{{gsCount}}%w Golende&Skulltula-Symbole gesammelt!",
|
||||
"Vous obtenez un %rSymbole de&Skulltula d'or%w! Vous avez&collecté %r{{gsCount}}%w symboles en tout!"
|
||||
}
|
||||
);
|
||||
@ -131,7 +131,7 @@ extern "C" void OTRMessage_Init()
|
||||
{
|
||||
TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"You got a %rHeart Container%w!&You've collected %r{{heartContainerCount}}%w containers&in total!",
|
||||
"Du erhältst ein %rHerzgefäß%w! Du&hast insgesamt %r{{heartContainerCount}}%w Gefäße&gesammelt!",
|
||||
"Ein %rHerzcontainer%w!&Du hast nun insgesamt %r{{heartContainerCount}}%w&Herzcontainer gesammelt!",
|
||||
"Vous obtenez un %rCoeur&d'Energie%w! Vous en avez&collecté %r{{heartContainerCount}}%w en tout!"
|
||||
}
|
||||
);
|
||||
@ -140,7 +140,7 @@ extern "C" void OTRMessage_Init()
|
||||
{
|
||||
TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"You got a %rHeart Piece%w!&You've collected %r{{heartPieceCount}}%w pieces&in total!",
|
||||
"Du erhältst ein %rHerzteil%w! Du hast&insgesamt %r{{heartPieceCount}}%w Teile&gesammelt!",
|
||||
"Ein %rHerzteil%w!&Du hast nun insgesamt %r{{heartPieceCount}}%w&Herteile gesammelt!",
|
||||
"Vous obtenez un %rQuart de&Coeur%w! Vous en avez collecté&%r{{heartPieceCount}}%w en tout!"
|
||||
}
|
||||
);
|
||||
@ -149,8 +149,8 @@ extern "C" void OTRMessage_Init()
|
||||
{
|
||||
TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM,
|
||||
"You look bored. Wanna go out for a&walk?\x1B&%gYes&No%w",
|
||||
"Du siehst gelangweilt aus.&Willst du einen Spaziergang machen?\x1B&%gJa&Nein%w", //TODO: AI translated, replace with actual translation
|
||||
"Tu as l'air de t'ennuyer. Tu veux&aller faire une promenade?\x1B&%gOui&Non%w", //TODO: AI translated, replace with actual translation
|
||||
"Du siehst gelangweilt aus.&Willst du einen Spaziergang machen?\x1B&%gJa&Nein%w",
|
||||
"Tu as l'air de t'ennuyer. Tu veux&aller faire un tour?\x1B&%gOui&Non%w",
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -93,13 +93,13 @@ void EnGm_Destroy(Actor* thisx, PlayState* play) {
|
||||
s32 func_80A3D7C8(void) {
|
||||
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||
return 0;
|
||||
} else if (!(gBitFlags[2] & gSaveContext.inventory.equipment)) {
|
||||
return 1;
|
||||
} else if (gBitFlags[3] & gSaveContext.inventory.equipment) {
|
||||
return 2;
|
||||
} else if ((gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF) &&
|
||||
(gBitFlags[2] & gSaveContext.inventory.equipment)) {
|
||||
!Flags_GetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON)) {
|
||||
return 1;
|
||||
} else if (!(gBitFlags[2] & gSaveContext.inventory.equipment)) { // Don't have giant's knife
|
||||
return 1;
|
||||
} else if (gBitFlags[3] & gSaveContext.inventory.equipment) { // Have broken giant's knife
|
||||
return 2;
|
||||
} else {
|
||||
return 3;
|
||||
}
|
||||
@ -256,7 +256,6 @@ void EnGm_ProcessChoiceIndex(EnGm* this, PlayState* play) {
|
||||
GetItemEntry itemEntry = Randomizer_GetItemFromKnownCheck(RC_GC_MEDIGORON, GI_SWORD_KNIFE);
|
||||
gSaveContext.pendingSale = itemEntry.itemId;
|
||||
GiveItemEntryFromActor(&this->actor, play, itemEntry, 415.0f, 10.0f);
|
||||
Flags_SetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON);
|
||||
gSaveContext.infTable[11] |= 2;
|
||||
this->actionFunc = func_80A3DF00;
|
||||
} else {
|
||||
@ -276,6 +275,11 @@ void EnGm_ProcessChoiceIndex(EnGm* this, PlayState* play) {
|
||||
|
||||
void func_80A3DF00(EnGm* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play)) {
|
||||
if (gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF &&
|
||||
!Flags_GetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON);
|
||||
}
|
||||
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80A3DF60;
|
||||
} else {
|
||||
@ -284,14 +288,12 @@ void func_80A3DF00(EnGm* this, PlayState* play) {
|
||||
GetItemEntry itemEntry = Randomizer_GetItemFromKnownCheck(RC_GC_MEDIGORON, GI_SWORD_KNIFE);
|
||||
gSaveContext.pendingSale = itemEntry.itemId;
|
||||
GiveItemEntryFromActor(&this->actor, play, itemEntry, 415.0f, 10.0f);
|
||||
Flags_SetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON);
|
||||
gSaveContext.infTable[11] |= 2;
|
||||
}
|
||||
else {
|
||||
gSaveContext.pendingSale = ItemTable_Retrieve(GI_SWORD_KNIFE).itemId;
|
||||
func_8002F434(&this->actor, play, GI_SWORD_KNIFE, 415.0f, 10.0f);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user