200 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			200 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from typing import List, Optional | ||
|  | 
 | ||
|  | 
 | ||
|  | class LocationType(): | ||
|  |     world = 1  # Just standing there in the world | ||
|  |     hidden = 2  # Kill all monsters in the room to reveal, each "item room" counter tick. | ||
|  |     boss_reward = 3  # Kill a boss to reveal the item | ||
|  |     shop = 4  # Buy at a shop | ||
|  |     give = 5  # Given by an NPC | ||
|  |     spring = 6  # Activatable spring | ||
|  |     boss = 7  # Entity to kill to trigger the check | ||
|  | 
 | ||
|  | 
 | ||
|  | class ItemType(): | ||
|  |     unknown = 0  # Or don't care | ||
|  |     red_potion = 1 | ||
|  | 
 | ||
|  | 
 | ||
|  | class LocationDef: | ||
|  |     def __init__(self, id: Optional[int], name: str, region: str, type: int, original_item: int): | ||
|  |         self.id = id | ||
|  |         self.name = name | ||
|  |         self.region = region | ||
|  |         self.type = type | ||
|  |         self.original_item = original_item | ||
|  | 
 | ||
|  | 
 | ||
|  | locations: List[LocationDef] = [ | ||
|  |     # Eolis | ||
|  |     LocationDef(400100, 'Eolis Guru', 'Eolis', LocationType.give, ItemType.unknown), | ||
|  |     LocationDef(400101, 'Eolis Key Jack', 'Eolis', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400102, 'Eolis Hand Dagger', 'Eolis', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400103, 'Eolis Red Potion', 'Eolis', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400104, 'Eolis Elixir', 'Eolis', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400105, 'Eolis Deluge', 'Eolis', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Path to Apolune | ||
|  |     LocationDef(400106, 'Path to Apolune Magic Shield', 'Path to Apolune', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400107, 'Path to Apolune Death', 'Path to Apolune', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Apolune | ||
|  |     LocationDef(400108, 'Apolune Small Shield', 'Apolune', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400109, 'Apolune Hand Dagger', 'Apolune', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400110, 'Apolune Deluge', 'Apolune', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400111, 'Apolune Red Potion', 'Apolune', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400112, 'Apolune Key Jack', 'Apolune', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Tower of Trunk | ||
|  |     LocationDef(400113, 'Tower of Trunk Hidden Mattock', 'Tower of Trunk', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400114, 'Tower of Trunk Hidden Hourglass', 'Tower of Trunk', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400115, 'Tower of Trunk Boss Mattock', 'Tower of Trunk', LocationType.boss_reward, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Path to Forepaw | ||
|  |     LocationDef(400116, 'Path to Forepaw Hidden Red Potion', 'Path to Forepaw', LocationType.hidden, ItemType.red_potion), | ||
|  |     LocationDef(400117, 'Path to Forepaw Glove', 'Path to Forepaw', LocationType.world, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Forepaw | ||
|  |     LocationDef(400118, 'Forepaw Long Sword', 'Forepaw', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400119, 'Forepaw Studded Mail', 'Forepaw', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400120, 'Forepaw Small Shield', 'Forepaw', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400121, 'Forepaw Red Potion', 'Forepaw', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400122, 'Forepaw Wingboots', 'Forepaw', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400123, 'Forepaw Key Jack', 'Forepaw', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400124, 'Forepaw Key Queen', 'Forepaw', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Trunk | ||
|  |     LocationDef(400125, 'Trunk Hidden Ointment', 'Trunk', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400126, 'Trunk Hidden Red Potion', 'Trunk', LocationType.hidden, ItemType.red_potion), | ||
|  |     LocationDef(400127, 'Trunk Red Potion', 'Trunk', LocationType.world, ItemType.red_potion), | ||
|  |     LocationDef(None, 'Sky Spring', 'Trunk', LocationType.spring, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Joker Spring | ||
|  |     LocationDef(400128, 'Joker Spring Ruby Ring', 'Joker Spring', LocationType.give, ItemType.unknown), | ||
|  |     LocationDef(None, 'Joker Spring', 'Joker Spring', LocationType.spring, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Tower of Fortress | ||
|  |     LocationDef(400129, 'Tower of Fortress Poison 1', 'Tower of Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400130, 'Tower of Fortress Poison 2', 'Tower of Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400131, 'Tower of Fortress Hidden Wingboots', 'Tower of Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400132, 'Tower of Fortress Ointment', 'Tower of Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400133, 'Tower of Fortress Boss Wingboots', 'Tower of Fortress', LocationType.boss_reward, ItemType.unknown), | ||
|  |     LocationDef(400134, 'Tower of Fortress Elixir', 'Tower of Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400135, 'Tower of Fortress Guru', 'Tower of Fortress', LocationType.give, ItemType.unknown), | ||
|  |     LocationDef(None, 'Tower of Fortress Spring', 'Tower of Fortress', LocationType.spring, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Path to Mascon | ||
|  |     LocationDef(400136, 'Path to Mascon Hidden Wingboots', 'Path to Mascon', LocationType.hidden, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Tower of Red Potion | ||
|  |     LocationDef(400137, 'Tower of Red Potion', 'Tower of Red Potion', LocationType.world, ItemType.red_potion), | ||
|  | 
 | ||
|  |     # Mascon | ||
|  |     LocationDef(400138, 'Mascon Large Shield', 'Mascon', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400139, 'Mascon Thunder', 'Mascon', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400140, 'Mascon Mattock', 'Mascon', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400141, 'Mascon Red Potion', 'Mascon', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400142, 'Mascon Key Jack', 'Mascon', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400143, 'Mascon Key Queen', 'Mascon', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Path to Victim | ||
|  |     LocationDef(400144, 'Misty Shop Death', 'Path to Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400145, 'Misty Shop Hourglass', 'Path to Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400146, 'Misty Shop Elixir', 'Path to Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400147, 'Misty Shop Red Potion', 'Path to Victim', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400148, 'Misty Doctor Office', 'Path to Victim', LocationType.hidden, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Tower of Suffer | ||
|  |     LocationDef(400149, 'Tower of Suffer Hidden Wingboots', 'Tower of Suffer', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400150, 'Tower of Suffer Hidden Hourglass', 'Tower of Suffer', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400151, 'Tower of Suffer Pendant', 'Tower of Suffer', LocationType.boss_reward, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Victim | ||
|  |     LocationDef(400152, 'Victim Full Plate', 'Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400153, 'Victim Mattock', 'Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400154, 'Victim Red Potion', 'Victim', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400155, 'Victim Key King', 'Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400156, 'Victim Key Queen', 'Victim', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400157, 'Victim Tavern', 'Mist', LocationType.give, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Mist | ||
|  |     LocationDef(400158, 'Mist Hidden Poison 1', 'Mist', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400159, 'Mist Hidden Poison 2', 'Mist', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400160, 'Mist Hidden Wingboots', 'Mist', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400161, 'Misty Magic Hall', 'Mist', LocationType.give, ItemType.unknown), | ||
|  |     LocationDef(400162, 'Misty House', 'Mist', LocationType.give, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Useless Tower | ||
|  |     LocationDef(400163, 'Useless Tower', 'Useless Tower', LocationType.hidden, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Tower of Mist | ||
|  |     LocationDef(400164, 'Tower of Mist Hidden Ointment', 'Tower of Mist', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400165, 'Tower of Mist Elixir', 'Tower of Mist', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400166, 'Tower of Mist Black Onyx', 'Tower of Mist', LocationType.boss_reward, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Path to Conflate | ||
|  |     LocationDef(400167, 'Path to Conflate Hidden Ointment', 'Path to Conflate', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400168, 'Path to Conflate Poison', 'Path to Conflate', LocationType.hidden, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Helm Branch | ||
|  |     LocationDef(400169, 'Helm Branch Hidden Glove', 'Helm Branch', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400170, 'Helm Branch Battle Helmet', 'Helm Branch', LocationType.boss_reward, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Conflate | ||
|  |     LocationDef(400171, 'Conflate Giant Blade', 'Conflate', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400172, 'Conflate Magic Shield', 'Conflate', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400173, 'Conflate Wingboots', 'Conflate', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400174, 'Conflate Red Potion', 'Conflate', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400175, 'Conflate Guru', 'Conflate', LocationType.give, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Branches | ||
|  |     LocationDef(400176, 'Branches Hidden Ointment', 'Branches', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400177, 'Branches Poison', 'Branches', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400178, 'Branches Hidden Mattock', 'Branches', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400179, 'Branches Hidden Hourglass', 'Branches', LocationType.hidden, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Path to Daybreak | ||
|  |     LocationDef(400180, 'Path to Daybreak Hidden Wingboots 1', 'Path to Daybreak', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400181, 'Path to Daybreak Magical Rod', 'Path to Daybreak', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400182, 'Path to Daybreak Hidden Wingboots 2', 'Path to Daybreak', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400183, 'Path to Daybreak Poison', 'Path to Daybreak', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400184, 'Path to Daybreak Glove', 'Path to Daybreak', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400185, 'Path to Daybreak Battle Suit', 'Path to Daybreak', LocationType.boss_reward, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Daybreak | ||
|  |     LocationDef(400186, 'Daybreak Tilte', 'Daybreak', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400187, 'Daybreak Giant Blade', 'Daybreak', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400188, 'Daybreak Red Potion', 'Daybreak', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400189, 'Daybreak Key King', 'Daybreak', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400190, 'Daybreak Key Queen', 'Daybreak', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Dartmoor Castle | ||
|  |     LocationDef(400191, 'Dartmoor Castle Hidden Hourglass', 'Dartmoor Castle', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400192, 'Dartmoor Castle Hidden Red Potion', 'Dartmoor Castle', LocationType.hidden, ItemType.red_potion), | ||
|  | 
 | ||
|  |     # Dartmoor | ||
|  |     LocationDef(400193, 'Dartmoor Giant Blade', 'Dartmoor', LocationType.shop, ItemType.unknown), | ||
|  |     LocationDef(400194, 'Dartmoor Red Potion', 'Dartmoor', LocationType.shop, ItemType.red_potion), | ||
|  |     LocationDef(400195, 'Dartmoor Key King', 'Dartmoor', LocationType.shop, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Fraternal Castle | ||
|  |     LocationDef(400196, 'Fraternal Castle Hidden Ointment', 'Fraternal Castle', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400197, 'Fraternal Castle Shop Hidden Ointment', 'Fraternal Castle', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400198, 'Fraternal Castle Poison 1', 'Fraternal Castle', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400199, 'Fraternal Castle Poison 2', 'Fraternal Castle', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400200, 'Fraternal Castle Poison 3', 'Fraternal Castle', LocationType.world, ItemType.unknown), | ||
|  |     # LocationDef(400201, 'Fraternal Castle Red Potion', 'Fraternal Castle', LocationType.world, ItemType.red_potion),  # This location is inaccessible. Keeping commented for context. | ||
|  |     LocationDef(400202, 'Fraternal Castle Hidden Hourglass', 'Fraternal Castle', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(400203, 'Fraternal Castle Dragon Slayer', 'Fraternal Castle', LocationType.boss_reward, ItemType.unknown), | ||
|  |     LocationDef(400204, 'Fraternal Castle Guru', 'Fraternal Castle', LocationType.give, ItemType.unknown), | ||
|  | 
 | ||
|  |     # Evil Fortress | ||
|  |     LocationDef(400205, 'Evil Fortress Ointment', 'Evil Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400206, 'Evil Fortress Poison 1', 'Evil Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400207, 'Evil Fortress Glove', 'Evil Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400208, 'Evil Fortress Poison 2', 'Evil Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400209, 'Evil Fortress Poison 3', 'Evil Fortress', LocationType.world, ItemType.unknown), | ||
|  |     LocationDef(400210, 'Evil Fortress Hidden Glove', 'Evil Fortress', LocationType.hidden, ItemType.unknown), | ||
|  |     LocationDef(None, 'Evil One', 'Evil Fortress', LocationType.boss, ItemType.unknown), | ||
|  | ] |