Seraphin- / siralim-planner

A simple build planner tool for Siralim Ultimate.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Siralim Planner

Fork information

This fork contains code to support simple notes and spells, along with v1.0.4 changes. It's live here: https://seraphin.xyz/siralim-planner/

About

This is a fan-made tool designed to simplify the process of planning builds for Siralim Ultimate. Further details on the tool are available on the Info page of the tool: https://berated-bert.github.io/siralim-planner/.

About the source code

This is a front-end only React app. It uses a simple python script to read in data from the Siralim Ultimate Compendium such that it can be visualised via the React app.

Running the app locally

Running the app locally requires NodeJS and npm. To run the app, first install the packages via:

npm install

Then simply run it via

npm start

Updating the database

In order to update the database to the latest version of the Siralim Ultimate Compendium, simply download a copy of the Traits sheet of the Compendium, save it to data/Siralim Ultimate Compendium - Traits.csv, and run:

python build_data.py

This will convert the .csv file into a .json file, which is stored under src/data/data.json and read in by the React app.

Code documentation

Code documentation can be generated by running the following command:

npm run create-docs

The documentation will then be available under docs.

Other notes

How the URL sharing works

The build sharing URL is comprised of three components:

  • The party members (b=)
  • The specialization code (s=)
  • The anointment codes (a=)
  • The relic codes (r=)

Party members

In order to come up with a way of saving/loading builds without using a back-end server (like Grimtools.com), I needed some way to uniquely identify monsters/traits so that they could be saved in the URL parameters. I was originally going to use the indexes of the monsters within the Compendium, (i.e. Abomination Bile is 1, Abomination Brute is 2, etc...), so that the URL would look as follows:

https://siralim-tools.github.io/?build=1,123,34,15,44...

but this would cause problems later down the line when new creatures are added. If a creature was added before creature 123, for example, then any builds loaded from previous versions of the Compendium would break.

So instead I decided to take the hash of the family + creature + trait. This should be more robust as the family, creature and traits don't tend to change between patches. I chose a hash length of 6 (in order to minimise potential collisions). So the result is a unique 6-character string that represents each monster, e.g. Iron Golem just happens to be ef5667 and will always be ef5667 unless its family, creature or the name of its trait changes at some point.

Specialization code

The specialization code string is much simpler - it is a two-character identifier for a specialization. I came up with these identifiers myself. For a list of them, see data/steam-guide/specializations.csv.

Anointment codes

The anointment codes are three-character representation of a particular perk. The first two characters is the specialization code that the perk belongs to, and the third letter is a letter representing the index of the perk within the list of that specialization's perks, i.e. the first perk in Bloodmage, "Bleed Out", has the anointment code BMA, the second perk "Blood Clot" has BMB, and so on.

I don't think the order of the perks within a specialization will ever change but if they do, it will only be a minor inconvenience when loading old builds.

Relic codes

The relic codes are two characters, corresponding to the 6th and 13th character of the relic's name, after removing any non-alphabetical characters (because those two particular characters did not have any collisions).

TODO

At this stage I've pretty much reached the limit of what I can do with a pure front-end app. I would like to add other things to the app such as artifact stats, nether stone traits, etc, but this is simply not possible without causing the build string to grow to ridiculous lengths. The only way to achieve this would be to have a back end app, such as a Flask app, that could encode a build into a short URL (like how Grimtools does it). This would mean I could no longer host it for free on GitHub pages, and would need to think about security, maintenance etc... so it is a somewhat long-term goal at the moment.

The list of features to do/completed are as follows:

  • Build a back-end app to allow for more features such as artifact stats and nether stone traits
  • Improve accessibility of the site (ongoing)
  • Make the creature selection table sortable
  • Allow users to select anointments
  • Allow users to select a specialization
  • Incorporate creature stats into the app
  • Tidy up the source code (it is a bit messy - it needs refactoring/commenting/documenting etc). (it's as tidy as it's going to get for now)
  • Make the design responsive, i.e. work nicely on mobile.
  • Allow import of builds from the game (this may be tricky)
  • Find a way to add the monster sprites to the planner. If anybody knows a database that maps monster names to their respective sprites, please let me know!

License and contact

The software is licensed under the open source GNU GPL 3.0 License.

Please feel free to fork the repository and/or submit pull requests/issues etc. If you have any other comments/feedback feel free to message me on Discord - BeratedBert#6292.

This tool is not affiliated with Thylacine Studios.

Creature sprites, creature stats and the mapping between trait -> creature sprite are sourced from the Siralim Ultimate API.

The list of specializations and perks is from the guide on Steam.

About

A simple build planner tool for Siralim Ultimate.

License:GNU General Public License v3.0


Languages

Language:JavaScript 70.7%Language:SCSS 16.3%Language:Python 12.0%Language:HTML 0.8%Language:CSS 0.2%Language:Shell 0.0%