Skip to content

Buff Watcher Settings

kahlen-tech edited this page Oct 4, 2026 · 1 revision

Description

Keeps a set of buffs up on you in the background. Every minute it checks whether everything in your chosen waggle set is active. If something has dropped and it's a good moment, it pauses your other scripts, casts the set the same way buff does, and lets them carry on.

It works for spells, Thief khri and Barbarian abilities.

It isn't stopped by ;kill all or paused by ;pause all. Stop it with ;kill buff-watcher.
It re-reads your waggle sets at every check, so you can change your buffs without restarting it.
To cast a set just once, run ;buff <set> instead.

Settings

YAML Settings

Which buffs

buff_watcher_name: default
waggle_sets:
  default:
    Manifest Force:
      mana: 50
Setting Default Purpose
buff_watcher_name default The waggle set to keep up. A set name on the command line overrides it.

If the set doesn't exist, it says "No spells defined in buff set" and stops.

A buff counts as active when:

  • Spells: each spell in the set is active, with more time left than its recast value, if it has one.
  • Thief khri: each khri named in the set is active.
  • Barbarian abilities: each ability in the set is active.

When not to buff

buff_watcher_no_use_scripts:
  - alchemy
  - athletics
  - bescort
  - buff
  - burgle
  - carve
  - combat-trainer
  - craft
  - enchant
  - feed-cloak
  - forge
  - get2
  - go2
  - healme
  - hunting-buddy
  - locksmithing
  - pick
  - remedy
  - sew
  - shape
  - smelt
  - smith
  - stabbity
  - steal
  - tinker
  - workorders
buff_watcher_no_use_rooms:
  - 1900
  - Knife Clan, Triage
  - !ruby/regexp '/^(?:First )?Provincial Bank,/'
  - !ruby/regexp '/Carousel (?:Booth|Chamber)$/'
  - !ruby/regexp '/^(?:Shard, )?First Bank of Ilithi,?/'
barb_buffs_inner_fire_threshold: 15
Setting Default Purpose
buff_watcher_no_use_scripts the list above Don't buff while any of these scripts is running. go2 and burgle are always added, even if your list leaves them out.
buff_watcher_no_use_rooms the list above Don't buff in these rooms. Each entry is a room id (a plain number, not in quotes), the whole room title (without the [[ ]]), or a !ruby/regexp matched against the title.
barb_buffs_inner_fire_threshold 15 Barbarians: don't buff while your inner fire is below this.

Both lists come with useful defaults. If you set your own, yours replaces the default list completely, so start from the lists above and add to them.

It also never buffs while you're hidden or invisible.

A plain text room entry must match the whole title exactly. For part of a title, use a !ruby/regexp like the bank entries above.

Timing

buff_watcher_startup_delay: 10
buff_watcher_passive_delay: 60
Setting Default Purpose
buff_watcher_startup_delay 10 Seconds to wait after starting before doing anything, so it isn't adding to the spam of everything starting at login. A number on the command line overrides it.
buff_watcher_passive_delay 60 Seconds between checks.

Casting

stored_cambrinth: false
cambrinth_items:
  - name:
    cap:
    stored:
waggle_spells_mana_threshold: 40
waggle_spells_concentration_threshold: 80

Spells are cast the same way ;buff casts them, so the usual casting settings apply. For example, it waits for waggle_spells_mana_threshold mana and waggle_spells_concentration_threshold concentration before each spell.

If you keep cambrinth in a container (stored_cambrinth: true, or a cambrinth_items entry with stored: true) and both your hands are full, it lowers the item in your left hand to your feet to free a hand, then picks it back up afterwards. Thieves and Barbarians skip this.

What each check does

There are no settings for these; this is what to expect.

  1. Checks whether it should buff: you aren't hidden or invisible, no no-use script is running, you aren't in a no-use room, you have enough inner fire (Barbarians), and something in the set has dropped.
  2. If so, pauses your other scripts (if it can't, it tries again every 30 seconds) and waits for roundtime.
  3. Frees a hand if your cambrinth is stored (see Casting), then casts the set.
  4. Picks up anything it lowered, and unpauses your scripts.
  5. Waits buff_watcher_passive_delay seconds and checks again.
If buff-watcher keeps recasting buffs that are already up, check the order of your autostart scripts. textsubs must start after spellmonitor, or buff-watcher can't see your active spells.

Argument Settings

Argument Purpose
set name Keep this waggle set up instead of buff_watcher_name. It must start with a letter.
number Wait this many seconds before starting, instead of buff_watcher_startup_delay.

Usage

;buff-watcher

;buff-watcher combat

;buff-watcher combat 30

;buff-watcher 0

Leave it running. To have it start every time you log in, add it to your Lich autostart.

Clone this wiki locally