47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# Torn Attribute Training Tracker
|
|
|
|
A userscript for [torn.com](https://www.torn.com) that shows a floating dialog on the gym page with your current attribute, target, rate of gain, and an ETA to the target.
|
|
|
|
## Install
|
|
|
|
1. Install [Tampermonkey](https://www.tampermonkey.net/) (or Violentmonkey / Greasemonkey).
|
|
2. Open `torn-attribute-tracker.user.js` in your editor, copy its contents.
|
|
3. In Tampermonkey, click the dashboard → **+** (Create new script) → paste → save.
|
|
4. Visit `https://www.torn.com/gym.php`. The dialog appears in the bottom-right.
|
|
|
|
## Use
|
|
|
|
- Type a target value in the **Target** field, or pick a milestone from the dropdown.
|
|
- The dialog updates live as you train.
|
|
- Drag the header to reposition. Click **Above training UI** to anchor above the gym form. Click **Float free** to drag again.
|
|
- The **✕** closes the dialog for the current page session; it returns on next visit.
|
|
|
|
Targets, dialog position, and the 30-day train history are stored in `localStorage`.
|
|
|
|
## Self-test
|
|
|
|
Load the script with `#tat-test` in the URL:
|
|
|
|
```
|
|
https://www.torn.com/gym.php#tat-test
|
|
```
|
|
|
|
Open the browser console; you'll see `[tat] self-test results:` followed by `OK …` / `FAIL …` lines.
|
|
|
|
## Tests
|
|
|
|
```
|
|
npm install # no deps; node:test ships with Node 18+
|
|
npm test
|
|
```
|
|
|
|
## Files
|
|
|
|
- `torn-attribute-tracker.user.js` — the script you install in Tampermonkey.
|
|
- `src/pure.js`, `src/store.js`, `src/dom.js`, `src/interceptor.js`, `src/ui.js`, `src/main.js` — source split for testability; the user-facing file is the bundle in step 11.
|
|
- `tests/` — Node test runner (`node --test`).
|
|
|
|
## Notes
|
|
|
|
The DOM scraper and request interceptor are best-effort matches for the current Torn gym page. If Torn updates the markup, you may need to adjust the selectors in `src/dom.js` and re-bundle by copying the new source into the embedded section in `torn-attribute-tracker.user.js`.
|