These are some minor tweaks to Garan's Alerter plugin,
for a couple of use cases: Reforge Reminders, and Fireworks Launcher Assist.
This Alerter setup is useful for reminding the player whenever they attain a character level which is eligible for a reforge. When actually levelling, the channel to watch for is Advancement, although for testing, the Tell, Kin, Officer, or a custom UserChatX channel/room may be preferable. Note that Bullroarer is great for final testing of these configs, since in that environment, one can easily level a character, simply by talking to an NPC.
In configuration terms, this use case can be implemented either as
- 20 different alerts, each a literal string match of the "Your level has changed to " message,
- 5 different alerts, using LUA pattern-matching syntax, e.g. character classes, character sets, quantifiers, or
- 1 alert, using Trigger LUA code.
For the 5 different alert method, the patterns, as of Update 33, are:
- Your level has changed to 56
- Your level has changed to [6-9]
- Your level has changed to 1%d
- Your level has changed to 10
- Your level has changed to 105
Note that 1%d will cover all future levels from 141 through 196, assuming SSG sticks with a "1s and 6s" pattern.
The single-alert method requires some Trigger LUA code, which is provided (in a page within my Author portal
). Also, Trigger LUA doesn't work at all
in the absence of a one-line fix from Garan (line 2317 of an unmodified version 1.08 Main.lua file). This fix is incorporated into the Main.lua that is contained within this package (although it's at line 2324, due to 7 lines being inserted higher up in the file, see FIREWORKS LAUNCHER ASSIST below).
This particular implementation of the Trigger LUA code assumes that the Pattern on the Trigger tab will do a capture of just the digits of the new level. But this is not strictly necessary; the code could be modified to do its matching directly on args.Message.
If a graphical representation of the Reforge Reminder is desired, fill in the Image field on the Response tab with
This image file (provided in this package) is a genericized version of the Reforge dialogue from in-game, with the currency amounts blanked out, as well as the thumbnail icon of the LI to be reforged. This image can then be resized, rescaled, repositioned, etc. as usual within the Alerter plugin framework.
If one wants to display only
the image, and no text, place a space or other non-printing character in the "Message" field of the main panel. Leaving the field blank won't suppress the text output; rather, it will cause the message string to be passed through to the output.
FIREWORKS LAUNCHER ASSIST
This use case is specific to the fireworks-launching quest of the Anniversary Festival. Sorry I wasn't able to get this finished up before the end of the 15th Anniversary (in 2022), but hopefully it will be useful for the 2023 festival.
The Fireworks Announcer emits his messages on the Say channel, although for testing, other channels can be used. There is no attempt here to identify that the messages actually originated from the Fireworks Announcer, so this is not entirely secure from miscreants who may try to confuse people by Say'ing similar messages. Matching code could be added to make this secure (by checking whether the prefix of the message corresponds to the Fireworks Announcer).
Like Reforge Reminders, there are a number of different ways to set this up. It can be either
- 40 different alerts (!), a literal string match for each possible announcement
- 10 different alerts, with a single capture of just the firework color, where the capture can be used in text output, or as a parameterized image fetch, or
- 1 alert, with a chunk of Trigger LUA code which does the grunt work of pattern matching, and populates both the firework color (%2) and the negative/positive (i.e. whether to launch a particular firework color, or whether to launch any color other than a particular color
The 10 different alerts would have the following Trigger patterns (in no particular order):
- (negative) Let's dazzle the crowd with a firework that isn't (.*)!
- (positive) Let's dazzle the crowd with a firework that is (.*)!
- (negative) Send up anything except a (.*) firework; this will be unexpected!
- (positive) Send up a (.*) firework, this is the perfect time for one!
- (negative) This is not the time for (.*) fireworks, but any other colour will do!
- (positive) This is not the time for resting, launch your (.*) fireworks!
- (negative) Quickly, launch a firework that's not (.*) high into the sky!
- (positive) Quickly, launch a (.*) firework high into the sky!
- (negative) How about something besides (.*)%? Launch it now!
- (positive) How about a bright (.*) one%? Launch it now!
Note that the last 2 patterns ("How about ...") need to escape the ? in order to match the text properly.
The single capture can then be used in the text output, e.g. a Message contents of "color: %1" for positive matches and "color: not %1" for negative matches.
The single-alert method requires a chunk of Trigger LUA code, which is provided (in a page within my Author portal
). In this case, %1 is set to either "is" or "isnot", and %2 to the color. If one wishes text output, and finds the non-word "isnot" to be annoying, the Trigger LUA code could be modified to change that to something else.
For any of these methods, the graphical version consists of populating the Image field on the Response page accordingly:
- For the 40-alert version, the format would be invariant, per alert, e.g. Egarthur/fireworks_isnot_green.tga.
- For the 10-alert version, the %1 positional parameter would only be used for the color part, e.g. Egarthur/fireworks_is_%1.tga or Egarthur/fireworks_isnot_%1.tga.
- For the 1-alert version, both positional parameters would be used, i.e. Egarthur/fireworks_%1_%2.tga.
The ability to use positional parameters in the Image field is not a stock part of Alerter version 1.08, but the necessary 7-line modification of Main.lua is included in this package.
MIDSUMMER WINE-TASTING OVERLAY
The wine-tasting quest in the Midsummer Festival -- To the Last Drop -- consists of tasting a number of wines arranged on a table in the basement of the Splintered Shield, until one finds the "correct" wine. This can be a rather time-consuming quest, unless one knows the "secret". For those who do not like spoilers, skip the rest of this description and don't configure Alerter for this.
But for those who want the spoiler, or who already know it...
Alerter can be configured to display a flashing graphic, of a specific size and position on the screen, so it can show the positions of all of the "wrong" wineglasses, and by process of elimination, the "right" wineglass will be the only one which does not appear in the flashing image.
Here's an animated version of what the "overlay" looks like. For best results, stand on a circular decoration on the floor, closest to the center of the table, with one's back to the nearby Adept Flutist, and point the camera down
as far as possible, with no zoom.
Animation of wine-tasting overlay
For this alert, I would recommend a "manual" trigger. It is theoretically possible to "automatically" trigger from either
- the quest response when drinking a "wrong" wine, or
- the "say"-channel dialogue of the Adept Flutist
However, #1 requires that a "wrong" wine be chosen before the "right" one. This is time-consuming for the player, and unnecessary, plus the quest responses are so varied, multiple alerts would be necessary, or some non-trivial Trigger LUA code would be necessary to wade through all
"quest"-channel dialogue (which could be a performance issue).
#2 requires either that the player, or some other player, has recently interacted with the Adept Flutist as part of the Toss A Coin quest.
Therefore, I would recommend assigning a shortcut to send oneself a "tell", with a specific string that would trigger the alert.
/shortcut 39 /t Egarthur tastewine
would assign the command
/t Egarthur tastewine
to the quickslot which can also be accessed via shift-3 (WARNING! that would overwrite anything already in that position. Pick an unused quickslot for this, the wiki page for "Aliases and Quickslot Shortcuts" is a good guide for this).
Obviously, change Egarthur to whatever your character name is.
Then the trigger pattern for the alert would be simply the string
and the channel to listen on would be Tell.
Now, the "manual" trigger for this alert consists of merely clicking whatever is in the relevant quickslot.
For the Response portion of the configuration, I would recommend:
to line up the graphic as closely as possible with the in-game image of the table. (At least, this works for my particular screen resolution and/or aspect ratio; your mileage may vary).
Set duration and interval (which controls flashing rate) as desired.
The Image field will be set to Egarthur/wine glass spoiler.jpg
(which will be provided in version 1.02 of this patch, not present yet), or create your own image and place it within the Resources directory.
Message field set to <space> or some other non-printing character, to suppress any text output.
If the duration is long, one may wish to implement an easy way to turn off the flashing display. There is a Hide after Click checkbox, but I haven't had much luck dismissing the alert by clicking on either the text or the graphic of the display. I have, however, been able to easily dismiss the alert by setting a "Quickslot", and then clicking on the icon that the quickslot is set to (in the middle of the flashing image). My preference is to use an "emote" quickslot, since clicking the icon means that the action will be performed, and an emote is more benign than other icon types (e.g. "item", which I assume would be "use"d, "skill", which would be executed, etc.). I would recommend the /drink emote (0x70005C85), or, if you have it from Anniversary, the /toast emote (0x7002D41D), or, if/when you get it from Midsummer, the /wine_tasting emote (0x7005815C), although the /wine_tasting emote animation is rather lengthy. If you don't want to emote at all, you can always choose the /nothing emote (0x7000B319). (Finally found a use for that one :-)