373 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			373 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from BaseClasses import Location
 | 
						|
import typing
 | 
						|
 | 
						|
 | 
						|
class AdvData(typing.NamedTuple):
 | 
						|
    id: typing.Optional[int]
 | 
						|
    region: str
 | 
						|
 | 
						|
 | 
						|
class UndertaleAdvancement(Location):
 | 
						|
    game: str = "Undertale"
 | 
						|
 | 
						|
 | 
						|
advancement_table = {
 | 
						|
    "Snowman": AdvData(79100, "Snowdin Forest"),
 | 
						|
    "Snowman 2": AdvData(79101, "Snowdin Forest"),
 | 
						|
    "Snowman 3": AdvData(79102, "Snowdin Forest"),
 | 
						|
    "Nicecream Snowdin": AdvData(79001, "Snowdin Forest"),
 | 
						|
    "Nicecream Waterfall": AdvData(79002, "Waterfall"),
 | 
						|
    "Nicecream Punch Card": AdvData(79003, "Waterfall"),
 | 
						|
    "Quiche Bench": AdvData(79004, "Waterfall"),
 | 
						|
    "Tutu Hidden": AdvData(79005, "Waterfall"),
 | 
						|
    "Card Reward": AdvData(79006, "Waterfall"),
 | 
						|
    "Grass Shoes": AdvData(79007, "Waterfall"),
 | 
						|
    "Noodles Fridge": AdvData(79008, "Hotland"),
 | 
						|
    "Pan Hidden": AdvData(79009, "Hotland"),
 | 
						|
    "Apron Hidden": AdvData(79010, "Hotland"),
 | 
						|
    "Trash Burger": AdvData(79011, "Core"),
 | 
						|
    "Present Knife": AdvData(79012, "New Home"),
 | 
						|
    "Present Locket": AdvData(79013, "New Home"),
 | 
						|
    "Candy 1": AdvData(79014, "Ruins"),
 | 
						|
    "Candy 2": AdvData(79015, "Ruins"),
 | 
						|
    "Candy 3": AdvData(79016, "Ruins"),
 | 
						|
    "Candy 4": AdvData(79017, "Ruins"),
 | 
						|
    "Donut Sale": AdvData(79018, "Ruins"),
 | 
						|
    "Cider Sale": AdvData(79019, "Ruins"),
 | 
						|
    "Ribbon Cracks": AdvData(79020, "Ruins"),
 | 
						|
    "Toy Knife Edge": AdvData(79021, "Ruins"),
 | 
						|
    "B.Scotch Pie Given": AdvData(79022, "Ruins"),
 | 
						|
    "Astro 1": AdvData(79023, "Waterfall"),
 | 
						|
    "Astro 2": AdvData(79024, "Waterfall"),
 | 
						|
    "Dog Sale 1": AdvData(79026, "Hotland"),
 | 
						|
    "Cat Sale": AdvData(79027, "Hotland"),
 | 
						|
    "Dog Sale 2": AdvData(79028, "Hotland"),
 | 
						|
    "Dog Sale 3": AdvData(79029, "Hotland"),
 | 
						|
    "Dog Sale 4": AdvData(79030, "Hotland"),
 | 
						|
    "Chisps Machine": AdvData(79031, "True Lab"),
 | 
						|
    "Hush Trade": AdvData(79032, "Hotland"),
 | 
						|
    "Letter Quest": AdvData(79033, "Snowdin Town"),
 | 
						|
    "Bunny 1": AdvData(79034, "Snowdin Town"),
 | 
						|
    "Bunny 2": AdvData(79035, "Snowdin Town"),
 | 
						|
    "Bunny 3": AdvData(79036, "Snowdin Town"),
 | 
						|
    "Bunny 4": AdvData(79037, "Snowdin Town"),
 | 
						|
    "Gerson 1": AdvData(79038, "Waterfall"),
 | 
						|
    "Gerson 2": AdvData(79039, "Waterfall"),
 | 
						|
    "Gerson 3": AdvData(79040, "Waterfall"),
 | 
						|
    "Gerson 4": AdvData(79041, "Waterfall"),
 | 
						|
    "Bratty Catty 1": AdvData(79042, "Hotland"),
 | 
						|
    "Bratty Catty 2": AdvData(79043, "Hotland"),
 | 
						|
    "Bratty Catty 3": AdvData(79044, "Hotland"),
 | 
						|
    "Bratty Catty 4": AdvData(79045, "Hotland"),
 | 
						|
    "Burgerpants 1": AdvData(79046, "Hotland"),
 | 
						|
    "Burgerpants 2": AdvData(79047, "Hotland"),
 | 
						|
    "Burgerpants 3": AdvData(79048, "Hotland"),
 | 
						|
    "Burgerpants 4": AdvData(79049, "Hotland"),
 | 
						|
    "TemmieShop 1": AdvData(79050, "Waterfall"),
 | 
						|
    "TemmieShop 2": AdvData(79051, "Waterfall"),
 | 
						|
    "TemmieShop 3": AdvData(79052, "Waterfall"),
 | 
						|
    "TemmieShop 4": AdvData(79053, "Waterfall"),
 | 
						|
    "Papyrus Plot": AdvData(79056, "Snowdin Town"),
 | 
						|
    "Undyne Plot": AdvData(79057, "Waterfall"),
 | 
						|
    "Mettaton Plot": AdvData(79062, "Core"),
 | 
						|
    "True Lab Plot": AdvData(79063, "Hotland"),
 | 
						|
    "Left New Home Key": AdvData(79064, "New Home"),
 | 
						|
    "Right New Home Key": AdvData(79065, "New Home"),
 | 
						|
    "LOVE 2": AdvData(79902, "???"),
 | 
						|
    "LOVE 3": AdvData(79903, "???"),
 | 
						|
    "LOVE 4": AdvData(79904, "???"),
 | 
						|
    "LOVE 5": AdvData(79905, "???"),
 | 
						|
    "LOVE 6": AdvData(79906, "???"),
 | 
						|
    "LOVE 7": AdvData(79907, "???"),
 | 
						|
    "LOVE 8": AdvData(79908, "???"),
 | 
						|
    "LOVE 9": AdvData(79909, "???"),
 | 
						|
    "LOVE 10": AdvData(79910, "???"),
 | 
						|
    "LOVE 11": AdvData(79911, "???"),
 | 
						|
    "LOVE 12": AdvData(79912, "???"),
 | 
						|
    "LOVE 13": AdvData(79913, "???"),
 | 
						|
    "LOVE 14": AdvData(79914, "???"),
 | 
						|
    "LOVE 15": AdvData(79915, "???"),
 | 
						|
    "LOVE 16": AdvData(79916, "???"),
 | 
						|
    "LOVE 17": AdvData(79917, "???"),
 | 
						|
    "LOVE 18": AdvData(79918, "???"),
 | 
						|
    "LOVE 19": AdvData(79919, "???"),
 | 
						|
    "LOVE 20": AdvData(79920, "???"),
 | 
						|
    "ATK 2": AdvData(79800, "???"),
 | 
						|
    "ATK 3": AdvData(79801, "???"),
 | 
						|
    "ATK 4": AdvData(79802, "???"),
 | 
						|
    "ATK 5": AdvData(79803, "???"),
 | 
						|
    "ATK 6": AdvData(79804, "???"),
 | 
						|
    "ATK 7": AdvData(79805, "???"),
 | 
						|
    "ATK 8": AdvData(79806, "???"),
 | 
						|
    "ATK 9": AdvData(79807, "???"),
 | 
						|
    "ATK 10": AdvData(79808, "???"),
 | 
						|
    "ATK 11": AdvData(79809, "???"),
 | 
						|
    "ATK 12": AdvData(79810, "???"),
 | 
						|
    "ATK 13": AdvData(79811, "???"),
 | 
						|
    "ATK 14": AdvData(79812, "???"),
 | 
						|
    "ATK 15": AdvData(79813, "???"),
 | 
						|
    "ATK 16": AdvData(79814, "???"),
 | 
						|
    "ATK 17": AdvData(79815, "???"),
 | 
						|
    "ATK 18": AdvData(79816, "???"),
 | 
						|
    "ATK 19": AdvData(79817, "???"),
 | 
						|
    "ATK 20": AdvData(79818, "???"),
 | 
						|
    "DEF 5": AdvData(79700, "???"),
 | 
						|
    "DEF 9": AdvData(79701, "???"),
 | 
						|
    "DEF 13": AdvData(79702, "???"),
 | 
						|
    "DEF 17": AdvData(79703, "???"),
 | 
						|
    "HP 2": AdvData(79600, "???"),
 | 
						|
    "HP 3": AdvData(79601, "???"),
 | 
						|
    "HP 4": AdvData(79602, "???"),
 | 
						|
    "HP 5": AdvData(79603, "???"),
 | 
						|
    "HP 6": AdvData(79604, "???"),
 | 
						|
    "HP 7": AdvData(79605, "???"),
 | 
						|
    "HP 8": AdvData(79606, "???"),
 | 
						|
    "HP 9": AdvData(79607, "???"),
 | 
						|
    "HP 10": AdvData(79608, "???"),
 | 
						|
    "HP 11": AdvData(79609, "???"),
 | 
						|
    "HP 12": AdvData(79610, "???"),
 | 
						|
    "HP 13": AdvData(79611, "???"),
 | 
						|
    "HP 14": AdvData(79612, "???"),
 | 
						|
    "HP 15": AdvData(79613, "???"),
 | 
						|
    "HP 16": AdvData(79614, "???"),
 | 
						|
    "HP 17": AdvData(79615, "???"),
 | 
						|
    "HP 18": AdvData(79616, "???"),
 | 
						|
    "HP 19": AdvData(79617, "???"),
 | 
						|
    "HP 20": AdvData(79618, "???"),
 | 
						|
    "Undyne Date": AdvData(None, "Undyne\"s Home"),
 | 
						|
    "Alphys Date": AdvData(None, "Hotland"),
 | 
						|
    "Papyrus Date": AdvData(None, "Papyrus\" Home"),
 | 
						|
}
 | 
						|
 | 
						|
exclusion_table = {
 | 
						|
    "pacifist": {
 | 
						|
        "LOVE 2",
 | 
						|
        "LOVE 3",
 | 
						|
        "LOVE 4",
 | 
						|
        "LOVE 5",
 | 
						|
        "LOVE 6",
 | 
						|
        "LOVE 7",
 | 
						|
        "LOVE 8",
 | 
						|
        "LOVE 9",
 | 
						|
        "LOVE 10",
 | 
						|
        "LOVE 11",
 | 
						|
        "LOVE 12",
 | 
						|
        "LOVE 13",
 | 
						|
        "LOVE 14",
 | 
						|
        "LOVE 15",
 | 
						|
        "LOVE 16",
 | 
						|
        "LOVE 17",
 | 
						|
        "LOVE 18",
 | 
						|
        "LOVE 19",
 | 
						|
        "LOVE 20",
 | 
						|
        "ATK 2",
 | 
						|
        "ATK 3",
 | 
						|
        "ATK 4",
 | 
						|
        "ATK 5",
 | 
						|
        "ATK 6",
 | 
						|
        "ATK 7",
 | 
						|
        "ATK 8",
 | 
						|
        "ATK 9",
 | 
						|
        "ATK 10",
 | 
						|
        "ATK 11",
 | 
						|
        "ATK 12",
 | 
						|
        "ATK 13",
 | 
						|
        "ATK 14",
 | 
						|
        "ATK 15",
 | 
						|
        "ATK 16",
 | 
						|
        "ATK 17",
 | 
						|
        "ATK 18",
 | 
						|
        "ATK 19",
 | 
						|
        "ATK 20",
 | 
						|
        "DEF 5",
 | 
						|
        "DEF 9",
 | 
						|
        "DEF 13",
 | 
						|
        "DEF 17",
 | 
						|
        "HP 2",
 | 
						|
        "HP 3",
 | 
						|
        "HP 4",
 | 
						|
        "HP 5",
 | 
						|
        "HP 6",
 | 
						|
        "HP 7",
 | 
						|
        "HP 8",
 | 
						|
        "HP 9",
 | 
						|
        "HP 10",
 | 
						|
        "HP 11",
 | 
						|
        "HP 12",
 | 
						|
        "HP 13",
 | 
						|
        "HP 14",
 | 
						|
        "HP 15",
 | 
						|
        "HP 16",
 | 
						|
        "HP 17",
 | 
						|
        "HP 18",
 | 
						|
        "HP 19",
 | 
						|
        "HP 20",
 | 
						|
        "Snowman 2",
 | 
						|
        "Snowman 3",
 | 
						|
    },
 | 
						|
    "neutral": {
 | 
						|
        "Letter Quest",
 | 
						|
        "Dog Sale 1",
 | 
						|
        "Cat Sale",
 | 
						|
        "Dog Sale 2",
 | 
						|
        "Dog Sale 3",
 | 
						|
        "Dog Sale 4",
 | 
						|
        "Chisps Machine",
 | 
						|
        "Hush Trade",
 | 
						|
        "LOVE 2",
 | 
						|
        "LOVE 3",
 | 
						|
        "LOVE 4",
 | 
						|
        "LOVE 5",
 | 
						|
        "LOVE 6",
 | 
						|
        "LOVE 7",
 | 
						|
        "LOVE 8",
 | 
						|
        "LOVE 9",
 | 
						|
        "LOVE 10",
 | 
						|
        "LOVE 11",
 | 
						|
        "LOVE 12",
 | 
						|
        "LOVE 13",
 | 
						|
        "LOVE 14",
 | 
						|
        "LOVE 15",
 | 
						|
        "LOVE 16",
 | 
						|
        "LOVE 17",
 | 
						|
        "LOVE 18",
 | 
						|
        "LOVE 19",
 | 
						|
        "LOVE 20",
 | 
						|
        "Papyrus Plot",
 | 
						|
        "Undyne Plot",
 | 
						|
        "True Lab Plot",
 | 
						|
        "ATK 2",
 | 
						|
        "ATK 3",
 | 
						|
        "ATK 4",
 | 
						|
        "ATK 5",
 | 
						|
        "ATK 6",
 | 
						|
        "ATK 7",
 | 
						|
        "ATK 8",
 | 
						|
        "ATK 9",
 | 
						|
        "ATK 10",
 | 
						|
        "ATK 11",
 | 
						|
        "ATK 12",
 | 
						|
        "ATK 13",
 | 
						|
        "ATK 14",
 | 
						|
        "ATK 15",
 | 
						|
        "ATK 16",
 | 
						|
        "ATK 17",
 | 
						|
        "ATK 18",
 | 
						|
        "ATK 19",
 | 
						|
        "ATK 20",
 | 
						|
        "DEF 5",
 | 
						|
        "DEF 9",
 | 
						|
        "DEF 13",
 | 
						|
        "DEF 17",
 | 
						|
        "HP 2",
 | 
						|
        "HP 3",
 | 
						|
        "HP 4",
 | 
						|
        "HP 5",
 | 
						|
        "HP 6",
 | 
						|
        "HP 7",
 | 
						|
        "HP 8",
 | 
						|
        "HP 9",
 | 
						|
        "HP 10",
 | 
						|
        "HP 11",
 | 
						|
        "HP 12",
 | 
						|
        "HP 13",
 | 
						|
        "HP 14",
 | 
						|
        "HP 15",
 | 
						|
        "HP 16",
 | 
						|
        "HP 17",
 | 
						|
        "HP 18",
 | 
						|
        "HP 19",
 | 
						|
        "HP 20",
 | 
						|
        "Snowman 2",
 | 
						|
        "Snowman 3",
 | 
						|
    },
 | 
						|
    "genocide": {
 | 
						|
        "Letter Quest",
 | 
						|
        "Dog Sale 1",
 | 
						|
        "Cat Sale",
 | 
						|
        "Dog Sale 2",
 | 
						|
        "Dog Sale 3",
 | 
						|
        "Dog Sale 4",
 | 
						|
        "Chisps Machine",
 | 
						|
        "Nicecream Snowdin",
 | 
						|
        "Nicecream Waterfall",
 | 
						|
        "Nicecream Punch Card",
 | 
						|
        "Card Reward",
 | 
						|
        "Apron Hidden",
 | 
						|
        "Hush Trade",
 | 
						|
        "Papyrus Plot",
 | 
						|
        "Undyne Plot",
 | 
						|
        "True Lab Plot",
 | 
						|
    },
 | 
						|
    "NoLove": {
 | 
						|
        "LOVE 2",
 | 
						|
        "LOVE 3",
 | 
						|
        "LOVE 4",
 | 
						|
        "LOVE 5",
 | 
						|
        "LOVE 6",
 | 
						|
        "LOVE 7",
 | 
						|
        "LOVE 8",
 | 
						|
        "LOVE 9",
 | 
						|
        "LOVE 10",
 | 
						|
        "LOVE 11",
 | 
						|
        "LOVE 12",
 | 
						|
        "LOVE 13",
 | 
						|
        "LOVE 14",
 | 
						|
        "LOVE 15",
 | 
						|
        "LOVE 16",
 | 
						|
        "LOVE 17",
 | 
						|
        "LOVE 18",
 | 
						|
        "LOVE 19",
 | 
						|
        "LOVE 20",
 | 
						|
    },
 | 
						|
    "NoStats": {
 | 
						|
        "ATK 2",
 | 
						|
        "ATK 3",
 | 
						|
        "ATK 4",
 | 
						|
        "ATK 5",
 | 
						|
        "ATK 6",
 | 
						|
        "ATK 7",
 | 
						|
        "ATK 8",
 | 
						|
        "ATK 9",
 | 
						|
        "ATK 10",
 | 
						|
        "ATK 11",
 | 
						|
        "ATK 12",
 | 
						|
        "ATK 13",
 | 
						|
        "ATK 14",
 | 
						|
        "ATK 15",
 | 
						|
        "ATK 16",
 | 
						|
        "ATK 17",
 | 
						|
        "ATK 18",
 | 
						|
        "ATK 19",
 | 
						|
        "ATK 20",
 | 
						|
        "DEF 5",
 | 
						|
        "DEF 9",
 | 
						|
        "DEF 13",
 | 
						|
        "DEF 17",
 | 
						|
        "HP 2",
 | 
						|
        "HP 3",
 | 
						|
        "HP 4",
 | 
						|
        "HP 5",
 | 
						|
        "HP 6",
 | 
						|
        "HP 7",
 | 
						|
        "HP 8",
 | 
						|
        "HP 9",
 | 
						|
        "HP 10",
 | 
						|
        "HP 11",
 | 
						|
        "HP 12",
 | 
						|
        "HP 13",
 | 
						|
        "HP 14",
 | 
						|
        "HP 15",
 | 
						|
        "HP 16",
 | 
						|
        "HP 17",
 | 
						|
        "HP 18",
 | 
						|
        "HP 19",
 | 
						|
        "HP 20",
 | 
						|
    },
 | 
						|
    "all_routes": {
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
events_table = {
 | 
						|
}
 |