Skip to content

Commit ea9d92a

Browse files
authored
Templates and combat removal (#85)
* feat: Retain template option, blocklist rename, combat/PvP updates - Add Retain checkbox to copy buff settings when switching to fresh templates - Inclusivity: Rename blacklist → blocklist (with migration) - Default InCombat to off - Add PvP prep-only message for Arena/BG - Add play-sound tooltip. - bump version to r39.130226 * updated what's new.
1 parent 564dc52 commit ea9d92a

11 files changed

Lines changed: 140 additions & 31 deletions

.cursorrules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
- Follow the existing file organization (buffs in SmartBuff.buffs.lua, main logic in SmartBuff.lua)
3333
- Use existing constants and patterns where possible
3434

35+
## What's New (localization.en.lua)
36+
- SMARTBUFF_WHATSNEW should include brief notes for the last two versions only
37+
- When adding a new version, prepend its changes and keep the previous version's notes; remove notes older than two versions
38+
3539
## Documentation
3640
- Provide brief but clear explanations for any new functions
3741
- Include user-friendly descriptions in function headers

SmartBuff.globals.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
-------------------------------------------------------------------------------
1+
-------------------------------------------------------------------------------
22
-- Globals
33
-------------------------------------------------------------------------------
44

SmartBuff.lua

Lines changed: 68 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
-- and options frame on first load... could be annoying if done too often
1111
-- What's new is pulled from the SMARTBUFF_WHATSNEW string in localization.en.lua
1212
-- this is mostly optional, but good for internal housekeeping
13-
SMARTBUFF_DATE = "120226"; -- EU Date: DDMMYY
13+
SMARTBUFF_DATE = "130226"; -- EU Date: DDMMYY
1414
SMARTBUFF_VERSION = "r39." .. SMARTBUFF_DATE;
1515
-- Update the NR below to force reload of SB_Buffs on first login
1616
-- This is now OPTIONAL for most changes - only needed for major logical reworks or large patch changes.
@@ -113,7 +113,7 @@ local cClassGroups = {};
113113
local cBuffs = {};
114114
local cBuffIndex = {};
115115
local cBuffTimer = {};
116-
local cBlacklist = {};
116+
local cBlocklist = {};
117117
local cUnits = {};
118118
local cBuffsCombat = {};
119119

@@ -924,8 +924,8 @@ local arg1, arg2, arg3, arg4, arg5 = ...;
924924
currentUnit = arg1;
925925
SMARTBUFF_AddMsgD(string.format("Spell failed: %s", arg1));
926926
if (currentUnit and (string.find(currentUnit, "party") or string.find(currentUnit, "raid") or (currentUnit == "target" and O.Debug))) then
927-
if (UnitName(currentUnit) ~= sPlayerName and O.BlacklistTimer > 0) then
928-
cBlacklist[currentUnit] = GetTime();
927+
if (UnitName(currentUnit) ~= sPlayerName and O.BlocklistTimer > 0) then
928+
cBlocklist[currentUnit] = GetTime();
929929
if (currentUnit and UnitName(currentUnit)) then
930930
end
931931
end
@@ -1169,6 +1169,42 @@ for i, key in ipairs({"Solo", "Party", "LFR", "Raid", "MythicKeystone", "Horrifi
11691169
Enum.SmartBuffGroup[key] = i
11701170
end
11711171

1172+
-- True if template has at least one buff with EnableS or EnableG.
1173+
local function templateHasEnabledBuffs(templateName)
1174+
local t = B and B[CS()] and B[CS()][templateName];
1175+
if (not t or type(t) ~= "table") then return false; end
1176+
for k, v in pairs(t) do
1177+
if (type(v) == "table" and (v.EnableS or v.EnableG)) then return true; end
1178+
end
1179+
return false;
1180+
end
1181+
1182+
-- Copy buff settings from one template to another (for RetainTemplate on first switch).
1183+
-- Only copies when: RetainTemplate is true, source has enabled buffs, and dest is "fresh" (no data or no buffs enabled).
1184+
-- Does not copy blank templates, so users cannot accidentally overwrite a configured template with a blank one.
1185+
local function MaybeCopyTemplateOnFirstSwitch(fromT, toT)
1186+
if (not B or not B[CS()] or not B[CS()][fromT]) then return; end
1187+
if (not O or not O.RetainTemplate) then return; end
1188+
if (not templateHasEnabledBuffs(fromT)) then return; end -- do not copy blank over configured
1189+
-- Dest is "fresh" if nil/empty or has no enabled buffs
1190+
if (B[CS()][toT] and templateHasEnabledBuffs(toT)) then return; end -- dest already has enabled buffs, not fresh
1191+
1192+
local src = B[CS()][fromT];
1193+
B[CS()][toT] = B[CS()][toT] or {};
1194+
local dst = B[CS()][toT];
1195+
1196+
for k, v in pairs(src) do
1197+
if (type(v) == "table") then
1198+
dst[k] = {};
1199+
for k2, v2 in pairs(v) do
1200+
dst[k][k2] = (type(v2) == "table") and (function(t) local r = {}; for a, b in pairs(t) do r[a] = b; end return r; end)(v2) or v2;
1201+
end
1202+
else
1203+
dst[k] = v;
1204+
end
1205+
end
1206+
end
1207+
11721208
-- Set the current template and create an array of units
11731209
function SMARTBUFF_SetTemplate(force)
11741210
-- Only block in combat (not when mounted) - setup should work when mounted
@@ -1276,14 +1312,18 @@ function SMARTBUFF_SetTemplate(force)
12761312
end
12771313

12781314
if currentTemplate ~= newTemplate then
1315+
MaybeCopyTemplateOnFirstSwitch(currentTemplate, newTemplate);
12791316
SMARTBUFF_AddMsgD("Current tmpl: " .. currentTemplate or "nil" .. " - new tmpl: " .. newTemplate or "nil");
12801317
local reason = switchReason or "instance"
12811318
SMARTBUFF_AddMsg(SMARTBUFF_TITLE .. ": " .. SMARTBUFF_OFT_AUTOSWITCHTMP .. " (" .. reason .. ") " .. currentTemplate .. " -> " .. newTemplate);
1319+
if (reason == "arena" or reason == "battleground") then
1320+
SMARTBUFF_AddMsg(SMARTBUFF_TITLE .. ": " .. SMARTBUFF_MSG_PVP_PREP_ONLY, true);
1321+
end
12821322
end
12831323
currentTemplate = newTemplate;
12841324

12851325
SMARTBUFF_SetBuffs();
1286-
wipe(cBlacklist);
1326+
wipe(cBlocklist);
12871327
wipe(cBuffTimer);
12881328
wipe(cUnits);
12891329
wipe(cGroups);
@@ -2628,7 +2668,7 @@ function SMARTBUFF_Check(mode, force)
26282668
local reagent;
26292669
local nGlobal = 0;
26302670

2631-
SMARTBUFF_checkBlacklist();
2671+
SMARTBUFF_checkBlocklist();
26322672

26332673
-- Skip when: (in combat and O.InCombat disabled) OR (in PvP and match active, matchState >= 3). Allow PvP prep and combat buffs when O.InCombat.
26342674
local _, instanceType = GetInstanceInfo();
@@ -2763,7 +2803,7 @@ function SMARTBUFF_BuffUnit(unit, subgroup, mode, spell)
27632803
--SMARTBUFF_AddMsgD("Checking " .. unit);
27642804

27652805
if (UnitExists(unit) and UnitIsFriend("player", unit) and not UnitIsDeadOrGhost(unit) and not UnitIsCorpse(unit)
2766-
and UnitIsConnected(unit) and UnitIsVisible(unit) and not UnitOnTaxi(unit) and not cBlacklist[unit]
2806+
and UnitIsConnected(unit) and UnitIsVisible(unit) and not UnitOnTaxi(unit) and not cBlocklist[unit]
27672807
and ((not UnitIsPVP(unit) and (not isPvP or O.BuffPvP)) or (UnitIsPVP(unit) and (isPvP or O.BuffPvP)))) then
27682808
--and not SmartBuff_UnitIsIgnored(unit)
27692809

@@ -3481,17 +3521,17 @@ end
34813521
-- END SMARTBUFF_CanApplyWeaponBuff
34823522

34833523

3484-
-- Check the unit blacklist
3485-
function SMARTBUFF_checkBlacklist()
3524+
-- Check the unit blocklist
3525+
function SMARTBUFF_checkBlocklist()
34863526
local t = GetTime();
3487-
for unit in pairs(cBlacklist) do
3488-
if (t > (cBlacklist[unit] + O.BlacklistTimer)) then
3489-
cBlacklist[unit] = nil;
3527+
for unit in pairs(cBlocklist) do
3528+
if (t > (cBlocklist[unit] + O.BlocklistTimer)) then
3529+
cBlocklist[unit] = nil;
34903530
end
34913531
end
34923532
end
34933533

3494-
-- END SMARTBUFF_checkBlacklist
3534+
-- END SMARTBUFF_checkBlocklist
34953535

34963536

34973537
-- Casts a spell
@@ -4217,13 +4257,16 @@ function SMARTBUFF_Options_Init(self)
42174257
if (type(SMARTBUFF_Options) ~= "table") then SMARTBUFF_Options = {}; end
42184258
O = SMARTBUFF_Options;
42194259

4260+
-- Migrate blacklist -> blocklist (inclusive language)
4261+
if (O.BlacklistTimer ~= nil and O.BlocklistTimer == nil) then O.BlocklistTimer = O.BlacklistTimer; O.BlacklistTimer = nil; end
4262+
42204263
SMARTBUFF_BROKER_SetIcon();
42214264

42224265

42234266
if (O.Toggle == nil) then O.Toggle = true; end
42244267
if (O.ToggleAuto == nil) then O.ToggleAuto = true; end
42254268
if (O.AutoTimer == nil) then O.AutoTimer = 5; end
4226-
if (O.BlacklistTimer == nil) then O.BlacklistTimer = 5; end
4269+
if (O.BlocklistTimer == nil) then O.BlocklistTimer = 5; end
42274270
if (O.ToggleAutoCombat == nil) then O.ToggleAutoCombat = false; end
42284271
if (O.ToggleAutoChat == nil) then O.ToggleAutoChat = false; end
42294272
if (O.ToggleAutoSplash == nil) then O.ToggleAutoSplash = true; end
@@ -4246,8 +4289,9 @@ function SMARTBUFF_Options_Init(self)
42464289
if (O.ScrollWheelUp == nil) then O.ScrollWheelUp = true; end
42474290
if (O.ScrollWheelDown == nil) then O.ScrollWheelDown = true; end
42484291

4249-
if (O.InCombat == nil) then O.InCombat = true; end
4292+
if (O.InCombat == nil) then O.InCombat = false; end
42504293
if (O.IncludeToys == nil) then O.IncludeToys = false; end
4294+
if (O.RetainTemplate == nil) then O.RetainTemplate = false; end
42514295
if (O.AutoSwitchTemplate == nil) then O.AutoSwitchTemplate = true; end
42524296
if (O.AutoSwitchTemplateInst == nil) then O.AutoSwitchTemplateInst = true; end
42534297
if (O.InShapeshift == nil) then O.InShapeshift = true; end
@@ -4594,7 +4638,7 @@ function SMARTBUFF_command(msg)
45944638
SMARTBUFF_ShowBuffTimers();
45954639
elseif (msg == "target") then
45964640
if (SMARTBUFF_PreCheck(0)) then
4597-
SMARTBUFF_checkBlacklist();
4641+
SMARTBUFF_checkBlocklist();
45984642
SMARTBUFF_BuffUnit("target", 0, 0);
45994643
end
46004644
elseif (msg == "debug") then
@@ -4769,6 +4813,10 @@ function SMARTBUFF_OHideSAButton()
47694813
SMARTBUFF_ShowSAButton();
47704814
end
47714815

4816+
function SMARTBUFF_ORetainTemplate()
4817+
O.RetainTemplate = not O.RetainTemplate;
4818+
end
4819+
47724820
function SMARTBUFF_OSelfFirst()
47734821
B[CS()][currentTemplate].SelfFirst = not B[CS()][currentTemplate].SelfFirst;
47744822
end
@@ -5114,12 +5162,13 @@ function SMARTBUFF_Options_OnShow()
51145162
SmartBuffOptionsFrame_cbMsgError:SetChecked(O.ToggleMsgError);
51155163
SmartBuffOptionsFrame_cbHideMmButton:SetChecked(O.HideMmButton);
51165164
SmartBuffOptionsFrame_cbHideSAButton:SetChecked(O.HideSAButton);
5165+
SmartBuffOptionsFrame_cbRetainTemplate:SetChecked(O.RetainTemplate);
51175166

51185167
SmartBuffOptionsFrameRebuffTimer:SetValue(O.RebuffTimer);
51195168
SmartBuff_SetSliderText(SmartBuffOptionsFrameRebuffTimer, SMARTBUFF_OFT_REBUFFTIMER, O.RebuffTimer,
51205169
INT_SPELL_DURATION_SEC);
5121-
SmartBuffOptionsFrameBLDuration:SetValue(O.BlacklistTimer);
5122-
SmartBuff_SetSliderText(SmartBuffOptionsFrameBLDuration, SMARTBUFF_OFT_BLDURATION, O.BlacklistTimer,
5170+
SmartBuffOptionsFrameBLDuration:SetValue(O.BlocklistTimer);
5171+
SmartBuff_SetSliderText(SmartBuffOptionsFrameBLDuration, SMARTBUFF_OFT_BLDURATION, O.BlocklistTimer,
51235172
INT_SPELL_DURATION_SEC);
51245173

51255174
SMARTBUFF_SetCheckButtonBuffs(0);
@@ -5273,6 +5322,7 @@ function SMARTBUFF_DropDownTemplate_OnClick(self)
52735322
UIDropDownMenu_SetSelectedValue(SmartBuffOptionsFrame_ddTemplates, i);
52745323
tmp = SMARTBUFF_TEMPLATES[i];
52755324
if (currentTemplate ~= tmp) then
5325+
MaybeCopyTemplateOnFirstSwitch(currentTemplate, tmp);
52765326
SmartBuff_BuffSetup:Hide();
52775327
iLastBuffSetup = -1;
52785328
SmartBuff_PlayerSetup:Hide();

SmartBuff.xml

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,9 +1196,9 @@
11961196
<OnValueChanged>
11971197
local o = SMARTBUFF_Options;
11981198
local n = self:GetValue();
1199-
if (o and o.BlacklistTimer ~= n) then
1199+
if (o and o.BlocklistTimer ~= n) then
12001200
SmartBuff_SetSliderText(self, SMARTBUFF_OFT_BLDURATION, n, INT_SPELL_DURATION_SEC);
1201-
o.BlacklistTimer = n;
1201+
o.BlocklistTimer = n;
12021202
end
12031203
</OnValueChanged>
12041204
<OnEnter>
@@ -1375,6 +1375,37 @@
13751375
</OnClick>
13761376
</Scripts>
13771377
</Button>
1378+
<CheckButton name="SmartBuffOptionsFrame_cbRetainTemplate" inherits="UICheckButtonTemplate">
1379+
<Size>
1380+
<AbsDimension x="20" y="20" />
1381+
</Size>
1382+
<Anchors>
1383+
<Anchor point="LEFT" relativeTo="SmartBuffOptionsFrame_ddTemplates" relativePoint="RIGHT">
1384+
<Offset>
1385+
<AbsDimension x="8" y="0" />
1386+
</Offset>
1387+
</Anchor>
1388+
</Anchors>
1389+
<HitRectInsets>
1390+
<AbsInset left="0" right="0" top="0" bottom="0" />
1391+
</HitRectInsets>
1392+
<Scripts>
1393+
<OnLoad>
1394+
getglobal(self:GetName().."Text"):SetText(SMARTBUFF_OFT_RETAINTEMPLATE);
1395+
getglobal(self:GetName().."Text"):SetFontObject(GameFontNormalSmall);
1396+
</OnLoad>
1397+
<OnClick>
1398+
SMARTBUFF_ORetainTemplate();
1399+
</OnClick>
1400+
<OnEnter>
1401+
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
1402+
GameTooltip:SetText(SMARTBUFF_OFTT_RETAINTEMPLATE, SMARTBUFF_TTC_R, SMARTBUFF_TTC_G, SMARTBUFF_TTC_B, SMARTBUFF_TTC_A);
1403+
</OnEnter>
1404+
<OnLeave>
1405+
GameTooltip:Hide();
1406+
</OnLeave>
1407+
</Scripts>
1408+
</CheckButton>
13781409
<Button name="SmartBuffOptionsFrame_TutorialButton" parentKey="MainHelpButton" inherits="MainHelpPlateButton" toplevel="true">
13791410
<Anchors>
13801411
<Anchor x="-24" y="24" point="TOPLEFT" relativeTo="$parent" />
@@ -1635,6 +1666,13 @@
16351666
<OnClick>
16361667
SMARTBUFF_PlaySpashSound();
16371668
</OnClick>
1669+
<OnEnter>
1670+
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
1671+
GameTooltip:SetText(SMARTBUFF_OFTT_PLAYSOUND, SMARTBUFF_TTC_R, SMARTBUFF_TTC_G, SMARTBUFF_TTC_B, SMARTBUFF_TTC_A);
1672+
</OnEnter>
1673+
<OnLeave>
1674+
GameTooltip:Hide();
1675+
</OnLeave>
16381676
</Scripts>
16391677
</Button>
16401678
<Slider name="SmartBuffOptionsFrame_sldSounds" inherits="OptionsSliderTemplate" minValue="1" maxValue="25" defaultValue="1">

localization.cn.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ SMARTBUFF_MSG_LEFT = "以后消失!";
445445
SMARTBUFF_MSG_CLASS = "职业";
446446
SMARTBUFF_MSG_CHARGES = "次数";
447447
SMARTBUFF_MSG_SOUNDS = "飞溅声音选择: "
448+
SMARTBUFF_MSG_PVP_PREP_ONLY = "由于API限制,增益仅在准备阶段有效,比赛开始后将停用。";
448449

449450
-- Support
450451
SMARTBUFF_MINIMAP_TT = "左键:选项菜单\n右键:开/关\nAlt+左键:SmartDebuff\n按Shift拖拽:移动按钮";

localization.de.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ SMARTBUFF_OFT_CHECKCHARGES = "Aufladungen";
9696
SMARTBUFF_OFT_RBT = "R: Timers";
9797
SMARTBUFF_OFT_BUFFINCITIES = "Bufft in Städten";
9898
SMARTBUFF_OFT_UISYNC = "UI Sync";
99-
SMARTBUFF_OFT_BLDURATION = "Blacklisted";
99+
SMARTBUFF_OFT_BLDURATION = "Blockiert";
100100
SMARTBUFF_OFT_COMPMODE = "Komp. Modus";
101101
SMARTBUFF_OFT_MINIGRP = "Mini Gruppe";
102102
SMARTBUFF_OFT_ANTIDAZE = "Anti-Daze";
@@ -154,7 +154,7 @@ SMARTBUFF_OFTT_AUTOSWITCHTMPINST = "Wechselt automatisch die Buff-Vorlage,\nwenn
154154
SMARTBUFF_OFTT_CHECKCHARGES = "Erinnerung wenn die Aufladungen\neines Buffs bald aufgebraucht sind.\n0 = Deaktivert";
155155
SMARTBUFF_OFTT_BUFFINCITIES = "Bufft auch in den Hauptstädten.\nWenn du PvP geflagged bist, bufft es immer.";
156156
SMARTBUFF_OFTT_UISYNC = "Aktiviert die Synchronisation mit dem UI,\num die Buff-Zeiten der anderen Spieler zu erhalten.";
157-
SMARTBUFF_OFTT_BLDURATION = "Wieviele Sekunden ein Spieler auf\ndie schwarze Liste gesetzt wird.\n0 = Deaktivert";
157+
SMARTBUFF_OFTT_BLDURATION = "Wie viele Sekunden ein Spieler blockiert wird.\n0 = Deaktiviert";
158158
SMARTBUFF_OFTT_COMPMODE = "Kompatibilitäts Modus\nWarnung!!!\nBenutzte diesen Modus nur, wenn Probleme auftreten\nBuffs auf sich selbst zu casten.";
159159
SMARTBUFF_OFTT_MINIGRP = "Zeigt die Raid-Subgruppen Einstellungen in einem\neigenen verschiebbaren Mini-Fenster an.";
160160
SMARTBUFF_OFTT_ANTIDAZE = "Bricht automatisch den\nAspekt des Geparden/Rudels ab,\nwenn jemand betäubt wird\n(Selbst oder Gruppe).";
@@ -221,6 +221,7 @@ SMARTBUFF_MSG_CLASS = "Klasse";
221221
SMARTBUFF_MSG_CHARGES = "Aufladungen";
222222
SMARTBUFF_MSG_SOUNDS = "Splash-Sound-Auswahl: "
223223
SMARTBUFF_MSG_SPECCHANGED = "Spec gewechselt (%s), lade Buff-Vorlagen...";
224+
SMARTBUFF_MSG_PVP_PREP_ONLY = "Aufgrund von API-Einschränkungen funktioniert Buffen nur in der Vorbereitungsphase und wird deaktiviert, sobald das Match beginnt.";
224225

225226
-- Support
226227
SMARTBUFF_MINIMAP_TT = "Links Klick: Optionen Menü\nRechts Klick: An/Aus\nAlt-Links Klick: SmartDebuff\nShift-Ziehen: Knopf verschieben";

localization.en.lua

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ SMARTBUFF_WHATSNEW = "\n\n|cffffffff Whats new:|r\n\n"
77
.." |cffffffffMidnight & Classic versions by Codermik, additional retail\n"
88
.." programming by MrWizard and Speedwaystar.\n"
99
.."\n\n"
10+
.." Changes in r39.130226:\n\n"
11+
.." * Add Retain checkbox to copy buff settings when switching to fresh templates\n"
12+
.." * Inclusivity: Rename blacklist → blocklist (with migration)\n"
13+
.." * Default InCombat to off\n"
14+
.." * Add PvP prep-only message for Arena/BG\n"
15+
.." * Add play-sound tooltip\n"
16+
.."\n\n"
1017
.." Changes in r39.120226:\n\n"
1118
.." * Template switching: BG/Arena, Solo fallback, single if/elseif chain, merged chat msg\n"
1219
.." * Template split: GENERICS/INSTANCES/CUSTOM, assemble at load, enum lookup, SmartBuffGroup refactor\n"
@@ -106,9 +113,10 @@ SMARTBUFF_OFT_AUTOSWITCHTMPINST = "Instances";
106113
SMARTBUFF_OFT_CHECKCHARGES = "Check charges";
107114
SMARTBUFF_OFT_RBT = "R: Timers";
108115
SMARTBUFF_OFT_BUFFINCITIES = "Buff in cities";
109-
SMARTBUFF_OFT_BLDURATION = "Blacklisted";
116+
SMARTBUFF_OFT_BLDURATION = "Blocked";
110117
SMARTBUFF_OFT_ANTIDAZE = "Anti daze";
111118
SMARTBUFF_OFT_HIDESABUTTON = "Hide action button";
119+
SMARTBUFF_OFT_RETAINTEMPLATE = "Retain";
112120
SMARTBUFF_OFT_INCOMBAT = "in combat";
113121
SMARTBUFF_OFT_SMARTDEBUFF = "SmartDebuff";
114122
SMARTBUFF_OFT_INSHAPESHIFT = "Shapeshift";
@@ -163,17 +171,19 @@ SMARTBUFF_OFTT_AUTOSWITCHTMP = "Automatically switches the template,\nif the gro
163171
SMARTBUFF_OFTT_AUTOSWITCHTMPINST = "Automatically switches the template,\nif the instance changes.";
164172
SMARTBUFF_OFTT_CHECKCHARGES = "Displays low amount of\ncharges on a buff.\n0 = Deactivated";
165173
SMARTBUFF_OFTT_BUFFINCITIES = "Buffs also if you are in capital cities.\nIf you are PvP flagged, it buffs in any case.";
166-
SMARTBUFF_OFTT_BLDURATION = "How many seconds, players will be blacklisted.\n0 = Deactivated";
174+
SMARTBUFF_OFTT_BLDURATION = "How many seconds, players will be blocked.\n0 = Deactivated";
167175
SMARTBUFF_OFTT_ANTIDAZE = "Automatically cancels the\naspect of the cheetah/pack\nif someone gets dazed\n(self or group).";
168176
SMARTBUFF_OFTT_SPLASHSTYLE = "Changes the fontstyle of\nthe buff messages.";
169177
SMARTBUFF_OFTT_HIDESABUTTON = "Hides the SmartBuff action button.";
178+
SMARTBUFF_OFTT_RETAINTEMPLATE = "When switching to a fresh template (never used, or no buffs enabled),\nthe current buff settings will be copied to it when this is checked.\nBlank templates are never copied over, so you cannot accidentally overwrite a configured template.";
170179
SMARTBUFF_OFTT_INCOMBAT = "At the moment it only works on yourself.\nThe first buff you mark as in combat,\nwill set on the button before combat\nand you can use it in combat.\n!!! Warning !!!\nAll logic is disabled in combat!";
171180
SMARTBUFF_OFTT_SMARTDEBUFF = "Shows the SmartDebuff frame.";
172181
SMARTBUFF_OFTT_SPLASHDURATION= "How many seconds the splash\nmessage will displayed,\nbefore it fades.";
173182
SMARTBUFF_OFTT_INSHAPESHIFT = "Cast buffs also if you\nare shapeshifted.";
174183
SMARTBUFF_OFTT_LINKGRPBUFFCHECK = "Checks if a buff of an other\nclass with similar effect\nis already active.";
175184
SMARTBUFF_OFTT_LINKSELFBUFFCHECK = "Checks if a self buff is active,\nwhose only one can be\nactive at a time.";
176185
SMARTBUFF_OFTT_SOUNDSELECT = "Select the required splash sound.";
186+
SMARTBUFF_OFTT_PLAYSOUND = "Controlled by Sound Effects volume.";
177187

178188
-- Buffsetup Frame Text
179189
SMARTBUFF_BST_SELFONLY = "Myself only";
@@ -228,6 +238,7 @@ SMARTBUFF_MSG_CLASS = "Class";
228238
SMARTBUFF_MSG_CHARGES = "charges";
229239
SMARTBUFF_MSG_SOUNDS = "Splash Sound Selection: "
230240
SMARTBUFF_MSG_SPECCHANGED = "Spec changed (%s), loading buff templates...";
241+
SMARTBUFF_MSG_PVP_PREP_ONLY = "Due to API limitation, buffing only works during prep and is disabled once the match starts.";
231242

232243
-- Support
233244
SMARTBUFF_MINIMAP_TT = "Left click: options menu\nRight click: On/Off\nAlt-Left Click: SmartDebuff\nShift drag: Move button";

0 commit comments

Comments
 (0)