fix multiline expressions, regenerate

This commit is contained in:
Demur Rumed 2025-07-19 22:07:42 +00:00
commit 1f29a8615a
3 changed files with 18 additions and 17 deletions

View file

@ -57,6 +57,7 @@ class RR:
ast = [f] ast = [f]
else: else:
f = ast[0] f = ast[0]
assert isinstance(f, str)
if f in LOGIC: if f in LOGIC:
output(f"logic->{f}") output(f"logic->{f}")
elif f in logicFUNC: elif f in logicFUNC:
@ -234,13 +235,14 @@ buf = ""
open_count = close_count = 0 open_count = close_count = 0
mode = None mode = None
for line in open(argv[1], "r", encoding="ascii"): for line in open(argv[1], "r", encoding="ascii"):
line = line.strip() line = line.strip("\n")
if line == "::": if line == "::":
mode = None if mode == line else line mode = None if mode == line else line
continue continue
if mode == "::": if mode == "::":
RRs.append(line) RRs.append(line)
continue continue
line = line.strip()
if line.startswith("def "): if line.startswith("def "):
if open_count != close_count: if open_count != close_count:
print("error parsing", line) print("error parsing", line)
@ -257,6 +259,7 @@ for line in open(argv[1], "r", encoding="ascii"):
continue continue
open_count += line.count('(') open_count += line.count('(')
close_count += line.count(')') close_count += line.count(')')
buf += " "
buf += line buf += line
if open_count != close_count: if open_count != close_count:
continue continue

View file

@ -637,7 +637,7 @@ areaTable[RR_LAKE_HYLIA] = Region("Lake Hylia", SCENE_LAKE_HYLIA, true, {RA_LAKE
}, { }, {
Entrance(RR_HYRULE_FIELD, []{return true;}), Entrance(RR_HYRULE_FIELD, []{return true;}),
Entrance(RR_LH_FROM_SHORTCUT, []{return true;}), Entrance(RR_LH_FROM_SHORTCUT, []{return true;}),
Entrance(RR_LH_OWL_FLIGHT, []{return logic->IsChild;}, "", false), Entrance(RR_LH_OWL_FLIGHT, []{return logic->IsChild;}, false),
Entrance(RR_LH_FISHING_ISLAND, []{return (((logic->IsChild || logic->WaterTempleClear) && logic->HasItem(RG_BRONZE_SCALE)) || (logic->IsAdult && (logic->CanUse(RG_SCARECROW) || CanPlantBean(RR_LAKE_HYLIA))));}), Entrance(RR_LH_FISHING_ISLAND, []{return (((logic->IsChild || logic->WaterTempleClear) && logic->HasItem(RG_BRONZE_SCALE)) || (logic->IsAdult && (logic->CanUse(RG_SCARECROW) || CanPlantBean(RR_LAKE_HYLIA))));}),
Entrance(RR_LH_LAB, []{return logic->CanOpenOverworldDoor(RG_HYLIA_LAB_KEY);}), Entrance(RR_LH_LAB, []{return logic->CanOpenOverworldDoor(RG_HYLIA_LAB_KEY);}),
Entrance(RR_LH_FROM_WATER_TEMPLE, []{return true;}), Entrance(RR_LH_FROM_WATER_TEMPLE, []{return true;}),
@ -656,7 +656,7 @@ areaTable[RR_LH_FISHING_ISLAND] = Region("LH Fishing Island", SCENE_LAKE_HYLIA,
Entrance(RR_LH_FISHING_POND, []{return logic->CanOpenOverworldDoor(RG_FISHING_HOLE_KEY);}), Entrance(RR_LH_FISHING_POND, []{return logic->CanOpenOverworldDoor(RG_FISHING_HOLE_KEY);}),
}); });
areaTable[RR_LH_OWL_FLIGHT] = Region("LH Owl Flight", SCENE_LAKE_HYLIA, true, {RA_LAKE_HYLIA}, {}, {}, { areaTable[RR_LH_OWL_FLIGHT] = Region("LH Owl Flight", SCENE_LAKE_HYLIA, true, {RA_LAKE_HYLIA}, {}, {}, {
Entrance(RR_HYRULE_FIELD, []{return true;}, "", false), Entrance(RR_HYRULE_FIELD, []{return true;}, false),
}); });
areaTable[RR_LH_LAB] = Region("LH Lab", SCENE_LAKESIDE_LABORATORY, false, {}, {}, { areaTable[RR_LH_LAB] = Region("LH Lab", SCENE_LAKESIDE_LABORATORY, false, {}, {}, {
LOCATION(RC_LH_LAB_DIVE, (logic->HasItem(RG_GOLDEN_SCALE) || ((bool)ctx->GetTrickOption(RT_LH_LAB_DIVING) && (logic->CanUse(RG_IRON_BOOTS) && (logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_BRONZE_SCALE)))))), LOCATION(RC_LH_LAB_DIVE, (logic->HasItem(RG_GOLDEN_SCALE) || ((bool)ctx->GetTrickOption(RT_LH_LAB_DIVING) && (logic->CanUse(RG_IRON_BOOTS) && (logic->CanUse(RG_HOOKSHOT) && logic->HasItem(RG_BRONZE_SCALE)))))),
@ -1732,7 +1732,7 @@ areaTable[RR_GRAVEYARD_DAMPES_GRAVE] = Region("Graveyard Dampes Grave", SCENE_WI
LOCATION(RC_GRAVEYARD_DAMPE_RACE_RUPEE_8, true), LOCATION(RC_GRAVEYARD_DAMPE_RACE_RUPEE_8, true),
}, { }, {
Entrance(RR_THE_GRAVEYARD, []{return true;}), Entrance(RR_THE_GRAVEYARD, []{return true;}),
Entrance(RR_KAK_WINDMILL, []{return (logic->IsAdult && logic->CanUse(RG_SONG_OF_TIME));}, "", false), Entrance(RR_KAK_WINDMILL, []{return (logic->IsAdult && logic->CanUse(RG_SONG_OF_TIME));}, false),
}); });
areaTable[RR_GRAVEYARD_DAMPES_HOUSE] = Region("Graveyard Dampes House", SCENE_GRAVEKEEPERS_HUT, false, {}, {}, { areaTable[RR_GRAVEYARD_DAMPES_HOUSE] = Region("Graveyard Dampes House", SCENE_GRAVEKEEPERS_HUT, false, {}, {}, {
LOCATION(RC_DAMPE_HINT, logic->IsAdult), LOCATION(RC_DAMPE_HINT, logic->IsAdult),
@ -2766,7 +2766,7 @@ areaTable[RR_DEKU_TREE_BOSS_ROOM] = Region("Deku Tree Boss Room", SCENE_DEKU_TRE
LOCATION(RC_DEKU_TREE_QUEEN_GOHMA_GRASS_8, logic->CanCutShrubs()), LOCATION(RC_DEKU_TREE_QUEEN_GOHMA_GRASS_8, logic->CanCutShrubs()),
}, { }, {
Entrance(RR_DEKU_TREE_BOSS_EXIT, []{return true;}), Entrance(RR_DEKU_TREE_BOSS_EXIT, []{return true;}),
Entrance(RR_KF_OUTSIDE_DEKU_TREE, []{return logic->DekuTreeClear;}, "", false), Entrance(RR_KF_OUTSIDE_DEKU_TREE, []{return logic->DekuTreeClear;}, false),
}); });
areaTable[RR_DODONGOS_CAVERN_BEGINNING] = Region("Dodongos Cavern Beginning", SCENE_DODONGOS_CAVERN, false, {RA_DODONGOS_CAVERN}, {}, {}, { areaTable[RR_DODONGOS_CAVERN_BEGINNING] = Region("Dodongos Cavern Beginning", SCENE_DODONGOS_CAVERN, false, {RA_DODONGOS_CAVERN}, {}, {}, {
Entrance(RR_DODONGOS_CAVERN_ENTRYWAY, []{return true;}), Entrance(RR_DODONGOS_CAVERN_ENTRYWAY, []{return true;}),
@ -3168,7 +3168,7 @@ areaTable[RR_DODONGOS_CAVERN_BOSS_ROOM] = Region("Dodongos Cavern Boss Room", SC
LOCATION(RC_KING_DODONGO, logic->DodongosCavernClear), LOCATION(RC_KING_DODONGO, logic->DodongosCavernClear),
}, { }, {
Entrance(RR_DODONGOS_CAVERN_BOSS_EXIT, []{return true;}), Entrance(RR_DODONGOS_CAVERN_BOSS_EXIT, []{return true;}),
Entrance(RR_DEATH_MOUNTAIN_TRAIL, []{return logic->DodongosCavernClear;}, "", false), Entrance(RR_DEATH_MOUNTAIN_TRAIL, []{return logic->DodongosCavernClear;}, false),
}); });
areaTable[RR_JABU_JABUS_BELLY_BEGINNING] = Region("Jabu Jabus Belly Beginning", SCENE_JABU_JABU, false, {RA_JABU_JABUS_BELLY}, {}, {}, { areaTable[RR_JABU_JABUS_BELLY_BEGINNING] = Region("Jabu Jabus Belly Beginning", SCENE_JABU_JABU, false, {RA_JABU_JABUS_BELLY}, {}, {}, {
Entrance(RR_JABU_JABUS_BELLY_ENTRYWAY, []{return true;}), Entrance(RR_JABU_JABUS_BELLY_ENTRYWAY, []{return true;}),
@ -3410,7 +3410,7 @@ areaTable[RR_JABU_JABUS_BELLY_BOSS_ROOM] = Region("Jabu Jabus Belly Boss Room",
LOCATION(RC_BARINADE, logic->JabuJabusBellyClear), LOCATION(RC_BARINADE, logic->JabuJabusBellyClear),
}, { }, {
Entrance(RR_JABU_JABUS_BELLY_BOSS_EXIT, []{return false;}), Entrance(RR_JABU_JABUS_BELLY_BOSS_EXIT, []{return false;}),
Entrance(RR_ZORAS_FOUNTAIN, []{return logic->JabuJabusBellyClear;}, "", false), Entrance(RR_ZORAS_FOUNTAIN, []{return logic->JabuJabusBellyClear;}, false),
}); });
areaTable[RR_FOREST_TEMPLE_FIRST_ROOM] = Region("Forest Temple First Room", SCENE_FOREST_TEMPLE, false, {RA_FOREST_TEMPLE}, {}, { areaTable[RR_FOREST_TEMPLE_FIRST_ROOM] = Region("Forest Temple First Room", SCENE_FOREST_TEMPLE, false, {RA_FOREST_TEMPLE}, {}, {
LOCATION(RC_FOREST_TEMPLE_FIRST_ROOM_CHEST, true), LOCATION(RC_FOREST_TEMPLE_FIRST_ROOM_CHEST, true),
@ -3823,7 +3823,7 @@ areaTable[RR_FOREST_TEMPLE_BOSS_ROOM] = Region("Forest Temple Boss Room", SCENE_
LOCATION(RC_PHANTOM_GANON, logic->ForestTempleClear), LOCATION(RC_PHANTOM_GANON, logic->ForestTempleClear),
}, { }, {
Entrance(RR_FOREST_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_FOREST_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_SACRED_FOREST_MEADOW, []{return logic->ForestTempleClear;}, "", false), Entrance(RR_SACRED_FOREST_MEADOW, []{return logic->ForestTempleClear;}, false),
}); });
areaTable[RR_FIRE_TEMPLE_FIRST_ROOM] = Region("Fire Temple First Room", SCENE_FIRE_TEMPLE, false, {RA_FIRE_TEMPLE}, {}, {}, { areaTable[RR_FIRE_TEMPLE_FIRST_ROOM] = Region("Fire Temple First Room", SCENE_FIRE_TEMPLE, false, {RA_FIRE_TEMPLE}, {}, {}, {
Entrance(RR_FIRE_TEMPLE_ENTRYWAY, []{return true;}), Entrance(RR_FIRE_TEMPLE_ENTRYWAY, []{return true;}),
@ -4323,7 +4323,7 @@ areaTable[RR_FIRE_TEMPLE_BOSS_ROOM] = Region("Fire Temple Boss Room", SCENE_FIRE
LOCATION(RC_VOLVAGIA, logic->FireTempleClear), LOCATION(RC_VOLVAGIA, logic->FireTempleClear),
}, { }, {
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_DMC_CENTRAL_LOCAL, []{return logic->FireTempleClear;}, "", false), Entrance(RR_DMC_CENTRAL_LOCAL, []{return logic->FireTempleClear;}, false),
}); });
areaTable[RR_WATER_TEMPLE_LOBBY] = Region("Water Temple Lobby", SCENE_WATER_TEMPLE, false, {RA_WATER_TEMPLE}, {}, { areaTable[RR_WATER_TEMPLE_LOBBY] = Region("Water Temple Lobby", SCENE_WATER_TEMPLE, false, {RA_WATER_TEMPLE}, {}, {
LOCATION(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, (logic->CanBreakPots() && (logic->CanWaterTempleLowFromHigh || (logic->CanWaterTempleMiddle || (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)))))), LOCATION(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, (logic->CanBreakPots() && (logic->CanWaterTempleLowFromHigh || (logic->CanWaterTempleMiddle || (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)))))),
@ -4840,7 +4840,7 @@ areaTable[RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM] = Region("Water Temple MQ C
LOCATION(RC_WATER_TEMPLE_MQ_WHIRLPOOL_SUBMERGED_CRATE_6, (logic->CanUse(RG_IRON_BOOTS) && ((logic->WaterTimer() >= 16) && logic->CanBreakCrates()))), LOCATION(RC_WATER_TEMPLE_MQ_WHIRLPOOL_SUBMERGED_CRATE_6, (logic->CanUse(RG_IRON_BOOTS) && ((logic->WaterTimer() >= 16) && logic->CanBreakCrates()))),
}, { }, {
Entrance(RR_WATER_TEMPLE_MQ_MAIN, []{return (logic->MQWaterB1Switch && (logic->CanUse(RG_IRON_BOOTS) && ((logic->WaterTimer() >= 24) && (logic->CanUse(RG_LONGSHOT) || logic->HasItem(RG_BRONZE_SCALE)))));}), Entrance(RR_WATER_TEMPLE_MQ_MAIN, []{return (logic->MQWaterB1Switch && (logic->CanUse(RG_IRON_BOOTS) && ((logic->WaterTimer() >= 24) && (logic->CanUse(RG_LONGSHOT) || logic->HasItem(RG_BRONZE_SCALE)))));}),
Entrance(RR_WATER_TEMPLE_MQ_SINGLE_STALFOS_ROOM, []{return (logic->CanUse(RG_IRON_BOOTS) && ((logic->WaterTimer() >= 8) && ((logic->IsAdult && ((logic->CanUse(RG_HOVER_BOOTS) || (bool)ctx->GetTrickOption(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP)) && (logic->CanUse(RG_HOOKSHOT) || logic->HasItem(RG_BRONZE_SCALE)))) || (Here(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, []{return logic->ScarecrowsSong();}) && logic->CanUse(RG_HOOKSHOT)))));}), Entrance(RR_WATER_TEMPLE_MQ_SINGLE_STALFOS_ROOM, []{return (logic->CanUse(RG_IRON_BOOTS) && (logic->WaterTimer() >= 8) && ((logic->IsAdult && ((logic->CanUse(RG_HOVER_BOOTS) || (bool)ctx->GetTrickOption(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP)) && (logic->CanUse(RG_HOOKSHOT) || logic->HasItem(RG_BRONZE_SCALE)))) || (Here(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, []{return logic->ScarecrowsSong();}) && logic->CanUse(RG_HOOKSHOT))));}),
Entrance(RR_WATER_TEMPLE_MQ_4_TORCH_ROOM, []{return (logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || ((bool)ctx->GetTrickOption(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP) || (Here(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, []{return logic->ScarecrowsSong();}) && logic->CanUse(RG_HOOKSHOT)))));}), Entrance(RR_WATER_TEMPLE_MQ_4_TORCH_ROOM, []{return (logic->IsAdult && (logic->CanUse(RG_HOVER_BOOTS) || ((bool)ctx->GetTrickOption(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP) || (Here(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_ROOM, []{return logic->ScarecrowsSong();}) && logic->CanUse(RG_HOOKSHOT)))));}),
Entrance(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_CAGE, []{return ((bool)ctx->GetTrickOption(RT_WATER_MQ_LOCKED_GS) && (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)));}), Entrance(RR_WATER_TEMPLE_MQ_CRATES_WHIRLPOOLS_CAGE, []{return ((bool)ctx->GetTrickOption(RT_WATER_MQ_LOCKED_GS) && (logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT)));}),
}); });
@ -4893,7 +4893,7 @@ areaTable[RR_WATER_TEMPLE_BOSS_ROOM] = Region("Water Temple Boss Room", SCENE_WA
LOCATION(RC_MORPHA, logic->WaterTempleClear), LOCATION(RC_MORPHA, logic->WaterTempleClear),
}, { }, {
Entrance(RR_WATER_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_WATER_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_LAKE_HYLIA, []{return logic->WaterTempleClear;}, "", false), Entrance(RR_LAKE_HYLIA, []{return logic->WaterTempleClear;}, false),
}); });
areaTable[RR_SPIRIT_TEMPLE_LOBBY] = Region("Spirit Temple Lobby", SCENE_SPIRIT_TEMPLE, false, {RA_SPIRIT_TEMPLE}, {}, { areaTable[RR_SPIRIT_TEMPLE_LOBBY] = Region("Spirit Temple Lobby", SCENE_SPIRIT_TEMPLE, false, {RA_SPIRIT_TEMPLE}, {}, {
LOCATION(RC_SPIRIT_TEMPLE_LOBBY_POT_1, logic->CanBreakPots()), LOCATION(RC_SPIRIT_TEMPLE_LOBBY_POT_1, logic->CanBreakPots()),
@ -5247,7 +5247,7 @@ areaTable[RR_SPIRIT_TEMPLE_BOSS_ROOM] = Region("Spirit Temple Boss Room", SCENE_
LOCATION(RC_TWINROVA, logic->SpiritTempleClear), LOCATION(RC_TWINROVA, logic->SpiritTempleClear),
}, { }, {
Entrance(RR_SPIRIT_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_SPIRIT_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_DESERT_COLOSSUS, []{return logic->SpiritTempleClear;}, "", false), Entrance(RR_DESERT_COLOSSUS, []{return logic->SpiritTempleClear;}, false),
}); });
areaTable[RR_SHADOW_TEMPLE_BEGINNING] = Region("Shadow Temple Beginning", SCENE_SHADOW_TEMPLE, false, {RA_SHADOW_TEMPLE}, { areaTable[RR_SHADOW_TEMPLE_BEGINNING] = Region("Shadow Temple Beginning", SCENE_SHADOW_TEMPLE, false, {RA_SHADOW_TEMPLE}, {
EventAccess(&logic->NutPot, []{return true;}), EventAccess(&logic->NutPot, []{return true;}),
@ -5266,9 +5266,7 @@ areaTable[RR_SHADOW_TEMPLE_BEGINNING] = Region("Shadow Temple Beginning", SCENE_
Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, []{return true;}), Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, []{return true;}),
Entrance(RR_SHADOW_TEMPLE_FIRST_BEAMOS, []{return logic->CanUse(RG_HOVER_BOOTS);}), Entrance(RR_SHADOW_TEMPLE_FIRST_BEAMOS, []{return logic->CanUse(RG_HOVER_BOOTS);}),
}); });
areaTable[RR_SHADOW_TEMPLE_FIRST_BEAMOS] = Region("Shadow Temple First Beamos", SCENE_SHADOW_TEMPLE, false, {RA_SHADOW_TEMPLE}, { areaTable[RR_SHADOW_TEMPLE_FIRST_BEAMOS] = Region("Shadow Temple First Beamos", SCENE_SHADOW_TEMPLE, false, {RA_SHADOW_TEMPLE}, {}, {
EventAccess(&logic->FairyPot, []{return true;}),
}, {
LOCATION(RC_SHADOW_TEMPLE_COMPASS_CHEST, logic->CanJumpslashExceptHammer()), LOCATION(RC_SHADOW_TEMPLE_COMPASS_CHEST, logic->CanJumpslashExceptHammer()),
LOCATION(RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT))), LOCATION(RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, (logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT))),
LOCATION(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, false), LOCATION(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, false),