Skip to content

Commit

Permalink
Undertale for AP (ArchipelagoMW#439)
Browse files Browse the repository at this point in the history
Randomizes the items, and adds a new item to the pool, "Plot" which lets you go further and further in the game the more you have.

Developers: WirTheAvali (Preferred name for professional use, mewlif)
  • Loading branch information
jonloveslegos authored Jun 27, 2023
1 parent 71bfb6b commit 553fe0b
Show file tree
Hide file tree
Showing 13 changed files with 1,904 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
*.apsave
*.BIN

setups
build
bundle/components.wxs
dist
Expand Down Expand Up @@ -176,6 +177,9 @@ minecraft_versions.json
# pyenv
.python-version

#undertale stuff
/Undertale/

# OS General Files
.DS_Store
.AppleDouble
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Currently, the following games are supported:
* Adventure
* DLC Quest
* Noita
* Undertale

For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/).
Downloads can be found at [Releases](https://github.com/ArchipelagoMW/Archipelago/releases), including compiled
Expand Down
498 changes: 498 additions & 0 deletions UndertaleClient.py

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions inno_setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ Name: "client/wargroove"; Description: "Wargroove"; Types: full playing
Name: "client/zl"; Description: "Zillion"; Types: full playing
Name: "client/tloz"; Description: "The Legend of Zelda"; Types: full playing
Name: "client/advn"; Description: "Adventure"; Types: full playing
Name: "client/ut"; Description: "Undertale"; Types: full playing
Name: "client/text"; Description: "Text, to !command and chat"; Types: full playing

[Dirs]
Expand Down Expand Up @@ -131,6 +132,7 @@ Source: "{#source_path}\ArchipelagoZelda1Client.exe"; DestDir: "{app}"; Flags: i
Source: "{#source_path}\ArchipelagoWargrooveClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/wargroove
Source: "{#source_path}\ArchipelagoKH2Client.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/kh2
Source: "{#source_path}\ArchipelagoAdventureClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/advn
Source: "{#source_path}\ArchipelagoUndertaleClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/ut
Source: "vc_redist.x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall

[Icons]
Expand All @@ -150,6 +152,7 @@ Name: "{group}\{#MyAppName} The Legend of Zelda Client"; Filename: "{app}\Archip
Name: "{group}\{#MyAppName} Kingdom Hearts 2 Client"; Filename: "{app}\ArchipelagoKH2Client.exe"; Components: client/kh2
Name: "{group}\{#MyAppName} Adventure Client"; Filename: "{app}\ArchipelagoAdventureClient.exe"; Components: client/advn
Name: "{group}\{#MyAppName} Wargroove Client"; Filename: "{app}\ArchipelagoWargrooveClient.exe"; Components: client/wargroove
Name: "{group}\{#MyAppName} Undertale Client"; Filename: "{app}\ArchipelagoUndertaleClient.exe"; Components: client/ut

Name: "{commondesktop}\{#MyAppName} Folder"; Filename: "{app}"; Tasks: desktopicon
Name: "{commondesktop}\{#MyAppName} Server"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon; Components: server
Expand All @@ -166,6 +169,7 @@ Name: "{commondesktop}\{#MyAppName} The Legend of Zelda Client"; Filename: "{app
Name: "{commondesktop}\{#MyAppName} Wargroove Client"; Filename: "{app}\ArchipelagoWargrooveClient.exe"; Tasks: desktopicon; Components: client/wargroove
Name: "{commondesktop}\{#MyAppName} Kingdom Hearts 2 Client"; Filename: "{app}\ArchipelagoKH2Client.exe"; Tasks: desktopicon; Components: client/kh2
Name: "{commondesktop}\{#MyAppName} Adventure Client"; Filename: "{app}\ArchipelagoAdventureClient.exe"; Tasks: desktopicon; Components: client/advn
Name: "{commondesktop}\{#MyAppName} Undertale Client"; Filename: "{app}\ArchipelagoUndertaleClient.exe"; Tasks: desktopicon; Components: client/ut

[Run]

Expand Down
241 changes: 241 additions & 0 deletions worlds/undertale/Items.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
from BaseClasses import Item, ItemClassification
import typing


class ItemData(typing.NamedTuple):
code: typing.Optional[int]
classification: any


class UndertaleItem(Item):
game: str = "Undertale"


item_table = {
"Progressive Plot": ItemData(77700, ItemClassification.progression),
"Progressive Weapons": ItemData(77701, ItemClassification.useful),
"Progressive Armor": ItemData(77702, ItemClassification.useful),
"Monster Candy": ItemData(77001, ItemClassification.filler),
"Croquet Roll": ItemData(77002, ItemClassification.filler),
"Stick": ItemData(77003, ItemClassification.useful),
"Bandage": ItemData(77004, ItemClassification.useful),
"Rock Candy": ItemData(77005, ItemClassification.filler),
"Pumpkin Rings": ItemData(77006, ItemClassification.filler),
"Spider Donut": ItemData(77007, ItemClassification.filler),
"Stoic Onion": ItemData(77008, ItemClassification.filler),
"Ghost Fruit": ItemData(77009, ItemClassification.filler),
"Spider Cider": ItemData(77010, ItemClassification.filler),
"Butterscotch Pie": ItemData(77011, ItemClassification.useful),
"Faded Ribbon": ItemData(77012, ItemClassification.useful),
"Toy Knife": ItemData(77013, ItemClassification.useful),
"Tough Glove": ItemData(77014, ItemClassification.useful),
"Manly Bandanna": ItemData(77015, ItemClassification.useful),
"Snowman Piece": ItemData(77016, ItemClassification.useful),
"Nice Cream": ItemData(77017, ItemClassification.filler),
"Puppydough Icecream": ItemData(77018, ItemClassification.filler),
"Bisicle": ItemData(77019, ItemClassification.filler),
"Unisicle": ItemData(77020, ItemClassification.filler),
"Cinnamon Bun": ItemData(77021, ItemClassification.filler),
"Temmie Flakes": ItemData(77022, ItemClassification.filler),
"Abandoned Quiche": ItemData(77023, ItemClassification.filler),
"Old Tutu": ItemData(77024, ItemClassification.useful),
"Ballet Shoes": ItemData(77025, ItemClassification.useful),
"Punch Card": ItemData(77026, ItemClassification.progression),
"Annoying Dog": ItemData(77027, ItemClassification.filler),
"Dog Salad": ItemData(77028, ItemClassification.filler),
"Dog Residue": ItemData(77029, ItemClassification.filler),
"Astronaut Food": ItemData(77035, ItemClassification.filler),
"Instant Noodles": ItemData(77036, ItemClassification.useful),
"Crab Apple": ItemData(77037, ItemClassification.filler),
"Hot Dog...?": ItemData(77038, ItemClassification.progression),
"Hot Cat": ItemData(77039, ItemClassification.filler),
"Glamburger": ItemData(77040, ItemClassification.filler),
"Sea Tea": ItemData(77041, ItemClassification.filler),
"Starfait": ItemData(77042, ItemClassification.filler),
"Legendary Hero": ItemData(77043, ItemClassification.filler),
"Cloudy Glasses": ItemData(77044, ItemClassification.useful),
"Torn Notebook": ItemData(77045, ItemClassification.useful),
"Stained Apron": ItemData(77046, ItemClassification.useful),
"Burnt Pan": ItemData(77047, ItemClassification.useful),
"Cowboy Hat": ItemData(77048, ItemClassification.useful),
"Empty Gun": ItemData(77049, ItemClassification.useful),
"Heart Locket": ItemData(77050, ItemClassification.useful),
"Worn Dagger": ItemData(77051, ItemClassification.useful),
"Real Knife": ItemData(77052, ItemClassification.useful),
"The Locket": ItemData(77053, ItemClassification.useful),
"Bad Memory": ItemData(77054, ItemClassification.filler),
"Dream": ItemData(77055, ItemClassification.filler),
"Undyne's Letter": ItemData(77056, ItemClassification.filler),
"Undyne Letter EX": ItemData(77057, ItemClassification.progression),
"Popato Chisps": ItemData(77058, ItemClassification.filler),
"Junk Food": ItemData(77059, ItemClassification.filler),
"Mystery Key": ItemData(77060, ItemClassification.filler),
"Face Steak": ItemData(77061, ItemClassification.filler),
"Hush Puppy": ItemData(77062, ItemClassification.filler),
"Snail Pie": ItemData(77063, ItemClassification.filler),
"temy armor": ItemData(77064, ItemClassification.useful),
"Complete Skeleton": ItemData(77779, ItemClassification.progression),
"Fish": ItemData(77780, ItemClassification.progression),
"DT Extractor": ItemData(77782, ItemClassification.progression),
"Mettaton Plush": ItemData(77786, ItemClassification.progression),
"Left Home Key": ItemData(77787, ItemClassification.progression),
"LOVE": ItemData(77788, ItemClassification.useful),
"Right Home Key": ItemData(77789, ItemClassification.progression),
"Key Piece": ItemData(77000, ItemClassification.progression),
"100G": ItemData(77999, ItemClassification.useful),
"500G": ItemData(77998, ItemClassification.useful),
"1000G": ItemData(77997, ItemClassification.progression),
"ATK Up": ItemData(77065, ItemClassification.useful),
"DEF Up": ItemData(77066, ItemClassification.useful),
"HP Up": ItemData(77067, ItemClassification.useful),
"FIGHT": ItemData(77077, ItemClassification.progression),
"ACT": ItemData(77078, ItemClassification.progression),
"ITEM": ItemData(77079, ItemClassification.progression),
"MERCY": ItemData(77080, ItemClassification.progression),
"Ruins Key": ItemData(77081, ItemClassification.progression),
"Snowdin Key": ItemData(77082, ItemClassification.progression),
"Waterfall Key": ItemData(77083, ItemClassification.progression),
"Hotland Key": ItemData(77084, ItemClassification.progression),
"Core Key": ItemData(77085, ItemClassification.progression),
"Undyne Date": ItemData(None, ItemClassification.progression),
"Alphys Date": ItemData(None, ItemClassification.progression),
"Papyrus Date": ItemData(None, ItemClassification.progression),
}

non_key_items = {
"Butterscotch Pie": 1,
"500G": 2,
"1000G": 2,
"Face Steak": 1,
"Snowman Piece": 1,
"Instant Noodles": 1,
"Astronaut Food": 2,
"Hot Cat": 1,
"Abandoned Quiche": 1,
"Spider Donut": 1,
"Spider Cider": 1,
"Hush Puppy": 1,
}

required_armor = {
"Cloudy Glasses": 1,
"Manly Bandanna": 1,
"Old Tutu": 1,
"Stained Apron": 1,
"Heart Locket": 1,
"Faded Ribbon": 1,
"Cowboy Hat": 1,
}

required_weapons = {
"Torn Notebook": 1,
"Tough Glove": 1,
"Ballet Shoes": 1,
"Burnt Pan": 1,
"Worn Dagger": 1,
"Toy Knife": 1,
"Empty Gun": 1,
}

plot_items = {
"Complete Skeleton": 1,
"Fish": 1,
"Mettaton Plush": 1,
"DT Extractor": 1,
}

key_items = {
"Complete Skeleton": 1,
"Fish": 1,
"DT Extractor": 1,
"Mettaton Plush": 1,
"Punch Card": 3,
"Hot Dog...?": 1,
"ATK Up": 19,
"DEF Up": 4,
"HP Up": 19,
"LOVE": 19,
"Ruins Key": 1,
"Snowdin Key": 1,
"Waterfall Key": 1,
"Hotland Key": 1,
"Core Key": 1,
}

junk_weights_all = {
"Bisicle": 12,
"Legendary Hero": 8,
"Glamburger": 10,
"Crab Apple": 12,
"Sea Tea": 12,
"Nice Cream": 10,
"Spider Donut": 10,
"Popato Chisps": 12,
"Junk Food": 12,
"Temmie Flakes": 10,
"Spider Cider": 8,
"Hot Dog...?": 10,
"Cinnamon Bun": 10,
"Starfait": 12,
"Punch Card": 8,
"Monster Candy": 6,
"100G": 6,
"500G": 3,
}

junk_weights_neutral = {
"Bisicle": 12,
"Legendary Hero": 8,
"Glamburger": 10,
"Crab Apple": 12,
"Sea Tea": 12,
"Nice Cream": 10,
"Spider Donut": 10,
"Junk Food": 12,
"Temmie Flakes": 10,
"Spider Cider": 8,
"Cinnamon Bun": 10,
"Starfait": 12,
"Punch Card": 8,
"Monster Candy": 6,
"100G": 6,
"500G": 3,
}

junk_weights_pacifist = {
"Bisicle": 12,
"Legendary Hero": 8,
"Glamburger": 10,
"Crab Apple": 12,
"Sea Tea": 12,
"Nice Cream": 10,
"Spider Donut": 10,
"Popato Chisps": 12,
"Junk Food": 12,
"Temmie Flakes": 10,
"Spider Cider": 8,
"Hot Dog...?": 10,
"Cinnamon Bun": 10,
"Starfait": 12,
"Punch Card": 8,
"Monster Candy": 6,
"100G": 6,
"500G": 3,
}

junk_weights_genocide = {
"Bisicle": 12,
"Legendary Hero": 8,
"Glamburger": 10,
"Crab Apple": 12,
"Sea Tea": 12,
"Spider Donut": 10,
"Junk Food": 12,
"Temmie Flakes": 10,
"Spider Cider": 8,
"Cinnamon Bun": 10,
"Starfait": 12,
"Monster Candy": 6,
"100G": 6,
"500G": 3,
}
Loading

0 comments on commit 553fe0b

Please sign in to comment.