Skip to content

Commit

Permalink
TollBenchCity, WaterwaysManhole, TollBenchBasin...
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexKnauth committed Dec 24, 2023
1 parent 14751e9 commit e06e295
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 1 deletion.
31 changes: 31 additions & 0 deletions src/hollow_knight_memory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ struct PlayerDataPointers {
killed_gorgeous_husk: UnityPointer<3>,
// Lemm
met_relic_dealer_shop: UnityPointer<3>,
toll_bench_city: UnityPointer<3>,
// Soul Master
mage_lord_encountered: UnityPointer<3>,
mage_lord_encountered_2: UnityPointer<3>,
Expand All @@ -354,10 +355,12 @@ struct PlayerDataPointers {
defeated_mega_beam_miner: UnityPointer<3>,
kills_mega_beam_miner: UnityPointer<3>,
mine_lift_opened: UnityPointer<3>,
opened_waterways_manhole: UnityPointer<3>,
killed_dung_defender: UnityPointer<3>,
killed_white_defender: UnityPointer<3>,
white_defender_orbs_collected: UnityPointer<3>,
killed_fluke_mother: UnityPointer<3>,
toll_bench_abyss: UnityPointer<3>,
// Broken Vessel
killed_infected_knight: UnityPointer<3>,
infected_knight_dream_defeated: UnityPointer<3>,
Expand All @@ -379,10 +382,12 @@ struct PlayerDataPointers {
// Uumuu
encountered_mega_jelly: UnityPointer<3>,
killed_mega_jellyfish: UnityPointer<3>,
toll_bench_queens_gardens: UnityPointer<3>,
killed_ghost_marmu: UnityPointer<3>,
mum_caterpillar_defeated: UnityPointer<3>,
killed_traitor_lord: UnityPointer<3>,
zote_rescued_deepnest: UnityPointer<3>,
opened_tram_lower: UnityPointer<3>,
// Nosk
killed_mimic_spider: UnityPointer<3>,
killed_ghost_galien: UnityPointer<3>,
Expand Down Expand Up @@ -566,6 +571,7 @@ impl PlayerDataPointers {
opened_city_gate: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "openedCityGate"]),
killed_gorgeous_husk: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedGorgeousHusk"]),
met_relic_dealer_shop: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "metRelicDealerShop"]),
toll_bench_city: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "tollBenchCity"]),
mage_lord_encountered: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "mageLordEncountered"]),
mage_lord_encountered_2: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "mageLordEncountered_2"]),
killed_mage_lord: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedMageLord"]),
Expand All @@ -578,10 +584,12 @@ impl PlayerDataPointers {
defeated_mega_beam_miner: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "defeatedMegaBeamMiner"]),
kills_mega_beam_miner: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killsMegaBeamMiner"]),
mine_lift_opened: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "mineLiftOpened"]),
opened_waterways_manhole: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "openedWaterwaysManhole"]),
killed_dung_defender: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedDungDefender"]),
killed_white_defender: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedWhiteDefender"]),
white_defender_orbs_collected: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "whiteDefenderOrbsCollected"]),
killed_fluke_mother: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedFlukeMother"]),
toll_bench_abyss: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "tollBenchAbyss"]),
killed_infected_knight: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedInfectedKnight"]),
infected_knight_dream_defeated: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "infectedKnightDreamDefeated"]),
infected_knight_orbs_collected: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "infectedKnightOrbsCollected"]),
Expand All @@ -600,10 +608,12 @@ impl PlayerDataPointers {
colosseum_gold_completed: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "colosseumGoldCompleted"]),
encountered_mega_jelly: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "encounteredMegaJelly"]),
killed_mega_jellyfish: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedMegaJellyfish"]),
toll_bench_queens_gardens: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "tollBenchQueensGardens"]),
killed_ghost_marmu: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedGhostMarmu"]),
mum_caterpillar_defeated: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "mumCaterpillarDefeated"]),
killed_traitor_lord: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedTraitorLord"]),
zote_rescued_deepnest: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "zoteRescuedDeepnest"]),
opened_tram_lower: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "openedTramLower"]),
killed_mimic_spider: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedMimicSpider"]),
killed_ghost_galien: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "killedGhostGalien"]),
galien_defeated: UnityPointer::new("GameManager", 0, &["_instance", "playerData", "galienDefeated"]),
Expand Down Expand Up @@ -1377,6 +1387,10 @@ impl GameManagerFinder {
self.player_data_pointers.met_relic_dealer_shop.deref(process, &self.module, &self.image).ok()
}

pub fn toll_bench_city(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.toll_bench_city.deref(process, &self.module, &self.image).ok()
}

pub fn mage_lord_encountered(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.mage_lord_encountered.deref(process, &self.module, &self.image).ok()
}
Expand Down Expand Up @@ -1423,6 +1437,10 @@ impl GameManagerFinder {
self.player_data_pointers.mine_lift_opened.deref(process, &self.module, &self.image).ok()
}

pub fn opened_waterways_manhole(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.opened_waterways_manhole.deref(process, &self.module, &self.image).ok()
}

pub fn killed_dung_defender(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.killed_dung_defender.deref(process, &self.module, &self.image).ok()
}
Expand All @@ -1439,6 +1457,10 @@ impl GameManagerFinder {
self.player_data_pointers.killed_fluke_mother.deref(process, &self.module, &self.image).ok()
}

pub fn toll_bench_abyss(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.toll_bench_abyss.deref(process, &self.module, &self.image).ok()
}

pub fn killed_infected_knight(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.killed_infected_knight.deref(process, &self.module, &self.image).ok()
}
Expand Down Expand Up @@ -1511,6 +1533,10 @@ impl GameManagerFinder {
self.player_data_pointers.killed_mega_jellyfish.deref(process, &self.module, &self.image).ok()
}

pub fn toll_bench_queens_gardens(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.toll_bench_queens_gardens.deref(process, &self.module, &self.image).ok()
}

pub fn killed_ghost_marmu(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.killed_ghost_marmu.deref(process, &self.module, &self.image).ok()
}
Expand All @@ -1526,6 +1552,11 @@ impl GameManagerFinder {
self.player_data_pointers.zote_rescued_deepnest.deref(process, &self.module, &self.image).ok()
}

pub fn opened_tram_lower(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.opened_tram_lower.deref(process, &self.module, &self.image).ok()
}


pub fn killed_mimic_spider(&self, process: &Process) -> Option<bool> {
self.player_data_pointers.killed_mimic_spider.deref(process, &self.module, &self.image).ok()
}
Expand Down
29 changes: 28 additions & 1 deletion src/splits.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1227,6 +1227,10 @@ pub enum Split {
///
/// Splits when talking to Lemm in the shop for the first time
Lemm2,
/// Sanctum Bench (Toll)
///
/// Splits when buying City/Sanctum toll bench by Cornifer's location
TollBenchCity,
/// Soul Sanctum (Transition)
///
/// Splits when entering Soul Sanctum
Expand Down Expand Up @@ -1314,6 +1318,10 @@ pub enum Split {
MineLiftOpened,
// endregion: Peak
// region: Waterways
/// Waterways Manhole (Toll)
///
/// Splits when opening the Waterways Manhole
WaterwaysManhole,
/// Dung Defender (Boss)
///
/// Splits when killing Dung Defender
Expand Down Expand Up @@ -1341,6 +1349,10 @@ pub enum Split {
///
/// Splits on transition to Ancient Basin
BasinEntry,
/// Basin Bench (Toll)
///
/// Splits when buying Ancient Basin toll bench
TollBenchBasin,
Abyss19from18,
/// Broken Vessel (Boss)
///
Expand Down Expand Up @@ -1470,6 +1482,10 @@ pub enum Split {
///
/// Splits on transition to QG scene following QGA or above Deepnest
QueensGardensEntry,
/// Queen's Garden Bench (Toll)
///
/// Splits when buying Queen's Garden toll bench
TollBenchQG,
/// Marmu (Boss)
///
/// Splits when killing Marmu
Expand All @@ -1492,6 +1508,10 @@ pub enum Split {
///
/// Splits when rescuing Zote in Deepnest
Zote2,
/// Tram Deepnest (Tram)
///
/// Splits when unlocking the tram in Deepnest
TramDeepnest,
/// Nosk (Transition)
///
/// Splits when entering Nosk boss arena transition
Expand Down Expand Up @@ -2039,6 +2059,7 @@ pub fn continuous_splits(s: &Split, p: &Process, g: &GameManagerFinder, pds: &mu
Split::TransGorgeousHusk => { pds.killed_gorgeous_husk(p, g); false },
Split::MenuGorgeousHusk => { pds.killed_gorgeous_husk(p, g); false },
Split::Lemm2 => g.met_relic_dealer_shop(p).is_some_and(|m| m),
Split::TollBenchCity => g.toll_bench_city(p).is_some_and(|b| b),
Split::SoulMasterEncountered => g.mage_lord_encountered(p).is_some_and(|b| b),
Split::SoulMasterPhase1 => g.mage_lord_encountered_2(p).is_some_and(|b| b),
Split::SoulMaster => g.killed_mage_lord(p).is_some_and(|k| k),
Expand All @@ -2057,15 +2078,19 @@ pub fn continuous_splits(s: &Split, p: &Process, g: &GameManagerFinder, pds: &mu
Split::MineLiftOpened => g.mine_lift_opened(p).is_some_and(|o| o),
// endregion: Peak
// region: Waterways
Split::WaterwaysManhole => g.opened_waterways_manhole(p).is_some_and(|o| o),
Split::DungDefender => g.killed_dung_defender(p).is_some_and(|k| k),
Split::WhiteDefender => g.killed_white_defender(p).is_some_and(|k| k),
Split::WhiteDefenderEssence => g.white_defender_orbs_collected(p).is_some_and(|o| o),
Split::Flukemarm => g.killed_fluke_mother(p).is_some_and(|k| k),
// endregion: Waterways
// region: Basin
Split::TollBenchBasin => g.toll_bench_abyss(p).is_some_and(|b| b),
Split::BrokenVessel => g.killed_infected_knight(p).is_some_and(|k| k),
Split::BrokenVesselTrans => { pds.killed_infected_knight(p, g); false },
Split::LostKin => g.infected_knight_dream_defeated(p).is_some_and(|k| k),
Split::LostKinEssence => g.infected_knight_orbs_collected(p).is_some_and(|o| o),
// endregion: Waterways
// endregion: Basin
// region: Kingdom's Edge
Split::HiveKnight => g.killed_hive_knight(p).is_some_and(|k| k),
Split::GreatHopper => g.killed_giant_hopper(p).is_some_and(|k| k),
Expand All @@ -2091,12 +2116,14 @@ pub fn continuous_splits(s: &Split, p: &Process, g: &GameManagerFinder, pds: &mu
Split::Uumuu => g.killed_mega_jellyfish(p).is_some_and(|k| k),
// endregion: Fog Canyon
// region: Queen's Gardens
Split::TollBenchQG => g.toll_bench_queens_gardens(p).is_some_and(|b| b),
Split::Marmu => g.killed_ghost_marmu(p).is_some_and(|k| k),
Split::MarmuEssence => g.mum_caterpillar_defeated(p).is_some_and(|d| d == 2),
Split::TraitorLord => g.killed_traitor_lord(p).is_some_and(|k| k),
// endregion: Queen's Gardens
// region: Deepnest
Split::Zote2 => g.zote_rescued_deepnest(p).is_some_and(|z| z),
Split::TramDeepnest => g.opened_tram_lower(p).is_some_and(|o| o),
Split::Nosk => g.killed_mimic_spider(p).is_some_and(|k| k),
Split::Galien => g.killed_ghost_galien(p).is_some_and(|k| k),
Split::GalienEssence => g.galien_defeated(p).is_some_and(|d| d == 2),
Expand Down

0 comments on commit e06e295

Please sign in to comment.