deadline-balancing

deadline balancing

Attachment stats and other stuff for Deadline.

changelogs

wiki

Contains information about stats, gameplay, mechanics, and more.

https://github.com/recoil-group/deadline-balancing/wiki

balancing knowledge base

demos

repo guide

balancing.csv

Master balancing sheet. Should always be up to date with the latest changes.

testing.csv

Testing sheet. Gets imported into dev branch when updated.

renames.csv

The running list of attachment renames, as old_name,new_name pairs. Chains resolve to their final name.

weapon_names.json

Dynamic weapon display-name rules keyed by weapon code. Each rule lists the attachments required for that name; nested attachment arrays are interchangeable options.

/changes

Folder containing all change sheets. These are used to balance groups of attachments to then be ported into balancing.csv.

/changelogs

Folder containing all generated changelog markdown files.

/archive

Folder containing all balancing sheets from previous versions. These are used to generate changelogs.

Each version has up to two files:

Renaming the frozen snapshot in place breaks changelog regeneration for that version: its base sheet still uses the old names, so every renamed attachment shows up as removed-and-new. Keeping the two files separate means old changelogs stay reproducible while new diffs stay clean.

Cut the archive and generate the changelog in the same pass. If the snapshot is taken days after the changelog, the two disagree by whatever landed in between.

port.py

Script to port changes from a CSV or Excel change sheet into balancing.csv or testing.csv. Usage:

python port.py (change sheet) (target sheet) (header row)
python port.py "changes/changes.csv" "testing.csv" 2
python port.py "changes/changes.xlsx" "balancing.csv" 2
python port.py "changes/changes.xlsx" "balancing.csv" 2 --dry-run
python port.py "changes/changes.xlsx" "balancing.csv" 2 --dry-run --format json

rename.py

Applies renames.csv to the name column of CSV and Excel sheets. Usage:

python rename.py (sheets...) [--dry-run]
python rename.py *.csv archive/*-renamed.csv changes/* --dry-run
python rename.py balancing.csv "changes/m4-handguards.xlsx"

Renaming does not touch pretty_name. Update display names in the sheet.

xlsx_to_csv.py

Exports cached values from the first worksheet of an .xlsx or .xlsm workbook to a UTF-8 CSV. Reports formula cells with cached or missing results.

python xlsx_to_csv.py "changes/changes.xlsx" [output.csv]

inspect_xlsx.py

Prints a compact, read-only view of an Excel change sheet for coding agents. It shows every worksheet, populated cells and coordinates, cached formula results, repeated formula patterns, tables, merged ranges, comments, hyperlinks, and hidden regions without rendering or modifying the workbook. Conservative header cues identify likely table and section headers, including multiple sections in one worksheet, while leaving interpretation to the reader.

Recommended agent workflow:

  1. Run inspect_xlsx.py before using a general spreadsheet importer or renderer.
  2. If the output is truncated or the task is focused, rerun it with --sheet and --range.
  3. Use --show-formulas when exact expressions are needed inline.
  4. Only render the workbook when the task depends on layout, formatting, charts, or other visual details.
python inspect_xlsx.py "changes/m4-stocks.xlsx"
python inspect_xlsx.py "changes/308-ammo-super.xlsx" --sheet Model --range A1:C39
python inspect_xlsx.py "changes/m4-stocks.xlsx" --sheet m4-stocks --range N3:Q5 --show-formulas

Use --max-cells and --max-formula-patterns to control output size, and remember that formula results are cached values saved by Excel. The script does not recalculate them or guarantee that they are current. Displayed floats are rounded to remove unhelpful binary floating-point noise; workbook values are never changed.

update_xlsx_from_csv.py

Updates shared columns in an existing workbook from a CSV, matching rows by name and skipping formulas by default. The workbook is updated in place.

python update_xlsx_from_csv.py "balancing.csv" "changes/changes.xlsx" 2

Use --dry-run to preview changes. Saving with openpyxl may clear cached formula results. CSV names absent from the workbook are expected and are not reported.

fix_booleans.py

Lowercases TRUE/FALSE cells in any CSV. Accepts multiple files and rewrites them in place, leaving all other cells untouched.

python fix_booleans.py calibers.csv
python fix_booleans.py balancing.csv optics.csv --dry-run

changelog.py

Script to compare two sheets and output a changelog. Usage:

python changelog.py (old sheet) (new sheet)
python changelog.py "archive/old-sheet.csv" "balancing.csv"

diff.py

Basically changelog.py but for comparing smaller change sheets. Usage:

python diff.py (old sheet) (new sheet)
python diff.py "old-sheet.csv" "changes/new-sheet.csv"