This repo holds the rules that Kill Team Manager uses to power its list-building capabilities.
Originally the database was managed in a literal sqlite database and new rules were added by manually editing the database and then shipping out the database artifact with the app. This has been replaced with a new JSON import based system. Because of this, you may find duplicates or unused entries in the JSON from the original db import.
KT Rules uses semantic versioning: major.minor.patch
Major Version Change: Whenever the format of the rules changes such that changes to the app are required, the major version will bump.
Minor Version Change: When there are official changes to the rules, FAQ, new Teams, etc. the minor version will be bumped (eg: the Kill Team Annual, adding a new team, etc.)
Patch Version Change: Whenever there are minor bug fixes, wording changes, translation fixes, etc. the patch version will bump.
TODO: describe the data model
Join us on our official Discord : https://discord.gg/G9myjRx We are there to discuss the project and anwser all your technical (or non technical) questions.
You can test your rules changes locally in rules tool
To test locally, you can use your checkout of github.com/KTManager/KTManagerApp to build RulesTool, and then call it against the folder. KTManagerApp includes an rt.sh
script that does the basics here, but if you want to do it manually:
# if you haven't already:
cd KTRules
# build the rules
./build.py clean release
# import them to your local rules db
cd ../KTManagerApp
dotnet run --project KillTeam.RulesTool -- import -r ../KTRules/out
# then run rules tool to see the results, replace 'GK' with the id of your kill team of choice (mine is grey knights!)
dotnet run --project KillTeam.RulesTool -- cost GK
# or to see a particular unit, faction id then model id
dotnet run --project KillTeam.RulesTool -- cost GK GKTE
# or to see all models for a faction
dotnet run --project KillTeam.RulesTool -- cost GK --all
When you're ready to apply changes to KTManagerApp, make sure that version.txt is correct (see version number above) and checked in, then:
# build the rules
./build.py clean release
# copy them to KTManagerApp
cp -r out/* ../KTManagerApp/KillTeam/SharedAssets/Rules
# fix up the line endings
find KillTeam/SharedAssets/Rules -type f -print0 | xargs -0 unix2dos
Then package up those changes to a commit on KTManagerApp.