Simulator for Inventory Slot Transfer in BOTW
Visit the app at https://ist.itntpiston.app
Contributions are welcomed. For small issues, you can open PRs directly. For big issues contact me on discord iTNTPiston#5339
Clone repo with --recurse-submodules
If you have already cloned, run git submodule update --init --recursive
To update submodules, go to the submodule directory and pull. Example:
cd scripts/base-lint
git pull
cd scripts/typescript-layers
git pull
To install node modules npm install
Run npm run start
to start webpack dev server.
When code changes, the dev server will hot reload
The simulator uses a LL parser with infinite look ahead to generate an Abstract Syntax Tree from which commands are parsed.
The grammar is at src/core/command/ast/grammar.txt
and the ast parser is generated with npm run generate
(Python needed)
If you want to introduce new commands, most of the heavy lifting for the parsers is already done. You should be able to define a new derivation in the grammar and implement the parser by looking at one of the parse.cmd.*
files. However, you should probably contact the maintainer to have a discussion about the new command.
Do before PR:
- Lint your code
npm run lint-base
: This checks that your files have unix line endings, have no traling whitespaces, and have exactly 1 trailing new line. This might fail if you have auto crlf on git for windows. If you do, please make sure the remote still has UNIX line ending so the PR automation passes
npm run layer
: This makes sure your imports follow the layer rules (and are sorted correctly)src/data
is the bottom layer. It cannot depend on core or ui componentssrc/core
is the core logic. It can depend on data, but not uisrc/ui
is the ui layer. It can depend on everything
npm run lint-ts
: This is the standard eslint
- Run tests
npm run test-all