H3VR
Install with App

Details

Latest version
1.1.3
Last Updated
First Uploaded
Downloads
1.6K
Likes
1
Size
120KB
Dependants

Changelog

1.1.3

  • Blitz holds: the central node behind the shield nodes now confirms hits too
  • Fixed encryption node hit markers (Classic holds and Blitz shield nodes)
Show Detail
  • The hit markers went back to watching every sosig in the scene (FindObjectsOfType). The radius query introduced earlier could not see a sosig that is farther away than the radius, and shooting past 1000 m is a normal thing to do in this game; the watch stays throttled by [12 Hitmarkers] SosigScanMs and serialised with the other scans by the scan budget.
  • [12 Hitmarkers] WatchRadiusM is gone with it.
  • The X no longer stops growing at 400 m; the distance scaling is clamped at 5000 m so a very long shot still reads as an X instead of a dot.
  • A node destroyed by the shot disappears from the scene before the next frame, so the only trace of the hit is that a watched node vanished; a single disappearance is now a kill (red X at its last position), while the whole group going at once is still treated as the hold being cleaned up and draws nothing. This is what was swallowing the X on Blitz shield nodes, which die outright and never reach the "counts went down" check.
  • Node discovery now walks the scene for TNH_EncryptionTarget on the same one-second tick, next to the list the hold point keeps, and the two are unioned. A node that uses sub-targets returns from the game's own Damage() before touching any of its counters, so all four counters the watcher needs (m_numSubTargsLeft, m_numHitsLeft, m_damLeftForAHit, a sub-target's lifeLeft) are private and are now read through GameCompat reflection instead of being bound at compile time - a bound private field is exactly the kind of reference that survives the audit and then fails on a player's build.
  • The vanish rule counts a single disappearing node as a kill whether it had hits or sub-targets left, which is what a Blitz shield node looks like when one shot removes it.
  • Diagnostics also prints nodes=N, mk/sosig|node|core=n and watchfail=n, so a "no marker" report can be narrowed to discovery, detection, drawing or a swallowed exception from the log alone.
  • The central node of a Blitz hold (TNH_HoldPointSystemCore) confirms hits like a shield node: white X per hit once its shields are down, red X on the shot that finishes it. Both the reference to it and its health are private in the game and have no getter, so GameCompat reads them reflectively - read-only, and a build without those fields simply draws nothing.
  • The grenade warning still queries NearCm + 2 m around the player, which is the only range it can ever draw for.
  • The optional proximity reserve sweep (ScanRadiusCm) is a radius query too.
  • Diagnostics prints one line every five seconds: perf 5s: sosig-scan runs=… avg=…ms items=… hitmarker=N. items=0 means no sosig was found (so nothing can be flagged), hitmarker=0 means nothing was detected, and a non-zero hitmarker with nothing on screen means the marker was drawn but not visible - which is a different bug. Ask for that line when a report comes in.

1.1.2

  • Tried to improved performance
  • New [16 Performance] section, plus scan intervals for the hit markers and the grenade warning
Show Detail
  • The scene scans (FindObjectsOfType) ran on three separate timers that regularly came due on the same frame; ScanBudget now hands out at most one scan per frame with a gap between them, so the cost is spread instead of stacking.
  • The grenade reader's three scans (sosigs, FVRGrenade, PinnedGrenade) were all in one frame; they now go one per turn.
  • The quickbelt slot list, the player-body object list and the gun's chamber list were re-read (and re-allocated) on every data tick; they are cached with their own slow timers and reused buffers.
  • The fuel-cell sweep used to list every magazine in the scene once a second; it is a Physics.OverlapSphereNonAlloc radius query into a reused buffer now.
  • Round and calibre names come from the game as fresh strings on every tick; they are memoised, which is what was feeding the garbage collector.
  • Panel redraws all came due on the same frame; their first due times are staggered.
  • RefreshHz now defaults to 20 instead of 30 (panels redraw at their own 5-10 Hz, so nothing looks different).
  • [16 Performance]: ConfigPollSeconds (3), SlotScanMs (2000), FuelScanMs (2000). [12 Hitmarkers] SosigScanMs (1000) and [15 Grenade Alert] ScanMs (200) are new too.

1.1.1

  • Fixed compatibility with New Universal Speedloader

1.1.0

  • New features: Encryption nodes indications, Hit markers and Grenade warning
  • TNH status info improvments
  • The game's own health bar above your head can be hidden (it is hidden by default, the HUD has its own)
  • Show magazine name then held
  • Long names are trimmed to the panel's actual width, so dragging a panel wider lets it show more of the name
Show Detail
  • The compass draws one diamond per live node (red, with the same up/down floor arrow the hold and supply markers use)
  • The status panel's second line reads ENC <TYPE> <left>/<total>; the total is the high-water mark of the phase, because the game only ever removes a node from its list
  • Hit markers are world-space X quads driven from Update, drawn with the always-on-top shader so a body cannot hide them
  • Damage is watched, not hooked: a sosig link's integrity and a node's remaining hits only fall, so the first frame they fall is the shot. No Harmony patch is added.
  • [12 Hitmarkers] holds Show, HitColor, KillColor, SizeCm and LifetimeMs
  • A node with sub-targets never changes m_numHitsLeft: the bullet hits the sub-target, which only calls DisableSubtarg. The watcher now follows all four ways a node takes damage (hit count, sub-target count, sub-target life, damage-per-hit accumulator) plus the tendril a regenerating node snaps back to 1, and puts the X on the part that was shot.
  • Hit markers are sized in metres at one metre of distance, so the X covers the same slice of vision near or far.
  • The marker is a ring, not a projection: front sits at the top of the overlay, behind at the bottom, sides at the sides, so a grenade at the player's feet or behind him still reads. [15 Grenade Alert] IconDots sets the marker radius (1 = a dot, 2 = the compass node diamond, 4 = default).
  • The warning covers both kinds of grenade: a sosig's thrown one is a SosigWeapon with m_isFuseTickingDown, the player's are FVRGrenade / PinnedGrenade with m_isFused (an impact grenade counts once its fuse arms). Only a lit fuse is tracked, so a grenade sitting in a belt stays quiet.
  • A grenade the player is holding is skipped: his own hand is not the thing he needs a warning about.
  • The name comes from the item's FVRObject.DisplayName, the same source the weapon line uses, with the prefab name as a fallback; the old MAGAZINE line was a fixed string.
  • [15 Grenade Alert] holds NearCm (800), DangerCm (250), IconDots, MarkerColor and DangerColor. The overlay itself is the Grenades panel, so it has the usual offset/size settings and a H3UD Panels switch.
  • [13 Vanilla] ShowHealthBar drives GM.CurrentPlayerBody.HealthBar, which the game re-creates on every scene load, so its state is re-checked each frame.

1.0.2

  • Works on older game versions again (update 119 and up)
  • One broken read no longer blanks the whole HUD, and it is logged as an error instead of a warning
  • Horizon lock can be switched from the wrist menu (H3UD page) while playing
  • Removed the leftover config migration from 1.0.0
Show Detail
  • Belt-fed guns read the round count through a renamed member (NumRoundsOnBelt on 120+, BeltRounds on 119), so 119 no longer throws "Method not found" and loses the HUD
  • Fuel guns on builds without m_startingFuel show the fuel they have left as a plain number (FUEL 42, RES 26) with no percentage and no gauge, instead of falling back to a magazine readout that sat at 0 and warned forever
  • The sandbox phase is matched by name, so the 119 enum (which has no Sandbox member) still runs
  • Each reader (weapon / reserve / ammo in hand / other item / TNH / compass) is guarded on its own: a failure costs that panel only
  • Real failures are written as [Error] HUD data read failed - <section>: <exception>, once per distinct message

1.0.1

  • Many things and fixes
Show Detail
  • New reload prompt panel below the centre of the view (idea stolen from rivi)
  • Better display for exotic guns e.g. single shot bolt actions, flintlocks and flamethrowers
  • Fixed derringer next shot round type prediction
  • Performance fixes (hopefully)
  • Show item details even if they aren't guns or mags
  • Thing closer to your head displays first

1.0.0

  • Initial release
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.