Skip to content

Commit

Permalink
reorder items and add (Artifact) and (Recyclable) prefixes and name g…
Browse files Browse the repository at this point in the history
…roups
  • Loading branch information
Ixrec committed Mar 3, 2025
1 parent 9889ce0 commit 3c5f1ac
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 63 deletions.
10 changes: 6 additions & 4 deletions worlds/nine_sols/items.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ class NineSolsItemData(NamedTuple):
"Sol Seals": set(entry["name"] for entry in items_data if entry["name"].startswith("Seal of ")),
"Jades": set(entry["name"] for entry in items_data if (" Jade" in entry["name"])),
"Map Chips": set(entry["name"] for entry in items_data if entry["name"].endswith(" Chip")),
"Artifacts": set(entry["name"] for entry in items_data if entry["name"].startswith("(Artifact) ")),
"Recyclables": set(entry["name"] for entry in items_data if entry["name"].startswith("(Recyclable) ")),
"Poisons": set(entry["name"] for entry in items_data if entry["name"].startswith("(Poison) ")),
"Database Entries": set(entry["name"] for entry in items_data if entry["name"].startswith("(Database) ")),
}
Expand All @@ -77,17 +79,17 @@ def create_item(player: int, name: str) -> NineSolsItem:
"Greater Tao Fruit": 4,
"Computing Unit": 4, # with shop items, 8
"Dark Steel": 6,
"GM Fertilizer": 2,
"(Artifact) GM Fertilizer": 2,
}

# I doubt I counted these correctly, but they should be close enough to "feel right".
repeatable_filler_weights = {
"Jin x800": 4,
"Jin x320": 26,
"Jin x50": 72,
"Basic Component": 15,
"Standard Component": 30,
"Advanced Component": 13,
"(Recyclable) Basic Component": 15,
"(Recyclable) Standard Component": 30,
"(Recyclable) Advanced Component": 13,
}


Expand Down
113 changes: 62 additions & 51 deletions worlds/nine_sols/shared_static_logic/items.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -20,55 +20,66 @@
{ "code": 22, "name": "Arrow: Thunder Buster", "type": "useful" },
{ "code": 23, "name": "Arrow: Shadow Hunter", "type": "useful" },

// "Material"s
{ "code": 31, "name": "Herb Catalyst", "type": "useful" },
{ "code": 32, "name": "Pipe Vial", "type": "useful" },
{ "code": 33, "name": "Tao Fruit", "type": "useful" },
{ "code": 34, "name": "Greater Tao Fruit", "type": "useful" },
{ "code": 35, "name": "Twin Tao Fruit", "type": "useful" },
{ "code": 36, "name": "Computing Unit", "type": "useful" },
{ "code": 37, "name": "Dark Steel", "type": "useful" },

{ "code": 101, "name": "Abandoned Mines Access Token", "type": "progression" },
{ "code": 102, "name": "Legend of the Porky Heroes", "type": "progression" },
{ "code": 103, "name": "Ji's Hair", "type": "progression" },
{ "code": 104, "name": "Tianhuo Serum", "type": "progression" },
{ "code": 105, "name": "Elevator Access Token", "type": "progression" },
{ "code": 106, "name": "Rhizomatic Bomb", "type": "useful" },
{ "code": 107, "name": "Homing Darts", "type": "progression" },
{ "code": 108, "name": "Thunderburst Bomb", "type": "progression" },

{ "code": 109, "name": "Fusang Amulet", "type": "useful" },
{ "code": 110, "name": "Multi-tool Kit", "type": "useful" },
{ "code": 111, "name": "Ancient Sheet Music", "type": "progression" },
{ "code": 112, "name": "Unknown Seed", "type": "progression" },
{ "code": 113, "name": "GM Fertilizer", "type": "progression" },
{ "code": 114, "name": "Sword of Jie", "type": "useful" },
{ "code": 115, "name": "Antique Vinyl Record", "type": "useful" },
{ "code": 116, "name": "Qiankun Board", "type": "useful" },
{ "code": 117, "name": "Red Guifang Clay", "type": "useful" },
{ "code": 118, "name": "Penglai Recipe Collection", "type": "useful" },
{ "code": 119, "name": "Tiandao Academy Periodical", "type": "useful" },
{ "code": 120, "name": "Kunlun Immortal Portrait", "type": "progression" },
{ "code": 121, "name": "Virtual Reality Device", "type": "useful" },
{ "code": 122, "name": "Ready-to-Eat Rations", "type": "useful" },
{ "code": 123, "name": "The Four Treasures of the Study", "type": "progression" },

{ "code": 124, "name": "Bloody Crimson Hibiscus", "type": "filler" },
{ "code": 125, "name": "Ancient Penglai Ballad", "type": "progression" },
{ "code": 126, "name": "Portrait of Yi", "type": "progression" },
{ "code": 127, "name": "Poem Hidden in the Immortal's Portrait", "type": "filler" },
{ "code": 128, "name": "Soul-Severing Blade", "type": "useful" },
{ "code": 129, "name": "Firestorm Ring", "type": "useful" },

{ "code": 130, "name": "Noble Ring", "type": "useful" },
{ "code": 131, "name": "Passenger Token: Zouyan", "type": "filler" },
{ "code": 132, "name": "Passenger Token: A-Shou", "type": "filler" },
{ "code": 133, "name": "Passenger Token: Xipu", "type": "filler" },
{ "code": 134, "name": "Passenger Token: Yangfan", "type": "filler" },
{ "code": 135, "name": "Passenger Token: Jihai", "type": "filler" },
{ "code": 136, "name": "Passenger Token: Aimu", "type": "filler" },
{ "code": 137, "name": "Passenger Token: Shiyangyue", "type": "filler" },
{ "code": 138, "name": "Gene Eradicator", "type": "useful" },
{ "code": 32, "name": "Dark Steel", "type": "useful" },

// "Equipment"
{ "code": 41, "name": "Pipe Vial", "type": "useful" },
{ "code": 42, "name": "Computing Unit", "type": "useful" },

// "Key Item"s that are really just upgrades
{ "code": 51, "name": "Tao Fruit", "type": "useful" },
{ "code": 52, "name": "Greater Tao Fruit", "type": "useful" },
{ "code": 53, "name": "Twin Tao Fruit", "type": "useful" },

// progression "Artifact"s gifted to Shuanshuan
{ "code": 101, "name": "(Artifact) Ancient Sheet Music", "type": "progression" },
{ "code": 102, "name": "(Artifact) Kunlun Immortal Portrait", "type": "progression" },
{ "code": 103, "name": "(Artifact) The Four Treasures of the Study", "type": "progression" },
{ "code": 104, "name": "(Artifact) Unknown Seed", "type": "progression" },
{ "code": 105, "name": "(Artifact) GM Fertilizer", "type": "progression" },

// progression "Artifact"s created by Shuanshuan
{ "code": 111, "name": "(Artifact) Portrait of Yi", "type": "progression" },
{ "code": 112, "name": "(Artifact) Legend of the Porky Heroes", "type": "progression" },

// other "Artifact"s gifted to Shuanshuan
{ "code": 121, "name": "(Artifact) Fusang Amulet", "type": "useful" },
{ "code": 122, "name": "(Artifact) Multi-tool Kit", "type": "useful" },
{ "code": 123, "name": "(Artifact) Sword of Jie", "type": "useful" },
{ "code": 124, "name": "(Artifact) Antique Vinyl Record", "type": "useful" },
{ "code": 125, "name": "(Artifact) Qiankun Board", "type": "useful" },
{ "code": 126, "name": "(Artifact) Red Guifang Clay", "type": "useful" },
{ "code": 127, "name": "(Artifact) Penglai Recipe Collection", "type": "useful" },
{ "code": 128, "name": "(Artifact) Tiandao Academy Periodical", "type": "useful" },
{ "code": 129, "name": "(Artifact) Virtual Reality Device", "type": "useful" },
{ "code": 130, "name": "(Artifact) Ready-to-Eat Rations", "type": "useful" },

// other "Key Item"s, roughly in order of (randomizer) importance
{ "code": 141, "name": "Abandoned Mines Access Token", "type": "progression" },
{ "code": 142, "name": "Elevator Access Token", "type": "progression" },
{ "code": 143, "name": "Homing Darts", "type": "progression" },
{ "code": 144, "name": "Thunderburst Bomb", "type": "progression" },
{ "code": 145, "name": "Ancient Penglai Ballad", "type": "progression" },
{ "code": 146, "name": "Ji's Hair", "type": "progression" },
{ "code": 147, "name": "Tianhuo Serum", "type": "progression" },
{ "code": 148, "name": "Rhizomatic Bomb", "type": "useful" },
{ "code": 149, "name": "Soul-Severing Blade", "type": "useful" },
{ "code": 150, "name": "Firestorm Ring", "type": "useful" },
{ "code": 151, "name": "Poem Hidden in the Immortal's Portrait", "type": "filler" },
{ "code": 152, "name": "Bloody Crimson Hibiscus", "type": "filler" },

// unique recyclables (including Gene Eradicator since that's its best use)
{ "code": 161, "name": "(Recyclable) Noble Ring", "type": "useful" },
{ "code": 162, "name": "(Recyclable) Passenger Token: Zouyan", "type": "filler" },
{ "code": 163, "name": "(Recyclable) Passenger Token: A-Shou", "type": "filler" },
{ "code": 164, "name": "(Recyclable) Passenger Token: Xipu", "type": "filler" },
{ "code": 165, "name": "(Recyclable) Passenger Token: Yangfan", "type": "filler" },
{ "code": 166, "name": "(Recyclable) Passenger Token: Jihai", "type": "filler" },
{ "code": 167, "name": "(Recyclable) Passenger Token: Aimu", "type": "filler" },
{ "code": 168, "name": "(Recyclable) Passenger Token: Shiyangyue", "type": "filler" },
{ "code": 169, "name": "Gene Eradicator", "type": "useful" },

{ "code": 201, "name": "Central Core Chip", "type": "useful" },
{ "code": 202, "name": "Power Reservoir Chip", "type": "useful" },
Expand Down Expand Up @@ -158,9 +169,9 @@
{ "code": 601, "name": "Jin x800", "type": "filler" },
{ "code": 602, "name": "Jin x320", "type": "filler" },
{ "code": 603, "name": "Jin x50", "type": "filler" },
{ "code": 604, "name": "Basic Component", "type": "filler" },
{ "code": 605, "name": "Standard Component", "type": "filler" },
{ "code": 606, "name": "Advanced Component", "type": "filler" },
{ "code": 604, "name": "(Recyclable) Basic Component", "type": "filler" },
{ "code": 605, "name": "(Recyclable) Standard Component", "type": "filler" },
{ "code": 606, "name": "(Recyclable) Advanced Component", "type": "filler" },

{ "code": null, "name": "Victory - Eggnog", "type": "progression" },
{ "code": null, "name": "Event - Kuafu in FSP", "type": "progression" },
Expand Down
22 changes: 14 additions & 8 deletions worlds/nine_sols/shared_static_logic/locations.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -127,17 +127,23 @@
{
"address": 503, "name": "FSP: Decode the Ancient Sheet Music",
"region": "FSP - Root Node", "requires": [
{ "item": "Ancient Sheet Music" },
{ "item": "(Artifact) Ancient Sheet Music" },
{ "location": "Goumang's Vital Sanctum" }
]
},
{
"address": 504, "name": "FSP: Have Yi's Portrait Painted",
"region": "FSP - Root Node", "requires": [ { "item": "The Four Treasures of the Study" }, { "item": "Kunlun Immortal Portrait" } ]
"region": "FSP - Root Node", "requires": [
{ "item": "(Artifact) The Four Treasures of the Study" },
{ "item": "(Artifact) Kunlun Immortal Portrait" }
]
},
{
"address": 505, "name": "FSP: Give Yi's Portrait to Chiyou",
"region": "FSP - Root Node", "requires": [ { "item": "Event - Chiyou in FSP" }, { "item": "Portrait of Yi" } ]
"region": "FSP - Root Node", "requires": [
{ "item": "Event - Chiyou in FSP" },
{ "item": "(Artifact) Portrait of Yi" }
]
},
{
"address": 506, "name": "FSP: Receive Peach Blossom Village Quest",
Expand All @@ -158,29 +164,29 @@
"region": "FSP - Root Node", "requires": [
// testing implies these can't be done out of order, Portrait scene must be first
{ "location": "FSP: Give Yi's Portrait to Chiyou" },
{ "item": "Legend of the Porky Heroes" }
{ "item": "(Artifact) Legend of the Porky Heroes" }
]
},
{
"address": 509, "name": "FSP: Reveal the Kunlun Immortal Portrait's Secret",
"region": "FSP - Root Node", "requires": [
// these are the actual vanilla game conditions for the cutscene; prereqs like 4 Treasures are left implied
{ "item": "Kunlun Immortal Portrait" },
{ "item": "(Artifact) Kunlun Immortal Portrait" },
{ "item": "Cloud Leap" }, // presumably so you can actually reach the treasure
{ "location": "FSP: Have Yi's Portrait Painted" }
]
},
{
"address": 510, "name": "FSP: Half-Grown Tree Chest",
"region": "FSP - Root Node", "requires": [ { "item": "Unknown Seed" }, { "item": "GM Fertilizer" } ] // and Shennong
"region": "FSP - Root Node", "requires": [ { "item": "(Artifact) Unknown Seed" }, { "item": "(Artifact) GM Fertilizer" } ] // and Shennong
},
{
"address": 511, "name": "FSP: Fully Grown Tree 1st Chest",
"region": "FSP - Root Node", "requires": [ { "item": "Unknown Seed" }, { "item": "GM Fertilizer", "count": 2 } ] // and Shennong
"region": "FSP - Root Node", "requires": [ { "item": "(Artifact) Unknown Seed" }, { "item": "(Artifact) GM Fertilizer", "count": 2 } ] // and Shennong
},
{
"address": 512, "name": "FSP: Fully Grown Tree 2nd Chest",
"region": "FSP - Root Node", "requires": [ { "item": "Unknown Seed" }, { "item": "GM Fertilizer", "count": 2 } ] // and Shennong
"region": "FSP - Root Node", "requires": [ { "item": "(Artifact) Unknown Seed" }, { "item": "(Artifact) GM Fertilizer", "count": 2 } ] // and Shennong
},
{
"address": 513, "name": "FSP: Isolate the Mutant Gene Sequence",
Expand Down
Binary file modified worlds/nine_sols/shared_static_logic/static_logic.pickle
Binary file not shown.

0 comments on commit 3c5f1ac

Please sign in to comment.