diff --git a/raidboss.js b/raidboss.js deleted file mode 100644 index 88b8fb0..0000000 --- a/raidboss.js +++ /dev/null @@ -1,892 +0,0 @@ -'use strict'; - -// Rename this file to `raidboss.js` and edit it to change the raidboss ui. -// This file is Javascript. Anything after "//" on a line is a comment. -// If you edit this file, remember to reload ACT or click the "Reload overlay" -// button on the raidboss CactbotOverlay. -// If there are errors in this file, they will appear in the OverlayPlugin.dll -// log window in ACT. - - -// If false, no timeline of upcoming events will be displayed during fights. -Options.TimelineEnabled = true; - -// If false, triggers and timelines will not show or speak text, nor play -// sounds. -Options.AlertsEnabled = true; - -// If false, then visual text alerts are not shown for triggers. -Options.TextAlertsEnabled = true; - -// If false, then sound alerts are not played. -Options.SoundAlertsEnabled = true; - -// If true, then text-to-speech alerts are read aloud. Text-to-speech takes -// priority over custom sounds and text noises. If a trigger does not have -// a tts entry then it will fall back on text and sound (if turned on). -Options.SpokenAlertsEnabled = true; - -// Will override the singular TTS alerts if a group alert is set for a specific trigger -// Change phrasing to make sense in a group setting -Options.GroupSpokenAlertsEnabled = true; - - -// Show timer bars for events that will happen in this many seconds or less. -Options.ShowTimerBarsAtSeconds = 30; - -// Once a timer bar reaches 0, keep it around this long after. -Options.KeepExpiredTimerBarsForSeconds = 0.7; - -// Change the bar color to highlight it is coming up when this many seconds -// are left on it. -Options.BarExpiresSoonSeconds = 8; - -// Number of bars to show in the space given to the UI by css. -Options.MaxNumberOfTimerBars = 8; - - -// Path to sound played for info-priority text popups, or when "Info" is -// specified as the sound name. -Options.InfoSound = '../../resources/sounds/freesound/percussion_hit.ogg'; - -// Path to sound played for alert-priority text popups, or when "Alert" is -// specified as the sound name. -Options.AlertSound = '../../resources/sounds/BigWigs/Alert.ogg'; - -// Path to sound played for alarm-priority text popups, or when "Alarm" is -// specified as the sound name. -Options.AlarmSound = '../../resources/sounds/BigWigs/Alarm.ogg'; - -// Path to sound played when "Long" is specified as the sound name. -Options.LongSound = '../../resources/sounds/BigWigs/Long.ogg'; - -// Volume between 0 and 1 to play the InfoSound at. -Options.InfoSoundVolume = 1; - -// Volume between 0 and 1 to play the AlertSound at. -Options.AlertSoundVolume = 2; - -// Volume between 0 and 1 to play the AlarmSound at. -Options.AlarmSoundVolume = 1; - -// Volume between 0 and 1 to play the LongSound at. -Options.LongSoundVolume = 1; - -// A set of nicknames to use for players, when trying to shorten names. -Options.PlayerNicks = { - 'Darkest Edgelord': 'Mary', - 'Captain Jimmy': 'Jimmy', - 'Pipira Pira': '🐟', -}; - -// A set of triggers to be ignored. The key is the 'id' of the trigger, and -// the value should be true if the trigger is to be ignored, whereas false -// will have no effect. The trigger ids can be found in the trigger files for -// each fight in the files inside of this directory: -// https://github.com/quisquous/cactbot/tree/master/ui/raidboss/data/triggers -Options.DisabledTriggers = { - // Disable the /psych trigger from `test.js` in Summerford Farms. - 'Test Psych': true, - // Disable the "eye lasers" trigger from `drowned_city_of_skalla.js`. - 'Hrodric Words': true, -}; - - -// An array of user-defined triggers, in the format defined in the readme: -// https://github.com/quisquous/cactbot/tree/master/ui/raidboss/data/triggers -Options.Triggers = [ - - // (1) Simple example trigger: show text on screen when you die. - { - // Match every zone. - zoneRegex: /.*/, - triggers: [ - { - regex: /:You are defeated by/, - alarmText: 'YOU DIED', - }, - { - regex: /:\y{Name}:\y{AbilityCode}:Chain Stratagem:/, - infoText: 'Chain Stratagem', - }, - { - regex: /:\y{Name}:\y{AbilityCode}:Trick Attack:/, - infoText: 'Trick Attack', - }, - { - regex: /:\y{Name}:\y{AbilityCode}:Devilment:/, - infoText: 'Devilment', - }, - ], - }, - - // You can add other triggers for other zones too. Here's more examples: - // - // (2) Maybe you want a silly kissy noise whenever you a blow a kiss in - // a housing zone! - { - zoneRegex: /^(Mist|The Goblet|The Lavender Beds|Shirogane)$/, - triggers: [ - { - regex: /You blow a kiss/, - alertText: 'In or Out', - }, - ], - }, - - // (3) Maybe you want to modify some existing timeline and triggers: - // - // Add some extra triggers to the test timeline. To use it, see: - // https://github.com/quisquous/cactbot/blob/master/ui/raidboss/data/timelines/test.txt - { - // The zone this should apply to. - // This should match the zoneRegex in the triggers file. - zoneRegex: /^Middle La Noscea$/, - - // Add some additional timeline events to the test timeline. - timeline: ` - - # Note: Hash marks are comments inside of a timeline file. - # This format is the same as ACT timeline. - - # Add a new personal event to the test timeline. - 2 "(test)" - 3 "(test2)" - 4 "(test4)" - - # Remind yourself to shield the tank 5 seconds before final sting. - infotext "Final Sting" before 5 "shield the tank" - - # Events you don't like, you can hide. This gets rid of "Long Castbar". - hideall "Long Castbar" - `, - - // Add some additional triggers that will go off in Summerford Farms. - triggers: [ - // If you provoke the striking dummy (or anything), this will trigger. - { - id: 'User Example Provoke', - regex: /You use Sprint/, - alarmText: function(data) { - return data.job + 'DU BIST EIN RETURN'; - }, - infoText: 'Sprint!', - tts: 'provoke', - }, - - // A more complicated regen trigger. - { - id: 'User Example Regen', - // This will match log lines from ACT that look like this: - // "Nacho Queen gains the effect of Regen from Taco Cat for 21.00 Seconds." - regex: /gains the effect of Regen from \y{Name} for (\y{Float}) Seconds/, - delaySeconds: function(data, matches) { - // Wait the amount of seconds regen lasts before reminding you to - // reapply it. This is not smart enough to figure out if you - // cast it twice, and is left as an exercise for the reader to - // figure out how to do so via storing variables on `data`. - return data.ParseLocaleFloat(matches[1]); - }, - - alertText: 'Regen Reminder', - tts: 'regen', - }, - ], - }, - // EDEN SAVAGE FIGHTS - // E1S - { - zoneRegex: /^Eden's Gate: Resurrection \(Savage\)$/, - timeline: ` - - # dnc cooldowns - 88 "Shield Samba0" - 629.6 "Shield Samba1" - - # smn cooldowns - 105.8 "Addle0" - 700.8 "Addle1" - - # mnk cooldowns - 11.8 "Mantra0" - 105.8 "Mantra1" - 194.6 "Mantra2" - 629.6 "Mantra3" - - # gnb cooldowns - # invul - 576.0 "Superbolide0" - - # Repraisal & HoL - 11.8 "Repraisal & HoL0" - 143.0 "Repraisal & HoL1" - 589.0 "Repraisal & HoL2" - 726.3 "Repraisal & HoL3" - - # sch cooldowns - 11.8 "recit and indom" - 153.6 "Seraph 0" - 528.6 "Fairy Stuff" - 577.6 "recit and excog" - 589.1 "Seraph 1" - - # whm cooldowns - 59.4 "Benediction0" - 88 "Indulgence0" - 568.6 "Regens" - 629.6 "Temperance" - 678.1 "Benediction1" - 726.3 "Indulgence1" - - # choose what you want to hide! (add # at the beginning to "hideall" / remove # to show) - # DANCER - hideall "Shield Samba0" - hideall "Shield Samba1" - - # SUMMONER / BLACKMAGE / REDMAGE - hideall "Addle0" - hideall "Addle1" - - # MONK - hideall "Mantra0" - hideall "Mantra1" - hideall "Mantra2" - hideall "Mantra3" - - # GUNBREAKER - hideall "Superbolide0" - hideall "Repraisal & HoL0" - hideall "Repraisal & HoL1" - hideall "Repraisal & HoL2" - hideall "Repraisal & HoL3" - - # SCHOLAR - hideall "Seraph0" - hideall "Seraph1" - hideall "recit and indom" - hideall "Fairy Stuff" - hideall "recitand excog" - - # WHITEMAGE - hideall "Benediction0" - hideall "Benediction1" - hideall "Indulgence0" - hideall "Indulgence1" - hideall "Regens" - hideall "Temperance" - - - `, - timelineTriggers: [ - // DANCER - { - regex: /Shield Samba\d/, - condition: function(data) { - return data.job == 'DNC'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Shield Samba', - }, - // SUMMONER - { - regex: /Addle\d/, - condition: function(data) { - return data.job == 'SMN' || data.job == 'BLM' || data.job == 'RDM'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Use Addle', - }, - // MONK - { - regex: /Mantra\d/, - condition: function(data) { - return data.job == 'MNK'; - }, - beforeSeconds: 2, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Use Mantra', - }, - // GUNBREAKER INVULS - { - regex: /Superbolide0\d/, - condition: function(data) { - return data.job == 'GNB'; - }, - beforeSeconds: 6, - alarmText: 'USE INVUL', - tts: 'Invul next Tankbuster', - }, - // GUNBREAKER REPRAISEL AND HEART OF LIGHT - { - regex: /Repraisal & HoL\d/, - condition: function(data) { - return data.job == 'GNB'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Repraisal and Heart of Light', - }, - // SCHOLAR -- LOTS OF SCHOLAR - { - regex: /recit and indom/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'RECIT + INDOM', - tts: 'Recitation and Indom', - }, - { - regex: /Seraph0/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'SERAPH', - tts: 'SERAPH', - }, - { - regex: /Fairy Stuff/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'FAIRY INC', - tts: 'use fairy', - }, - { - regex: /recit and excog/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'RECIT + EXCOG', - tts: 'RECIT + EXCOG second hit', - }, - { - regex: /Seraph1/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'SERAPH', - tts: 'SERAPH', - }, - // Whitemage - { - regex: /Benediction\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'BENEDICTION AFTER TANKBUSTER', - tts: 'Benediction after Tankbuster', - }, - { - regex: /Indulgence\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE INDULGENCE AFTER DELTA', - tts: 'INDULGENCE AFTER DELTA', - }, - { - regex: /Regens/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE REGEN FOR DPS MARKS', - tts: 'Regen for DPS marks', - }, - { - regex: /Temperance/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE TEMPERANCE', - tts: 'use temperance for aoe', - }, - ], - }, - // E2S - { - zoneRegex: /^Eden's Gate: Descent \(Savage\)$/, - timeline: ` - - # dnc cooldowns - 25.2 "Shield Samba0" - 203.2 "Shield Samba1" - 429.8 "Shield Samba2" - 602.3 "Shield Samba3" - - # smn cooldowns - 105.2 "Addle0" - 224.7 "Addle1" - 381.4 "Addle2" - 499.0 "Addle3" - 602.3 "Addle4" - - # mnk cooldowns - 132.1 "Mantra0" - 224.7 "Mantra1" - 381.4 "Mantra2" - 558.2 "Mantra3" - - # gnb cooldowns - # invul - - # Repraisal & HoL - 25.2 "Repraisal & HoL0" - 105.2 "Repraisal & HoL1" - 203.2 "Repraisal & HoL2" - 272.7 "Repraisal & HoL3" - 381.4 "Repraisal & HoL4" - 499.0 "Repraisal & HoL5" - 602.3 "Repraisal & HoL6" - - # sch cooldowns - 25.2 "recit and indom0" - 224.7 "Succ and soil0" - 272.7 "Soil0" - 381.4 "Succ and soil1" - 386.7 "recit and indom1" - 429.8 "recit and indom2" - 499.0 "Soil1" - - # whm cooldowns - 106.6 "Temperance0" - 134.1 "Indulgence0" - 224.7 "Indulgence1" - 295.5 "Indulgence2" - 386.7 "Indulgence3" - 381.4 "Temperance1" - 429.8 "Indulgence4" - 499.0 "Indulgence5" - 558.0 "Indulgence and Temperance" - - # choose what you want to hide! (add # at the beginning to "hideall" / remove # to show) - # DANCER - hideall "Shield Samba0" - hideall "Shield Samba1" - hideall "Shield Samba2" - hideall "Shield Samba3" - - # SUMMONER / BLACKMAGE / REDMAGE - hideall "Addle0" - hideall "Addle1" - hideall "Addle2" - hideall "Addle3" - hideall "Addle4" - - # MONK - hideall "Mantra0" - hideall "Mantra1" - hideall "Mantra2" - hideall "Mantra3" - - # GUNBREAKER - hideall "Repraisal & HoL0" - hideall "Repraisal & HoL1" - hideall "Repraisal & HoL2" - hideall "Repraisal & HoL3" - hideall "Repraisal & HoL4" - hideall "Repraisal & HoL5" - hideall "Repraisal & HoL6" - - # SCHOLAR - hideall "recit and indom0" - hideall "Succ and soil0" - hideall "Soil0" - hideall "Succ and soil1" - hideall "recit and indom1" - hideall "recit and indom2" - hideall "Soil1" - - # WHITEMAGE - hideall "Temperance0" - hideall "Indulgence0" - hideall "Indulgence1" - hideall "Indulgence2" - hideall "Indulgence3" - hideall "Temperance1" - hideall "Indulgence4" - hideall "Indulgence5" - hideall "Indulgence and Temperance" - `, - timelineTriggers: [ - // DANCER - { - regex: /Shield Samba\d/, - condition: function(data) { - return data.job == 'DNC'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Shield Samba', - }, - // SUMMONER / BLACKMAGE / REDMAGE - Just for 1 Magical DPS - { - regex: /Addle\d/, - condition: function(data) { - return data.job == 'SMN' || data.job == 'BLM' || data.job == 'RDM'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Use Addle', - }, - // MONK - { - regex: /Mantra\d/, - condition: function(data) { - return data.job == 'MNK'; - }, - beforeSeconds: 2, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Use Mantra', - }, - // GUNBREAKER INVULS - Currently Empty for this fight - // GUNBREAKER REPRAISEL AND HEART OF LIGHT - { - regex: /Repraisal & HoL\d/, - condition: function(data) { - return data.job == 'GNB'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Repraisal and Heart of Light', - }, - // SCHOLAR -- LOTS OF SCHOLAR - { - regex: /recit and indom\d/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'RECIT + INDOM', - tts: 'Recitation and Indom', - }, - { - regex: /Succ and soil\d/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'SUCC AND SOIL', - tts: 'Succ and soil', - }, - { - regex: /Soil\d/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'USE SOIL', - tts: 'use soil', - }, - // Whitemage - { - regex: /Temperance\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE TEMPERANCE', - tts: 'use temperance for aoe', - }, - { - regex: /Indulgence\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE INDULGENCE', - tts: 'use indulgence for aoe', - }, - { - regex: /Indulgence and Temperance/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE INDULGENCE AND TEMPERANCE', - tts: 'indulgence and temperance', - }, - ], - }, - // E3S - { - zoneRegex: /^Eden's Gate: Inundation \(Savage\)$/, - timeline: ` - - # dnc cooldowns - 4.1 "Shield Samba0" - 185.1 "Shield Samba1" - 429.8 "Shield Samba2" - - # smn cooldowns - 127.6 "Addle0" - 223.4 "Addle1" - 316.2 "Addle2" - 422.4 "Addle3" - 540.7 "Addle4" - - # mnk cooldowns - 112.0 "Mantra0" - 223.4 "Mantra1" - 429.8 "Mantra2" - 488.0 "Mantra3" - 582.0 "Mantra4" - - # gnb cooldowns - # invul - 175.7 "Superbolide0" - - # Repraisal & HoL - 69.5 "Repraisal & HoL0" - 168.5 "Repraisal & HoL1" - 264.1 "Repraisal & HoL2" - 373.0 "Repraisal & HoL3" - 441.0 "Repraisal & HoL4" - 524.4 "Repraisal & HoL5" - 587.7 "Repraisal & HoL6" - - # sch cooldowns - 146.0 "Seraph0" - 358.0 "Seraph1" - 441.0 "Fey Illumination" - 449.0 "recit and indom" - 524.4 "Seraph2" - - # whm cooldowns - 12.6 "Indulgence0" - 127.6 "Indulgence and Temperance0" - 197.1 "Indulgence1" - 316.4 "Indulgence and Temperance1" - 371.0 "Indulgence2" - 441.0 "Temperance0" - 493.0 "Indulgence3" - 576.7 "Temperance1" - - # choose what you want to hide! (add # at the beginning to "hideall" / remove # to show) - # DANCER - hideall "Shield Samba0" - hideall "Shield Samba1" - hideall "Shield Samba2" - - # SUMMONER / BLACKMAGE / REDMAGE - hideall "Addle0" - hideall "Addle1" - hideall "Addle2" - hideall "Addle3" - hideall "Addle4" - - # MONK - hideall "Mantra0" - hideall "Mantra1" - hideall "Mantra2" - hideall "Mantra3" - hideall "Mantra4" - - # GUNBREAKER - hideall "Superbolide0" - hideall "Repraisal & HoL0" - hideall "Repraisal & HoL1" - hideall "Repraisal & HoL2" - hideall "Repraisal & HoL3" - hideall "Repraisal & HoL4" - hideall "Repraisal & HoL5" - hideall "Repraisal & HoL6" - - # SCHOLAR - hideall "Seraph0" - hideall "Seraph1" - hideall "Fey Illumination" - hideall "recit and indom" - hideall "Seraph2" - - # WHITEMAGE - hideall "Indulgence0" - hideall "Indulgence and Temperance0" - hideall "Indulgence1" - hideall "Indulgence and Temperance1" - hideall "Indulgence2" - hideall "Temperance0" - hideall "Indulgence3" - hideall "Temperance1" - - `, - timelineTriggers: [ - // DANCER - { - regex: /Shield Samba\d/, - condition: function(data) { - return data.job == 'DNC'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Shield Samba', - }, - // SUMMONER - { - regex: /Addle\d/, - condition: function(data) { - return data.job == 'SMN' || data.job == 'BLM'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Use Addle', - }, - // MONK - { - regex: /Mantra\d/, - condition: function(data) { - return data.job == 'MNK'; - }, - beforeSeconds: 2, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Use Mantra', - }, - // GUNBREAKER INVULS - { - regex: /Superbolide0\d/, - condition: function(data) { - return data.job == 'GNB'; - }, - beforeSeconds: 6, - alarmText: 'USE INVUL', - tts: 'Invul next Tankbuster', - }, - // GUNBREAKER REPRAISEL AND HEART OF LIGHT - { - regex: /Repraisal & HoL\d/, - condition: function(data) { - return data.job == 'GNB'; - }, - beforeSeconds: 4, - alarmText: 'USE RAIDCOOLDOWN', - tts: 'Repraisal and Heart of Light', - }, - // SCHOLAR -- LOTS OF SCHOLAR - { - regex: /Seraph\d/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'SERAPH', - tts: 'SERAPH', - }, - { - regex: /Fey Illumination/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'USE FEY ILLUMINATION', - tts: 'fey illumination', - }, - { - regex: /recit and indom/, - condition: function(data) { - return data.job == 'SCH'; - }, - beforeSeconds: 4, - alarmText: 'RECIT + INDOM', - tts: 'Recitation and Indom', - }, - // Whitemage - { - regex: /Temperance\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE TEMPERANCE', - tts: 'use temperance for aoe', - }, - { - regex: /Indulgence\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE INDULGENCE', - tts: 'use indulgence for aoe', - }, - { - regex: /Indulgence and Temperance\d/, - condition: function(data) { - return data.job == 'WHM'; - }, - beforeSeconds: 4, - alarmText: 'USE INDULGENCE AND TEMPERANCE', - tts: 'indulgence and temperance', - }, - ], - }, - // E4S -]; - -// Per trigger options. By default, each trigger uses the global options -// of TextAlertsEnabled, SoundAlertsEnabled, and SpokenAlertsEnabled. -// These global options are set up top in this file. -// -// If a per trigger entry is present (regardless if true/false), it will -// override whatever the global option is set to. -// -// SoundOverride (if present) behaves like 'sound' on an individual trigger, in -// that it will take the place of the info/alert/alarm noise if no sound has -// been specified. SoundAlert (or SoundAlertsEnabled) must still be true for -// that override to be played. -// -// Here's some example per trigger options that modify the test triggers -// in Summerford Farms: -// https://github.com/quisquous/cactbot/blob/master/ui/raidboss/data/triggers/test.js - -Options.PerTriggerOptions = { - // Just like Options.DisabledTriggers, this is the trigger id to apply to. - // This overrides the settings for the "/laugh" trigger from the test - // triggers. You can try this out by teleporting to Summerford Farms - // and /laugh at a striking dummy. It will use these settings and moo. - 'Test Laugh': { - // Play the text to speech. - SpeechAlert: false, - // Play the sound alert. - SoundAlert: true, - // Show the info/alert/alarm text on screen. - TextAlert: false, - // Play this sound (replacing any sound from the original). - SoundOverride: '../../resources/sounds/WeakAuras/CowMooing.ogg', - // Play the sound (if any) at this volume. - VolumeOverride: 0.3, - }, - // This makes /poke-ing a striking dummy in Summerford Farms only - // use text to speech with no visual text indicator or other sound. - 'Test Poke': { - SpeechAlert: true, - SoundAlert: false, - TextAlert: false, - // Override the tts output as well. - TTSText: function(data) { - return 'Custom Poke (' + data.pokes + ')'; - }, - }, - // This makes /clap-ing a striking dummy override the default - // behavior to use the group TTS - 'Test Clap': { - GroupSpeechAlert: true, - SpeechAlert: true, - SoundAlert: false, - TextAlert: false, - // Override the tts output as well. - GroupTTSText: function(data) { - return 'Custom CLAP'; - }, - }, -}; -