195 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			195 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from ..game_id import jak1_id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Power Cells are given ID's between 0 and 116 by the game.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The game tracks all game-tasks as integers.
							 | 
						||
| 
								 | 
							
								# 101 of these ID's correspond directly to power cells, but they are not
							 | 
						||
| 
								 | 
							
								# necessarily ordered, nor are they the first 101 in the task list.
							 | 
						||
| 
								 | 
							
								# The remaining ones are cutscenes and other events.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# These helper functions do all the math required to get information about each
							 | 
						||
| 
								 | 
							
								# power cell and translate its ID between AP and OpenGOAL.
							 | 
						||
| 
								 | 
							
								def to_ap_id(game_id: int) -> int:
							 | 
						||
| 
								 | 
							
								    if game_id >= jak1_id:
							 | 
						||
| 
								 | 
							
								        raise ValueError(f"Attempted to convert {game_id} to an AP ID, but it already is one.")
							 | 
						||
| 
								 | 
							
								    return jak1_id + game_id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def to_game_id(ap_id: int) -> int:
							 | 
						||
| 
								 | 
							
								    if ap_id < jak1_id:
							 | 
						||
| 
								 | 
							
								        raise ValueError(f"Attempted to convert {ap_id} to a Jak 1 ID, but it already is one.")
							 | 
						||
| 
								 | 
							
								    return ap_id - jak1_id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The ID's you see below correspond directly to that cell's game-task ID.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The "Free 7 Scout Flies" Power Cells will be unlocked separately from their respective levels.
							 | 
						||
| 
								 | 
							
								loc7SF_cellTable = {
							 | 
						||
| 
								 | 
							
								    95: "GR: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    75: "SV: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    7:  "FJ: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    20: "SB: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    28: "MI: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    68: "FC: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    76: "RV: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    57: "PB: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    49: "LPC: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    43: "BS: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    88: "MP: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    77: "VC: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    85: "SC: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    65: "SM: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    90: "LT: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								    91: "GMC: Free 7 Scout Flies",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Geyser Rock
							 | 
						||
| 
								 | 
							
								locGR_cellTable = {
							 | 
						||
| 
								 | 
							
								    92: "GR: Find The Cell On The Path",
							 | 
						||
| 
								 | 
							
								    93: "GR: Open The Precursor Door",
							 | 
						||
| 
								 | 
							
								    94: "GR: Climb Up The Cliff",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Sandover Village
							 | 
						||
| 
								 | 
							
								locSV_cellTable = {
							 | 
						||
| 
								 | 
							
								    11: "SV: Bring 90 Orbs To The Mayor",
							 | 
						||
| 
								 | 
							
								    12: "SV: Bring 90 Orbs to Your Uncle",
							 | 
						||
| 
								 | 
							
								    10: "SV: Herd The Yakows Into The Pen",
							 | 
						||
| 
								 | 
							
								    13: "SV: Bring 120 Orbs To The Oracle (1)",
							 | 
						||
| 
								 | 
							
								    14: "SV: Bring 120 Orbs To The Oracle (2)",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Forbidden Jungle
							 | 
						||
| 
								 | 
							
								locFJ_cellTable = {
							 | 
						||
| 
								 | 
							
								    3: "FJ: Connect The Eco Beams",
							 | 
						||
| 
								 | 
							
								    4: "FJ: Get To The Top Of The Temple",
							 | 
						||
| 
								 | 
							
								    2: "FJ: Find The Blue Vent Switch",
							 | 
						||
| 
								 | 
							
								    6: "FJ: Defeat The Dark Eco Plant",
							 | 
						||
| 
								 | 
							
								    5: "FJ: Catch 200 Pounds Of Fish",
							 | 
						||
| 
								 | 
							
								    8: "FJ: Follow The Canyon To The Sea",
							 | 
						||
| 
								 | 
							
								    9: "FJ: Open The Locked Temple Door",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Sentinel Beach
							 | 
						||
| 
								 | 
							
								locSB_cellTable = {
							 | 
						||
| 
								 | 
							
								    15: "SB: Unblock The Eco Harvesters",
							 | 
						||
| 
								 | 
							
								    17: "SB: Push The Flut Flut Egg Off The Cliff",
							 | 
						||
| 
								 | 
							
								    16: "SB: Get The Power Cell From The Pelican",
							 | 
						||
| 
								 | 
							
								    18: "SB: Chase The Seagulls",
							 | 
						||
| 
								 | 
							
								    19: "SB: Launch Up To The Cannon Tower",
							 | 
						||
| 
								 | 
							
								    21: "SB: Explore The Beach",
							 | 
						||
| 
								 | 
							
								    22: "SB: Climb The Sentinel",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Misty Island
							 | 
						||
| 
								 | 
							
								locMI_cellTable = {
							 | 
						||
| 
								 | 
							
								    23: "MI: Catch The Sculptor's Muse",
							 | 
						||
| 
								 | 
							
								    24: "MI: Climb The Lurker Ship",
							 | 
						||
| 
								 | 
							
								    26: "MI: Stop The Cannon",
							 | 
						||
| 
								 | 
							
								    25: "MI: Return To The Dark Eco Pool",
							 | 
						||
| 
								 | 
							
								    27: "MI: Destroy the Balloon Lurkers",
							 | 
						||
| 
								 | 
							
								    29: "MI: Use Zoomer To Reach Power Cell",
							 | 
						||
| 
								 | 
							
								    30: "MI: Use Blue Eco To Reach Power Cell",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Fire Canyon
							 | 
						||
| 
								 | 
							
								locFC_cellTable = {
							 | 
						||
| 
								 | 
							
								    69: "FC: Reach The End Of Fire Canyon",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Rock Village
							 | 
						||
| 
								 | 
							
								locRV_cellTable = {
							 | 
						||
| 
								 | 
							
								    31: "RV: Bring 90 Orbs To The Gambler",
							 | 
						||
| 
								 | 
							
								    32: "RV: Bring 90 Orbs To The Geologist",
							 | 
						||
| 
								 | 
							
								    33: "RV: Bring 90 Orbs To The Warrior",
							 | 
						||
| 
								 | 
							
								    34: "RV: Bring 120 Orbs To The Oracle (1)",
							 | 
						||
| 
								 | 
							
								    35: "RV: Bring 120 Orbs To The Oracle (2)",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Precursor Basin
							 | 
						||
| 
								 | 
							
								locPB_cellTable = {
							 | 
						||
| 
								 | 
							
								    54: "PB: Herd The Moles Into Their Hole",
							 | 
						||
| 
								 | 
							
								    53: "PB: Catch The Flying Lurkers",
							 | 
						||
| 
								 | 
							
								    52: "PB: Beat Record Time On The Gorge",
							 | 
						||
| 
								 | 
							
								    56: "PB: Get The Power Cell Over The Lake",
							 | 
						||
| 
								 | 
							
								    55: "PB: Cure Dark Eco Infected Plants",
							 | 
						||
| 
								 | 
							
								    58: "PB: Navigate The Purple Precursor Rings",
							 | 
						||
| 
								 | 
							
								    59: "PB: Navigate The Blue Precursor Rings",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Lost Precursor City
							 | 
						||
| 
								 | 
							
								locLPC_cellTable = {
							 | 
						||
| 
								 | 
							
								    47: "LPC: Raise The Chamber",
							 | 
						||
| 
								 | 
							
								    45: "LPC: Follow The Colored Pipes",
							 | 
						||
| 
								 | 
							
								    46: "LPC: Reach The Bottom Of The City",
							 | 
						||
| 
								 | 
							
								    48: "LPC: Quickly Cross The Dangerous Pool",
							 | 
						||
| 
								 | 
							
								    44: "LPC: Match The Platform Colors",
							 | 
						||
| 
								 | 
							
								    50: "LPC: Climb The Slide Tube",
							 | 
						||
| 
								 | 
							
								    51: "LPC: Reach The Center Of The Complex",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Boggy Swamp
							 | 
						||
| 
								 | 
							
								locBS_cellTable = {
							 | 
						||
| 
								 | 
							
								    37: "BS: Ride The Flut Flut",
							 | 
						||
| 
								 | 
							
								    36: "BS: Protect Farthy's Snacks",
							 | 
						||
| 
								 | 
							
								    38: "BS: Defeat The Lurker Ambush",
							 | 
						||
| 
								 | 
							
								    39: "BS: Break The Tethers To The Zeppelin (1)",
							 | 
						||
| 
								 | 
							
								    40: "BS: Break The Tethers To The Zeppelin (2)",
							 | 
						||
| 
								 | 
							
								    41: "BS: Break The Tethers To The Zeppelin (3)",
							 | 
						||
| 
								 | 
							
								    42: "BS: Break The Tethers To The Zeppelin (4)",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Mountain Pass
							 | 
						||
| 
								 | 
							
								locMP_cellTable = {
							 | 
						||
| 
								 | 
							
								    86: "MP: Defeat Klaww",
							 | 
						||
| 
								 | 
							
								    87: "MP: Reach The End Of The Mountain Pass",
							 | 
						||
| 
								 | 
							
								    110: "MP: Find The Hidden Power Cell",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Volcanic Crater
							 | 
						||
| 
								 | 
							
								locVC_cellTable = {
							 | 
						||
| 
								 | 
							
								    96: "VC: Bring 90 Orbs To The Miners (1)",
							 | 
						||
| 
								 | 
							
								    97: "VC: Bring 90 Orbs To The Miners (2)",
							 | 
						||
| 
								 | 
							
								    98: "VC: Bring 90 Orbs To The Miners (3)",
							 | 
						||
| 
								 | 
							
								    99: "VC: Bring 90 Orbs To The Miners (4)",
							 | 
						||
| 
								 | 
							
								    100: "VC: Bring 120 Orbs To The Oracle (1)",
							 | 
						||
| 
								 | 
							
								    101: "VC: Bring 120 Orbs To The Oracle (2)",
							 | 
						||
| 
								 | 
							
								    74: "VC: Find The Hidden Power Cell",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Spider Cave
							 | 
						||
| 
								 | 
							
								locSC_cellTable = {
							 | 
						||
| 
								 | 
							
								    78: "SC: Use Your Goggles To Shoot The Gnawing Lurkers",
							 | 
						||
| 
								 | 
							
								    79: "SC: Destroy The Dark Eco Crystals",
							 | 
						||
| 
								 | 
							
								    80: "SC: Explore The Dark Cave",
							 | 
						||
| 
								 | 
							
								    81: "SC: Climb The Giant Robot",
							 | 
						||
| 
								 | 
							
								    82: "SC: Launch To The Poles",
							 | 
						||
| 
								 | 
							
								    83: "SC: Navigate The Spider Tunnel",
							 | 
						||
| 
								 | 
							
								    84: "SC: Climb the Precursor Platforms",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Snowy Mountain
							 | 
						||
| 
								 | 
							
								locSM_cellTable = {
							 | 
						||
| 
								 | 
							
								    60: "SM: Find The Yellow Vent Switch",
							 | 
						||
| 
								 | 
							
								    61: "SM: Stop The 3 Lurker Glacier Troops",
							 | 
						||
| 
								 | 
							
								    66: "SM: Deactivate The Precursor Blockers",
							 | 
						||
| 
								 | 
							
								    67: "SM: Open The Frozen Crate",
							 | 
						||
| 
								 | 
							
								    63: "SM: Open The Lurker Fort Gate",
							 | 
						||
| 
								 | 
							
								    62: "SM: Get Through The Lurker Fort",
							 | 
						||
| 
								 | 
							
								    64: "SM: Survive The Lurker Infested Cave",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Lava Tube
							 | 
						||
| 
								 | 
							
								locLT_cellTable = {
							 | 
						||
| 
								 | 
							
								    89: "LT: Cross The Lava Tube",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Gol and Maias Citadel
							 | 
						||
| 
								 | 
							
								locGMC_cellTable = {
							 | 
						||
| 
								 | 
							
								    71: "GMC: Free The Blue Sage",
							 | 
						||
| 
								 | 
							
								    72: "GMC: Free The Red Sage",
							 | 
						||
| 
								 | 
							
								    73: "GMC: Free The Yellow Sage",
							 | 
						||
| 
								 | 
							
								    70: "GMC: Free The Green Sage",
							 | 
						||
| 
								 | 
							
								}
							 |