Skip to content

GenieClient/Plugin_SpellTimerV5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plugin_SpellTimerV5

The Spell Timer plugin for Genie 5 — a port of UFTimmy's SpellTimer for the Genie 5 platform.

Turns DR's Active Spells window (the percWindow stream) into persistent script variables and renders the live list to the Active Spells dock window:

Active: 3
──────────────────────────────────────
Stellar Collector      42% charged
Clear Vision           14 roisaen
Substratum             indefinite

For each tracked spell it publishes the same $SpellTimer.* globals the Genie 4 plugin provided, so existing .cmd scripts keep working:

$SpellTimer.ClearVision.active=1
$SpellTimer.ClearVision.duration=14

Use them to keep buffs up:

if (!$SpellTimer.ClearVision.active) then put cast cv
if ($SpellTimer.ClearVision.duration < 2) then put cast cv

The spell token strips spaces, apostrophes and hyphens (Clear VisionClearVision), matching the Genie 4 variable names exactly. Stellar Collector also gets $SpellTimer.StellarCollector.charge (0–100).

Requirements

  • .NET 8 SDK (to build).
  • A Genie 5 install with the plugin system (host version ≥ 5.0).

Build

dotnet build -c Release

Output: bin/Release/net8.0/Plugin_SpellTimerV5.dll.

The project references the Genie 5 plugin contract (Genie.Plugins.Abstractions) from a committed copy in lib/, so no NuGet feed is required to compile.

Install

Open your plugins folder with Plugins → Open Plugins Folder (this works for both standard and portable installs — it always opens the right one). The standard locations are:

  • Windows: %APPDATA%\Genie5\Plugins\
  • macOS: ~/Library/Application Support/Genie5/Plugins/
  • Linux: ~/.local/share/Genie5/Plugins/ (or $XDG_DATA_HOME/Genie5/Plugins/)

Copy Plugin_SpellTimerV5.dll into that folder, then in Genie 5 either:

  • Reconnect — plugins load on connect, or
  • Plugins → Load → Plugin_SpellTimerV5.dll (menu), or
  • #plugin load Plugin_SpellTimerV5 (command bar).

Open the panel via Window → Active Spells. Cast a buff (or wait for the next spell refresh) to populate it.

Manage

From the Plugins menu:

  • Reload Plugins — pick up a freshly rebuilt DLL.
  • Enable / Disable → Spell Timer — toggle without unloading (panel blanks when disabled; re-enabling repaints on the next prompt).
  • Unload → Spell Timer — fully remove (releases the .dll).

Or from the command bar:

#plugin list
#plugin enable  "Spell Timer"
#plugin disable "Spell Timer"
#plugin unload  "Spell Timer"
#plugin load    Plugin_SpellTimerV5
#plugin reload
#plugin folder

You can also type /spelltimer in-game to print the current active and recently-inactive spell list to the main window.

How it works

  • Reads DR's percWindow stream: each refresh is a <clearStream id="percWindow"/> followed by one <pushStream id="percWindow"/>Spell Name (N roisaen) line per active spell.
  • The full list is re-sent on every refresh, so a spell that drops off simply stops appearing — the plugin marks it inactive on the next refresh.
  • Parses the duration forms DR uses: N roisaen / N roisan (singular), Indefinite / OM → indefinite, Fading, Stellar Collector (N%) charge, Osrel Meraud (N%), and the Moonblade "slivers of lunar magic" count phrase.
  • Re-renders the Active Spells window on each <prompt> when anything changed, and writes the $SpellTimer.* globals as they update.

The plugin has no UI dependency — it writes formatted text to a named window via the host API (SetWindow("Active Spells", …)), and the host surfaces that window as a dock panel.

License

GPL-3.0 — same as Genie 5 and the Genie 4 ecosystem.

Credits

Behaviour ported from UFTimmy's Plugin_SpellTimer for Genie 4.

About

Genie 5 Compatible Version

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages