JoshyGnomes v0.1.19  --  a BepInEx mod for Burglin' Gnomes
============================================================================

WHAT IT DOES
------------
  SETTINGS PANEL
  * Press F1 in game for a JoshyGnomes settings panel. Click the toggles,
    drag the sliders, and click the key row to rebind the freeze key.
    Changes apply straight away and are saved to the .cfg for you.

  ROUND TIMER
  * A clock icon and the REAL time remaining as MM:SS, permanently in the
    TOP-RIGHT corner of the screen. Your task list is left exactly as the
    game made it.
  * The HOST can press F10 to FREEZE the timer. While frozen the countdown
    stops, the round can never end on the time limit, and the text blinks
    BLUE once a second so you can tell it is deliberate.
  * The freeze stays on across rounds until the host turns it back off.
  * The freeze key can be set in the settings panel (F1) or the .cfg file.

  STOCKPILE MESSAGES
  * A message whenever the stockpile gains resources -- for example when Bob
    hauls something home. Reads "Received 2 clonk -- now 8/10", using the
    same names and caps you see in the stockpile.

  TASK MESSAGES
  * A line at the bottom of the screen when part of a task is completed,
    when the number of completed tasks goes up, and when everything is done.

  DEAD PLAYER LIST
  * The list of dead players -- heading and all -- is shown to EVERYONE as
    soon as anyone is dead, instead of only to players who are dead
    themselves.
  * Names are colored by whether CPR can still save them: WHITE if they can
    be revived, RED if they cannot. Note that the game will still LET someone
    perform CPR on a red one -- it just can never work.

  BOB
  * A crosswalk-signal figure under the round timer, top right, for Bob the
    that hauls stolen goods out of the yards. It follows what he is actually
    doing:
        RED, standing still  -- nothing to do
        GREEN, walking       -- on his way out to fetch something
        GREEN, arms raised   -- carrying it home (he lifts it overhead)
    His legs move at the pace he is really moving.

  WHO LEFT
  * A message when a player is kicked, drops, or quits. The game itself
    announces nothing at all. Everyone running the mod sees the same thing,
    including whether it was a kick.

NOTE: freezing the timer also freezes passive karma gain, the gnomium spawn
rate, and the time of day -- all three are driven by round progress.


REQUIREMENTS
------------
  * Burglin' Gnomes on Steam
  * BepInEx 5.4.23.5 (BepInExPack 5.4.2305) -- install it from Thunderstore
    Mod Manager, or from https://thunderstore.io/c/burglin-gnomes/


EASIEST INSTALL  (recommended)
------------------------------
  Don't use this zip. Instead grab the updater from

      https://files.snapzfs.com/Burglin_Gnomes_Game_Files/

  Save JoshyGnomes-Update.bat into your  BepInEx\plugins  folder and
  double-click it. It fetches the newest version by itself, and keeps itself
  up to date too -- so you only ever download it once.


MANUAL INSTALL
--------------
  1. Find your plugins folder.
       Thunderstore Mod Manager:
         %AppData%\Thunderstore Mod Manager\DataFolder\BurglinGnomes\
             profiles\<YourProfile>\BepInEx\plugins\
       Manual BepInEx install:
         <Steam>\steamapps\common\Burglin' Gnomes\BepInEx\plugins\
  2. Delete any existing  JoshyGnomes  folder in there.
  3. Copy the  JoshyGnomes  folder from this zip into  plugins\  so you end
     up with  ...\BepInEx\plugins\JoshyGnomes\JoshyGnomes.dll
  4. Launch the game modded (Thunderstore Mod Manager -> "Start modded").


CONFIGURATION
-------------
  After running the game once with the mod, edit

      BepInEx\config\josh.burglingnomes.joshygnomes.cfg

  [Timer]
    Frozen              true/false  -- host's freeze state (persists)
    FreezeKey           default F10 -- any Input System key name
    FreezeModifier      default None -- e.g. LeftCtrl, for a key combo
    ShowTimer           default true -- the top-right MM:SS readout
    TimerScale          default 1.0 -- MULTIPLE of its normal size
    ShowClockIcon       default true -- show the clock icon beside the time

  [Multiplayer]
    RequireModOnAllPlayers  default TRUE -- kick players without the mod
    VersionCheckSeconds     default 10 -- grace period before that kick

  [Tasks]
    Notifications       default true -- task progress / count / all-complete
    ResourceMessages    default true -- "Received 2 clonk -- now 8/10"

  [Hud]
    MessageLines        default 4   -- how many messages on screen at once
    MessageHoldSeconds  default 4   -- before each fades out over a second
    MessageFontSize     default 30  -- scales with the window, not raw pixels
    MessageBottomOffset default 260 -- raise this if messages hit the hotbar
    DeadListForEveryone default true -- show the dead list to living players
    DeadListColorByRevivable  default true -- white/red by CPR eligibility
    BobIndicator        default true -- the red/green crosswalk figure
    BobIndicatorHeight  default 130 -- scales with the window, not raw pixels
    BobWalkFps          default 8   -- his step rate at full speed
    AnnouncePlayersLeaving  default true -- "X left the game" / "X was kicked"

  [Menu]
    OpenKey             default F1 -- opens the settings panel
    Scale               default 1.0 -- size of that panel

  [Bindings]
    RestoreGameDefaultsOnce  default false -- see the note below

  [Settings]
    MapMenuStructure    default true -- log the settings menu layout once

  [Probe]
    LogOnStartup        default true -- log engine/game info at load
    DumpSessionOnF9     default true -- F9 dumps session state to the log


MULTIPLAYER  --  EVERYONE NEEDS THE SAME VERSION (as of v0.1.15)
----------------------------------------------------------------
  The host now kicks anyone who joins without JoshyGnomes, or with a
  different version of it, and tells the lobby who it was. Grab the updater
  from files.snapzfs.com and everyone stays in step automatically.

  This is enforced BY THE HOST. So:
    * If the host is out of date, everyone else gets kicked -- including
      people who did update. Whoever hosts should update first.
    * A host WITHOUT the mod kicks nobody; the check simply never runs.

  To go back to the old "optional extra" behaviour, set

      [Multiplayer]
      RequireModOnAllPlayers = false

  With that off nothing about the mod can affect a player who doesn't have
  it: no custom network prefabs, no RPCs, no network variables. The freeze
  still reaches them (the game's own clock stops), they just don't see the
  MM:SS readout, messages, Bob or the dead-list colors.

TROUBLESHOOTING
---------------
  Nothing appears at all
     Check  BepInEx\LogOutput.log  for a line reading
     "JoshyGnomes v0.1.19 loaded." If it is missing, BepInEx itself is not
     loading -- verify you launched modded.

  Messages overlap the inventory hotbar
     Raise  Hud/MessageBottomOffset. It is in 1920x1080 units and scales
     with the window.

  Your key bindings look wrong
     Earlier versions added a "Freeze Timer" row to the game's own bindings
     screen. That is GONE as of v0.1.8. If your bindings still look off, set

         [Menu]
    OpenKey             default F1 -- opens the settings panel
    Scale               default 1.0 -- size of that panel

  [Bindings]
         RestoreGameDefaultsOnce = true

     then launch and open the bindings screen once. It resets the game's key
     bindings to their defaults and switches itself back off. Only key
     bindings are touched -- graphics, audio and voice are left alone.


  v0.1.19 -- Bob's figure and the round clock now disappear while you are
  between levels. The game keeps reporting "in round" for the whole vortex
  ride home, so Bob really was still walking around the abandoned level, and
  the clock really was still counting down a round that had already ended.
  Both now hide for the trip in each direction. Bob also no longer reads a
  teleport as a sprint, and no longer flashes green for a moment at the start
  of the next round. Removed a leftover settings-menu probe that was scanning
  every object in the game twice a second, forever, hunting for widget types
  this game does not have.
  v0.1.17 -- stockpile messages now name what the resources came out of, and
  give the plain word alongside the gnome one:
      Received 3 plasto (plastic) from Bear Toy   --   now 8/10
  These are now sent by the host, so the HOST needs the mod for anyone to see
  them (previously a client could work them out alone, but it had no way to
  know what the resources came from).

  v0.1.16 -- spelling only: "color" rather than "colour" throughout.

  v0.1.15 -- everyone in the lobby now needs the same version of the mod. The
  host kicks anyone joining without it or on a different version, and says who
  it was. Set Multiplayer/RequireModOnAllPlayers=false for the old behaviour.
  Also: when the stockpile is full, deliveries that no longer fit are reported
  as discarded -- the game destroys that loot silently, so it is worth knowing.

  v0.1.14 -- two stockpile-message fixes. Logging in no longer dumps a screenful
  of "Received ..." lines: the game reloads your saved stockpile a moment after
  load, and that was being reported as a fresh delivery. Messages now only
  appear during a round. Resource names also no longer read "no translation".

  v0.1.13 -- the stockpile messages from 0.1.12 never actually appeared. They
  were watching the house's resource store, but Bob's deliveries go into a
  different inventory entirely, so nothing ever fired. Now watching the right
  one. The "/10" is your stack cap, which is what house upgrades raise.

  v0.1.12 -- added stockpile messages: when resources come in you get a line
  saying how much you gained, your new total, and your cap. Also, a body that
  fell out of the world now shows RED on the dead list -- falling off the edge
  kills you intact, so nothing was damaged and it used to claim you were
  revivable while your body sat somewhere nobody could reach.

  v0.1.11 -- the dead-list colors now show on your OWN screen while you are
  dead. They were correct for everyone else all along, but a dead player's list
  was never colored at all -- and the game's default color is white, which
  looks exactly like a deliberate "can be revived".

  v0.1.10 -- fixed the dead-list colors. They used the check that decides
  whether CPR can be STARTED, not whether it can work -- so a decapitated gnome
  showed white, let someone perform CPR, and could never actually be revived.
  Now uses the condition the revive itself tests. Also removed a 0.2s stutter at
  the start of each round.

  v0.1.9 -- added a JoshyGnomes settings panel, opened with F1. It is drawn
  entirely by the mod, so it cannot disturb the game's own menus the way the
  bindings row did. The freeze key now lives there.

  v0.1.8 -- the "Freeze Timer" row is no longer added to the game's bindings
  screen. It disturbed that screen more than once and only duplicated what
  Timer/FreezeKey already does. The freeze key itself is unchanged. Added
  Bindings/RestoreGameDefaultsOnce to put the game's bindings back to defaults
  if they were affected. A JoshyGnomes settings page is being worked on, and
  the freeze key will move there.

  v0.1.7 -- Bob's figure moved from the bottom-right up under the round timer,
  clear of the text the game puts along the bottom during play. Dead-list names
  are now white or red depending on whether CPR can still save them. The Freeze
  Timer row shows a proper key graphic when the game has one for that key.

  v0.1.6 -- the Freeze Timer row now goes in the LEFT column (it was landing
  on the right because both columns hold nine rows and the pick was arbitrary),
  and its key name no longer auto-sizes into oversized text. Also logs the
  layout of the settings menu once, as groundwork for a JoshyGnomes tab.

  v0.1.5 -- the dead-player list now shows its "DEAD" heading to living
  players too, not just a bare column of names. The frozen clock now blinks
  white/BLUE instead of white/red. The bindings-menu row is OFF by default:
  it could disturb the game's own bindings screen, and it only duplicated a
  setting the .cfg already has.

  v0.1.4 -- Bob's icon now follows his real animation state instead of only
  "is he holding something". Walking out to FETCH an item now registers -- it
  did not before, so the icon stayed red until the exact moment he picked
  something up. He raises his arms while carrying, matching what he does in
  game, and his legs move at his actual speed.

  v0.1.3 -- Bob became a crosswalk figure with a walking animation, and taller.

  v0.1.2 -- the round timer moved to the top-right corner on its own HUD layer,
  in the game's font, and no longer touches the task list (v0.1.1 wrote into it
  and the text wrapped to two lines). Messages moved clear of the inventory bar
  and use the game's font too. The "Freeze Timer" bindings row is now the LAST
  row of its section with the layout rebuilt, so it is actually visible.
  Not yet tested in a real multiplayer lobby.
