NaixGames / Polycosmos

Mod for integrating Hades into AP Multiworld
MIT License
4 stars 3 forks source link

Polycosmos

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:

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:

Requirements

NOTE: up to the time of writing this mod does not guarantee any type of compatibility with other Hades mods. You have been warned!

How to use Polycosmos

Credits

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.

Bugs

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 :).

StoreSanity logic

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).

Fates names and logic

The following are the fates included in the Archipelago with their name as they show in the client and hints:

Other logic facts

How this mod works

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.

Financial support

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