mq heavy block logic matching vanilla refactor

This commit is contained in:
Demur Rumed 2025-07-10 22:20:50 +00:00
commit 1d1ca40d94
2 changed files with 13 additions and 5 deletions

View file

@ -143,7 +143,7 @@ void RegionTable_Init_GerudoTrainingGround() {
areaTable[RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM] = Region("Gerudo Training Ground Heavy Block Room", SCENE_GERUDO_TRAINING_GROUND, { areaTable[RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM] = Region("Gerudo Training Ground Heavy Block Room", SCENE_GERUDO_TRAINING_GROUND, {
//Events //Events
EventAccess(&logic->GTGPushedHeavyBlock, []{return logic->CanUse(RG_SILVER_GAUNTLETS);}) EventAccess(&logic->GTGPushedHeavyBlock, []{return logic->CanUse(RG_SILVER_GAUNTLETS);}),
}, { }, {
//Locations //Locations
LOCATION(RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, logic->CanKillEnemy(RE_WOLFOS, ED_CLOSE, true, 4, true)), LOCATION(RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, logic->CanKillEnemy(RE_WOLFOS, ED_CLOSE, true, 4, true)),
@ -156,7 +156,7 @@ void RegionTable_Init_GerudoTrainingGround() {
areaTable[RR_GERUDO_TRAINING_GROUND_ABOVE_HEAVY_BLOCK_ROOM] = Region("Gerudo Training Ground Behind Heavy Block", SCENE_GERUDO_TRAINING_GROUND, { areaTable[RR_GERUDO_TRAINING_GROUND_ABOVE_HEAVY_BLOCK_ROOM] = Region("Gerudo Training Ground Behind Heavy Block", SCENE_GERUDO_TRAINING_GROUND, {
//Events //Events
EventAccess(&logic->GTGUnlockedDoorBehindHeavyBlock, []{return true;}) EventAccess(&logic->GTGUnlockedDoorBehindHeavyBlock, []{return true;}),
}, {}, { }, {}, {
//Exits //Exits
Entrance(RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM, []{return ctx->GetTrickOption(RT_LENS_GTG) || logic->CanUse(RG_LENS_OF_TRUTH);}), Entrance(RR_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_ROOM, []{return ctx->GetTrickOption(RT_LENS_GTG) || logic->CanUse(RG_LENS_OF_TRUTH);}),
@ -251,6 +251,8 @@ void RegionTable_Init_GerudoTrainingGround() {
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM] = Region("Gerudo Training Ground MQ Stalfos Room", SCENE_GERUDO_TRAINING_GROUND, { areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM] = Region("Gerudo Training Ground MQ Stalfos Room", SCENE_GERUDO_TRAINING_GROUND, {
//Events //Events
EventAccess(&logic->BlueFireAccess, []{return true;}), EventAccess(&logic->BlueFireAccess, []{return true;}),
EventAccess(&logic->GTGUnlockedDoorBehindHeavyBlock, []{return Here(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true);});}),
EventAccess(&logic->GTGPushedHeavyBlock, []{return logic->CanUse(RG_SILVER_GAUNTLETS);}),
}, { }, {
//Locations //Locations
//implies logic->CanKillEnemy(RE_BIG_SKULLTULA) //implies logic->CanKillEnemy(RE_BIG_SKULLTULA)
@ -258,16 +260,21 @@ void RegionTable_Init_GerudoTrainingGround() {
}, { }, {
//Exits //Exits
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, []{return true;}), Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, []{return true;}),
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, []{return Here(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true);}) && logic->CanUse(RG_SILVER_GAUNTLETS);}), Entrance(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, []{return logic->GTGPushedHeavyBlock;}),
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE, []{return logic->IsAdult && Here(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true);}) && (ctx->GetTrickOption(RT_LENS_GTG_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || (ctx->GetTrickOption(RT_GTG_FAKE_WALL) && logic->CanUse(RG_HOVER_BOOTS)));}), Entrance(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE, []{return logic->IsAdult && Here(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true);}) && (ctx->GetTrickOption(RT_LENS_GTG_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || (ctx->GetTrickOption(RT_GTG_FAKE_WALL) && logic->CanUse(RG_HOVER_BOOTS)));}),
}); });
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK] = Region("Gerudo Training Ground MQ Behind Block", SCENE_GERUDO_TRAINING_GROUND, {}, { areaTable[RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK] = Region("Gerudo Training Ground MQ Behind Block", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return logic->GTGPushedHeavyBlock;}),
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_ROOM_BEHIND_BLOCK, []{return logic->GTGUnlockedDoorBehindHeavyBlock;}),
});
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_ROOM_BEHIND_BLOCK] = Region("Gerudo Training Ground MQ Room Behind Block", SCENE_GERUDO_TRAINING_GROUND, {}, {
//Locations //Locations
//implies logic->CanKillEnemy(RE_SPIKE) //implies logic->CanKillEnemy(RE_SPIKE)
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, logic->CanKillEnemy(RE_FREEZARD)), LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, logic->CanKillEnemy(RE_FREEZARD)),
}, { }, {
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return true;}), // TODO fix logic where block not pushed Entrance(RR_GERUDO_TRAINING_GROUND_MQ_ROOM_BEHIND_BLOCK, []{return true;}),
}); });
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE] = Region("Gerudo Training Ground MQ Statue Room Ledge", SCENE_GERUDO_TRAINING_GROUND, {}, {}, { areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE] = Region("Gerudo Training Ground MQ Statue Room Ledge", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {

View file

@ -1026,6 +1026,7 @@ typedef enum {
RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE,
RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM,
RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK,
RR_GERUDO_TRAINING_GROUND_MQ_ROOM_BEHIND_BLOCK,
RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE, RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE,
RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM, RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM,
RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM, RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM,