Polycosmos is a mod for the game Hades, which gives it integration with Archipelago Multiworld. Right now Polycosmos is in version: 0.12.0 and up to this version it possesses the feature detailed below:
Modes for heat:
Items:
Pact of Punishment down: an item that turns down the level of pact of punishment. Note the game may load this effect on the next room, biome or run.
Keys, Darkness, Gemstones, Diamonds, Titan Blood, Nectar and Ambrosia as filler items.
Weaponsanity: weapons can be randomized as items in the multiworld. Buying them counts as a location check.
Hidden Aspects: hidden aspects can be randomized as items in the multiworld, needing to get those before being able to buy them on Hades. Helps make them more balanced.
Keepsakesanity: keepsakes can randomized as items in the multiworld. Getting them count as a location check.
Storesanity: all important items from the store can be randomized in the multiworld. Buying them from the store counts as a location check.
FateSanity: The majority of the fated list can be used as a location for the multiworld. Completing them and cashing them grants the reward behind them.
Helpers: Get items that increase your max HP or help you get rarer boons.
Traps: Get sent some items that take away your health or money (avoid them though!)
Location Modes: Cleaning rooms will give location checks. Two modes can be chosen for how this works:
Settings:
Victory conditions tweaks:
Traps: -Add some traps into the item pool to keep you on your toes.
Quality of Life:
NOTE: up to the time of writing this mod does not guarantee any type of compatibility with other Hades mods. You have been warned!
Everyone at the Hades modding discord. They have been a massive help. Especially Magic_Gonads and PonyWarrior for answering my pestering questions. Also, the credit of StyxScribe is theirs and only theirs.
DoesBoKnow for proposing the multiworld and providing tons of resources and testing. Also for being a contributor since 0.4.0, contributing in some capacity to almost all the features from that point forward.
The AP discord and all the people in the Hades subthread have pitched in with ideas and helped keep me motivated. That includes but is not limited to, Flore for proposing the “reversed heat” idea (which was simple enough to start implementing almost right away, which made this much more bearable) and Sylvris for helping add proper APWorld support. Also thanks to all the testers for providing information about the bugs they encountered. I could have not made this without you.
Also, thanks to RobinLSL for having the patience to report a large number of typos.
A known issue is that some changes in heat level only take effect when starting the next room, biome or run starts. That is how Hades works and not much we can do about that.
You see some weird debug messages while playing with keyboard and mouse. To avoid this go to your main Hades folder, and in there open StyxScribe.py. Go to line 26 and in there change "DebugDraw=true" to "DebugDraw=false". In a future version, this will be disabled permanently.
Any other bug is not expected and reporting helps a ton :).
In StoreSanity the "spots" in the store are tied to a location in the original game. You can see the logic for each location below. Note that when obtaining items that have multiple levels, which are managed progressively (so if you get InfernalTrove3Item first that will appear as InternalTrove1Item in your game and be managed as such).
FountainUpgrade1Location: Requires FountainTartarusItem
FountainUpgrade2Location: Requires FountainUpgrade1Item
FountainAsphodelLocation: Requires FountainTartarusItem, Arriving to Asphodel, KeepsakeRack.
FountainElysiumLocation: Requires FountainTartarusItem, Arriving to Elysium, KeepsakeRack.
UrnsOfWealth1Location: Requires FountainTartarusItem
UrnsOfWealth2Location: Requires UrnsOfWealth1Item
UrnsOfWealth3Location: Requires UrnsOfWealth2Item
InfernalTrove1Location: Requires FountainElysiumItem, InfernalTrove1Item, KeepsakeRack.
InfernalTrove2Location: Requires FountainElysiumItem, InfernalTrove2Item, KeepsakeRack, DeluxeContractorDeskItem.
DeluxeContractorDeskLocation: Requires ElysiumFountainItem, CourtMusicianSentenceItem
VanishersKeepLocation: Requires DeluxeContractorDeskItem
FishingRodLocation: Requires getting to Temple of Styx, FountainTartarusItem.
CourtMusicianSentenceLocation: Requires getting to Asphodel, FountainTartarusItem.
CourtMusicianStandLocation: Requires CourtMusicianSentenceItem and the Scrying Pool (which is not an AP item).
PitchBlackDarknessLocation, FatedKeysLocation, BrilliantGemstonesLocation, VintageNectarLocation, DarkerThirstLocation: all require DeluxeContractorDeskItem
The following are the fates included in the Archipelago with their name as they show in the client and hints:
IsThereNoEscape?: Beat Hades Once.
DistantRelatives: Meet all the olympian gods. Note Gods will automatically "unlock" their first line when receiving nectar or obtaining their keepsake. Avoids the game being annoying with not giving the first line on some cases (especially Athenea and Artemis).
ChthonicColleagues: Meet all the underworlds NPCs.
TheReluctantMusician: Release Orpheus. That is, get the Court Musician Sentence Item.
GoddessOfWisdom: Get all Athenea's Boons.
GodOfTheHeavens: Get all Zeus's Boons.
GodOfTheSea: Get all Poseidon's Boons.
GoddessOfLove: Get all Aphrodite's Boons.
GodOfWar: Get all Ares's Boons.
GoddessOfTheHunt: Get all Arthemis's Boons.
GodOfWine: Get all Dionysus's Boons.
GodOfSwiftness: Get all Hermes's Boons.
GoddessOfSeasons: Get all Demeter's Boons.
PowerWithoutEqual: Obtain a Legendary Boon.
DivinePairings: Obtain a Duo Boon.
PrimordialBoons: Get all Chaos's positive effects.
PrimordialBanes: Get all Chaos's negative effects.
InfernalArms: Get all the weapons.
TheStygianBlade: Get all the sword's upgrades using the hammer.
TheHeartSeekingBow: Get all the bow's upgrades using the hammer.
TheShieldOfChaos: Get all the shield's upgrades using the hammer.
TheEternalSpear: Get all the spear's upgrades using the hammer.
TheTwinFists: Get all the fist's upgrades using the hammer.
TheAdamantRail: Get all the gun's upgrades using the hammer.
MasterOfArms: Escape using each one of the six weapons.
AViolentPast: Get all weapon hidden aspects.
HarshConditions: Escape the underworld with each one of the pact of punishments active during different runs.
SlashedBenefits: Kill enemies with all possible Benefits Package buffs.
WantonRansacking: Slay each one of the twelve mini-bosses.
ASimpleJob: Buy at least 30 orders from the House Contractor.
ChthonicKnowledge: Reveal 70 Codex's sections.
CustomerLoyalty: Buy each one of the goodies of the Well of Charon.
DarkReflections: Uses each of the mirror's talent to beat a run at least once.
CloseAtHeart: Equip each keepsake at least once.
DenizensOfTheDeep: Catch 25 fish and talk to Poseidon.
TheUselessTrinket: Beat Hades with at least 8 heat.
You get access to the second side of the mirror after getting 300 Darkness and talking to Nyx
In Keepsakesanity the Multiworld expects you to have the keepsake item before getting the keepsake location for each Olympian god.
You need to talk to Achilles a couple of times to get the Codex. Speak to him after each run and you should get it between runs 3 and 5.
The Codex tells you which NPCs still have a check behind giving them nectar.
To progress Patroclus dialogue and give him a nectar you need to check his entry on the Codex after meeting him.
There might be a case in which you want to collaborate to improve this multiworld or want to adapt this to bring other games to Archipelago. If that is the case; great! You can always put in contact with me at my discord. In any case, here is a broad overview of how this mod is set up.
First, there are 3 ingredients; Polycosmos mod, StyxScribe and the ArchipelagoClient. Broadly; the Polycosmos mod is what can directly influence the game (give Zag items, record when locations have been reached, etc.). The Archipelago Client is what Communicate with the AP Server, and can communicate messages to other clients (for example "HadesPlayer reached a location" or "HadesPlayer have received an item"). The StyxScribe is what can communicate the Polycosmos mod with the ArchipleagoCLient.
PolycosmosEvents: reacts to certain important events in the game (location reached, game loaded) by notifying other modules. PolycosmosHeatManager: manages the current Heat level according to the settings and items it receives PolycosmosItemManager: manages the reception of filler items PolycosmosMessages: It is the module that prints messages to the player. PolycosmosUtils: Contains functions that are useful to manage or parse data, but are agnostic to the mod structure, so do not fit in any other library.
Note that while some modules could be mashed together, these different functionalities have been split to be able to grow this in the most modular way possible.
As a side note, you might be considering why we even use StyxScribe and not import a .dll to use for the APClient (which already exists for game running in .lua). The reason is simple: Hades runs on a Lua compiler that does not allow the manual import of external files. It is why we use StyxScribe; to bypass this limitation as painlessly as possible. If other ways are found to also overcome this, another implementation of this mod might be possible which directly implements the client or other functionality inside Hades itself.
I do not expect financial support from this, but in case you want to support this or my GameDev adventures, you can give a TwitchSub on https://www.twitch.tv/naixsgames