Reports
Hydra keeps a ledger of what each character does: every experience pulse
as the mind-state bar states it, and every hunt the combat reader saw, with
its attacks, flares, hits and statuses. The ledger is one file for every
character, hydra.db in the data folder, and nothing is ever sent to the
game to fill it. Each kind is recorded unless the character’s Logs
settings page switches it off: experience, login rewards, silver and
bounty points, loot, combat and enhancives each have a row under
Ledger, beside the player log’s own switch, which takes effect the
next time the character logs in.
The enhancive items are in it too: every charge lost and every charged-until
time as inventory enhancive list states them. Hydra asks for that list
quietly as a character is seated, as it quits, and every five minutes while
the benefits are on, each ask held back while a fight is on, a hostile
creature is in the room or roundtime runs. The interval and the two warning
thresholds are on the General page under Enhancives; an item at or
under the charges, or charged until within the days, is warned of in the
story once a list is seen. .enhancives lists each item with its charges,
how long a charge takes while the benefits are on, and the day it runs out;
.enhancives <item> lists one item’s charges lost with the gap between
each; .enhancives together the readings where several items lost a charge
at once; .enhancives scan asks for the list now. The Enhancive timers
widget, among the Character widgets, draws each time-charged item as a bar
counting down to its time, full until the end is within the minutes its
page sets, then draining in a warning colour; items further off than its
hours are left out, so a year’s potion sits out of the way of a half-hour
one.
The reports read that ledger. There are two ways to them.
The Reports window
Menu → Reports opens the window, from the hub or from a play window’s title bar. From a play window it opens at that character; the picker at the top left chooses any character the ledger holds.
Down the left is the list, by family: Experience, Combat, and
Flares, which opens to every flare recorded for the character, by
name. The box above it finds a report by its name or by what it shows:
type barrier and Intercepts is left, pulses and Mind. Enter runs the
first that fits. A click on a report runs it.
The strip along the top sets what a report runs over:
- Latest hunt, Every hunt, Last n hunts or One hunt by id, for the combat reports that take a scope.
- Between, with a from and a to: two hunt ids for the combat
reports, or two times for the experience report over a span. A time is
13:05for today,07-20 13:05for this year, or2026-07-20 13:05:52. - Name, for the reports that take one: a creature’s noun.
Attacks and Creatures list every one over the scope, by damage, a page at a time. The row above them turns Recent on, newest first, with a number for only the last so many; sets the rows a page; and walks the pages.
The pane shows the report with its links live. A link runs that report in
the pane: Intercepts links each barrier to its flare report, a hunt’s
report links its creatures and attacks. Back and Forward walk what
has been run, Refresh runs the report shown again, and Export
writes it to a file under the data folder’s reports.
A hunt closing runs the report shown again on its own, so a hunt’s numbers are current without a click.
Experience
Every absorption pulse is a row: what the bar said was gained, in experience and in ascension, the field pool against its cap, the mind’s state and the bonuses on. The reports read those rows; the ones across time draw a bar a row, so a day or a week is seen at a glance. Each counts in whichever gain moved more over its span, which is ascension once a character is capped, and says which in its title. The time absorbing is the pulses’ own: a break longer than a pulse and a half counts as one pulse, so an hour away does not drag a rate down.
- Hours is the last 24, a bar an hour, newest last, with the mind
state the hour mostly sat in and how long of it went idle.
exp hours 12is the last twelve. - Week is seven days, a bar each, with each day’s rate and time absorbing, against the seven days before, and the best and worst day.
- Clock is the average for each hour of the day over fourteen days:
when the gains come.
exp clock 30averages over thirty. - Mind is where the time went: each state’s share of it and what a
pulse absorbed there, how long the pool sat at its cap (a kill past the
cap absorbs nothing) or empty, and how far apart the pulses came.
exp mind week, or two times, widens it. - Hunts is one row a hunt, newest first: its length, its kills, what
was absorbed while it ran and the rate, the creature seen most, and its
id linked to its combat report.
exp hunts 20,exp hunts week. - Bonus is each bonus on against off, a pulse’s worth either way, and where the span’s gains came from: absorbed, bounties, the brooch.
- Everyone is every character today on one table, with each one’s mind state and last pulse.
- Level is the level reached and when the next comes at today’s pace, this week’s, and the best day’s; at the cap, the pace in what still moves.
Session, Today, Daily, Last pulses, Instant and Between times add a span up, as before.
Flares
A flare’s report says how often it fired over every attack it rode, by attack, by the weapon in hand and, for a bow, by volley round; then what it did when it fired. The weapon table folds an item’s ids into one row, with by item opening every id; effects opens its rate with each effect up and without it, the ten widest gaps among effects up and down for a hundred swings each; fires alongside lists the flares that fire with it.
The Effects report lists what was up over the hunts, each effect under its name: the dialog writes a value or the time left into the text (“Empowered (+29)”, “Hypothermia (4) 9 mins”), and those are one row, with a link to the effect’s values, each as it was written, how many times it went up and for how long.
Gemstones
A hunt is recorded with the gemstones equipped as it opened, since a set
cannot change in combat. A hunt’s report lists them with their ranks, and
a gemstone flare’s report (mirror image, hunter’s afterimage, the shroud)
says the property it belongs to and its rate at each rank it ran at. The
set comes from gem list all, read when it passes and kept in the
character’s file; equipping or unequipping a gemstone keeps it current.
Barriers
Wall of Thorns blocks an attack before any roll, so a block says nothing of whether it would have hit; Barkskin absorbs the next hit, so every absorb would have. The reports keep the two apart: Intercepts counts the attacks blocked before any roll, then of those past the barriers, the ones that would have hit, absorbed or landed. The hunt keeps when each barrier was up (see Effects), so the thorns’ report gives blocks over the attacks that came while the wall was up, beside the one in five the spell says, and the lash that poisons over the blocks, beside its one in four; the bark’s, absorbs over what would have hit while it was up.
Gear
Every swing of yours is recorded with what the hands held as it was made, by the item’s own id, so two bows of one noun are two bows to the reports. A volley’s arrows carry their round. A flare the gauntlets lent, told by “You feel drained.” before it, is the gauntlets’ and not the bow’s. The items worn are kept per hunt as spans: from the second an item was first seen worn to the second it was seen gone, so a swap during a hunt is a closed span and an open one. An item is one name across logins, where the game’s own id for it changes with each. A flare’s report then shows its rate by the weapon in hand, by round, and by source; a flare that fires on a first flight only leaves a volley’s later rounds out of its base. Gear lists each item held with the flares seen on it, the gauntlets’ flares, and the items worn over the hunts.
Effects
Every spell, buff, debuff and cooldown the game lists is kept over a hunt the same way, as a span from the second it was seen up to the second it was seen down; Barkskin, which shows no bar while up, is read off its lines. Nothing is copied per attack: an attack’s active set is whatever spans cover its time. Effects lists what was up over a scope, in how many hunts and for how long against the hunting time. A hunt’s report says what was up as it opened. A flare’s report ends with the effects that were up for some of its swings and not the rest, with the rate each side, which is where a buff or a gemstone property shows whether it changes anything. Names are kept once, in one table, so the file does not repeat them: a flare, a spell, a property, a piece of gear is a number in the rows and a name in the table.
Syncing
The first time a character is seated with nothing stored, Hydra sends the
reports that teach its facts once: info full, skills full, the PSM
lists, inventory enhancive totals, gem list all, society and the
rest. They are asked quietly, one at a time: their long answers stay out
of the story, which says only each stage (Sync 2/12: skills full) and
when all are done. After that, play keeps them current and nothing is
sent at login.
.sync sends them all again, .sync <group> one of them, and .sync reset drops what is stored first.
Typed
The same reports answer on the command line, in a character’s play window:
.exp for the experience reports and .cstats for combat. .exp help and
.cstats help list every one. Three words change the ledger and are only
ever typed: .exp addgain <n> for a gain the bar did not state, .exp clean to drop pulses with no gain, and .exp reset to drop every row of
that character’s, which asks first.
Filling the ledger from recordings
A session Hydra recorded (its .bytes files, when recording is on) can be
read back into the ledger with Hydra closed:
hydra import logs
Each session is replayed as it was played, and every hunt and pulse it holds is recorded. A file is never read twice, a session that overlaps hunts or pulses already on file is refused, and a pulse already on file is skipped.
Lich’s own logs read back the same way: point hydra import at a Lich
logs folder, or any folder under a GSIV-<Name> one, and its .xml
files are read (the plain .log files beside them hold nothing a report
can use). The folder names the character and its game; the files Lich
cut a login into are read as one session, so a hunt across a cut stays
whole. A log older than the game’s experience numbers on the mind bar
brings its hunts but no experience.
hydra import "E:\Gemstone\data\log archive\GSIV-Nisugi\2026\01\xml"