From e72c42e342992d9968d87aaaca188a942a1c202e Mon Sep 17 00:00:00 2001 From: Demur Rumed Date: Sat, 19 Jul 2025 02:43:28 +0000 Subject: [PATCH] fix compiling logic, no more errors --- soh/compile_logic.py | 29 +++++++++++++------ .../Enhancements/randomizer/ShuffleCrates.cpp | 2 +- .../Enhancements/randomizer/randomizer.cpp | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/soh/compile_logic.py b/soh/compile_logic.py index cd1ed7455..4b54b2f24 100755 --- a/soh/compile_logic.py +++ b/soh/compile_logic.py @@ -7,10 +7,13 @@ if len(argv) < 1: exit() class RR: - __slots__ = "name", "scene", "events", "checks", "exits" - def __init__(self, name, scene): + __slots__ = "name", "scene", "timepass", "areas", "ui_name", "events", "checks", "exits" + def __init__(self, name, scene, timepass, *areas): self.name = name self.scene = scene + self.timepass = timepass == "true" + self.areas = areas + self.ui_name = "" self.events = [] self.checks = [] self.exits = [] @@ -100,7 +103,7 @@ class RR: elif f in RANDO: output(f"Rando::{f}") elif f == "Here": - output("Here(f{self.name}, []{return f{self.to_cpp(ast[1])};})") + output(f"Here({self.name}, []{{return {self.to_cpp(ast[1])};}})") elif f != "--": if len(ast) != 1: print("expected atom, got tree", ast) @@ -119,6 +122,7 @@ LOGIC = { "AtNight", "LoweredWaterInBotw", "BigPoes", + "IsFireLoopLocked", } RANDO = { @@ -156,6 +160,7 @@ logicFUNC = { "HasFireSourceWithTorch", "CanUse", "CanPassEnemy", + "CanAvoidEnemy", "CanKillEnemy", "CanGetEnemyDrop", "CanGetDekuBabaSticks", @@ -169,6 +174,7 @@ logicFUNC = { "CanSpawnSoilSkull", "CanGetNightTimeGS", "CanOpenUnderwaterChest", + "CanOpenOverworldDoor", "CanHitSwitch", "CanHitEyeTargets", "CanDetonateUprightBombFlower", @@ -188,6 +194,8 @@ logicFUNC = { "TradeQuestStep", "GetGSCount", "BlastOrSmash", + "CanOpenBombGrotto", + "CanOpenStormsGrotto", "HookshotOrBoomerang", "TakeDamage", "CanAttack", @@ -196,6 +204,7 @@ logicFUNC = { "CanJumpslash", "CanJumpslashExceptHammer", "HasBottle", + "ScarecrowsSong", "SmallKeys", "OcarinaButtons", "Hearts", @@ -219,15 +228,17 @@ open_count = close_count = 0 for line in open(argv[1]): if line.startswith("def "): if open_count != close_count: - print("error parsing:", name) + print("error parsing", line) defline = line.split() - name = defline[1] - active_rr = RR(name, defline[2]) + active_rr = RR(*defline[1:]) RRs.append(active_rr) buf = "" open_count = close_count = 0 continue - if line.startswith("--"): + if active_rr and not active_rr.ui_name: + active_rr.ui_name = line.strip() + continue + if not active_rr or line.startswith("--"): continue open_count += line.count('(') close_count += line.count(')') @@ -254,7 +265,7 @@ for line in open(argv[1]): result = [] output = result.append for rr in RRs: - output(f"areaTable[{rr.name}] = Region(\"...\", {rr.scene}, {{") + output(f"areaTable[{rr.name}] = Region(\"{rr.ui_name}\", {rr.scene}, {'true' if rr.timepass else 'false'}, {{','.join(rr.areas)}}, {{") if rr.events: output("\n") for name, code in rr.events: @@ -269,7 +280,7 @@ for rr in RRs: if rr.exits: output("\n") - for name, code in rr.events: + for name, code in rr.exits: output(f"\tEntrance({name}, []{{return {rr.gen(code)};}}),\n") output("});\n") diff --git a/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp b/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp index 53a65df22..6962b290d 100644 --- a/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp +++ b/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp @@ -336,7 +336,7 @@ void Rando::StaticData::RegisterCrateLocations() { locationTable[RC_GF_SOUTHMOST_CENTER_CRATE] = Location::Crate(RC_GF_SOUTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1534), "Southmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTHMOST_CENTER_CRATE)); locationTable[RC_GF_MID_SOUTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_SOUTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1594), "Middle South Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_SOUTH_CENTER_CRATE)); locationTable[RC_GF_MID_NORTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_NORTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1782), "Middle North Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_NORTH_CENTER_CRATE)); - locationTable[RR_GF_NORTHMOST_CENTER_CRATE] = Location::Crate(RR_GF_NORTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1842), "Northmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTHMOST_CENTER_CRATE)); + locationTable[RC_GF_NORTHMOST_CENTER_CRATE] = Location::Crate(RC_GF_NORTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1842), "Northmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTHMOST_CENTER_CRATE)); locationTable[RC_GF_OUTSKIRTS_NE_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NE_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-60, -2210), "Outskirts Northeast Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NE_CRATE)); locationTable[RC_GF_OUTSKIRTS_NW_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NW_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-120, -2210), "Outskirts Northwest Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NW_CRATE)); locationTable[RC_GF_HBA_RANGE_CRATE_2] = Location::Crate(RC_GF_HBA_RANGE_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1780), "Horseback Archery Range Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_2)); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 2a2acd5c7..1fa5ab2f6 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -2330,7 +2330,7 @@ std::map rcToRandomizerInf = { RAND_INF_GF_MID_NORTH_CENTER_CRATE, }, { - RR_GF_NORTHMOST_CENTER_CRATE, + RC_GF_NORTHMOST_CENTER_CRATE, RAND_INF_GF_NORTHMOST_CENTER_CRATE, }, {