Delete raidboss.js
This commit is contained in:
parent
aaff2166c1
commit
be1bf1dca4
892
raidboss.js
892
raidboss.js
@ -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';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user