Universal Ren'Py by Injector
============================

What it is
----------
A universal in-game menu for any Ren'Py game. Find and change variables,
freeze and watch them, get notified when they change, see what every
choice changes before you pick it, jump to any scene, manage saves, and
compare snapshots to see exactly what changed.

Version 1.4.1

Changes in 1.4.1
----------------
Choice hints stay beside the correct answer in compact custom layouts.
Menu text uses its own readable font and styles instead of inheriting
the game's button font, spacing and outlines.
After updating F95 Hub, close the game and press Update on its Universal
RenPy card to replace the installed menu.

Works with Ren'Py 7 (Python 2) and Ren'Py 8 (Python 3).

Changes in 1.4.0
----------------
Finder helps locate numbers when you do not know their variable names.
Start a scan, close the menu and play, then narrow the results using
Increased, Decreased, Changed or Unchanged. Each filter compares with
the previous scan and keeps only matching candidates. Restart begins
with all numbers again. You can edit, freeze or watch a result directly.
Finder reads top-level game numbers only, not values inside objects or
containers, persistent values, booleans or nonfinite numbers.

Changes lists your latest 50 successful value edits with before and after
values. Undo restores a previous value only when it is still the latest
applied edit for that variable and the current value matches that edit.
If the game has changed or removed it, Undo leaves it alone. Frozen
values stay in sync with Undo. Undo restores a value, not story progress
or consequences that have already happened in the game.

Finder and Changes are temporary. Loading a save or starting a new game
clears them, and they add no history or scan data to your save files.

Changes in 1.3.0
----------------
Quick load, resume newest and saved-game actions use the actual save slot.
Long text edits preserve the complete value, including Unicode and spaces.
Menu, hints and back keys cannot share a shortcut. The menu also fits wide
and short logical screens, and keeps negative layout offsets intact.
Snapshots and Notify compare value contents instead of truncated captions.
Container tracking is bounded so large structures do not stall the game;
very large or deep containers are sampled, and custom objects are tracked
by identity. A contents change may show the same short summary in the UI.
Freeze supports text, finite numbers, booleans and None. It skips deleted
variables, and a failed value does not stop other freezes or notifications.
Choice analysis preserves repeated and ordered effects and stops at the
next choice. Hints read scripts without executing game code; conditions
and custom helper functions may still depend on the game's current state.

Updating an existing installation in F95 Hub
------------------------------------------
After updating F95 Hub, close the game and press Update on that game's
Universal Ren'Py menu card. Updating the Hub alone does not rewrite menu
files in games that already have an older version installed.

How to install (manual)
-----------------------
1. Find the game's "game" folder (it sits next to the game's .exe).
2. Copy the whole "injector_menu" folder into that "game" folder.
   So you end up with:  <TheGame>/game/injector_menu/
3. Start the game.

How to use
----------
- A small  "INJ"  button sits on the right edge of the screen.
  Click it to open or close the menu.
- Variables:  search, then Edit / Freeze / Watch / Notify any value.
- Finder:     Start scan, play, then use a change filter to narrow numbers.
              Repeat until you find the value you need. Restart resets
              the candidates; Clear removes the current scan.
- Changes:    review your value edits and Undo the latest edit for a value.
- Labels:     search a scene and Jump straight to it.
- Saves:      quick save, quick load, resume newest, load or delete any save.
- Snapshots:  Capture the state, play a while, then Show changes to see
              every variable that moved.
- Choices:    when the game shows choices, a small tag on each one tells
              you what picking it changes, read straight from the game's
              own script: points up (green) or down (red), flags it sets
              (yellow), functions it calls (blue), or the scene it jumps
              to when nothing else was found. Changes shared by every
              choice are left out, so what you see is what makes that
              choice different. The tag keeps out of the way of the
              choice text: it sits in the free part of the button, or
              hangs off the button's bottom edge when the text fills
              it, and never takes more than a share of the button; when
              there is more, it shows the first changes and a +N count.
              Switch it off any time with the Hints chip at the top of
              the menu or the hints key (F6 by default, changeable under
              Settings), or pick Compact under Settings to show only the
              biggest change and a count.
- Persistent: values the game keeps outside of saves: galleries,
              achievements, unlocks, endings seen. Edit or Watch them
              like any variable. A change here sticks for every save of
              that game.
- Since last choice:  the INJ panel in the top left corner lists what moved
              since the last choice you made, up (green), down (red) or
              set (yellow), so you can see what a choice really did.
              Back to it (or the back key, F7 by default) returns the
              game to that choice so you can try another option, even
              when the game itself blocks rolling back. Choices that
              have dropped out of the game's rollback memory are too far
              back to return to.
- Console:    Shift + O opens the Ren'Py console. This menu turns it on
              for you. The game itself is left in normal player mode, so
              it behaves exactly like it does without the menu.

After a game update
-------------------
A game update usually replaces the whole game folder, so the menu goes
with it. Copy the injector_menu folder in again (F95 Hub does this for
you automatically and tells you when a newer menu is available).

To uninstall
------------
Delete the  injector_menu  folder from the game's  game  folder.

Made by Injector.
