106 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from typing import Dict, List, NamedTuple | ||
|  | 
 | ||
|  | from BaseClasses import Item, ItemClassification | ||
|  | 
 | ||
|  | BASE_ITEM_ID = 4000 | ||
|  | 
 | ||
|  | 
 | ||
|  | class LandstalkerItem(Item): | ||
|  |     game: str = "Landstalker - The Treasures of King Nole" | ||
|  |     price_in_shops: int | ||
|  | 
 | ||
|  | 
 | ||
|  | class LandstalkerItemData(NamedTuple): | ||
|  |     id: int | ||
|  |     classification: ItemClassification | ||
|  |     price_in_shops: int | ||
|  |     quantity: int = 1 | ||
|  | 
 | ||
|  | 
 | ||
|  | item_table: Dict[str, LandstalkerItemData] = { | ||
|  |     "EkeEke":               LandstalkerItemData(0,  ItemClassification.filler,      20,     0),  # Variable amount | ||
|  |     "Magic Sword":          LandstalkerItemData(1,  ItemClassification.useful,      300), | ||
|  |     "Sword of Ice":         LandstalkerItemData(2,  ItemClassification.useful,      300), | ||
|  |     "Thunder Sword":        LandstalkerItemData(3,  ItemClassification.useful,      500), | ||
|  |     "Sword of Gaia":        LandstalkerItemData(4,  ItemClassification.progression, 300), | ||
|  |     "Fireproof":            LandstalkerItemData(5,  ItemClassification.progression, 150), | ||
|  |     "Iron Boots":           LandstalkerItemData(6,  ItemClassification.progression, 150), | ||
|  |     "Healing Boots":        LandstalkerItemData(7,  ItemClassification.useful,      300), | ||
|  |     "Snow Spikes":          LandstalkerItemData(8,  ItemClassification.progression, 400), | ||
|  |     "Steel Breast":         LandstalkerItemData(9,  ItemClassification.useful,      200), | ||
|  |     "Chrome Breast":        LandstalkerItemData(10, ItemClassification.useful,      350), | ||
|  |     "Shell Breast":         LandstalkerItemData(11, ItemClassification.useful,      500), | ||
|  |     "Hyper Breast":         LandstalkerItemData(12, ItemClassification.useful,      700), | ||
|  |     "Mars Stone":           LandstalkerItemData(13, ItemClassification.useful,      150), | ||
|  |     "Moon Stone":           LandstalkerItemData(14, ItemClassification.useful,      150), | ||
|  |     "Saturn Stone":         LandstalkerItemData(15, ItemClassification.useful,      200), | ||
|  |     "Venus Stone":          LandstalkerItemData(16, ItemClassification.useful,      300), | ||
|  |     # Awakening Book: 17 | ||
|  |     "Detox Grass":          LandstalkerItemData(18, ItemClassification.filler,      25,     9), | ||
|  |     "Statue of Gaia":       LandstalkerItemData(19, ItemClassification.filler,      75,     12), | ||
|  |     "Golden Statue":        LandstalkerItemData(20, ItemClassification.filler,      150,    10), | ||
|  |     "Mind Repair":          LandstalkerItemData(21, ItemClassification.filler,      25,     7), | ||
|  |     "Casino Ticket":        LandstalkerItemData(22, ItemClassification.progression, 50), | ||
|  |     "Axe Magic":            LandstalkerItemData(23, ItemClassification.progression, 400), | ||
|  |     "Blue Ribbon":          LandstalkerItemData(24, ItemClassification.filler,      50), | ||
|  |     "Buyer Card":           LandstalkerItemData(25, ItemClassification.progression, 150), | ||
|  |     "Lantern":              LandstalkerItemData(26, ItemClassification.progression, 200), | ||
|  |     "Garlic":               LandstalkerItemData(27, ItemClassification.progression, 150,    2), | ||
|  |     "Anti Paralyze":        LandstalkerItemData(28, ItemClassification.filler,      20,     7), | ||
|  |     "Statue of Jypta":      LandstalkerItemData(29, ItemClassification.useful,      250), | ||
|  |     "Sun Stone":            LandstalkerItemData(30, ItemClassification.progression, 300), | ||
|  |     "Armlet":               LandstalkerItemData(31, ItemClassification.progression, 300), | ||
|  |     "Einstein Whistle":     LandstalkerItemData(32, ItemClassification.progression, 200), | ||
|  |     "Blue Jewel":           LandstalkerItemData(33, ItemClassification.progression, 500,    0),  # Detox Book in base game | ||
|  |     "Yellow Jewel":         LandstalkerItemData(34, ItemClassification.progression, 500,    0),  # AntiCurse Book in base game | ||
|  |     # Record Book: 35 | ||
|  |     # Spell Book: 36 | ||
|  |     # Hotel Register: 37 | ||
|  |     # Island Map: 38 | ||
|  |     "Lithograph":           LandstalkerItemData(39, ItemClassification.progression, 250), | ||
|  |     "Red Jewel":            LandstalkerItemData(40, ItemClassification.progression, 500,    0), | ||
|  |     "Pawn Ticket":          LandstalkerItemData(41, ItemClassification.useful,      200,    4), | ||
|  |     "Purple Jewel":         LandstalkerItemData(42, ItemClassification.progression, 500,    0), | ||
|  |     "Gola's Eye":           LandstalkerItemData(43, ItemClassification.progression, 400), | ||
|  |     "Death Statue":         LandstalkerItemData(44, ItemClassification.filler,      150), | ||
|  |     "Dahl":                 LandstalkerItemData(45, ItemClassification.filler,      100,    18), | ||
|  |     "Restoration":          LandstalkerItemData(46, ItemClassification.filler,      40,     9), | ||
|  |     "Logs":                 LandstalkerItemData(47, ItemClassification.progression, 100,    2), | ||
|  |     "Oracle Stone":         LandstalkerItemData(48, ItemClassification.progression, 250), | ||
|  |     "Idol Stone":           LandstalkerItemData(49, ItemClassification.progression, 200), | ||
|  |     "Key":                  LandstalkerItemData(50, ItemClassification.progression, 150), | ||
|  |     "Safety Pass":          LandstalkerItemData(51, ItemClassification.progression, 250), | ||
|  |     "Green Jewel":          LandstalkerItemData(52, ItemClassification.progression, 500,    0),  # No52 in base game | ||
|  |     "Bell":                 LandstalkerItemData(53, ItemClassification.useful,      200), | ||
|  |     "Short Cake":           LandstalkerItemData(54, ItemClassification.useful,      250), | ||
|  |     "Gola's Nail":          LandstalkerItemData(55, ItemClassification.progression, 800), | ||
|  |     "Gola's Horn":          LandstalkerItemData(56, ItemClassification.progression, 800), | ||
|  |     "Gola's Fang":          LandstalkerItemData(57, ItemClassification.progression, 800), | ||
|  |     # Broad Sword: 58 | ||
|  |     # Leather Breast: 59 | ||
|  |     # Leather Boots: 60 | ||
|  |     # No Ring: 61 | ||
|  |     "Life Stock":           LandstalkerItemData(62, ItemClassification.filler,      250,    0),  # Variable amount | ||
|  |     "No Item":              LandstalkerItemData(63, ItemClassification.filler,      0,      0), | ||
|  |     "1 Gold":               LandstalkerItemData(64, ItemClassification.filler,      1), | ||
|  |     "20 Golds":             LandstalkerItemData(65, ItemClassification.filler,      20,     15), | ||
|  |     "50 Golds":             LandstalkerItemData(66, ItemClassification.filler,      50,     7), | ||
|  |     "100 Golds":            LandstalkerItemData(67, ItemClassification.filler,      100,    5), | ||
|  |     "200 Golds":            LandstalkerItemData(68, ItemClassification.useful,      200,    2), | ||
|  | 
 | ||
|  |     "Progressive Armor":    LandstalkerItemData(69, ItemClassification.useful,      250,    0), | ||
|  |     "Kazalt Jewel":         LandstalkerItemData(70, ItemClassification.progression, 500,    0) | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | def get_weighted_filler_item_names(): | ||
|  |     weighted_item_names: List[str] = [] | ||
|  |     for name, data in item_table.items(): | ||
|  |         if data.classification == ItemClassification.filler: | ||
|  |             weighted_item_names += [name for _ in range(data.quantity)] | ||
|  |     return weighted_item_names | ||
|  | 
 | ||
|  | 
 | ||
|  | def build_item_name_to_id_table(): | ||
|  |     return {name: data.id + BASE_ITEM_ID for name, data in item_table.items()} |