Diablo 2 Plugy stash organizer
Web-based collection manager, muling utility, stash organizer and grail tracker hosted at: https://youdz.github.io/d2-stash-organizer/
Everything runs in the browser: no installation required, no coding, no security risks for your computer.
Your data is your data, the tool does not send anything to the server. It works fully offline once loaded. This means your save files will never be sent or shared anywhere.
Finally, this tool will never lose any of your items. There is a hard check at the end of the organization logic that will throw an error and prevent generating a new save file if even one potion is missing. It will also never modify your items, only move them around. The tool does not have the capability to modify item mods, the only fields that can be modified at the moment are the position.
The tool organizes items in the following order:
Examples:
The project is organized in the following folders:
src/
: Probably obvious, contains the Typescript source code for the project.
game-data/
: Logic for parsing the game files and extracting what we need in JSON format. nothing in here should ever be imported in the web tool, only executed to fix a game data bug or to extract more information.scripts/
: Business logic for anything "smart" the tool does. Parsing game files, organizing a stash, listing a grail, etc. These can are imported and used in the web tool, but can also be ran with a standalone Node script for experimentation or debugging.web/
: The web UI, written with Preact and bundled with Rollup. No business logic should ever go here, only views and view models.game-data/
: Raw game data like unique items definitions, magical mods and texts.
json/
: Cleaned up JSON data that we extracted automatically. Never modify any of these files manually, see scripts below.txt/
: The game's .tbl
files simply renamed to .txt
, but completely unmodified. Once again, these files should never be modified manually.docs/
: The production bundle of our web UI, which is automatically hosted on the project's github.io page. The name might be surprising, but this is a GitHub naming convention. Here too, never modify these files manually.test/
: Git-ignored folder used to store private stash information safely when testing directly with Node instead of the web version.For local development:
npm install
pulls dependency from NPM.npm run watch
runs the project in watch mode on http://localhost:10001.npm start
runs src/scripts/main.ts
in Node, which is a messy playground used for debugging. Before running it, make sure you modified src/scripts/main.ts
for your use case.Scripts you shouldn't need to run for most contributions:
npm run game-strings
re-generates the JSON containing all game texts, useful if you want to port this tool in a different language and have access to the game's Strings files.npm run game-data
re-generates the JSON-formatted game data (depends on game strings), mostly ran if you want to pull more data than we currently do from the game .tbl files.Publishing a new version of the web tool:
npm run build
bundles src/web/
for production and replaces the previous version in docs/
with it. This last script is the reason why the source code in src/
might not match the deployed version. Multiple commits might be needed for a feature to be ready, and only once it ready will this script be ran to publish it.