From 4b9b34cbe783912dd12af545dafc28f8d1e25578 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 01:40:59 +0200 Subject: [PATCH 001/132] Addon-PlayerReader: Keep track of lastCastEvent and lastCastSpellId --- Addons/DataToColor/DataToColor.lua | 9 ++++++--- Core/Addon/PlayerReader.cs | 16 +++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Addons/DataToColor/DataToColor.lua b/Addons/DataToColor/DataToColor.lua index ac1091572..ec8576529 100644 --- a/Addons/DataToColor/DataToColor.lua +++ b/Addons/DataToColor/DataToColor.lua @@ -48,6 +48,8 @@ DataToColor.lastCombatCreatureDied = 0 DataToColor.lastAutoShot = 0 DataToColor.lastMainHandMeleeSwing = 0 +DataToColor.lastCastEvent = 0 +DataToColor.lastCastSpellId = 0 DataToColor.targetChanged = true @@ -169,6 +171,8 @@ function DataToColor:Reset() DataToColor.lastAutoShot = 0 DataToColor.lastMainHandMeleeSwing = 0 + DataToColor.lastCastEvent = 0 + DataToColor.lastCastSpellId = 0 end function DataToColor:Update() @@ -450,9 +454,8 @@ function DataToColor:CreateFrames(n) MakePixelSquareArrI(DataToColor.lastAutoShot, 60) MakePixelSquareArrI(DataToColor.lastMainHandMeleeSwing, 61) - -- 62 not used - -- 63 not used - -- 64 not used + MakePixelSquareArrI(DataToColor.lastCastEvent, 62) + MakePixelSquareArrI(DataToColor.lastCastSpellId, 63) MakePixelSquareArrI(DataToColor.lastCombatCreature, 64) -- Combat message creature MakePixelSquareArrI(DataToColor.lastCombatDamageDoneCreature, 65) -- Last Combat damage done diff --git a/Core/Addon/PlayerReader.cs b/Core/Addon/PlayerReader.cs index d55a679ff..bf8d0d513 100644 --- a/Core/Addon/PlayerReader.cs +++ b/Core/Addon/PlayerReader.cs @@ -156,6 +156,8 @@ public string Target public RecordInt AutoShot = new RecordInt(60); public RecordInt MainHandSwing = new RecordInt(61); + public RecordInt CastEvent = new RecordInt(62); + public RecordInt CastSpellId = new RecordInt(63); public RecordInt CombatCreatureGuid = new RecordInt(64); public RecordInt CombatDamageDoneGuid = new RecordInt(65); @@ -278,17 +280,19 @@ internal void Updated() Reset(); } + if (UIErrorMessage > 0) + { + LastUIErrorMessage = (UI_ERROR)UIErrorMessage; + } + UIMapId.Update(reader); AutoShot.Update(reader); MainHandSwing.Update(reader); + CastEvent.Update(reader); + CastSpellId.Update(reader); UpdateCreatureLists(); - - if (UIErrorMessage > 0) - { - LastUIErrorMessage = (UI_ERROR)UIErrorMessage; - } } internal void Reset() @@ -305,6 +309,8 @@ internal void Reset() AutoShot.Reset(); MainHandSwing.Reset(); + CastEvent.Reset(); + CastSpellId.Reset(); CombatCreatureGuid.Reset(); CombatDamageDoneGuid.Reset(); From 63670b24a29707f8c42375280a42372ccbd78adc Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 01:43:29 +0200 Subject: [PATCH 002/132] Addon: Rework how the OnUIErrorMessage being handled and make good use for combat log --- Addons/DataToColor/EventHandlers.lua | 75 ++++++++++++++++++---------- 1 file changed, 48 insertions(+), 27 deletions(-) diff --git a/Addons/DataToColor/EventHandlers.lua b/Addons/DataToColor/EventHandlers.lua index 7e4fbb241..9dffcb8b9 100644 --- a/Addons/DataToColor/EventHandlers.lua +++ b/Addons/DataToColor/EventHandlers.lua @@ -23,6 +23,8 @@ local errorList = { "ERR_SPELL_COOLDOWN", --7 "Spell is not ready yet." "ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS", --8 "Another action is in progress" "ERR_SPELL_FAILED_STUNNED", -- 9 "Can't do that while stunned" + "SPELL_FAILED_INTERRUPTED", -- 10 "Interrupted" + "SPELL_FAILED_ITEM_NOT_READY" -- 11 "Item is not ready yet" }; function DataToColor:RegisterEvents() @@ -39,44 +41,63 @@ function DataToColor:RegisterEvents() end function DataToColor:OnUIErrorMessage(event, messageType, message) - local errorName = GetGameMessageInfo(messageType) + local code, ignored, foundMessage, message = DataToColor:GetErrorCode(messageType, message) + + if ignored then + UIErrorsFrame:AddMessage(message, 0.7, 0.7, 0.7) -- show as grey messasge + elseif foundMessage and code ~= 0 then + DataToColor.uiErrorMessage = code; + UIErrorsFrame:AddMessage(message, 0, 1, 0) -- show as green messasge + else + UIErrorsFrame:AddMessage(message, 0, 0, 1) -- show as blue message (unknown message) + end +end + +function DataToColor:GetErrorCode(messageType, message) + + local errorName + local foundMessage = false + local ignored = false + local code = 0 + + if messageType ~= nil then + errorName = GetGameMessageInfo(messageType) + end - local foundMessage=false; for i = 1, table.getn(ignoreErrorList), 1 do - if ignoreErrorList[i]==errorName then - foundMessage=true; - UIErrorsFrame:AddMessage(message, 0.7, 0.7, 0.7) -- show as grey messasge + if ignoreErrorList[i] == errorName then + foundMessage = true; + ignored = true end end - if not foundMessage then + if not ignored and not foundMessage then for i = 1, table.getn(errorList), 1 do - if errorList[i]==errorName then - DataToColor.uiErrorMessage = i; - - if errorName==errorList[2] then -- ERR_SPELL_FAILED_S - if message==SPELL_FAILED_UNIT_NOT_INFRONT then - DataToColor.uiErrorMessage = 1 - message = message.." ("..ERR_BADATTACKFACING..")" - elseif message==SPELL_FAILED_MOVING then - DataToColor.uiErrorMessage = 6 - elseif message==SPELL_FAILED_STUNNED then - DataToColor.uiErrorMessage = 9 - --message = message.." ("..SPELL_FAILED_STUNNED..")" - --else - -- message = message.." (Spell related)" - end - end - - foundMessage=true; - UIErrorsFrame:AddMessage(message, 0, 1, 0) -- show as green messasge + if errorList[i] == errorName or + (_G[errorList[i]] ~= nil and string.find(_G[errorList[i]], message)) then + code = i; + foundMessage = true; end end end - if not foundMessage then - UIErrorsFrame:AddMessage(message, 0, 0, 1) -- show as blue message (unknown message) + -- ERR_SPELL_FAILED_S + -- find by message ex combatlog + if not ignored and (not foundMessage or errorName == errorList[2]) then + if string.find(message, SPELL_FAILED_UNIT_NOT_INFRONT) then + code = 1 + foundMessage = true + message = message.." ("..ERR_BADATTACKFACING..")" + elseif string.find(message, SPELL_FAILED_MOVING) then + foundMessage = true + code = 6 + elseif string.find(message, SPELL_FAILED_STUNNED) then + foundMessage = true + code = 9 + end end + + return code, ignored, foundMessage, message end local watchedSpells = { From 5dbb3519143dc20b2090b543ed178cf61c5a500c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 01:47:12 +0200 Subject: [PATCH 003/132] Addon: Rework how the instant/castbar/itemuse events being handled. Take advantage of '_CAST_START' '_CAST_SUCCESS' and '_CAST_FAILED' events. There are special abilities which resets the main hand swing timer without raising 'SWING_' shuch as Druid Maul | Hunter Raptor Strike | Warrior Cleave Slam Heroic strike... These abilities queued for next melee attack. --- Addons/DataToColor/EventHandlers.lua | 70 ++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 15 deletions(-) diff --git a/Addons/DataToColor/EventHandlers.lua b/Addons/DataToColor/EventHandlers.lua index 9dffcb8b9..42b94390e 100644 --- a/Addons/DataToColor/EventHandlers.lua +++ b/Addons/DataToColor/EventHandlers.lua @@ -1,6 +1,9 @@ local Load = select(2, ...) local DataToColor = unpack(Load) +local CAST_START = 999998 +local CAST_SUCCESS = 999999 + local ignoreErrorList = { "ERR_ABILITY_COOLDOWN", "ERR_OUT_OF_RAGE", @@ -104,9 +107,22 @@ local watchedSpells = { [DataToColor.C.Spell.AutoShotId] = function () --DataToColor:Print("Auto Shot detected") DataToColor.lastAutoShot = DataToColor.globalTime - end + end } +local swing_reset_spells = { + --[[ Maul ]] + [132136]=1, + --[[ Raptor Strike ]] + [132223]=1, + --[[ Cleave ]] + [132338]=1, + --[[ Heroic Strike ]] + [132282]=1, + --[[ Slam ]] + [132340]=1 +} + function DataToColor:OnCombatEvent(...) local _, eventType, _, sourceGUID, sourceName, _, _, destGUID, destName, _, _, spellId, _, _ = CombatLogGetCurrentEventInfo(); --print(CombatLogGetCurrentEventInfo()) @@ -114,32 +130,56 @@ function DataToColor:OnCombatEvent(...) DataToColor.lastCombatCreature=0; elseif string.find(sourceGUID, "Creature") then DataToColor.lastCombatCreature = DataToColor:getGuidFromUUID(sourceGUID); - --print(CombatLogGetCurrentEventInfo()) else DataToColor.lastCombatCreature=0; - --print("Other "..eventType); end if string.find(sourceGUID, "Creature") and (destGUID == DataToColor.playerGUID or destGUID == DataToColor.petGUID) then DataToColor.lastCombatDamageTakenCreature = DataToColor:getGuidFromUUID(sourceGUID); - --print(sourceGUID.." "..DataToColor.lastCombatDamageTakenCreature.." "..sourceName); end - if eventType=="SPELL_CAST_SUCCESS" and sourceGUID == DataToColor.playerGUID then - if watchedSpells[spellId] then watchedSpells[spellId]() end - end + if sourceGUID == DataToColor.playerGUID then + if eventType=="SPELL_CAST_SUCCESS" then + if watchedSpells[spellId] then watchedSpells[spellId]() end + + local _, _, icon = GetSpellInfo(spellId) + if swing_reset_spells[icon] then + --DataToColor:Print("Special Melee Swing detected") + DataToColor.lastMainHandMeleeSwing = DataToColor.globalTime + end + end - if string.find(eventType, "_DAMAGE") then - if sourceGUID == DataToColor.playerGUID or sourceGUID == DataToColor.petGUID then + if string.find(eventType, "_CAST_START") then + DataToColor.lastCastEvent = CAST_START + DataToColor.lastCastSpellId = spellId + --rint(CombatLogGetCurrentEventInfo()) + end + + if string.find(eventType, "_CAST_SUCCESS") or string.find(eventType, "_CAST_FAILED") then + --print(CombatLogGetCurrentEventInfo()) + DataToColor.lastCastSpellId = spellId + + if string.find(eventType, "_CAST_FAILED") then + local failedType = select(15, CombatLogGetCurrentEventInfo()) + DataToColor.lastCastEvent = DataToColor:GetErrorCode(nil, failedType) + --print(lastCastEvent.." -> "..DataToColor.lastCastEvent.." "..failedType.." "..spellId) + else + DataToColor.lastCastEvent = CAST_SUCCESS + end + end + + -- matches SWING_ RANGE_ SPELL_ but not SPELL_PERIODIC + if not string.find(eventType, "SPELL_PERIODIC") and + (string.find(eventType, "_DAMAGE") or string.find(eventType, "_MISSED")) then DataToColor.lastCombatDamageDoneCreature = DataToColor:getGuidFromUUID(destGUID); end - end - if sourceGUID == DataToColor.playerGUID and string.find(eventType, "SWING_") then - local _, _, _, _, _, _, _, _, _, isOffHand = select(12, ...) - if not isOffHand then - --DataToColor:Print("Melee Swing detected") - DataToColor.lastMainHandMeleeSwing = DataToColor.globalTime + if string.find(eventType, "SWING_") then + local _, _, _, _, _, _, _, _, _, isOffHand = select(12, ...) + if not isOffHand then + --DataToColor:Print("Normal Melee Swing detected") + DataToColor.lastMainHandMeleeSwing = DataToColor.globalTime + end end end From 51797258a844bcb1acd1f5e53788293141c99f75 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 01:47:29 +0200 Subject: [PATCH 004/132] Addon bump version --- Addons/DataToColor/DataToColor.toc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index cf33a38cc..27a254e53 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.26 +## Version: 1.1.27 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: From 85af860205970980a2e4a8026e50feac3d980f43 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 01:48:35 +0200 Subject: [PATCH 005/132] Add new UI_ERROR events however SPELL_FAILED_ITEM_NOT_READY | CAST_START | CAST_SUCCESS count as successfull cast --- Core/Addon/UI_ERROR.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Core/Addon/UI_ERROR.cs b/Core/Addon/UI_ERROR.cs index 8f0f61a58..b8c0426f2 100644 --- a/Core/Addon/UI_ERROR.cs +++ b/Core/Addon/UI_ERROR.cs @@ -11,6 +11,13 @@ public enum UI_ERROR SPELL_FAILED_MOVING = 6, ERR_SPELL_COOLDOWN = 7, ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 8, - ERR_SPELL_FAILED_STUNNED = 9 + ERR_SPELL_FAILED_STUNNED = 9, + ERR_SPELL_FAILED_INTERRUPTED = 10, + SPELL_FAILED_ITEM_NOT_READY = 11, + + MAX_ERROR_RANGE = 2000, + + CAST_START = 999998, + CAST_SUCCESS = 999999 } } \ No newline at end of file From 16cc6768a5830f8e314d2564533b5cc2beac976e Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 01:51:29 +0200 Subject: [PATCH 006/132] PullTargetGoal: when using 'KeyAction.WaitForWithinMeleeRange' and waiting try to repeat the current action to avoid being idle! --- Core/Goals/PullTargetGoal.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Core/Goals/PullTargetGoal.cs b/Core/Goals/PullTargetGoal.cs index a3294c8a5..2fa86b109 100644 --- a/Core/Goals/PullTargetGoal.cs +++ b/Core/Goals/PullTargetGoal.cs @@ -146,9 +146,10 @@ protected bool HasPickedUpAnAdd } } - protected async Task WaitForWithinMeleeRange(KeyAction item) + protected async Task WaitForWithinMeleeRange(KeyAction item, bool lastCastSuccess) { await stopMoving.Stop(); + await wait.Update(1); var start = DateTime.Now; var playerHealth = playerReader.HealthCurrent; @@ -170,6 +171,13 @@ protected async Task WaitForWithinMeleeRange(KeyAction item) break; } + if (lastCastSuccess && playerReader.UsableAction.Is(item)) + { + Log($"While waiting, repeat current action: {item.Name}"); + lastCastSuccess = await castingHandler.CastIfReady(item, item.DelayBeforeCast); + Log($"Repeat current action: {lastCastSuccess}"); + } + await wait.Update(1); } } @@ -206,7 +214,7 @@ public async Task Pull() if (success && item.WaitForWithinMeleeRange) { - await WaitForWithinMeleeRange(item); + await WaitForWithinMeleeRange(item, success); } } From 59d03858e3932ef354a0a3321de4b914353f890b Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:16:44 +0200 Subject: [PATCH 007/132] Addon: debugging eventhandler --- Addons/DataToColor/EventHandlers.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Addons/DataToColor/EventHandlers.lua b/Addons/DataToColor/EventHandlers.lua index 42b94390e..812679acd 100644 --- a/Addons/DataToColor/EventHandlers.lua +++ b/Addons/DataToColor/EventHandlers.lua @@ -152,7 +152,8 @@ function DataToColor:OnCombatEvent(...) if string.find(eventType, "_CAST_START") then DataToColor.lastCastEvent = CAST_START DataToColor.lastCastSpellId = spellId - --rint(CombatLogGetCurrentEventInfo()) + --print(CombatLogGetCurrentEventInfo()) + --print("_CAST_START "..spellId) end if string.find(eventType, "_CAST_SUCCESS") or string.find(eventType, "_CAST_FAILED") then @@ -160,6 +161,7 @@ function DataToColor:OnCombatEvent(...) DataToColor.lastCastSpellId = spellId if string.find(eventType, "_CAST_FAILED") then + --local lastCastEvent = DataToColor.lastCastEvent local failedType = select(15, CombatLogGetCurrentEventInfo()) DataToColor.lastCastEvent = DataToColor:GetErrorCode(nil, failedType) --print(lastCastEvent.." -> "..DataToColor.lastCastEvent.." "..failedType.." "..spellId) From 75331bf5b3d697b15cc96682d13814f9234cc4c5 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:17:06 +0200 Subject: [PATCH 008/132] PlayerReader: Whenever theres a reset besure to clear the FormCost as well --- Core/Addon/PlayerReader.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Core/Addon/PlayerReader.cs b/Core/Addon/PlayerReader.cs index bf8d0d513..085c3111b 100644 --- a/Core/Addon/PlayerReader.cs +++ b/Core/Addon/PlayerReader.cs @@ -297,6 +297,8 @@ internal void Updated() internal void Reset() { + FormCost.Clear(); + // Reset all CreatureHistory Creatures.Clear(); DamageTaken.Clear(); From 62ff38681c1f5cd7712bfcdf43097bdbaa954ba4 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:18:08 +0200 Subject: [PATCH 009/132] ClassCOnfiguration: Set internal Approach and Interact pressduration and cooldown to a lower value in order block less the the execution --- Core/ClassConfig/ClassConfiguration.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Core/ClassConfig/ClassConfiguration.cs b/Core/ClassConfig/ClassConfiguration.cs index f5caeec1a..2a512b12c 100644 --- a/Core/ClassConfig/ClassConfiguration.cs +++ b/Core/ClassConfig/ClassConfiguration.cs @@ -104,12 +104,15 @@ public void Initialise(DataConfig dataConfig, AddonReader addonReader, Requireme Interact.Name = "Interact"; Interact.WaitForGCD = false; Interact.DelayAfterCast = 0; + Interact.PressDuration = 30; Interact.Initialise(addonReader, requirementFactory, logger); Approach.Key = InteractKey; Approach.Name = "Approach"; Approach.WaitForGCD = false; Approach.DelayAfterCast = 0; + Approach.PressDuration = 10; + Approach.Cooldown = 50; Approach.Initialise(addonReader, requirementFactory, logger); AutoAttack.Key = InteractKey; @@ -191,6 +194,8 @@ private static void InitializeKeyActions(KeyActions keyActions, params KeyAction a.Key = l.Key; a.DelayAfterCast = l.DelayAfterCast; a.WaitForGCD = l.WaitForGCD; + a.PressDuration = l.PressDuration; + a.Cooldown = l.Cooldown; } }); }); From 44ff9242c206acf26675488406f555ad44e56bb2 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:19:03 +0200 Subject: [PATCH 010/132] KeyAction: change Cooldown from Seconds to Milliseconds to have greater resolution --- Core/ClassConfig/KeyAction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index 075634ebe..d3f40225c 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -154,7 +154,7 @@ public float GetCooldownRemaining() return 0; } - var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[this.ConsoleKey]).TotalSeconds); + var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[this.ConsoleKey]).Milliseconds); return remaining < 0 ? 0 : remaining; } From e0a67ddf1df5ff0c0047ea303fefe4f2a96e3252 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:19:28 +0200 Subject: [PATCH 011/132] ApproachTargetGoal: Use Approach instead of Interact KeyAction --- Core/Goals/ApproachTargetGoal.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Core/Goals/ApproachTargetGoal.cs b/Core/Goals/ApproachTargetGoal.cs index 22785ad53..9f8b75591 100644 --- a/Core/Goals/ApproachTargetGoal.cs +++ b/Core/Goals/ApproachTargetGoal.cs @@ -82,6 +82,7 @@ public override async Task OnEnter() public override async Task PerformAction() { lastPlayerLocation = playerReader.PlayerLocation; + await wait.Update(1); if (!playerReader.PlayerBitValues.PlayerInCombat) { @@ -110,12 +111,14 @@ public override async Task PerformAction() playerWasInCombat = true; } - await input.TapInteractKey(""); - await wait.Update(1); + if (input.ClassConfig.Approach.GetCooldownRemaining() == 0) + { + await input.TapApproachKey(""); + } lastPlayerDistance = WowPoint.DistanceTo(lastPlayerLocation, playerReader.PlayerLocation); - if (lastPlayerDistance < 0.5 && playerReader.LastUIErrorMessage == UI_ERROR.ERR_AUTOFOLLOW_TOO_FAR) + if (lastPlayerDistance < 0.05 && playerReader.LastUIErrorMessage == UI_ERROR.ERR_AUTOFOLLOW_TOO_FAR) { playerReader.LastUIErrorMessage = UI_ERROR.NONE; @@ -123,11 +126,11 @@ public override async Task PerformAction() await wait.Update(1); } - if (SecondsSinceApproachStarted > 1 && lastPlayerDistance < 0.5 && !playerReader.PlayerBitValues.PlayerInCombat) + if (SecondsSinceApproachStarted > 1 && lastPlayerDistance < 0.05 && !playerReader.PlayerBitValues.PlayerInCombat) { await input.TapClearTarget(""); await wait.Update(1); - await input.KeyPress(random.Next(2) == 0 ? ConsoleKey.LeftArrow : ConsoleKey.RightArrow, 1000, "Seems stuck! Clear Target. Turn away."); + await input.KeyPress(random.Next(2) == 0 ? ConsoleKey.LeftArrow : ConsoleKey.RightArrow, 1000, $"Seems stuck! Clear Target. Turn away. d: {lastPlayerDistance}"); approachStart = DateTime.Now; } From 9c71779735e5eaa64498887efe3ec92941e145f7 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:20:00 +0200 Subject: [PATCH 012/132] CombatGoal: Only create Task for Drown if its necessary --- Core/Goals/CombatGoal.cs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/Core/Goals/CombatGoal.cs b/Core/Goals/CombatGoal.cs index 2495ddb9e..bf2281183 100644 --- a/Core/Goals/CombatGoal.cs +++ b/Core/Goals/CombatGoal.cs @@ -166,8 +166,9 @@ public override async Task PerformAction() lastDirectionForTurnAround = playerReader.Direction; } - if (await StopDrowning()) + if (playerReader.PlayerBitValues.IsDrowning) { + await StopDrowning(); return; } @@ -251,16 +252,10 @@ private async Task CreatureTargetMeOrMyPet() return false; } - private async Task StopDrowning() + private async Task StopDrowning() { - if (playerReader.PlayerBitValues.IsDrowning) - { - await input.TapJump("Drowning! Swim up"); - await wait.Update(1); - return true; - } - - return false; + await input.TapJump("Drowning! Swim up"); + await wait.Update(1); } private WowPoint GetCorpseLocation(double distance) From ed2594aad42a26e495c963d821e63e8ef3ef17c8 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:21:06 +0200 Subject: [PATCH 013/132] ConfigurableInput: new input Approach --- Core/Input/ConfigurableInput.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Core/Input/ConfigurableInput.cs b/Core/Input/ConfigurableInput.cs index 090439f7d..ac0730342 100644 --- a/Core/Input/ConfigurableInput.cs +++ b/Core/Input/ConfigurableInput.cs @@ -27,6 +27,12 @@ public async Task TapInteractKey(string source) this.ClassConfig.Interact.SetClicked(); } + public async Task TapApproachKey(string source) + { + await KeyPress(ClassConfig.Approach.ConsoleKey, ClassConfig.Approach.PressDuration, string.IsNullOrEmpty(source) ? "" : $"TapApproachKey ({source})"); + this.ClassConfig.Approach.SetClicked(); + } + public async Task TapLastTargetKey(string source) { await KeyPress(ClassConfig.TargetLastTarget.ConsoleKey, defaultKeyPress, $"TapLastTarget ({source})"); From cf3f4275fa3a2ecd150364ea6ff93c3c66934fae Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:22:39 +0200 Subject: [PATCH 014/132] MountHandler: use the same logic to check the outcome of the TapMount like in CastingHandler --- Core/Goals/MountHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Goals/MountHandler.cs b/Core/Goals/MountHandler.cs index 5ed4ed8f9..9ca2388d3 100644 --- a/Core/Goals/MountHandler.cs +++ b/Core/Goals/MountHandler.cs @@ -53,9 +53,9 @@ public async Task MountUp() } } - playerReader.LastUIErrorMessage = UI_ERROR.NONE; + int beforeCastEventValue = playerReader.CastEvent.Value; await input.TapMount(); - await wait.Interrupt(mountCastTimeMs, () => playerReader.PlayerBitValues.IsMounted || playerReader.LastUIErrorMessage != UI_ERROR.NONE); + await wait.Interrupt(mountCastTimeMs, () => playerReader.PlayerBitValues.IsMounted || beforeCastEventValue != playerReader.CastEvent.Value); } } } From c4f3bf0a7d22a00fc36120cbcd1577bc72d8570d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:28:49 +0200 Subject: [PATCH 015/132] CastingHandler: Rewrite v2. Add support for more spells/abilities/items using the combat log events in order to ensure the outcome of the keypress. Added support for hidden castbar based spells. such as Shoot, Auto Shot, Throw. Reworked how some of the 'Next Melee swing' based attacks being handled with considering swing time reset. In Addition Instant based actions will wait in the KeyAction/CastingHandler until its KeyAction.CanRun() or Usable flag evalulaed false. That means like applying weapon enchants or applying a debuff on the target wont happen as ofen as before. --- Core/Addon/RecordInt.cs | 5 + Core/Goals/CastingHandler.cs | 278 ++++++++++++++++++++++++++++------- Core/Goals/Wait.cs | 15 ++ 3 files changed, 246 insertions(+), 52 deletions(-) diff --git a/Core/Addon/RecordInt.cs b/Core/Addon/RecordInt.cs index a9dde119f..e5bda91b2 100644 --- a/Core/Addon/RecordInt.cs +++ b/Core/Addon/RecordInt.cs @@ -49,5 +49,10 @@ public void Reset() Value = 0; temp = 0; } + + public void ForceUpdate(int value) + { + Value = value; + } } } \ No newline at end of file diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index f97f1f278..c23a2a3b9 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -21,11 +21,11 @@ public class CastingHandler private readonly StopMoving stopMoving; private readonly KeyAction defaultKeyAction = new KeyAction(); - private const int MaxWaitCastTimeMs = 500; + private const int GCD = 1500; + private const int MaxWaitCastTimeMs = GCD; private const int MaxWaitBuffTimeMs = 500; private const int MaxCastTimeMs = 15000; private const int MaxSwingTimeMs = 4000; - private const int GCD = 1500; private const int MaxAirTimeMs = 10000; public CastingHandler(ILogger logger, ConfigurableInput input, Wait wait, PlayerReader playerReader, ClassConfiguration classConfig, IPlayerDirection direction, NpcNameFinder npcNameFinder, StopMoving stopMoving) @@ -95,22 +95,58 @@ private async Task PressKeyAction(KeyAction item) item.SetClicked(); } + private static bool CastSuccessfull(UI_ERROR uiEvent) + { + return + uiEvent == UI_ERROR.CAST_START || + uiEvent == UI_ERROR.CAST_SUCCESS || + uiEvent == UI_ERROR.NONE || + uiEvent == UI_ERROR.SPELL_FAILED_ITEM_NOT_READY; + } + private async Task CastInstant(KeyAction item) { if (item.StopBeforeCast) { await stopMoving.Stop(); + await wait.Update(1); } - float minRange = playerReader.MinRange; + playerReader.CastEvent.ForceUpdate(0); + int beforeCastEventValue = playerReader.CastEvent.Value; + int beforeSpellId = playerReader.CastSpellId.Value; + bool beforeUsable = playerReader.UsableAction.Is(item); await PressKeyAction(item); - (bool input, double inputElapsedMs) = await wait.InterruptTask(item.AfterCastWaitNextSwing ? MaxSwingTimeMs : MaxWaitCastTimeMs, - () => playerReader.LastUIErrorMessage != UI_ERROR.NONE || !playerReader.CurrentAction.Is(item) || minRange != playerReader.MinRange); - if (!input) + bool inputNotHappened; + double inputElapsedMs; + + if (item.AfterCastWaitNextSwing) { - item.LogInformation($" ... instant input after {inputElapsedMs}ms"); + (inputNotHappened, inputElapsedMs) = await wait.InterruptTask(MaxSwingTimeMs, + interrupt: () => !playerReader.CurrentAction.Is(item), + repeat: async () => + { + if (classConfig.Approach.GetCooldownRemaining() == 0) + { + await input.TapApproachKey(""); + } + }); + } + else + { + (inputNotHappened, inputElapsedMs) = await wait.InterruptTask(MaxWaitCastTimeMs, + interrupt: () => + (beforeSpellId != playerReader.CastSpellId.Value && + beforeCastEventValue != playerReader.CastEvent.Value) || + beforeUsable != playerReader.UsableAction.Is(item) + ); + } + + if (!inputNotHappened) + { + item.LogInformation($" ... instant input {inputElapsedMs}ms"); } else { @@ -118,34 +154,27 @@ private async Task CastInstant(KeyAction item) return false; } - item.LogInformation($" ... usable: {playerReader.UsableAction.Is(item)} -- {playerReader.LastUIErrorMessage}"); + item.LogInformation($" ... usable: {playerReader.UsableAction.Is(item)} -- ({(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value})"); - if (playerReader.LastUIErrorMessage != UI_ERROR.NONE) + if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value)) { - if (playerReader.LastUIErrorMessage == UI_ERROR.ERR_SPELL_COOLDOWN) - { - item.LogInformation($" ... instant wait until its ready"); - bool before = playerReader.UsableAction.Is(item); - await wait.While(() => before != playerReader.UsableAction.Is(item)); - } - else - { - await ReactToLastUIErrorMessage($"{item.Name}-{GetType().Name}: CastInstant"); - } - + await ReactToLastCastingEvent(item, $"{item.Name}-{GetType().Name}: CastInstant"); return false; } + if (item.RequirementObjects.Any()) + { + (bool firstReq, double firstReqElapsedMs) = await wait.InterruptTask(100, + () => !item.CanRun() || !playerReader.UsableAction.Is(item) + ); + item.LogInformation($" ... instant interrupt: {!firstReq} | CanRun:{item.CanRun()} | Usable:{playerReader.UsableAction.Is(item)} | Delay: {firstReqElapsedMs}ms"); + } + return true; } private async Task CastCastbar(KeyAction item) { - if (item.StopBeforeCast) - { - await stopMoving.Stop(); - } - if (playerReader.PlayerBitValues.IsFalling) { (bool notfalling, double fallingElapsedMs) = await wait.InterruptTask(MaxAirTimeMs, () => !playerReader.PlayerBitValues.IsFalling); @@ -155,15 +184,26 @@ private async Task CastCastbar(KeyAction item) } } + if (item.StopBeforeCast) + { + await stopMoving.Stop(); + await wait.Update(1); + } + bool beforeHasTarget = playerReader.HasTarget; + int beforeCastEventValue = playerReader.CastEvent.Value; + int beforeSpellId = playerReader.CastSpellId.Value; await PressKeyAction(item); (bool input, double inputElapsedMs) = await wait.InterruptTask(MaxWaitCastTimeMs, - () => playerReader.IsCasting || playerReader.LastUIErrorMessage != UI_ERROR.NONE); + interrupt: () => + beforeCastEventValue != playerReader.CastEvent.Value // this worked really well + || beforeSpellId != playerReader.CastSpellId.Value); + if (!input) { - item.LogInformation($" ... castbar input after {inputElapsedMs}ms"); + item.LogInformation($" ... castbar input {inputElapsedMs}ms"); } else { @@ -171,26 +211,25 @@ private async Task CastCastbar(KeyAction item) return false; } - item.LogInformation($" ... usable: {playerReader.UsableAction.Is(item)} -- {playerReader.LastUIErrorMessage}"); + item.LogInformation($" ... casting: {playerReader.IsCasting} -- usable: {playerReader.UsableAction.Is(item)} -- {(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value}"); - if (playerReader.LastUIErrorMessage != UI_ERROR.NONE) + if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value)) { - if (playerReader.LastUIErrorMessage == UI_ERROR.ERR_SPELL_COOLDOWN) - { - item.LogInformation($" ... castbar wait until its ready"); - bool before = playerReader.UsableAction.Is(item); - await wait.While(() => before != playerReader.UsableAction.Is(item)); - } - else - { - await ReactToLastUIErrorMessage($"{item.Name}-{GetType().Name}: CastCastbar"); - } - + await ReactToLastCastingEvent(item, $"{item.Name}-{GetType().Name}: CastCastbar"); return false; } - item.LogInformation(" ... waiting for cast bar to end or target loss."); - await wait.InterruptTask(MaxCastTimeMs, () => !playerReader.IsCasting || beforeHasTarget != playerReader.HasTarget); + if (playerReader.IsCasting) + { + item.LogInformation(" ... waiting for visible cast bar to end or target loss."); + await wait.InterruptTask(MaxCastTimeMs, () => !playerReader.IsCasting || beforeHasTarget != playerReader.HasTarget); + } + else if ((UI_ERROR)playerReader.CastEvent.Value == UI_ERROR.CAST_START) + { + beforeCastEventValue = playerReader.CastEvent.Value; + item.LogInformation(" ... waiting for hidden cast bar to end or target loss."); + await wait.InterruptTask(MaxCastTimeMs, () => beforeCastEventValue != playerReader.CastEvent.Value || beforeHasTarget != playerReader.HasTarget); + } return true; } @@ -207,6 +246,14 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) return false; } + if (item.Name == classConfig.Approach.Name || + item.Name == classConfig.AutoAttack.Name || + item.Name == classConfig.Interact.Name) + { + await PressKeyAction(item); + return true; + } + if (!await SwitchToCorrectStanceForm(item)) { return false; @@ -227,6 +274,12 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) if (sleepBeforeCast > 0) { + if (item.StopBeforeCast) + { + await stopMoving.Stop(); + await wait.Update(1); + } + item.LogInformation($" Wait {sleepBeforeCast}ms before press."); await Task.Delay(sleepBeforeCast); } @@ -281,9 +334,9 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) { (bool notappeared, double elapsedMs) = await wait.InterruptTask(MaxWaitBuffTimeMs, () => beforeBuff != playerReader.Buffs.Value); if (!notappeared) - logger.LogInformation($" ... AfterCastWaitBuff: Buff: {!notappeared} | Delay: {elapsedMs}ms"); + item.LogInformation($" ... AfterCastWaitBuff: Buff: {!notappeared} | Delay: {elapsedMs}ms"); else - logger.LogInformation($" ... AfterCastWaitBuff: No buff | Delay: {elapsedMs}ms"); + item.LogInformation($" ... AfterCastWaitBuff: No buff | Delay: {elapsedMs}ms"); } if (item.DelayAfterCast != defaultKeyAction.DelayAfterCast) @@ -349,20 +402,26 @@ protected async Task SwitchToCorrectStanceForm(KeyAction item) return true; } - var formKeyKey = classConfig.Form + var formKeyAction = classConfig.Form .Where(s => s.FormEnum == item.FormEnum) .FirstOrDefault(); - if (formKeyKey == null) + if (formKeyAction == null) { logger.LogWarning($"Unable to find key in Form to transform into {item.FormEnum}"); return false; } - await input.KeyPress(formKeyKey.ConsoleKey, item.PressDuration); - await wait.Update(1); + if (formKeyAction.CanRun()) + { + var beforeForm = playerReader.Form; + await input.KeyPress(formKeyAction.ConsoleKey, item.PressDuration); + (bool notChanged, double elapsedMs) = await wait.InterruptTask(100, () => beforeForm != playerReader.Form); + item.LogInformation($" ... form changed: {!notChanged} | Delay: {elapsedMs}ms"); + return playerReader.Form == item.FormEnum; + } - return playerReader.Form == item.FormEnum; + return false; } public async Task PressKey(ConsoleKey key, string description = "", int duration = 50) @@ -370,13 +429,17 @@ public async Task PressKey(ConsoleKey key, string description = "", int duration await input.KeyPress(key, duration, description); } - public virtual async Task ReactToLastUIErrorMessage(string source) + public async Task ReactToLastUIErrorMessage(string source) { //var lastError = playerReader.LastUIErrorMessage; switch (playerReader.LastUIErrorMessage) { case UI_ERROR.NONE: break; + case UI_ERROR.CAST_START: + break; + case UI_ERROR.CAST_SUCCESS: + break; case UI_ERROR.ERR_SPELL_FAILED_STUNNED: long debuffCount = playerReader.PlayerDebuffCount; if (debuffCount != 0) @@ -384,6 +447,7 @@ public virtual async Task ReactToLastUIErrorMessage(string source) logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_FAILED_STUNNED} -- Wait till losing debuff!"); await wait.While(() => debuffCount == playerReader.PlayerDebuffCount); + await wait.Update(1); playerReader.LastUIErrorMessage = UI_ERROR.NONE; } else @@ -398,9 +462,11 @@ public virtual async Task ReactToLastUIErrorMessage(string source) return; } - logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Start moving forward"); - + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Face enemy and start moving forward"); + await input.TapInteractKey(""); input.SetKeyState(ConsoleKey.UpArrow, true, false, ""); + + await wait.Update(1); playerReader.LastUIErrorMessage = UI_ERROR.NONE; break; case UI_ERROR.ERR_BADATTACKFACING: @@ -419,6 +485,7 @@ public virtual async Task ReactToLastUIErrorMessage(string source) await direction.SetDirection(desiredDirection, new WowPoint(0, 0), ""); } + await wait.Update(1); playerReader.LastUIErrorMessage = UI_ERROR.NONE; break; case UI_ERROR.SPELL_FAILED_MOVING: @@ -431,9 +498,15 @@ public virtual async Task ReactToLastUIErrorMessage(string source) case UI_ERROR.ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS: logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS} -- Wait till casting!"); await wait.While(() => playerReader.IsCasting); + + await wait.Update(1); + playerReader.LastUIErrorMessage = UI_ERROR.NONE; break; case UI_ERROR.ERR_SPELL_COOLDOWN: logger.LogInformation($"{source} -- Cant react to {UI_ERROR.ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS}"); + + await wait.Update(1); + playerReader.LastUIErrorMessage = UI_ERROR.NONE; break; case UI_ERROR.ERR_BADATTACKPOS: if (playerReader.IsAutoAttacking) @@ -441,6 +514,8 @@ public virtual async Task ReactToLastUIErrorMessage(string source) logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_BADATTACKPOS} -- Interact!"); await input.TapInteractKey(""); await stopMoving.Stop(); + await wait.Update(1); + playerReader.LastUIErrorMessage = UI_ERROR.NONE; } else @@ -459,5 +534,104 @@ public virtual async Task ReactToLastUIErrorMessage(string source) // break; } } + + private async Task ReactToLastCastingEvent(KeyAction item, string source) + { + switch ((UI_ERROR)playerReader.CastEvent.Value) + { + case UI_ERROR.NONE: + break; + case UI_ERROR.ERR_SPELL_FAILED_INTERRUPTED: + break; + case UI_ERROR.CAST_START: + break; + case UI_ERROR.CAST_SUCCESS: + break; + case UI_ERROR.ERR_SPELL_COOLDOWN: + logger.LogInformation($"{source} React to {UI_ERROR.ERR_SPELL_COOLDOWN} -- wait until its ready"); + bool before = playerReader.UsableAction.Is(item); + await wait.While(() => before != playerReader.UsableAction.Is(item)); + + break; + case UI_ERROR.ERR_SPELL_FAILED_STUNNED: + long debuffCount = playerReader.PlayerDebuffCount; + if (debuffCount != 0) + { + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_FAILED_STUNNED} -- Wait till losing debuff!"); + await wait.While(() => debuffCount == playerReader.PlayerDebuffCount); + } + else + { + logger.LogInformation($"{source} -- Didn't know how to react {UI_ERROR.ERR_SPELL_FAILED_STUNNED} when PlayerDebuffCount: {debuffCount}"); + } + + break; + case UI_ERROR.ERR_SPELL_OUT_OF_RANGE: + if (playerReader.PlayerClass == PlayerClassEnum.Hunter && playerReader.IsInMeleeRange) + { + logger.LogInformation($"{source} -- As a Hunter didn't know how to react {UI_ERROR.ERR_SPELL_OUT_OF_RANGE}"); + return; + } + + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Start moving forward"); + + input.SetKeyState(ConsoleKey.UpArrow, true, false, ""); + + break; + case UI_ERROR.ERR_BADATTACKFACING: + if (playerReader.IsInMeleeRange) + { + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_BADATTACKFACING} -- Interact!"); + await input.TapInteractKey(""); + } + else + { + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_BADATTACKFACING} -- Turning 180!"); + + double desiredDirection = playerReader.Direction + Math.PI; + desiredDirection = desiredDirection > Math.PI * 2 ? desiredDirection - (Math.PI * 2) : desiredDirection; + await direction.SetDirection(desiredDirection, new WowPoint(0, 0), ""); + + await wait.Update(1); + } + + break; + case UI_ERROR.SPELL_FAILED_MOVING: + logger.LogInformation($"{source} -- React to {UI_ERROR.SPELL_FAILED_MOVING} -- Stop moving!"); + await stopMoving.Stop(); + await wait.Update(1); + + break; + case UI_ERROR.ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS: + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS} -- Wait till casting!"); + await wait.While(() => playerReader.IsCasting); + + break; + case UI_ERROR.ERR_BADATTACKPOS: + if (playerReader.IsAutoAttacking) + { + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_BADATTACKPOS} -- Interact!"); + await input.TapInteractKey(""); + await stopMoving.Stop(); + await wait.Update(1); + } + else + { + logger.LogInformation($"{source} -- Didn't know how to React to {(UI_ERROR)playerReader.CastEvent.Value}"); + } + + break; + default: + logger.LogInformation($"{source} -- Didn't know how to React to {(UI_ERROR)playerReader.CastEvent.Value}"); + + break; + //case UI_ERROR.ERR_SPELL_FAILED_S: + //case UI_ERROR.ERR_BADATTACKPOS: + //case UI_ERROR.ERR_SPELL_OUT_OF_RANGE: + //case UI_ERROR.ERR_AUTOFOLLOW_TOO_FAR: + // this.playerReader.LastUIErrorMessage = UI_ERROR.NONE; + // break; + } + } } } \ No newline at end of file diff --git a/Core/Goals/Wait.cs b/Core/Goals/Wait.cs index 6cdfbcd81..926b44ff3 100644 --- a/Core/Goals/Wait.cs +++ b/Core/Goals/Wait.cs @@ -49,6 +49,21 @@ public async Task> InterruptTask(int durationMs, Func return Tuple.Create(true, elapsedMs); } + public async Task> InterruptTask(int durationMs, Func interrupt, Action repeat) + { + DateTime start = DateTime.Now; + double elapsedMs; + while ((elapsedMs = (DateTime.Now - start).TotalMilliseconds) < durationMs) + { + repeat(); + await Update(1); + if (interrupt()) + return Tuple.Create(false, elapsedMs); + } + + return Tuple.Create(true, elapsedMs); + } + public async Task Interrupt(int durationMs, Task exit) { DateTime start = DateTime.Now; From 3fdc33ef107061e2cd18d22742b58d8b5c647d9e Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:45:45 +0200 Subject: [PATCH 016/132] Update Druid_bear profiles with Moonfire condition and WaitForWithinMeleeRange --- Json/class/Druid_10_bear.json | 12 +----------- Json/class/Druid_12_bear.json | 2 +- Json/class/Druid_14_bear.json | 2 +- Json/class/Druid_16_bear.json | 5 ++++- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/Json/class/Druid_10_bear.json b/Json/class/Druid_10_bear.json index 5ff78073a..ede1d0804 100644 --- a/Json/class/Druid_10_bear.json +++ b/Json/class/Druid_10_bear.json @@ -21,20 +21,10 @@ ], "Pull": { "Sequence": [ -/* - { - "Name": "Wrath", - "Key": "2", - "StopBeforeCast": true, - "HasCastBar": true, - "Requirement": "SpellInRange:0", - "Form": "None" - }, -*/ { "Name": "Moonfire", "Key": "5", - "Requirement": "SpellInRange:0", + "Requirements": ["SpellInRange:0", "not Moonfire"], "Form": "None" }, { diff --git a/Json/class/Druid_12_bear.json b/Json/class/Druid_12_bear.json index 3a256d907..43b171b34 100644 --- a/Json/class/Druid_12_bear.json +++ b/Json/class/Druid_12_bear.json @@ -33,7 +33,7 @@ { "Name": "Moonfire", "Key": "5", - "Requirements": ["SpellInRange:0", "not InMeleeRange", "Mana%>50"], + "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], "Form": "None" }, { diff --git a/Json/class/Druid_14_bear.json b/Json/class/Druid_14_bear.json index d9cfffe07..5bb919793 100644 --- a/Json/class/Druid_14_bear.json +++ b/Json/class/Druid_14_bear.json @@ -33,7 +33,7 @@ { "Name": "Moonfire", "Key": "5", - "Requirements": ["SpellInRange:0", "not InMeleeRange", "Mana%>50"], + "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], "Form": "None" }, { diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index 51ac93087..56ec4ad96 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -4,6 +4,7 @@ "PathFilename": "_pack\\1-20\\Night elf\\15-18_Darkshore_Twilight Vale - Blackwood.json", "PathReduceSteps": true, "CheckTargetGivesExp": true, + "NPCMaxLevels_Below": 10, "Form": [ { @@ -33,7 +34,9 @@ { "Name": "Moonfire", "Key": "5", - "Requirements": ["SpellInRange:0", "not InMeleeRange", "Mana%>50"], + "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], + "WaitForWithinMeleeRange": true, + "StopBeforeCast": true, "Form": "None" }, { From 7c106bc915cee48d430e01d8012ed9da9c27f78a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:46:55 +0200 Subject: [PATCH 017/132] Fix typo Druid_cat profile WaitForWithinMeleeRange --- Json/class/Druid_cat.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index cc88001bc..46c72db7b 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -57,13 +57,13 @@ "Requirement": "OutOfCombatRange", "Form": "None", "HasCastBar": true, - "WaitForWithinMelleRange": true + "WaitForWithinMeleeRange": true }, { "Name": "Cat form", "Key": "2", "Form": "None", - "WaitForWithinMelleRange": true + "WaitForWithinMeleeRange": true }, { "Name": "Heal", From cf5965dec1a892af2168a1eadf6c25fe2360a8e1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:49:30 +0200 Subject: [PATCH 018/132] Added Rogue_12 profile to demonstrate 'Throw' pulling. Upon reaching pull distance remain there and start pulling with 'Throw' also repeat throwing as long as WaitForWithinMeleeRange --- Json/class/Rogue_12.json | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Json/class/Rogue_12.json diff --git a/Json/class/Rogue_12.json b/Json/class/Rogue_12.json new file mode 100644 index 000000000..47c6e3c48 --- /dev/null +++ b/Json/class/Rogue_12.json @@ -0,0 +1,94 @@ +{ + "ClassName": "Rogue", + "Skin": true, + "PathFilename": "10_Gnome.json", + "Pull": { + "Sequence": [ + { + "Name": "Throw", + "Key": "6", + "StopBeforeCast": true, + "HasCastbar": true, + "WhenUsable": true, + "WaitForWithinMeleeRange": true, + "Requirements": ["HasRangedWeapon", "not InMeleeRange", "SpellInRange:1", "not Items Broken"] + }, + { + "Name": "Approach", + "Log": false + } + ] + }, + "Combat": { + "Sequence": [ + { + "Name": "Evasion", + "Key": 5, + "WhenUsable": true, + "WaitBuffAfterCast": true, + "Requirement": "Health%<40" + }, + { + "Name": "Slice and Dice", + "Key": "4", + "WaitBuffAfterCast": true, + "MinEnergy": 25, + "MinComboPoints": 1, + "Requirements": ["not Slice and Dice"] + }, + { + "Name": "Eviscerate", + "Key": "3", + "MinEnergy": 35, + "MinComboPoints": 2, + "Requirements": ["TargetHealth%>20", "LastMainHandMs<500"] + }, + { + "Name": "Sinister Strike", + "Key": "2", + "MinEnergy": 42, + "Requirement": "LastMainHandMs<500" + }, + { + "Name": "Approach", + "Log": false + }, + { + "Name": "AutoAttack", + "Requirement": "not AutoAttacking", + "Cooldown": 1 + } + ] + }, + "Adhoc": { + "Sequence": [ + { + "Name": "Food", + "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, + "Key": "N1", + "Requirement": "Health%<30", + "Cooldown": 15 + } + ] + }, + "NPC": { + "Sequence": [ + { + "Name": "Repair", + "Key": "C", + "Requirement": "Items Broken", + "PathFilename": "5_Gnome_Vendor.json", + "Cost": 6 + }, + { + "Name": "Sell", + "Key": "C", + "Requirement": "BagFull", + "PathFilename": "5_Gnome_Vendor.json", + "Cost": 6 + } + ] + } +} From fd41ac674fce2b4090a625eabb97e7d7acf6bcb5 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 15:50:37 +0200 Subject: [PATCH 019/132] Warrior_4 using Charge on pull when available otherwise fall back to 'Approach' --- Json/class/Warrior_4.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Json/class/Warrior_4.json b/Json/class/Warrior_4.json index 97876e8a1..ce5f0f81a 100644 --- a/Json/class/Warrior_4.json +++ b/Json/class/Warrior_4.json @@ -7,8 +7,12 @@ "Name": "Charge", "Key": "3", "Form": "Warrior_BattleStance", - "WhenUsable": true, - "Cooldown": 15 + "Requirement": "not InMeleeRange", + "WhenUsable": true + }, + { + "Name": "Approach", + "Log": false } ] }, From 20a59e37bef2a85618fab05a32af228bf51e3d7d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 16:55:12 +0200 Subject: [PATCH 020/132] Remove not maintained Druid profiles and path? --- Json/class/Druid.json | 87 -------------------------------- Json/class/Druid_1_NightElf.json | 87 -------------------------------- Json/class/Dwarf1-5.json | 1 - 3 files changed, 175 deletions(-) delete mode 100644 Json/class/Druid.json delete mode 100644 Json/class/Druid_1_NightElf.json delete mode 100644 Json/class/Dwarf1-5.json diff --git a/Json/class/Druid.json b/Json/class/Druid.json deleted file mode 100644 index d8dfa6b2e..000000000 --- a/Json/class/Druid.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "ClassName": "Druid", - "Loot": true, - "NPCMaxLevels_Below": 4, - "NPCMaxLevels_Above": 1, - - "PathFilename": "1_NightElf.json", - "SpiritPathFilename": "", - "PathThereAndBack": true, - "PathReduceSteps": false, - - "Blacklist": ["Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Form": [ - { - "Name": "/cancelform", - "Key": "F8", - "Form": "None" - }, - { - "Name": "Druid_Cat", - "Key": "2", - "Form": "Druid_Cat" - }, - { - "Name": "Druid_Travel", - "Key": "1", - "Form": "Druid_Travel" - } - ], - - "Pull": { - "Sequence": [ - { - "Name": "Wrath", - "Key": "2", - "StopBeforeCast": true, - "Form": "None", - "HasCastBar": true, - "MinMana": 20 - } - ] - }, - - "Combat": { - "Sequence": [ - { - "Name": "Approach", - "Cooldown": 10, - "Log": false, - "DelayAfterCast": "200" - }, - { - "Name": "Heal", - "Key": "3", - "Requirement": "Health%<50", - "Cooldown": 10, - "HasCastBar": true, - "Log": false, - "Form": "None", - "MinMana": 25 - }, - { - "Name": "Wrath", - "Key": "2", - "StopBeforeCast": true, - "Form": "None", - "HasCastBar": true, - "MinMana": 20 - } - ] - }, - "Adhoc": { - "Sequence": [ - { - "Name": "Drink", - "HasCastBar": true, - "StopBeforeCast": true, - "Key": "-", - "Requirement": "Mana%<30", - "Cooldown": 10, - "Log": false, - "Form": "None" - } - ] - } -} diff --git a/Json/class/Druid_1_NightElf.json b/Json/class/Druid_1_NightElf.json deleted file mode 100644 index d8dfa6b2e..000000000 --- a/Json/class/Druid_1_NightElf.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "ClassName": "Druid", - "Loot": true, - "NPCMaxLevels_Below": 4, - "NPCMaxLevels_Above": 1, - - "PathFilename": "1_NightElf.json", - "SpiritPathFilename": "", - "PathThereAndBack": true, - "PathReduceSteps": false, - - "Blacklist": ["Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Form": [ - { - "Name": "/cancelform", - "Key": "F8", - "Form": "None" - }, - { - "Name": "Druid_Cat", - "Key": "2", - "Form": "Druid_Cat" - }, - { - "Name": "Druid_Travel", - "Key": "1", - "Form": "Druid_Travel" - } - ], - - "Pull": { - "Sequence": [ - { - "Name": "Wrath", - "Key": "2", - "StopBeforeCast": true, - "Form": "None", - "HasCastBar": true, - "MinMana": 20 - } - ] - }, - - "Combat": { - "Sequence": [ - { - "Name": "Approach", - "Cooldown": 10, - "Log": false, - "DelayAfterCast": "200" - }, - { - "Name": "Heal", - "Key": "3", - "Requirement": "Health%<50", - "Cooldown": 10, - "HasCastBar": true, - "Log": false, - "Form": "None", - "MinMana": 25 - }, - { - "Name": "Wrath", - "Key": "2", - "StopBeforeCast": true, - "Form": "None", - "HasCastBar": true, - "MinMana": 20 - } - ] - }, - "Adhoc": { - "Sequence": [ - { - "Name": "Drink", - "HasCastBar": true, - "StopBeforeCast": true, - "Key": "-", - "Requirement": "Mana%<30", - "Cooldown": 10, - "Log": false, - "Form": "None" - } - ] - } -} diff --git a/Json/class/Dwarf1-5.json b/Json/class/Dwarf1-5.json deleted file mode 100644 index 6832f586a..000000000 --- a/Json/class/Dwarf1-5.json +++ /dev/null @@ -1 +0,0 @@ -[{"X":29.910999999999998,"Y":73.725},{"X":30.396,"Y":74.08200000000001},{"X":30.768,"Y":74.57300000000001},{"X":30.718,"Y":75.19},{"X":30.776999999999997,"Y":75.789},{"X":30.275000000000002,"Y":76.13499999999999},{"X":30.137999999999998,"Y":75.547},{"X":29.646,"Y":75.184},{"X":29.054999999999996,"Y":75.053},{"X":28.841,"Y":74.47200000000001}] \ No newline at end of file From 06d1bba366268ca785540c55c152b022a1b7b030 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 17:09:17 +0200 Subject: [PATCH 021/132] Update high level Druid_bear profile with recent changes and additions --- Json/class/Druid_bear.json | 78 ++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index 417e1f80b..b43d51568 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -2,14 +2,25 @@ "ClassName": "Druid", "Loot": true, "NPCMaxLevels_Below": 8, - "PathFilename": "52_Ongoro.json", - "SpiritPathFilename": "52_Ongoro_SpiritHealer.json", "PathThereAndBack": true, "PathReduceSteps": true, - - "Blacklist": ["BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - + "Blacklist": [ + "BLUEGI", + "Tunnel", + "OL' SO", + "HAREN S", + "THRAGO", + "Elder Razormaw", + "Highland Razormaw", + "Boulderfist", + "witherbark", + "venomhide", + "tar beast", + "toxic horror", + "hive", + "hazzali" + ], "Form": [ { "Name": "/cancelform", @@ -27,13 +38,13 @@ "Form": "Druid_Travel" } ], - "Pull": { "Sequence": [ { "Name": "Rejuvenation", "Key": "1", - "Requirement": "Health%<70", + "AfterCastWaitBuff": true, + "Requirements": ["Health%<70", "not Rejuvenation"], "Form": "None" }, { @@ -48,8 +59,8 @@ "Name": "Moonfire", "Key": "8", "Form": "None", - "MinMana": 235, - "DelayBeforeCast": 300 + "Requirements": ["not Moonfire", "SpellInRange:0"], + "MinMana": 235 }, { "Name": "Wrath", @@ -67,30 +78,20 @@ } ] }, - "Combat": { "Sequence": [ - { - "Name": "Approach", - "Cooldown": 10, - "Log": false, - "DelayAfterCast": "200" - }, { "Name": "Heal", "Key": "6", "Requirement": "Health%<50", "Cooldown": 10, "HasCastBar": true, - "Log": false, "Form": "None" }, { "Name": "Enrage", "Key": "3", - "Cooldown": 15, - "DelayAfterCast": "200", - "Log": false, + "WhenUsable": true, "Form": "Druid_Bear" }, { @@ -100,16 +101,14 @@ "MinRage": 10, "Cooldown": 10, "Form": "Druid_Bear", - "Log": false, "ResetOnNewTarget": true }, { "Name": "Roar", - "Requirement": "not Demoralizing Roar", + "Requirements": ["InMeleeRange", "not Demoralizing Roar"], "Key": "5", "MinRage": 6, "Cooldown": 10, - "Log": false, "Form": "Druid_Bear" }, { @@ -117,17 +116,31 @@ "Key": "4", "MinRage": 10, "Cooldown": 31, - "Log": false, + "Form": "Druid_Bear" + }, + { + "Name": "Swipe", + "Key": "N1", + "MinRage": 20, + "WhenUsable": true, + "Requirements": ["InMeleeRange", "MobCount>2"], "Form": "Druid_Bear" }, { "Name": "Maul", "Key": "2", "MinRage": 10, - "Cooldown": 2, - "DelayAfterCast": "500", - "Log": false, + "AfterCastWaitNextSwing": true, + "Requirements": ["InMeleeRange", "MobCount<1", "LastMainHandMs>2100"], // bear swing speed fixed at 2.5 "Form": "Druid_Bear" + }, + { + "Name": "Approach", + "Log": false + }, + { + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" } ] }, @@ -140,7 +153,6 @@ "Cooldown": 60, "Form": "None", "InCombat": "true", - "Log": false, "Cost": 3 }, { @@ -149,7 +161,6 @@ "Requirement": "Health%<60", "Cooldown": 10, "HasCastBar": true, - "Log": false, "Form": "None", "Cost": 3 }, @@ -159,7 +170,6 @@ "Key": "9", "Requirement": "not Well Fed", "Cooldown": 120, - "Log": false, "Form": "None" }, { @@ -169,7 +179,6 @@ "Key": "0", "Requirement": "Mana%<40", "Cooldown": 10, - "Log": false, "Form": "None", "Cost": 3 }, @@ -179,7 +188,6 @@ "Key": "3", "Cooldown": 10, "Requirement": "not Thorns", - "Log": false, "Form": "None" }, { @@ -188,15 +196,13 @@ "Key": "4", "Cooldown": 10, "Requirement": "not Mark of the Wild", - "Log": false, "Form": "None" }, { "Name": "Del1", "Key": "F5", - "Cooldown": 120, - "Log": false + "Cooldown": 120 } ] } -} +} \ No newline at end of file From c84922b28d324ca9fc505d0f1171e1452f6089f4 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 17:18:48 +0200 Subject: [PATCH 022/132] Update Druid_bear and Druid_cat profiles --- Json/class/Druid_bear.json | 3 +- Json/class/Druid_cat.json | 85 ++++++++++++++++++++------------------ 2 files changed, 47 insertions(+), 41 deletions(-) diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index b43d51568..dca56d667 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -81,11 +81,12 @@ "Combat": { "Sequence": [ { - "Name": "Heal", + "Name": "Healing Touch", "Key": "6", "Requirement": "Health%<50", "Cooldown": 10, "HasCastBar": true, + "StopBeforeCast": true, "Form": "None" }, { diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index 46c72db7b..1491f4e32 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -2,14 +2,32 @@ "ClassName": "Druid", "Loot": true, "NPCMaxLevels_Below": 20, - "PathFilename": "56_Azshara.json", - "SpiritPathFilename": "56_Azshara_SpiritHealer.json", "PathThereAndBack": true, "PathReduceSteps": false, - - "Blacklist": ["Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - + "Blacklist": [ + "Legashi", + "Blood Elf", + "Elf Reclaim", + "Elf Survey", + "Searing Roc", + "Living Storm", + "Land Rager", + "BLUEGI", + "Tunnel", + "OL' SO", + "HAREN S", + "THRAGO", + "Elder Razormaw", + "Highland Razormaw", + "Boulderfist", + "witherbark", + "venomhide", + "tar beast", + "toxic horror", + "hive", + "hazzali" + ], "Form": [ { "Name": "/cancelform", @@ -27,13 +45,13 @@ "Form": "Druid_Travel" } ], - "Pull": { "Sequence": [ { "Name": "Rejuvenation", "Key": "1", - "Requirement": "Health%<70", + "AfterCastWaitBuff": true, + "Requirements": ["Health%<70", "not Rejuvenation"], "Form": "None" }, { @@ -48,8 +66,8 @@ "Name": "Moonfire", "Key": "8", "Form": "None", - "MinMana": 235, - "DelayBeforeCast": 300 + "Requirements": ["SpellInRange:0", "not Moonfire"], + "MinMana": 235 }, { "Name": "Wrath", @@ -66,32 +84,23 @@ "WaitForWithinMeleeRange": true }, { - "Name": "Heal", + "Name": "Healing Touch", "Key": "6", "Requirement": "Health%<40", "Cooldown": 10, + "StopBeforeCast": true, "HasCastBar": false, - "Log": false, "Form": "None" } ] }, - "Combat": { "Sequence": [ { - "Name": "Approach", - "Cooldown": 10, - "Log": false, - "DelayAfterCast": "200" - }, - { - "Name": "Heal", + "Name": "Healing Potion", "Key": "-", "Requirement": "Health%<50", "Cooldown": 10, - "HasCastBar": true, - "Log": false, "Form": "None" }, { @@ -101,7 +110,6 @@ "MinEnergy": 30, "Cooldown": 6, "DelayAfterCast": "200", - "Log": false, "Form": "Druid_Cat" }, { @@ -111,7 +119,6 @@ "MinRage": 10, "Cooldown": 10, "Form": "Druid_Cat", - "Log": false, "ResetOnNewTarget": true }, { @@ -121,7 +128,6 @@ "MinEnergy": 30, "MinComboPoints": 3, "Cooldown": 10, - "Log": false, "Form": "Druid_Cat" }, { @@ -129,8 +135,15 @@ "Key": "1", "MinRage": 35, "Cooldown": 1, - "Log": false, "Form": "Druid_Cat" + }, + { + "Name": "Approach", + "Log": false + }, + { + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" } ] }, @@ -143,27 +156,23 @@ "Cooldown": 60, "Form": "None", "InCombat": "true", - "Log": false, "Cost": 3 }, { - "Name": "Heal", + "Name": "Healing Touch", "Key": "6", "Requirement": "Health%<80", "StopBeforeCast": true, "Cooldown": 10, "HasCastBar": true, - "Log": false, "Form": "None", "Cost": 3 }, { "Name": "Well Fed", - "StopBeforeCast": false, "Key": "9", "Requirement": "not Well Fed", "Cooldown": 120, - "Log": false, "Form": "None" }, { @@ -173,34 +182,30 @@ "Key": "0", "Requirement": "Mana%<40", "Cooldown": 10, - "Log": false, "Form": "None", "Cost": 3 }, { "Name": "Thorns", - "StopBeforeCast": false, "Key": "3", - "Cooldown": 10, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Requirement": "not Thorns", - "Log": false, "Form": "None" }, { "Name": "Mark of the Wild", - "StopBeforeCast": false, "Key": "4", - "Cooldown": 10, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Requirement": "not Mark of the Wild", - "Log": false, "Form": "None" }, { "Name": "Del1", "Key": "F5", - "Cooldown": 120, - "Log": false + "Cooldown": 120 } ] } -} +} \ No newline at end of file From 9d9ee202a93948dbae7f2937e032ff35614913b6 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 17:29:38 +0200 Subject: [PATCH 023/132] Fix: Addon bagType was not properly passed to backend and ammo slots considered for 'BagFull' --- Addons/DataToColor/DataToColor.lua | 8 ++++++-- Addons/DataToColor/DataToColor.toc | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Addons/DataToColor/DataToColor.lua b/Addons/DataToColor/DataToColor.lua index ec8576529..1049906e4 100644 --- a/Addons/DataToColor/DataToColor.lua +++ b/Addons/DataToColor/DataToColor.lua @@ -340,10 +340,14 @@ function DataToColor:CreateFrames(n) -- 20 bagNum = DataToColor.stack:pop(DataToColor.bagQueue) if bagNum then - local freeSlots, bagType = GetContainerNumFreeSlots(bagNum) or 0, 0 + local freeSlots, bagType = GetContainerNumFreeSlots(bagNum) + if not bagType then + bagType = 0 + end + -- BagType + Index + FreeSpace + BagSlots MakePixelSquareArrI(bagType * 1000000 + bagNum * 100000 + freeSlots * 1000 + DataToColor:bagSlots(bagNum), 20) - --DataToColor:Print("bagQueue "..bagType.." -> "..bagNum.." -> "..freeSlots.." -> "..DataToColor:bagSlots(bagNum)) + --DataToColor:Print("bagQueue bagType:"..bagType.." | bagNum: "..bagNum.." | freeSlots: "..freeSlots.." | BagSlots: "..DataToColor:bagSlots(bagNum)) end -- 21 22 23 diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index 27a254e53..de8a58d31 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.27 +## Version: 1.1.28 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: From bfd01927aea6a2fe8b287e3077bb9795f1587f16 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 18:08:39 +0200 Subject: [PATCH 024/132] FollowRouteGoal: anti Drown higher priority --- Core/Goals/FollowRouteGoal.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Core/Goals/FollowRouteGoal.cs b/Core/Goals/FollowRouteGoal.cs index c5558eb1b..005a5b911 100644 --- a/Core/Goals/FollowRouteGoal.cs +++ b/Core/Goals/FollowRouteGoal.cs @@ -156,6 +156,11 @@ public override async Task PerformAction() return; } + if (playerReader.PlayerBitValues.IsDrowning) + { + await StopDrowning(); + } + await SwitchGatherType(); if (this.playerReader.PlayerBitValues.PlayerInCombat && classConfiguration.Mode != Mode.AttendedGather) { return; } @@ -191,7 +196,6 @@ public override async Task PerformAction() } await RandomJump(); - await StopDrowning(); var location = new WowPoint(playerReader.XCoord, playerReader.YCoord, playerReader.ZCoord); var distance = WowPoint.DistanceTo(location, routeToWaypoint.Peek()); @@ -509,11 +513,8 @@ public static Vector2 GetClosestPointOnLineSegment(Vector2 A, Vector2 B, Vector2 private async Task StopDrowning() { - if (playerReader.PlayerBitValues.IsDrowning) - { - await input.TapJump("Drowning! Swim up"); - await wait.Update(1); - } + await input.TapJump("Drowning! Swim up"); + await wait.Update(1); } private void Log(string text) From 2d32e5ba5e9a2d10b459c63f2cd6fd254edf189c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 20:12:41 +0200 Subject: [PATCH 025/132] KeyAction: use TotalMilliseconds :sweat: --- Core/ClassConfig/KeyAction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index d3f40225c..056248fd2 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -154,7 +154,7 @@ public float GetCooldownRemaining() return 0; } - var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[this.ConsoleKey]).Milliseconds); + var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[this.ConsoleKey]).TotalMilliseconds); return remaining < 0 ? 0 : remaining; } From ebf7008c42416fec5b9853a81deed8942a88498c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 20:17:09 +0200 Subject: [PATCH 026/132] KeyAction.AfterCastWaitBuff is now considers all the possible Auras (PlayerDebuff, PlayerBuff, TargetDebuff, TargetBuff) counts when waiting --- Addons/DataToColor/DataToColor.lua | 31 ++++++++++++++++++++++++++++- Addons/DataToColor/DataToColor.toc | 2 +- Core/Addon/AuraCount.cs | 32 ++++++++++++++++++++++++++++++ Core/Addon/PlayerReader.cs | 9 ++++++++- Core/Goals/CastingHandler.cs | 11 ++++------ 5 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 Core/Addon/AuraCount.cs diff --git a/Addons/DataToColor/DataToColor.lua b/Addons/DataToColor/DataToColor.lua index 1049906e4..5e77389ca 100644 --- a/Addons/DataToColor/DataToColor.lua +++ b/Addons/DataToColor/DataToColor.lua @@ -56,6 +56,12 @@ DataToColor.targetChanged = true DataToColor.playerGUID = UnitGUID(DataToColor.C.unitPlayer) DataToColor.petGUID = UnitGUID(DataToColor.C.unitPet) +-- buff / debuff counters +local playerDebuffCount = 0 +local playerBuffCount = 0 +local targetDebuffCount = 0 +local targetBuffCount = 0 + -- Update Queue stack = {} DataToColor.stack = stack @@ -173,6 +179,11 @@ function DataToColor:Reset() DataToColor.lastMainHandMeleeSwing = 0 DataToColor.lastCastEvent = 0 DataToColor.lastCastSpellId = 0 + + playerDebuffCount = 0 + playerBuffCount = 0 + targetDebuffCount = 0 + targetBuffCount = 0 end function DataToColor:Update() @@ -445,7 +456,25 @@ function DataToColor:CreateFrames(n) MakePixelSquareArrI(DataToColor:CastingInfoSpellId(DataToColor.C.unitPlayer), 53) -- Spell being cast MakePixelSquareArrI(DataToColor:ComboPoints(), 54) -- Combo points for rogue / druid - MakePixelSquareArrI(DataToColor:getAuraCount(UnitDebuff, DataToColor.C.unitPlayer), 55) + + playerDebuffCount = DataToColor:getAuraCount(UnitDebuff, DataToColor.C.unitPlayer) + playerBuffCount = DataToColor:getAuraCount(UnitBuff, DataToColor.C.unitPlayer) + + if UnitExists(DataToColor.C.unitTarget) then + targetDebuffCount = DataToColor:getAuraCount(UnitDebuff, DataToColor.C.unitTarget) + targetBuffCount = DataToColor:getAuraCount(UnitBuff, DataToColor.C.unitTarget) + else + targetDebuffCount = 0 + targetBuffCount = 0 + end + + if playerDebuffCount > 16 then + playerDebuffCount = 16 + end + + -- player/target buff and debuff counts + -- formula playerDebuffCount + playerBuffCount + targetDebuffCount + targetBuffCount + MakePixelSquareArrI(playerDebuffCount * 1000000 + playerBuffCount * 10000 + targetDebuffCount * 100 + targetBuffCount, 55) if DataToColor.targetChanged then MakePixelSquareArrI(DataToColor:targetNpcId(), 56) -- target id diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index de8a58d31..806c3a5ae 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.28 +## Version: 1.1.29 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Core/Addon/AuraCount.cs b/Core/Addon/AuraCount.cs new file mode 100644 index 000000000..f8f657abc --- /dev/null +++ b/Core/Addon/AuraCount.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Core +{ + public class AuraCount + { + public int Hash { private set; get; } + public int PlayerDebuff { private set; get; } + public int PlayerBuff { private set; get; } + public int TargetDebuff { private set; get; } + public int TargetBuff { private set; get; } + + public AuraCount(ISquareReader squareReader, int cell) + { + Hash = TargetBuff = (int)squareReader.GetLongAtCell(cell); + + // formula + // playerDebuffCount * 1000000 + playerBuffCount * 10000 + targetDebuffCount * 100 + targetBuffCount + + PlayerDebuff = (int)(TargetBuff / 1000000f); + TargetBuff -= 1000000 * PlayerDebuff; + + PlayerBuff = (int)(TargetBuff / 10000f); + TargetBuff -= 10000 * PlayerBuff; + + TargetDebuff = (int)(TargetBuff / 100f); + TargetBuff -= 100 * TargetDebuff; + } + } +} diff --git a/Core/Addon/PlayerReader.cs b/Core/Addon/PlayerReader.cs index 085c3111b..f051a2e0e 100644 --- a/Core/Addon/PlayerReader.cs +++ b/Core/Addon/PlayerReader.cs @@ -142,7 +142,14 @@ public string Target public long SpellBeingCast => reader.GetLongAtCell(53); public long ComboPoints => reader.GetLongAtCell(54); - public long PlayerDebuffCount => reader.GetLongAtCell(55); + public AuraCount AuraCount => new AuraCount(reader, 55); + + public int PlayerDebuffCount => AuraCount.PlayerDebuff; + public int PlayerBuffCount => AuraCount.PlayerBuff; + + public int TargetBuffCount => AuraCount.TargetBuff; + public int TargetDebuffCount => AuraCount.TargetDebuff; + public int TargetId => (int)reader.GetLongAtCell(56); public long TargetGuid => reader.GetLongAtCell(57); diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index c23a2a3b9..930988626 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -23,7 +23,7 @@ public class CastingHandler private readonly KeyAction defaultKeyAction = new KeyAction(); private const int GCD = 1500; private const int MaxWaitCastTimeMs = GCD; - private const int MaxWaitBuffTimeMs = 500; + private const int MaxWaitBuffTimeMs = GCD; private const int MaxCastTimeMs = 15000; private const int MaxSwingTimeMs = 4000; private const int MaxAirTimeMs = 10000; @@ -284,8 +284,8 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) await Task.Delay(sleepBeforeCast); } - long beforeBuff = playerReader.Buffs.Value; bool beforeHasTarget = playerReader.HasTarget; + int auraHash = playerReader.AuraCount.Hash; if (item.WaitForGCD) { @@ -332,11 +332,8 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) if (item.AfterCastWaitBuff) { - (bool notappeared, double elapsedMs) = await wait.InterruptTask(MaxWaitBuffTimeMs, () => beforeBuff != playerReader.Buffs.Value); - if (!notappeared) - item.LogInformation($" ... AfterCastWaitBuff: Buff: {!notappeared} | Delay: {elapsedMs}ms"); - else - item.LogInformation($" ... AfterCastWaitBuff: No buff | Delay: {elapsedMs}ms"); + (bool notappeared, double elapsedMs) = await wait.InterruptTask(MaxWaitBuffTimeMs, () => auraHash != playerReader.AuraCount.Hash); + item.LogInformation($" ... AfterCastWaitBuff: Buff: {!notappeared} | pb: {playerReader.AuraCount.PlayerBuff} | pd: {playerReader.AuraCount.PlayerDebuff} | tb: {playerReader.AuraCount.TargetBuff} | td: {playerReader.AuraCount.TargetDebuff} | Delay: {elapsedMs}ms"); } if (item.DelayAfterCast != defaultKeyAction.DelayAfterCast) From 9d88d0f43fc38a288e3c9b2e1e15d3e2084f8e48 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 20:33:06 +0200 Subject: [PATCH 027/132] Update Druid profiles Cooldown from Seconds to Ms --- Json/class/Druid_1.json | 4 ++-- Json/class/Druid_10_bear.json | 6 +++--- Json/class/Druid_12_bear.json | 6 +++--- Json/class/Druid_14_bear.json | 6 +++--- Json/class/Druid_16_bear.json | 7 ++++--- Json/class/Druid_4.json | 8 ++++---- Json/class/Druid_6.json | 6 +++--- Json/class/Druid_bear.json | 22 +++++++++++----------- Json/class/Druid_cat.json | 22 +++++++++++----------- 9 files changed, 44 insertions(+), 43 deletions(-) diff --git a/Json/class/Druid_1.json b/Json/class/Druid_1.json index 72adfab33..4453cc65f 100644 --- a/Json/class/Druid_1.json +++ b/Json/class/Druid_1.json @@ -21,7 +21,7 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<50", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Wrath", @@ -49,7 +49,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Druid_10_bear.json b/Json/class/Druid_10_bear.json index ede1d0804..8aacfd6e9 100644 --- a/Json/class/Druid_10_bear.json +++ b/Json/class/Druid_10_bear.json @@ -41,7 +41,7 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<25", - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -49,7 +49,7 @@ "Key": "6", "AfterCastWaitBuff": true, "Requirements": ["Health%<55", "not Rejuvenation"], - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -103,7 +103,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_12_bear.json b/Json/class/Druid_12_bear.json index 43b171b34..39e9f49ed 100644 --- a/Json/class/Druid_12_bear.json +++ b/Json/class/Druid_12_bear.json @@ -27,7 +27,7 @@ "Key": "6", "AfterCastWaitBuff": true, "Requirements": ["Health%<75", "not Rejuvenation"], - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -50,7 +50,7 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<30", - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -118,7 +118,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_14_bear.json b/Json/class/Druid_14_bear.json index 5bb919793..7b198154f 100644 --- a/Json/class/Druid_14_bear.json +++ b/Json/class/Druid_14_bear.json @@ -27,7 +27,7 @@ "Key": "6", "AfterCastWaitBuff": true, "Requirements": ["Health%<75", "not Rejuvenation"], - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -50,7 +50,7 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<30", - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -127,7 +127,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index 56ec4ad96..fdc48f525 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -28,12 +28,13 @@ "Key": "6", "AfterCastWaitBuff": true, "Requirements": ["Health%<75", "not Rejuvenation"], - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { "Name": "Moonfire", "Key": "5", + "AfterCastWaitBuff": true, "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], "WaitForWithinMeleeRange": true, "StopBeforeCast": true, @@ -53,7 +54,7 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<30", - "Cooldown": 5, + "Cooldown": 5000, "Form": "None" }, { @@ -138,7 +139,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_4.json b/Json/class/Druid_4.json index a9bbbe1eb..0d43e4ae4 100644 --- a/Json/class/Druid_4.json +++ b/Json/class/Druid_4.json @@ -21,7 +21,7 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<50", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Wrath", @@ -31,7 +31,7 @@ }, { "Name": "Approach", - "Cooldown": 5 + "Log": false } ] }, @@ -44,13 +44,13 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Mark of the Wild", "Key": "4", "Requirement": "not Mark of the Wild", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Druid_6.json b/Json/class/Druid_6.json index 802b8f43a..875338bde 100644 --- a/Json/class/Druid_6.json +++ b/Json/class/Druid_6.json @@ -22,14 +22,14 @@ "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<25", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Rejuvenation", "Key": "6", "AfterCastWaitBuff": true, "Requirements": ["Health%<55", "not Rejuvenation"], - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Moonfire", @@ -76,7 +76,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index dca56d667..d0fa07c0e 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -84,7 +84,7 @@ "Name": "Healing Touch", "Key": "6", "Requirement": "Health%<50", - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "StopBeforeCast": true, "Form": "None" @@ -100,7 +100,7 @@ "Requirement": "not Faerie Fire", "Key": "7", "MinRage": 10, - "Cooldown": 10, + "Cooldown": 10000, "Form": "Druid_Bear", "ResetOnNewTarget": true }, @@ -109,14 +109,14 @@ "Requirements": ["InMeleeRange", "not Demoralizing Roar"], "Key": "5", "MinRage": 6, - "Cooldown": 10, + "Cooldown": 10000, "Form": "Druid_Bear" }, { "Name": "Bash", "Key": "4", "MinRage": 10, - "Cooldown": 31, + "Cooldown": 31000, "Form": "Druid_Bear" }, { @@ -151,7 +151,7 @@ "Name": "Healing Potion", "Key": "-", "Requirement": "Health%<8", - "Cooldown": 60, + "Cooldown": 60000, "Form": "None", "InCombat": "true", "Cost": 3 @@ -160,7 +160,7 @@ "Name": "Heal", "Key": "6", "Requirement": "Health%<60", - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "Form": "None", "Cost": 3 @@ -170,7 +170,7 @@ "StopBeforeCast": false, "Key": "9", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Form": "None" }, { @@ -179,7 +179,7 @@ "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None", "Cost": 3 }, @@ -187,7 +187,7 @@ "Name": "Thorns", "StopBeforeCast": false, "Key": "3", - "Cooldown": 10, + "Cooldown": 10000, "Requirement": "not Thorns", "Form": "None" }, @@ -195,14 +195,14 @@ "Name": "Mark of the Wild", "StopBeforeCast": false, "Key": "4", - "Cooldown": 10, + "Cooldown": 10000, "Requirement": "not Mark of the Wild", "Form": "None" }, { "Name": "Del1", "Key": "F5", - "Cooldown": 120 + "Cooldown": 120000 } ] } diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index 1491f4e32..c058848e2 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -87,7 +87,7 @@ "Name": "Healing Touch", "Key": "6", "Requirement": "Health%<40", - "Cooldown": 10, + "Cooldown": 10000, "StopBeforeCast": true, "HasCastBar": false, "Form": "None" @@ -100,7 +100,7 @@ "Name": "Healing Potion", "Key": "-", "Requirement": "Health%<50", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None" }, { @@ -108,7 +108,7 @@ "Requirement": "not TigersFury", "Key": "3", "MinEnergy": 30, - "Cooldown": 6, + "Cooldown": 6000, "DelayAfterCast": "200", "Form": "Druid_Cat" }, @@ -117,7 +117,7 @@ "Requirement": "not Faerie Fire", "Key": "7", "MinRage": 10, - "Cooldown": 10, + "Cooldown": 10000, "Form": "Druid_Cat", "ResetOnNewTarget": true }, @@ -127,14 +127,14 @@ "Key": "2", "MinEnergy": 30, "MinComboPoints": 3, - "Cooldown": 10, + "Cooldown": 10000, "Form": "Druid_Cat" }, { "Name": "Rake", "Key": "1", "MinRage": 35, - "Cooldown": 1, + "Cooldown": 1000, "Form": "Druid_Cat" }, { @@ -153,7 +153,7 @@ "Name": "Healing Potion", "Key": "-", "Requirement": "Health%<8", - "Cooldown": 60, + "Cooldown": 60000, "Form": "None", "InCombat": "true", "Cost": 3 @@ -163,7 +163,7 @@ "Key": "6", "Requirement": "Health%<80", "StopBeforeCast": true, - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "Form": "None", "Cost": 3 @@ -172,7 +172,7 @@ "Name": "Well Fed", "Key": "9", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Form": "None" }, { @@ -181,7 +181,7 @@ "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Form": "None", "Cost": 3 }, @@ -204,7 +204,7 @@ { "Name": "Del1", "Key": "F5", - "Cooldown": 120 + "Cooldown": 120000 } ] } From 7b6f073bd89349920da371baac5d7a8390ded3f4 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 20:43:03 +0200 Subject: [PATCH 028/132] KeyAction.Cooldown: show only one floating point precision. --- Core/ClassConfig/KeyAction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index 056248fd2..e2d0b94cb 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -139,7 +139,7 @@ public void CreateCooldownRequirement() this.RequirementObjects.Add(new Requirement { HasRequirement = () => GetCooldownRemaining() == 0, - LogMessage = () => $"Cooldown {GetCooldownRemaining()}", + LogMessage = () => $"Cooldown {GetCooldownRemaining() / 1000:F1}", VisibleIfHasRequirement = false }); } From 08232dfc0ed7ac95400a089d0c2b47a6809bf701 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 12 Oct 2021 21:14:00 +0200 Subject: [PATCH 029/132] Update Hunter profiles with Auto Shot and Cooldown --- Json/class/Hunter_1.json | 5 +- Json/class/Hunter_10.json | 27 +++--- Json/class/Hunter_18.json | 27 +++--- Json/class/Hunter_26.json | 31 ++++--- Json/class/Hunter_30.json | 33 ++++--- Json/class/Hunter_4.json | 27 +++--- Json/class/Hunter_58.json | 181 -------------------------------------- Json/class/Hunter_6.json | 17 ++-- Json/class/Hunter_62.json | 24 ++--- 9 files changed, 93 insertions(+), 279 deletions(-) delete mode 100644 Json/class/Hunter_58.json diff --git a/Json/class/Hunter_1.json b/Json/class/Hunter_1.json index dbdbbf683..4301a8a1a 100644 --- a/Json/class/Hunter_1.json +++ b/Json/class/Hunter_1.json @@ -6,6 +6,7 @@ { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] }, @@ -15,6 +16,7 @@ "WhenUsable": true, "AfterCastWaitNextSwing": true, "StepBackAfterCast": 1000, + "MinMana": 15, "Requirement": "InMeleeRange" } ] @@ -24,6 +26,7 @@ { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] }, @@ -37,8 +40,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] diff --git a/Json/class/Hunter_10.json b/Json/class/Hunter_10.json index efd285eaf..ac2f25871 100644 --- a/Json/class/Hunter_10.json +++ b/Json/class/Hunter_10.json @@ -7,8 +7,8 @@ "Name": "Concussive Shot", "Key": "9", "MinMana": 15, - "Cooldown": 12, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "HasAmmo"] + "Cooldown": 12000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange"] }, { "Name": "Raptor Strike", @@ -34,7 +34,7 @@ "Name": "Mend Pet", "Key": "N7", "MinMana": 200, - "Cooldown": 15, + "Cooldown": 15000, "WhenUsable": true, "Requirements": ["Has Pet", "PetHealth%<40"] }, @@ -42,22 +42,23 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Arcane Shot", "Key": "8", "MinMana": 15, - "Cooldown": 6, + "Cooldown": 6000, "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>60", "not Rapid Fire", "not Quick Shots"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Rapid Fire", "not Quick Shots", "TargetHealth%>60"] }, { "Name": "Raptor Strike", @@ -70,8 +71,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -87,7 +86,7 @@ { "Name": "feedpet", "Key": "N5", - "Cooldown": 20, + "Cooldown": 20000, "Requirements": ["Has Pet", "not Pet Happy"] }, { @@ -95,7 +94,7 @@ "Key": "N6", "MinMana": 20, "HasCastBar": true, - "Cooldown": 4, + "Cooldown": 4000, "Requirement": "not Has Pet" } ] @@ -109,7 +108,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<40", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -118,7 +117,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<40", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Hunter_18.json b/Json/class/Hunter_18.json index 17c93f230..24f23a6f0 100644 --- a/Json/class/Hunter_18.json +++ b/Json/class/Hunter_18.json @@ -7,8 +7,8 @@ "Name": "Concussive Shot", "Key": "9", "MinMana": 15, - "Cooldown": 12, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "HasAmmo"] + "Cooldown": 12000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange"] }, { "Name": "Raptor Strike", @@ -34,29 +34,30 @@ "Name": "Mend Pet", "Key": "N7", "MinMana": 200, - "Cooldown": 15, + "Cooldown": 15000, "Requirements": ["Has Pet", "PetHealth%<50"] }, { "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "Mana%>55", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "Mana%>55", "not Serpent Sting"] }, { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Arcane Shot", "Key": "8", "MinMana": 15, - "Cooldown": 6, + "Cooldown": 6000, "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>60", "Mana%>70", "not Rapid Fire", "not Quick Shots"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Rapid Fire", "not Quick Shots", "TargetHealth%>60", "Mana%>70"] }, { "Name": "Raptor Strike", @@ -69,8 +70,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -86,7 +85,7 @@ { "Name": "feedpet", "Key": "N5", - "Cooldown": 20, + "Cooldown": 20000, "Requirements": ["Has Pet", "not Pet Happy"] }, { @@ -94,7 +93,7 @@ "Key": "N6", "MinMana": 20, "HasCastBar": true, - "Cooldown": 4, + "Cooldown": 4000, "Requirement": "not Has Pet" } ] @@ -108,7 +107,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<40", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -117,7 +116,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<40", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Hunter_26.json b/Json/class/Hunter_26.json index 6af4522f1..359bca769 100644 --- a/Json/class/Hunter_26.json +++ b/Json/class/Hunter_26.json @@ -7,8 +7,8 @@ "Name": "Concussive Shot", "Key": "9", "MinMana": 15, - "Cooldown": 12, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "HasAmmo"] + "Cooldown": 12000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange"] }, { "Name": "Raptor Strike", @@ -35,37 +35,38 @@ "Name": "Mend Pet", "Key": "N7", "MinMana": 200, - "Cooldown": 15, + "Cooldown": 15000, "Requirements": ["Has Pet", "PetHealth%<50"] }, { "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "Mana%>55", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting", "Mana%>55"] }, { "Name": "Rapid Fire", "Key": "N3", "MinMana": 15, - "Cooldown": 8, + "Cooldown": 8000, "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>90"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "TargetHealth%>90"] }, { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Arcane Shot", "Key": "8", "MinMana": 15, - "Cooldown": 6, + "Cooldown": 6000, "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>60", "Mana%>70", "not Rapid Fire", "not Quick Shots"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Rapid Fire", "not Quick Shots", "TargetHealth%>60", "Mana%>70"] }, { "Name": "Raptor Strike", @@ -78,8 +79,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -95,7 +94,7 @@ { "Name": "feedpet", "Key": "N5", - "Cooldown": 20, + "Cooldown": 20000, "Requirements": ["Has Pet", "not Pet Happy"] }, { @@ -103,7 +102,7 @@ "Key": "N6", "MinMana": 20, "HasCastBar": true, - "Cooldown": 4, + "Cooldown": 4000, "Requirement": "not Has Pet" } ] @@ -117,7 +116,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<40", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -126,7 +125,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<40", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Hunter_30.json b/Json/class/Hunter_30.json index ebb864e13..ecc52c71c 100644 --- a/Json/class/Hunter_30.json +++ b/Json/class/Hunter_30.json @@ -7,8 +7,8 @@ "Name": "Concussive Shot", "Key": "9", "MinMana": 15, - "Cooldown": 12, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "HasAmmo"] + "Cooldown": 12000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange"] }, { "Name": "Raptor Strike", @@ -34,14 +34,14 @@ "Name": "Mend Pet", "Key": "N7", "MinMana": 200, - "Cooldown": 15, + "Cooldown": 15000, "Requirements": ["Has Pet", "PetHealth%<50"] }, { "Name": "Intimidation", "Key": "N4", "MinMana": 15, - "Cooldown": 60, + "Cooldown": 60000, "WhenUsable": true, "Requirements": ["Has Pet"] }, @@ -49,30 +49,31 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "Mana%>55", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting", "Mana%>55"] }, { "Name": "Rapid Fire", "Key": "N3", "MinMana": 15, - "Cooldown": 8, + "Cooldown": 8000, "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>90"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "TargetHealth%>90"] }, { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Arcane Shot", "Key": "8", "MinMana": 15, - "Cooldown": 6, + "Cooldown": 6000, "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>60", "Mana%>70", "not Rapid Fire", "not Quick Shots"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Rapid Fire", "not Quick Shots", "TargetHealth%>60", "Mana%>70"] }, { "Name": "Raptor Strike", @@ -85,8 +86,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -102,7 +101,7 @@ { "Name": "feedpet", "Key": "N5", - "Cooldown": 20, + "Cooldown": 20000, "Requirements": ["Has Pet", "not Pet Happy"] }, { @@ -110,7 +109,7 @@ "Key": "N6", "MinMana": 20, "HasCastBar": true, - "Cooldown": 4, + "Cooldown": 4000, "Requirement": "not Has Pet" } ] @@ -124,7 +123,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<40", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -133,7 +132,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<40", - "Cooldown": 10 + "Cooldown": 10000 } ] } diff --git a/Json/class/Hunter_4.json b/Json/class/Hunter_4.json index adff45f2c..0fa73cffc 100644 --- a/Json/class/Hunter_4.json +++ b/Json/class/Hunter_4.json @@ -7,8 +7,15 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] + }, + { + "Name": "autoshot", + "StopBeforeCast": true, + "HasCastBar": true, + "Key": "3", + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Raptor Strike", @@ -22,18 +29,12 @@ }, "Combat": { "Sequence": [ - { - "Name": "Serpent Sting", - "Key": "2", - "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo"] - }, { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Raptor Strike", @@ -45,8 +46,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -70,7 +69,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -79,7 +78,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Hunter_58.json b/Json/class/Hunter_58.json deleted file mode 100644 index 5fe459873..000000000 --- a/Json/class/Hunter_58.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "ClassName": "Hunter", - "PathFilename": "_pack\\60-70\\Hellfire Peninsula\\60-64 birds.json", - "Pull": { - "Sequence": [ - { - "Name": "Hunter's Mark", - "DelayAfterCast": 1500, - "Key": "0" - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Approach", - "Requirement": "MaxRange>30" - }, - { - "Name": "Mend Pet", - "Key": "N7", - "MinMana": 200, - "Cooldown": 15, - "WhenUsable": true, - "Requirements": ["Has Pet", "PetHealth%<40"] - }, - { - "Name": "Intimidation", - "Key": "8", - "MinMana": 15, - "Cooldown": 15, - "WhenUsable": true, - "Requirements": ["Has Pet"] - }, - { - "Name": "Bestial Wrath", - "Key": "9", - "MinMana": 15, - "Cooldown": 15, - "WhenUsable": true, - "Requirements": ["Has Pet", "TargetHealth%>50"] - }, - { - "Name": "Aimed Shot", - "Key": "6", - "HasCastBar": true, - "MinMana": 15, - "Cooldown": 8, - "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo", "TargetHealth%>35", "not Rapid Fire", "not Quick Shots"] - }, - { - "Name": "Rapid Fire", - "Key": "7", - "MinMana": 15, - "Cooldown": 8, - "WhenUsable": true, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "HasAmmo"] - }, - { - "Name": "Serpent Sting", - "Key": "2", - "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo", "TargetHealth%>35"] - }, - { - "Name": "autoshot", - "StopBeforeCast": true, - "Key": "3", - "Cooldown": 2, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] - }, - { - "Name": "Multi-Shot", - "Key": "N3", - "HasCastBar": true, - "MinMana": 15, - "Cooldown": 10, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo", "TargetHealth%>35", "not Rapid Fire", "not Quick Shots"] - }, - { - "Name": "Mongoose Bite", - "Key": "5", - "WhenUsable": true, - "Cooldown": 5, - "MinMana": 15, - "Requirement": "InMeleeRange" - }, - { - "Name": "Raptor Strike", - "Key": "4", - "WhenUsable": true, - "AfterCastWaitNextSwing": true, - "Cooldown": 6, - "MinMana": 15, - "Requirement": "InMeleeRange" - }, - { - "Name": "Disengage", - "Key": "1", - "WhenUsable": true, - "Cooldown": 5, - "MinMana": 15, - "StepBackAfterCast": 1000, - "Requirement": "InMeleeRange" - }, - { - "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, - "Requirements": ["InMeleeRange", "not AutoAttacking"] - } - ] - }, - "Adhoc": { - "Sequence": [ - { - "Name": "Aspect of the Hawk", - "Key": "N4", - "MinMana": 20, - "Cooldown": 20, - "Requirement": "not Aspect of the Hawk" - }, - { - "Name": "feedpet", - "Key": "N5", - "Cooldown": 20, - "Requirements": ["Has Pet", "not Pet Happy"] - }, - { - "Name": "sumpet", - "Key": "N6", - "MinMana": 20, - "HasCastBar": true, - "Cooldown": 4, - "Requirement": "not Has Pet" - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Key": "N1", - "Requirement": "Health%<45", - "Cooldown": 10 - }, - { - "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Key": "N2", - "Requirement": "Mana%<45", - "Cooldown": 10 - } - ] - }, - "NPC": { - "Sequence": [ - { - "Name": "Repair", - "Key": "C", - "Requirement": "Items Broken", - "PathFilename": "60_Hellfire_Honor_Hold_Vendor.json", - "Cost": 6 - }, - { - "Name": "Sell", - "Key": "C", - "Requirement": "BagFull", - "PathFilename": "60_Hellfire_Honor_Hold_Vendor.json", - "Cost": 6 - } - ] - } -} diff --git a/Json/class/Hunter_6.json b/Json/class/Hunter_6.json index 17ddf5f0d..c5089aff6 100644 --- a/Json/class/Hunter_6.json +++ b/Json/class/Hunter_6.json @@ -7,8 +7,8 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { "Name": "Raptor Strike", @@ -26,14 +26,15 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15, - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not Serpent Sting", "HasAmmo"] + "Cooldown": 15000, + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { "Name": "autoshot", "StopBeforeCast": true, + "HasCastBar": true, "Key": "3", - "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] + "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] }, { "Name": "Raptor Strike", @@ -45,8 +46,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -70,7 +69,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -79,7 +78,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Hunter_62.json b/Json/class/Hunter_62.json index e9a30e9ee..ca7100216 100644 --- a/Json/class/Hunter_62.json +++ b/Json/class/Hunter_62.json @@ -39,14 +39,14 @@ "Name": "Mend Pet", "Key": "N7", "MinMana": 200, - "Cooldown": 15, + "Cooldown": 15000, "Requirements": ["Has Pet", "PetHealth%<50"] }, { "Name": "Intimidation", "Key": "N4", "MinMana": 15, - "Cooldown": 60, + "Cooldown": 60000, "WhenUsable": true, "Requirements": ["Has Pet", "TargetHealth%<70||TargetCastingSpell"] }, @@ -54,7 +54,7 @@ "Name": "Bestial Wrath", "Key": "N2", "MinMana": 15, - "Cooldown": 8, + "Cooldown": 8000, "WhenUsable": true, "Requirements": ["not InMeleeRange", "HasRangedWeapon", "HasAmmo", "Has Pet", "TargetHealth%>85"] }, @@ -62,13 +62,15 @@ "Name": "Rapid Fire", "Key": "N3", "MinMana": 15, - "Cooldown": 8, + "Cooldown": 8000, "WhenUsable": true, "Requirements": ["not InMeleeRange", "HasRangedWeapon", "HasAmmo", "TargetHealth%>75"] }, { "Name": "Auto Shot", "StopBeforeCast": true, + "HasCastBar": true, + "WhenUsable": true, "Key": "3", "Requirements": ["not InMeleeRange", "HasRangedWeapon", "not AutoShot", "HasAmmo"] }, @@ -78,14 +80,14 @@ "WhenUsable": true, "HasCastBar": true, "Charge": 2, - "Cooldown": 5, + "Cooldown": 5000, "Requirements": ["not InMeleeRange", "HasRangedWeapon", "HasAmmo", "LastAutoShotMs<500"] }, { "Name": "Disengage", "Key": "N8", "WhenUsable": true, - "Cooldown": 5, + "Cooldown": 5000, "MinMana": 15, "Requirement": "InMeleeRange" }, @@ -100,8 +102,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3, - "DelayAfterCast": 0, "Requirements": ["InMeleeRange", "not AutoAttacking"] } ] @@ -117,7 +117,7 @@ { "Name": "feedpet", "Key": "N5", - "Cooldown": 20, + "Cooldown": 20000, "Requirements": ["Has Pet", "not Pet Happy"] }, { @@ -125,7 +125,7 @@ "Key": "N6", "MinMana": 20, "HasCastBar": true, - "Cooldown": 4, + "Cooldown": 4000, "Requirement": "not Has Pet" } ] @@ -139,7 +139,7 @@ "DelayAfterCast": 0, "Key": "-", "Requirement": "Health%<40", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -148,7 +148,7 @@ "DelayAfterCast": 0, "Key": "=", "Requirement": "Mana%<40", - "Cooldown": 10 + "Cooldown": 10000 } ] } From e5ebbc9b9c0827323413482e7ab55098f5d6a44a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 11:36:08 +0200 Subject: [PATCH 030/132] CastingHandler: HasCastbar implies that have to stop before the player can start casting. --- Core/Goals/CastingHandler.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 930988626..c33d44001 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -184,11 +184,8 @@ private async Task CastCastbar(KeyAction item) } } - if (item.StopBeforeCast) - { - await stopMoving.Stop(); - await wait.Update(1); - } + await stopMoving.Stop(); + await wait.Update(1); bool beforeHasTarget = playerReader.HasTarget; int beforeCastEventValue = playerReader.CastEvent.Value; From 8c5c9092157e7cab16a7cfebf6c77a2b675edae7 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 15:05:01 +0200 Subject: [PATCH 031/132] ClassConfig: Approach higher Cooldown | PetAttack reduce press time --- Core/ClassConfig/ClassConfiguration.cs | 3 ++- Core/Input/ConfigurableInput.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Core/ClassConfig/ClassConfiguration.cs b/Core/ClassConfig/ClassConfiguration.cs index 2a512b12c..b93bc5952 100644 --- a/Core/ClassConfig/ClassConfiguration.cs +++ b/Core/ClassConfig/ClassConfiguration.cs @@ -112,7 +112,7 @@ public void Initialise(DataConfig dataConfig, AddonReader addonReader, Requireme Approach.WaitForGCD = false; Approach.DelayAfterCast = 0; Approach.PressDuration = 10; - Approach.Cooldown = 50; + Approach.Cooldown = 150; Approach.Initialise(addonReader, requirementFactory, logger); AutoAttack.Key = InteractKey; @@ -156,6 +156,7 @@ public void Initialise(DataConfig dataConfig, AddonReader addonReader, Requireme TargetTargetOfTarget.Initialise(addonReader, requirementFactory, logger); PetAttack.Key = PetAttackKey; + PetAttack.PressDuration = 10; PetAttack.Initialise(addonReader, requirementFactory, logger); Mount.Key = MountKey; diff --git a/Core/Input/ConfigurableInput.cs b/Core/Input/ConfigurableInput.cs index ac0730342..c37f314f1 100644 --- a/Core/Input/ConfigurableInput.cs +++ b/Core/Input/ConfigurableInput.cs @@ -83,7 +83,7 @@ public async Task TapJump(string desc = "") public async Task TapPetAttack(string source = "") { - await KeyPress(ClassConfig.PetAttack.ConsoleKey, defaultKeyPress, $"TapPetAttack ({source})"); + await KeyPress(ClassConfig.PetAttack.ConsoleKey, ClassConfig.PetAttack.PressDuration, $"TapPetAttack ({source})"); this.ClassConfig.PetAttack.SetClicked(); } From da29f378c6706b72e26385406bc79c14af523e8f Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 15:06:05 +0200 Subject: [PATCH 032/132] KeyAction: possible fix for frontend when KeyAction.Cooldown was too short --- Core/ClassConfig/KeyAction.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index e2d0b94cb..26a1db39f 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -64,10 +64,8 @@ public class KeyAction public static ConsoleKey LastKeyClicked() { - if (!LastClicked.Any()) { return ConsoleKey.NoName; } - - var last = LastClicked.OrderByDescending(s => s.Value).First(); - if ( (DateTime.Now- last.Value).TotalSeconds>2) + var last = LastClicked.OrderByDescending(s => s.Value).FirstOrDefault(); + if (last.Key == 0 || (DateTime.Now - last.Value).TotalSeconds > 2) { return ConsoleKey.NoName; } From 5b94806171fe9ffbc3642d81152580e0337c50f2 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 15:42:33 +0200 Subject: [PATCH 033/132] StopMoving: Wait a bit more after requesting stop movement --- Core/Goals/StopMoving.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Goals/StopMoving.cs b/Core/Goals/StopMoving.cs index da2151403..fea842c9a 100644 --- a/Core/Goals/StopMoving.cs +++ b/Core/Goals/StopMoving.cs @@ -41,7 +41,7 @@ public async Task StopForward() input.SetKeyState(ConsoleKey.UpArrow, false, false, ""); input.SetKeyState(ConsoleKey.DownArrow, false, false, "StopForward"); - await Task.Delay(1); + await Task.Delay(10); } this.XCoord = playerReader.XCoord; From 576dd112351a63445ab7f0fb0edef3c63d3d681d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 15:43:36 +0200 Subject: [PATCH 034/132] CastingHandler: when HasCastBar double check stopMoving --- Core/Goals/CastingHandler.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index c33d44001..07e43b9aa 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -1,4 +1,4 @@ -using SharedLib.NpcFinder; +using SharedLib.NpcFinder; using Microsoft.Extensions.Logging; using System; using System.Diagnostics; @@ -271,10 +271,12 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) if (sleepBeforeCast > 0) { - if (item.StopBeforeCast) + if (item.StopBeforeCast || item.HasCastBar) { await stopMoving.Stop(); await wait.Update(1); + await stopMoving.Stop(); + await wait.Update(1); } item.LogInformation($" Wait {sleepBeforeCast}ms before press."); From cf8166dbce53957b4b7ed5a554a5752c0dfb5eb5 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 15:45:56 +0200 Subject: [PATCH 035/132] CombatGoal: Dont stop when entering state. Rather after killing an enemy and theres more look at it with interact and stop moving. PullTargetGoal: OnEnter face the target and stop! Only wait for combat if casted anything --- Core/Goals/CombatGoal.cs | 6 +--- Core/Goals/PullTargetGoal.cs | 61 ++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/Core/Goals/CombatGoal.cs b/Core/Goals/CombatGoal.cs index bf2281183..9a4cd38e7 100644 --- a/Core/Goals/CombatGoal.cs +++ b/Core/Goals/CombatGoal.cs @@ -132,14 +132,9 @@ public override async Task OnEnter() await input.TapDismount(); } - // this one is important for melees - // if not waiting a bit, the player will constantly moving forward - await stopMoving.Stop(); - await wait.Update(1); lastDirectionForTurnAround = playerReader.Direction; - logger.LogInformation($"{GetType().Name}: OnEnter"); SendActionEvent(new ActionEventArgs(GoapKey.fighting, true)); } @@ -229,6 +224,7 @@ private async Task CreatureTargetMeOrMyPet() logger.LogWarning("---- Somebody is attacking me!"); await input.TapInteractKey("Found new target to attack"); + await stopMoving.Stop(); await wait.Update(1); return true; } diff --git a/Core/Goals/PullTargetGoal.cs b/Core/Goals/PullTargetGoal.cs index 2fa86b109..a78936b03 100644 --- a/Core/Goals/PullTargetGoal.cs +++ b/Core/Goals/PullTargetGoal.cs @@ -60,6 +60,10 @@ public override async Task OnEnter() await input.TapDismount(); } + await input.TapApproachKey($"{GetType().Name}: OnEnter - Face the target and stop"); + await stopMoving.Stop(); + await wait.Update(1); + pullStart = DateTime.Now; } @@ -116,25 +120,15 @@ public override async Task PerformAction() await stuckDetector.Unstick(); } - await Interact("No pulled!"); - await wait.Update(1); + if (classConfiguration.Approach.GetCooldownRemaining() == 0) + { + await input.TapApproachKey($"{GetType().Name}"); + await wait.Update(1); + } } else { SendActionEvent(new ActionEventArgs(GoapKey.pulled, true)); - playerReader.LastUIErrorMessage = UI_ERROR.NONE; - } - } - - private async Task Interact(string source) - { - if (classConfiguration.Interact.GetCooldownRemaining() == 0) - { - playerReader.LastUIErrorMessage = UI_ERROR.NONE; - await input.TapInteractKey($"{GetType().Name} {source}"); - await wait.Update(1); - - await castingHandler.ReactToLastUIErrorMessage($"{GetType().Name}-Interact: "); } } @@ -188,8 +182,6 @@ public async Task Pull() { await input.TapStopAttack(); await wait.Update(1); - - playerReader.LastUIErrorMessage = UI_ERROR.NONE; } if (playerReader.PlayerBitValues.HasPet && !playerReader.PetHasTarget) @@ -197,32 +189,33 @@ public async Task Pull() await input.TapPetAttack(); } + bool castAny = false; foreach (var item in Keys) { - if (item.StopBeforeCast) - { - await stopMoving.Stop(); - await wait.Update(1); - } - var success = await castingHandler.CastIfReady(item, item.DelayBeforeCast); - - if (!playerReader.HasTarget) + if (success) { - return false; - } + if (!playerReader.HasTarget) + { + return false; + } - if (success && item.WaitForWithinMeleeRange) - { - await WaitForWithinMeleeRange(item, success); + castAny = true; + + if (item.WaitForWithinMeleeRange) + { + await WaitForWithinMeleeRange(item, success); + } } } - // Wait for combat - (bool interrupted, double elapsedMs) = await wait.InterruptTask(1000, () => playerReader.PlayerBitValues.PlayerInCombat); - if (!interrupted) + if (castAny) { - Log($"Entered combat after {elapsedMs}ms"); + (bool interrupted, double elapsedMs) = await wait.InterruptTask(1000, () => playerReader.PlayerBitValues.PlayerInCombat); + if (!interrupted) + { + Log($"Entered combat after {elapsedMs}ms"); + } } return playerReader.PlayerBitValues.PlayerInCombat; From 950fa8a3fd12b7db6ab8af2462af90d8bf0092d8 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 15:46:40 +0200 Subject: [PATCH 036/132] LootGoal: give it a bit more time to grey name appear --- Core/Goals/LootGoal.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Goals/LootGoal.cs b/Core/Goals/LootGoal.cs index e73aa7aa8..7d85230ac 100644 --- a/Core/Goals/LootGoal.cs +++ b/Core/Goals/LootGoal.cs @@ -70,7 +70,7 @@ public override async Task PerformAction() await stopMoving.Stop(); combatUtil.Update(); - await npcNameTargeting.WaitForNUpdate(1); + await npcNameTargeting.WaitForNUpdate(2); bool foundCursor = await npcNameTargeting.FindByCursorType(Cursor.CursorClassification.Loot); if (foundCursor) { From 9065a1d69848159eb653af5240e94f791885cbb1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 18:18:45 +0200 Subject: [PATCH 037/132] 1_NightElf_Vendor reduce waypoints count --- Json/path/1_NightElf_Vendor.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Json/path/1_NightElf_Vendor.json b/Json/path/1_NightElf_Vendor.json index eb63ebe55..d4dd95eee 100644 --- a/Json/path/1_NightElf_Vendor.json +++ b/Json/path/1_NightElf_Vendor.json @@ -1 +1 @@ -[{"X":60.184000000000005,"Y":42.74},{"X":60.106,"Y":42.564},{"X":60.021,"Y":42.38},{"X":59.940000000000005,"Y":42.197},{"X":59.855000000000004,"Y":42.015},{"X":59.763999999999996,"Y":41.835},{"X":59.675,"Y":41.657},{"X":59.582,"Y":41.478},{"X":59.487,"Y":41.313},{"X":59.378,"Y":41.163}] \ No newline at end of file +[{"X":60.184000000000005,"Y":42.74},{"X":59.487,"Y":41.313},{"X":59.378,"Y":41.163}] \ No newline at end of file From c25032ced439df62ab1d2561a98a9d81cb2ae834 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 18:26:18 +0200 Subject: [PATCH 038/132] Profiles Remove 'Cooldown: 0' --- Json/class/MageAttendedGrind.json | 6 ++---- Json/class/MageGrind.json | 6 ++---- Json/class/MageRaid.json | 6 ++---- Json/class/Mage_herb.json | 6 ++---- Json/class/Mage_weeping.json | 7 ++----- Json/class/Rogue.json | 1 - Json/class/Warlock.json | 2 -- Json/class/Warlock_10.json | 1 - Json/class/Warlock_20.json | 1 - Json/class/Warlock_20_shard_farm.json | 1 - Json/class/Warlock_26_Immunity.json | 1 - Json/class/Warlock_8.json | 1 - Json/class/Warrior.json | 1 - 13 files changed, 10 insertions(+), 30 deletions(-) diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index 239aa7d03..d0b19da86 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -24,8 +24,7 @@ "Name": "Frost Bolt", "HasCastBar": true, "Key": "5", - "MinMana": 90, - "Cooldown": 0 + "MinMana": 90 }, { "Name": "Arcane Missiles", @@ -67,8 +66,7 @@ "HasCastBar": true, "Key": "5", "Requirement": "not npcID:8257", - "MinMana": 221, - "Cooldown": 0 + "MinMana": 221 } ] }, diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index 0ab67a0d0..3be44eaa3 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -22,8 +22,7 @@ "Name": "Frost Bolt", "HasCastBar": true, "Key": "5", - "MinMana": 90, - "Cooldown": 0 + "MinMana": 90 }, { "Name": "Arcane Missiles", @@ -63,8 +62,7 @@ "Name": "Frost Bolt", "HasCastBar": true, "Key": "5", - "MinMana": 221, - "Cooldown": 0 + "MinMana": 221 } ] }, diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index 17a600b1d..b7efdfc0f 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -25,8 +25,7 @@ "HasCastBar": true, "Key": "5", "Requirement": "not npcID:8257", - "MinMana": 221, - "Cooldown": 0 + "MinMana": 221 } ] }, @@ -60,8 +59,7 @@ "HasCastBar": true, "Key": "5", "Requirement": "not npcID:8257", - "MinMana": 221, - "Cooldown": 0 + "MinMana": 221 } ] }, diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index fef5f3dd9..4d7595032 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -24,8 +24,7 @@ "Name": "Frost Bolt", "HasCastBar": true, "Key": "5", - "MinMana": 90, - "Cooldown": 0 + "MinMana": 90 }, { "Name": "Arcane Missiles", @@ -73,8 +72,7 @@ "Name": "Frost Bolt", "HasCastBar": true, "Key": "5", - "MinMana": 221, - "Cooldown": 0 + "MinMana": 221 } ] }, diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index f56748a67..81443284a 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -24,8 +24,7 @@ "Name": "Frost Bolt", "HasCastBar": true, "Key": "5", - "MinMana": 90, - "Cooldown": 0 + "MinMana": 90 }, { "Name": "Arcane Missiles", @@ -44,7 +43,6 @@ // "Name": "Arcane Explosion", // "Key": "0", // "Requirement": "npcID:8257", -// "Cooldown": 0, // "Log": false // }, { @@ -82,8 +80,7 @@ "HasCastBar": true, "Key": "5", "Requirement": "not npcID:8257", - "MinMana": 221, - "Cooldown": 0 + "MinMana": 221 } ] }, diff --git a/Json/class/Rogue.json b/Json/class/Rogue.json index 221f03072..c23400305 100644 --- a/Json/class/Rogue.json +++ b/Json/class/Rogue.json @@ -104,7 +104,6 @@ "StopBeforeCast": false, "Key": "=", "Requirement": "Health%<60", - "Cooldown": 0, "DelayAfterCast": 1000, "Log": false, "Cost": 3 diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index b2d9daf07..78475367d 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -162,14 +162,12 @@ "Name": "Life Tap", "Key": "8", "Requirements": ["Health%>70","Mana%<60"], - "Cooldown": 0, "Log": false }, { "Name": "Life Tap 2", "Key": "8", "Requirements": ["Health%>80","Mana%<80"], - "Cooldown": 0, "Log": false }, { diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index 1914a0e0e..d7dcd5ba0 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -128,7 +128,6 @@ "Key": "8", "Charge": 2, "Requirements": ["Health%>70","Mana%<60"], - "Cooldown": 0, "Log": false } ] diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 983151d6f..42dd89b68 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -153,7 +153,6 @@ "Key": "8", "Charge": 2, "Requirements": ["Health%>70","Mana%<60"], - "Cooldown": 0, "Log": false }, { diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index aaf1e69e9..8a4474c28 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -156,7 +156,6 @@ "Key": "8", "Charge": 2, "Requirements": ["Health%>70","Mana%<60"], - "Cooldown": 0, "Log": false } ] diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index c8606f3fc..7af2b19f9 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -166,7 +166,6 @@ "Key": "8", "Charge": 2, "Requirements": ["Health%>70","Mana%<60"], - "Cooldown": 0, "Log": false }, { diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index 5d477b227..70bfa953f 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -114,7 +114,6 @@ "Key": "8", "Charge": 2, "Requirements": ["Health%>70","Mana%<60"], - "Cooldown": 0, "Log": false } ] diff --git a/Json/class/Warrior.json b/Json/class/Warrior.json index c943f1978..d07f7964f 100644 --- a/Json/class/Warrior.json +++ b/Json/class/Warrior.json @@ -78,7 +78,6 @@ "StopBeforeCast": false, "Key": "=", "Requirement": "Health%<60", - "Cooldown": 0, "DelayAfterCast": 1000, "Log": false, "Cost": 3 From f06ddbaefb83052d02ccae69f4f7d10a535999e1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 19:07:42 +0200 Subject: [PATCH 039/132] Profiles: Find all Cooldowns below 1000 and multiply by 1000. --- Json/class/Mage.json | 18 ++++++++-------- Json/class/Mage12.json | 20 +++++++++--------- Json/class/Mage16.json | 18 ++++++++-------- Json/class/Mage1to4.json | 8 +++---- Json/class/Mage42.json | 18 ++++++++-------- Json/class/Mage44.json | 20 +++++++++--------- Json/class/Mage54.json | 20 +++++++++--------- Json/class/MageAttendedGrind.json | 16 +++++++------- Json/class/MageGrind.json | 18 ++++++++-------- Json/class/MageRaid.json | 14 ++++++------- Json/class/Mage_1.json | 8 +++---- Json/class/Mage_10.json | 16 +++++++------- Json/class/Mage_12.json | 16 +++++++------- Json/class/Mage_14_Arcane_Frost.json | 16 +++++++------- Json/class/Mage_19.json | 24 ++++++++++----------- Json/class/Mage_25.json | 20 +++++++++--------- Json/class/Mage_30.json | 20 +++++++++--------- Json/class/Mage_4.json | 10 ++++----- Json/class/Mage_54_Frost_Arcane.json | 20 +++++++++--------- Json/class/Mage_6.json | 14 ++++++------- Json/class/Mage_herb.json | 20 +++++++++--------- Json/class/Mage_weeping.json | 20 +++++++++--------- Json/class/Paladin.json | 18 ++++++++-------- Json/class/Paladin_1.json | 6 +++--- Json/class/Paladin_10.json | 10 ++++----- Json/class/Paladin_66.json | 28 ++++++++++++------------- Json/class/Priest.json | 30 +++++++++++++-------------- Json/class/Rogue.json | 18 ++++++++-------- Json/class/Rogue_1.json | 4 ++-- Json/class/Rogue_10.json | 4 ++-- Json/class/Rogue_12.json | 4 ++-- Json/class/Rogue_20.json | 8 +++---- Json/class/Shaman_1.json | 8 +++---- Json/class/Shaman_15.json | 14 ++++++------- Json/class/Shaman_2.json | 8 +++---- Json/class/Shaman_22.json | 18 ++++++++-------- Json/class/Shaman_4.json | 8 +++---- Json/class/Shaman_44.json | 18 ++++++++-------- Json/class/Shaman_55.json | 22 ++++++++++---------- Json/class/Warlock.json | 16 +++++++------- Json/class/Warlock_1.json | 8 +++---- Json/class/Warlock_10.json | 12 +++++------ Json/class/Warlock_20.json | 14 ++++++------- Json/class/Warlock_20_shard_farm.json | 12 +++++------ Json/class/Warlock_26_Immunity.json | 14 ++++++------- Json/class/Warlock_4.json | 10 ++++----- Json/class/Warlock_8.json | 10 ++++----- Json/class/Warrior.json | 10 ++++----- Json/class/Warrior_1.json | 2 +- Json/class/Warrior_4.json | 4 ++-- 50 files changed, 356 insertions(+), 356 deletions(-) diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 3215db5fd..e6cbcbb96 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -34,14 +34,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Fireblast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["Health%<80", "SpellInRange:4"] }, { @@ -55,13 +55,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -74,7 +74,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -83,7 +83,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -112,7 +112,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8077:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -121,7 +121,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1487:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -129,7 +129,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ]} diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 7de38d9f7..db17456f8 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -21,20 +21,20 @@ "HasCastBar": true, "Key": "=", "MinMana": 140, - "Cooldown": 60, + "Cooldown": 60000, "DelaybeforeCast": 1000 }, { "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -43,7 +43,7 @@ "Sequence": [ { "Name": "Interact", - "Cooldown": 12, + "Cooldown": 12000, "DelayAfterCast": 0 }, { @@ -53,7 +53,7 @@ "Key": "0", "MinMana": 75, "Requirements": ["Health%<80", "SpellInRange:4"], - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "Fireball", @@ -72,7 +72,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -81,7 +81,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -110,7 +110,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -119,7 +119,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -127,7 +127,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ] diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index 0fe25613f..828599975 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -11,7 +11,7 @@ "Sequence": [ { "Name": "Interact", - "Cooldown": 12, + "Cooldown": 12000, "DelayAfterCast": 0 }, { @@ -26,7 +26,7 @@ "HasCastBar": true, "Key": "=", "MinMana": 140, - "Cooldown": 60, + "Cooldown": 60000, "DelaybeforeCast": 1000 } ] @@ -35,7 +35,7 @@ "Sequence": [ { "Name": "Interact", - "Cooldown": 12, + "Cooldown": 12000, "DelayAfterCast": 0 }, { @@ -44,7 +44,7 @@ "StopBeforeCast": false, "Key": "0", "MinMana": 75, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "Fireball", @@ -63,7 +63,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -72,7 +72,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -101,7 +101,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -110,7 +110,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -118,7 +118,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false }, ] diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 6e9a96cea..980938ed4 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -31,13 +31,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -57,7 +57,7 @@ "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<50", - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Drink", @@ -65,7 +65,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "Mana%<50", - "Cooldown": 60 + "Cooldown": 60000 } ] } diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index 3215db5fd..e6cbcbb96 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -34,14 +34,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Fireblast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["Health%<80", "SpellInRange:4"] }, { @@ -55,13 +55,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -74,7 +74,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -83,7 +83,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -112,7 +112,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8077:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -121,7 +121,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1487:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -129,7 +129,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ]} diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index a51b5a182..0ef0de463 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -21,7 +21,7 @@ "Sequence": [ { "Name": "Interact", - "Cooldown": 12, + "Cooldown": 12000, "DelayAfterCast": 0 }, { @@ -46,7 +46,7 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { @@ -55,7 +55,7 @@ "StopBeforeCast": false, "Key": "0", "MinMana": 75, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "Fireball", @@ -67,13 +67,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -86,7 +86,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<70", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -95,7 +95,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<55", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -124,7 +124,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8077:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -133,7 +133,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1487:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -141,7 +141,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false }, { diff --git a/Json/class/Mage54.json b/Json/class/Mage54.json index b500ed48d..8753e596a 100644 --- a/Json/class/Mage54.json +++ b/Json/class/Mage54.json @@ -27,7 +27,7 @@ "Name": "Ice Barrier", "Key": "7", "MinMana": 60, - "Cooldown": 30, + "Cooldown": 30000, "WhenUsable": true, "Requirement": "not Ice Barrier" }, @@ -35,14 +35,14 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -59,13 +59,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -79,7 +79,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<60", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -88,7 +88,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<60", - "Cooldown": 10 + "Cooldown": 10000 } ] }, @@ -106,7 +106,7 @@ "Name": "Ice Barrier", "Key": "7", "MinMana": 60, - "Cooldown": 30, + "Cooldown": 30000, "Requirement": "not Ice Barrier" }, { @@ -123,7 +123,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8078:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -132,7 +132,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ] diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index d0b19da86..bac082497 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -31,7 +31,7 @@ "HasCastBar": true, "Key": "-", "MinMana": 235, - "Cooldown": 60, + "Cooldown": 60000, "DelaybeforeCast": 1000 } ] @@ -42,14 +42,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Ice Barrier", "Key": "L", "Requirements": [ "not Ice Barrier","not npcID:8257"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 400, "Log": false }, @@ -57,7 +57,7 @@ "Name": "Fire Ward", "Key": "=", "Requirements": [ "not Ward"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 400, "Log": false }, @@ -79,7 +79,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -88,7 +88,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -118,7 +118,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -127,7 +127,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ] diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index 3be44eaa3..3ad1de067 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -29,7 +29,7 @@ "HasCastBar": true, "Key": "-", "MinMana": 235, - "Cooldown": 60, + "Cooldown": 60000, "DelaybeforeCast": 1000 } ] @@ -40,14 +40,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Ice Barrier", "Key": "L", "Requirements": [ "not Ice Barrier","Health%<100"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 40, "Log": false }, @@ -56,7 +56,7 @@ "Key": "1", "Requirements": ["Health%<50"], "MinMana": 340, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "Frost Bolt", @@ -74,7 +74,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -83,7 +83,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -113,7 +113,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -122,7 +122,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -136,7 +136,7 @@ { "Name": "Del1", "Key": "F5", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ] diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index b7efdfc0f..6485b9b3f 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -35,14 +35,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Ice Barrier", "Key": "L", "Requirements": [ "not Ice Barrier","not npcID:8257"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 400, "Log": false }, @@ -50,7 +50,7 @@ "Name": "Fire Ward", "Key": "=", "Requirements": [ "not Ward"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 400, "Log": false }, @@ -72,7 +72,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -81,7 +81,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -111,7 +111,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -120,7 +120,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ] diff --git a/Json/class/Mage_1.json b/Json/class/Mage_1.json index 1b7868c13..be56de34e 100644 --- a/Json/class/Mage_1.json +++ b/Json/class/Mage_1.json @@ -31,13 +31,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -58,7 +58,7 @@ "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<30", - "Cooldown": 15 + "Cooldown": 15000 }, { "Name": "Water", @@ -67,7 +67,7 @@ "DelayAfterCast": 0, "Key": "-", "Requirement": "Mana%<30", - "Cooldown": 15 + "Cooldown": 15000 } ] }, diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index 459ff38ab..22a00c275 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -22,14 +22,14 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -46,13 +46,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -66,7 +66,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<60", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -75,7 +75,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<60", - "Cooldown": 10 + "Cooldown": 10000 } ] }, @@ -103,7 +103,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -112,7 +112,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:5349:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ]}, diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12.json index de9617ad0..70f853e73 100644 --- a/Json/class/Mage_12.json +++ b/Json/class/Mage_12.json @@ -22,14 +22,14 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -46,13 +46,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -66,7 +66,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<60", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -75,7 +75,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<60", - "Cooldown": 10 + "Cooldown": 10000 } ] }, @@ -103,7 +103,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -112,7 +112,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ]}, diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index 0518539d2..a03fb0965 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -23,14 +23,14 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "WhenUsable": true, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, @@ -47,14 +47,14 @@ { "Name": "shoot", "Key": "0", - "Cooldown": 3, + "Cooldown": 3000, "StopBeforeCast": true, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -68,7 +68,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<60", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -77,7 +77,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<60", - "Cooldown": 10 + "Cooldown": 10000 } ] }, @@ -105,7 +105,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -114,7 +114,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ]}, diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index e427c5eb3..015ed0d2b 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -13,7 +13,7 @@ "Sequence": [ { "Name": "Interact", - "Cooldown": 12, + "Cooldown": 12000, "DelayAfterCast": 0 }, { @@ -39,7 +39,7 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { @@ -48,13 +48,13 @@ "StopBeforeCast": false, "Key": "0", "MinMana": 75, - "Cooldown": 6 + "Cooldown": 6000 }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -70,13 +70,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -89,7 +89,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -98,7 +98,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -127,7 +127,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -136,7 +136,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -144,7 +144,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false }, { @@ -152,7 +152,7 @@ "StopBeforeCast": false, "Key": "1", "Requirement": "not Fire Power", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ] diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 31e54d882..8bc7626a9 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -35,21 +35,21 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Fireblast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["Health%<80", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -65,13 +65,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -84,7 +84,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -93,7 +93,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -122,7 +122,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2136:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -131,7 +131,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1114:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -139,7 +139,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ]} diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index 3048212ba..d0c55d4cf 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -35,21 +35,21 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Fireblast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["Health%<80", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -65,13 +65,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -84,7 +84,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -93,7 +93,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -122,7 +122,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:3772:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -131,7 +131,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1114:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -139,7 +139,7 @@ "StopBeforeCast": true, "Key": "-", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ]} diff --git a/Json/class/Mage_4.json b/Json/class/Mage_4.json index 782ec8ec8..6bf0b106d 100644 --- a/Json/class/Mage_4.json +++ b/Json/class/Mage_4.json @@ -31,13 +31,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -51,7 +51,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -60,7 +60,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] }, @@ -88,7 +88,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:5350:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ]}, diff --git a/Json/class/Mage_54_Frost_Arcane.json b/Json/class/Mage_54_Frost_Arcane.json index 4c0cda692..5070fc468 100644 --- a/Json/class/Mage_54_Frost_Arcane.json +++ b/Json/class/Mage_54_Frost_Arcane.json @@ -32,7 +32,7 @@ "Name": "Ice Barrier", "Key": "7", "MinMana": 420, - "Cooldown": 30, + "Cooldown": 30000, "WhenUsable": true, "Requirement": "not Ice Barrier" }, @@ -40,21 +40,21 @@ "Name": "Cone of Cold", "Key": "N8", "MinMana": 40, - "Cooldown": 10, + "Cooldown": 10000, "Requirements": ["TargetHealth%>2", "TargetHealth%<20", "InMeleeRange"] }, { "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["TargetHealth%>2", "TargetHealth%<20", "SpellInRange:4"] }, { "Name": "Frost Nova", "Key": 6, "MinMana": 55, - "Cooldown": 25, + "Cooldown": 25000, "WhenUsable": true, "Requirements": ["InMeleeRange", "MobCount>1"], "StepBackAfterCast": 1000, @@ -79,7 +79,7 @@ { "Name": "shoot", "Key": "0", - "Cooldown": 1, + "Cooldown": 1000, "StopBeforeCast": true, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false @@ -95,7 +95,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Water", @@ -104,7 +104,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<50", - "Cooldown": 5 + "Cooldown": 5000 } ] }, @@ -116,7 +116,7 @@ "Key": "N9", "StopBeforeCast": true, "HasCastBar": true, - "Cooldown": 600, + "Cooldown": 600000, "Cost": 2, "Requirements": ["Mana%<50"] }, @@ -141,7 +141,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8078:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -150,7 +150,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ] diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index 34a877266..8c0bf1791 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -23,7 +23,7 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8, + "Cooldown": 8000, "Requirements": ["TargetHealth%<45", "SpellInRange:4"], "DelayAfterCast": 0 }, @@ -38,13 +38,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -58,7 +58,7 @@ "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<50", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -67,7 +67,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<50", - "Cooldown": 10 + "Cooldown": 10000 } ] }, @@ -95,7 +95,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:5350:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -104,7 +104,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:5349:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false } ]}, diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index 4d7595032..b646b49e1 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -31,7 +31,7 @@ "HasCastBar": true, "Key": "-", "MinMana": 235, - "Cooldown": 60, + "Cooldown": 60000, "DelaybeforeCast": 1000 } ] @@ -41,7 +41,7 @@ { "Name": "Hero Charm", "Key": "F8", - "Cooldown": 120, + "Cooldown": 120000, "Log": false, "Requirement": "Health%<80", "HasCastBar": false @@ -50,14 +50,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Ice Barrier", "Key": "L", "Requirements": [ "not Ice Barrier","Health%<100"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 40, "Log": false }, @@ -66,7 +66,7 @@ "Key": "1", "Requirements": ["Health%<50"], "MinMana": 340, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "Frost Bolt", @@ -84,7 +84,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -93,7 +93,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -123,7 +123,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -132,7 +132,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -146,7 +146,7 @@ { "Name": "Del1", "Key": "F5", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ] diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index 81443284a..6fc0cdba1 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -31,7 +31,7 @@ "HasCastBar": true, "Key": "-", "MinMana": 235, - "Cooldown": 60, + "Cooldown": 60000, "DelaybeforeCast": 1000 } ] @@ -49,14 +49,14 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Ice Barrier", "Key": "L", "Requirements": [ "not Ice Barrier","not npcID:8257"], //"Health%<100", - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 400, "Log": false }, @@ -64,7 +64,7 @@ "Name": "Fire Ward", "Key": "=", "Requirements": [ "not Ward"], - "Cooldown": 30, + "Cooldown": 30000, "MinMana": 400, "Log": false }, @@ -73,7 +73,7 @@ // "Key": "1", // "Requirements": ["Health%<50","not npcID:8257"], // "MinMana": 333340, -// "Cooldown": 8 +// "Cooldown": 8000 // }, { "Name": "Frost Bolt", @@ -93,7 +93,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { @@ -102,7 +102,7 @@ "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", - "Cooldown": 10, + "Cooldown": 10000, "Log": false } ] @@ -132,7 +132,7 @@ "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -141,7 +141,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", - "Cooldown": 30, + "Cooldown": 30000, "Log": false }, { @@ -155,7 +155,7 @@ { "Name": "Del1", "Key": "F5", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ] diff --git a/Json/class/Paladin.json b/Json/class/Paladin.json index 284cbea07..e98a9ca4e 100644 --- a/Json/class/Paladin.json +++ b/Json/class/Paladin.json @@ -18,33 +18,33 @@ "Sequence": [ { "Name": "Approach", - "Cooldown": 3 + "Cooldown": 3000 }, { "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<10", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Seal of Righteousness", "Key": "2", - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 82, "Requirements": [ "not Seal"] }, { "Name": "Judgement", "Key": "3", - "Cooldown": 12, + "Cooldown": 12000, "Requirement": "Mana%>40", "MinMana": 77 }, { "Name": "Hammer of Justice", "Key": "9", - "Cooldown": 60, + "Cooldown": 60000, "MinMana": 50 } ] @@ -57,7 +57,7 @@ "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<50", - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 580, "Cost": 2, "InCombat": "any" @@ -82,7 +82,7 @@ "StopBeforeCast": false, "Key": "7", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false }, { @@ -91,7 +91,7 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "Mana%<80", - "Cooldown": 60, + "Cooldown": 60000, "Cost": 3, "Log": false }, @@ -106,7 +106,7 @@ { "Name": "Del1", "Key": "F5", - "Cooldown": 120, + "Cooldown": 120000, "Log": false } ] diff --git a/Json/class/Paladin_1.json b/Json/class/Paladin_1.json index 3802c04d4..334dfe423 100644 --- a/Json/class/Paladin_1.json +++ b/Json/class/Paladin_1.json @@ -7,13 +7,13 @@ { "Name": "Seal of Righteousness", "Key": "2", - "Cooldown": 2, + "Cooldown": 2000, "Requirement": "not Seal" }, { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -29,7 +29,7 @@ "StopBeforeCast": true, "Key": "3", "Requirement": "Health%<50", - "Cooldown": 2 + "Cooldown": 2000 } ] } diff --git a/Json/class/Paladin_10.json b/Json/class/Paladin_10.json index f80440464..35dbd31b5 100644 --- a/Json/class/Paladin_10.json +++ b/Json/class/Paladin_10.json @@ -20,7 +20,7 @@ "StopBeforeCast": true, "Key": "6", "Requirements": ["Health%<60", "TargetHealth%>20"], - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Judgement", @@ -56,14 +56,14 @@ "Name": "Retribution Aura", "Key": "8", "Requirement": "not Aura", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Blessing of Might", "Key": "4", "WaitBuffAfterCast": true, "Requirement": "not Blessing", - "Cooldown": 5 + "Cooldown": 5000 } ] }, @@ -76,7 +76,7 @@ "DelayAfterCast": 0, "Key": "-", "Requirement": "Mana%<50", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Food", @@ -85,7 +85,7 @@ "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<50", - "Cooldown": 5 + "Cooldown": 5000 } ] diff --git a/Json/class/Paladin_66.json b/Json/class/Paladin_66.json index b87459c99..2265edfa0 100644 --- a/Json/class/Paladin_66.json +++ b/Json/class/Paladin_66.json @@ -13,14 +13,14 @@ "Name": "Divine Shield", "Key": "5", "Requirement": "Health%<20", - "Cooldown": 60, + "Cooldown": 60000, "Log": false }, { "Name": "Healing Potion", "Key": "N2", "Requirement": "Health%<10", - "Cooldown": 120, + "Cooldown": 120000, "Log": false }, { @@ -32,13 +32,13 @@ "Health%<35", "TargetHealth%>20" ], - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 460 }, { "Name": "Hammer of Justice", "Key": "N3", - "Cooldown": 6, + "Cooldown": 6000, "MinMana": 300, "Requirements": [ "TargetHealth%<20" @@ -47,7 +47,7 @@ { "Name": "Seal of Wisdom", "Key": "N6", - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 82, "Requirements": [ "Mana%<50", @@ -57,7 +57,7 @@ { "Name": "Seal of Command", "Key": "2", - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 82, "Requirements": [ "Mana%>50", @@ -67,7 +67,7 @@ { "Name": "Judgement", "Key": "3", - "Cooldown": 8, + "Cooldown": 8000, "Requirements": [ "Mana%>60", "TargetHealth%>30" @@ -77,7 +77,7 @@ { "Name": "Hammer of Justice", "Key": "6", - "Cooldown": 60, + "Cooldown": 60000, "MinMana": 100, "Requirements": [ "Health%<50" @@ -86,7 +86,7 @@ { "Name": "Consecreation", "Key": "F4", - "Cooldown": 8, + "Cooldown": 8000, "MinMana": 100, "Requirements": [ "MobCount>2", @@ -96,7 +96,7 @@ { "Name": "Crusader Strike", "Key": "1", - "Cooldown": 6, + "Cooldown": 6000, "MinMana": 300, "Requirements": [ "Mana%>60" @@ -105,7 +105,7 @@ { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -143,7 +143,7 @@ "Health%<40", "Mana%>50" ], - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 710, "Cost": 10 }, @@ -154,7 +154,7 @@ "DelayAfterCast": 0, "Key": "8", "Requirement": "Mana%<50", - "Cooldown": 6 + "Cooldown": 6000 }, { "Name": "Food", @@ -163,7 +163,7 @@ "DelayAfterCast": 0, "Key": "7", "Requirement": "Health%<50", - "Cooldown": 6 + "Cooldown": 6000 } ] } diff --git a/Json/class/Priest.json b/Json/class/Priest.json index 38ca18f24..bdcd8cddf 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -35,7 +35,7 @@ "Name": "Power Infusion", "Key": "F11", "MinMana": 229, - "Cooldown": 180, + "Cooldown": 180000, "Log": false }, { @@ -43,7 +43,7 @@ "Key": "9", "Requirement": "Health%<60", "MinMana": 455, - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "Log": false }, @@ -51,7 +51,7 @@ "Name": "Shadow Word Pain", "Key": "6", "Requirements": ["not Shadow Word: Pain","TargetHealth%>10","Health%>40"], - "Cooldown": 10, + "Cooldown": 10000, "MinMana": 274, "ResetOnNewTarget": true, "Log": false @@ -59,7 +59,7 @@ { "Name": "Mind Blast", "Key": "5", - "Cooldown": 10, + "Cooldown": 10000, "StopBeforeCast": true, "Requirements": ["Health%>40"], "HasCastBar": true, @@ -70,7 +70,7 @@ "Name": "Shield", "Key": "3", "Requirements": ["Health%<75","not Shield","TargetHealth%>15"], - "Cooldown": 10, + "Cooldown": 10000, "MinMana": 270, "Log": false }, @@ -78,12 +78,12 @@ "Name": "Shooting", "Key": "0", "Requirement": "not Shooting", - "Cooldown": 2, + "Cooldown": 2000, "Log": false }, { "Name": "Approach", - "Cooldown": 10, + "Cooldown": 10000, "Log": false, "DelayAfterCast": "200" } @@ -95,7 +95,7 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<7", - "Cooldown": 60, + "Cooldown": 60000, "InCombat": "true", "Log": false, "Cost": 3 @@ -105,7 +105,7 @@ "Key": "9", "Requirement": "Health%<60", "StopBeforeCast": true, - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "Log": false }, @@ -114,7 +114,7 @@ "StopBeforeCast": true, "Key": "=", "Requirement": "not Well Fed", - "Cooldown": 120, + "Cooldown": 120000, "Log": false }, { @@ -123,34 +123,34 @@ "StopBeforeCast": true, "Key": "8", "Requirement": "Mana%<40", - "Cooldown": 10, + "Cooldown": 10000, "Log": false }, { "Name": "Fortitude", "Key": "1", - "Cooldown": 10, + "Cooldown": 10000, "Requirement": "not Fortitude", "Log": false }, { "Name": "InnerFire", "Key": "2", - "Cooldown": 10, + "Cooldown": 10000, "Requirement": "not InnerFire", "Log": false }, { "Name": "Divine Spirit", "Key": "7", - "Cooldown": 10, + "Cooldown": 10000, "Requirement": "not Divine Spirit", "Log": false }//, //{ //"Name": "Open Clam", //"Key": "-", - //"Cooldown": 30, + //"Cooldown": 30000, //"Log": false //} ] diff --git a/Json/class/Rogue.json b/Json/class/Rogue.json index c23400305..e729dc885 100644 --- a/Json/class/Rogue.json +++ b/Json/class/Rogue.json @@ -42,27 +42,27 @@ { "Name": "Cold Blood", "Key": "1", - "Cooldown": 180 + "Cooldown": 180000 }, { "Name": "Vanish", "Key": "8", "Requirement": "Health%<10", "DelayAfterCast": 10000, - "Cooldown": 300 + "Cooldown": 300000 }, { "Name": "Evasion", "Key": "5", "Requirement": "Health%<50", - "Cooldown": 210 + "Cooldown": 210000 }, { "Name": "Slice And Dice", "Key": "3", "MinEnergy": 25, "MinComboPoints": 2, - "Cooldown": 11, + "Cooldown": 11000, "Requirement": "not Slice And Dice" }, { @@ -70,7 +70,7 @@ "Key": "4", "MinEnergy": 35, "MinComboPoints": 3, - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Sinister Strike", @@ -80,7 +80,7 @@ { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -94,7 +94,7 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<5", - "Cooldown": 60, + "Cooldown": 60000, "InCombat": "true", "Log": false, "Cost": 3 @@ -135,13 +135,13 @@ { "Name": "Equip Dagger", "Key": "F6", - "Cooldown": 600, + "Cooldown": 600000, "Log": false }, { "Name": "Open Clam", "Key": "-", - "Cooldown": 30, + "Cooldown": 30000, "Requirements": ["BagItem:7973:1"], "Log": false } diff --git a/Json/class/Rogue_1.json b/Json/class/Rogue_1.json index 4d9b7f47f..3cdddbbf9 100644 --- a/Json/class/Rogue_1.json +++ b/Json/class/Rogue_1.json @@ -17,7 +17,7 @@ { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -34,7 +34,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<30", - "Cooldown": 15 + "Cooldown": 15000 } ] }, diff --git a/Json/class/Rogue_10.json b/Json/class/Rogue_10.json index 277f07a59..920c5ea34 100644 --- a/Json/class/Rogue_10.json +++ b/Json/class/Rogue_10.json @@ -56,7 +56,7 @@ { "Name": "AutoAttack", "Requirement": "not AutoAttacking", - "Cooldown": 1 + "Cooldown": 1000 } ] }, @@ -69,7 +69,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<30", - "Cooldown": 15 + "Cooldown": 15000 } ] }, diff --git a/Json/class/Rogue_12.json b/Json/class/Rogue_12.json index 47c6e3c48..164b70a0f 100644 --- a/Json/class/Rogue_12.json +++ b/Json/class/Rogue_12.json @@ -56,7 +56,7 @@ { "Name": "AutoAttack", "Requirement": "not AutoAttacking", - "Cooldown": 1 + "Cooldown": 1000 } ] }, @@ -69,7 +69,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<30", - "Cooldown": 15 + "Cooldown": 15000 } ] }, diff --git a/Json/class/Rogue_20.json b/Json/class/Rogue_20.json index e2485a2dd..5ac9a2d7a 100644 --- a/Json/class/Rogue_20.json +++ b/Json/class/Rogue_20.json @@ -48,7 +48,7 @@ }, { "Name": "AutoAttack", - "Cooldown": 1 + "Cooldown": 1000 } ] }, @@ -58,7 +58,7 @@ "Name": "potionhp", "Key": "N4", "Requirement": "Health%<5", - "Cooldown": 60, + "Cooldown": 60000, "InCombat": "true", "Log": false, "Cost": 3 @@ -70,7 +70,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 15 + "Cooldown": 15000 }, { "Name": "poisonmh", @@ -89,7 +89,7 @@ { "Name": "openstuff", "Key": "N5", - "Cooldown": 30, + "Cooldown": 30000, "Requirements": ["BagItem:20768:1"], "Log": false } diff --git a/Json/class/Shaman_1.json b/Json/class/Shaman_1.json index 5daaa9a98..188caaac4 100644 --- a/Json/class/Shaman_1.json +++ b/Json/class/Shaman_1.json @@ -29,14 +29,14 @@ "Name": "Healing Wave", "Key": "3", "Requirement": "Health%<40", - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "MinMana": 25 }, { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -53,7 +53,7 @@ "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -62,7 +62,7 @@ "DelayAfterCast": 0, "Key": "-", "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] } diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index aac9051b4..c2672b8b7 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -41,7 +41,7 @@ "Health%<49", "MobCount>2" ], - "Cooldown": 120, + "Cooldown": 120000, "Log": false, "MinMana": 10 }, @@ -50,7 +50,7 @@ "Key": "3", "StopBeforeCast": true, "Requirement": "Health%<45", - "Cooldown": 5, + "Cooldown": 5000, "HasCastBar": true, "Log": false, "MinMana": 80 @@ -62,7 +62,7 @@ "Mana%>40", "InMeleeRange" ], - "Cooldown": 6, + "Cooldown": 6000, "Log": false, "MinMana": 80 }, @@ -70,14 +70,14 @@ "Name": "Stoneskin Totem", "Key": "7", "Requirement": "MobCount>2", - "Cooldown": 30, + "Cooldown": 30000, "Log": false, "MinMana": 30 }, { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -112,7 +112,7 @@ "DelayAfterCast": 0, "Key": "8", "Requirement": "Health%<40", - "Cooldown": 6 + "Cooldown": 6000 }, { "Name": "Water", @@ -121,7 +121,7 @@ "DelayAfterCast": 0, "Key": "9", "Requirement": "Mana%<40", - "Cooldown": 6 + "Cooldown": 6000 } ] }, diff --git a/Json/class/Shaman_2.json b/Json/class/Shaman_2.json index 757545749..08d940b50 100644 --- a/Json/class/Shaman_2.json +++ b/Json/class/Shaman_2.json @@ -29,14 +29,14 @@ "Name": "Healing Wave", "Key": "3", "Requirement": "Health%<40", - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "Log": false, "MinMana": 25 }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not AutoAttacking"] } ] @@ -61,7 +61,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Health%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -70,7 +70,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] } diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index 78ad50576..8e0e46656 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -27,7 +27,7 @@ "Name": "Stoneclaw Totem", "Key": "7", "Requirement": "MobCount>2", - "Cooldown": 30, + "Cooldown": 30000, "Log": false, "MinMana": 30 }, @@ -35,7 +35,7 @@ "Name": "Searing Totem", "Key": "F7", "Requirement": "MobCount>2", - "Cooldown": 15, + "Cooldown": 15000, "Log": false, "MinMana": 95 }, @@ -46,7 +46,7 @@ "Health%<49", "MobCount>2" ], - "Cooldown": 120, + "Cooldown": 120000, "Log": false, "MinMana": 10 }, @@ -69,7 +69,7 @@ "Health%<45", "TargetHealth%>20" ], - "Cooldown": 5, + "Cooldown": 5000, "HasCastBar": true, "Log": false, "MinMana": 80 @@ -81,14 +81,14 @@ "Mana%>40", "InMeleeRange" ], - "Cooldown": 6, + "Cooldown": 6000, "Log": false, "MinMana": 80 }, { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -121,7 +121,7 @@ "StopBeforeCast": true, "Key": "3", "Requirement": "Health%<50", - "Cooldown": 5, + "Cooldown": 5000, "HasCastBar": true, "Log": false, "MinMana": 80 @@ -133,7 +133,7 @@ "DelayAfterCast": 0, "Key": "8", "Requirement": "Health%<40", - "Cooldown": 6 + "Cooldown": 6000 }, { "Name": "Water", @@ -142,7 +142,7 @@ "DelayAfterCast": 0, "Key": "9", "Requirement": "Mana%<40", - "Cooldown": 6 + "Cooldown": 6000 } ] }, diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index 47695668f..b5dd16083 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -20,14 +20,14 @@ "Name": "Earth Shock", "Key": "6", "Requirements": ["TargetHealth%>10", "SpellInRange:1"], - "Cooldown": 6, + "Cooldown": 6000, "MinMana": 30 }, { "Name": "Healing Wave", "Key": "3", "Requirement": "Health%<40", - "Cooldown": 10, + "Cooldown": 10000, "HasCastBar": true, "Log": false, "MinMana": 25 @@ -62,7 +62,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Health%<30", - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Water", @@ -71,7 +71,7 @@ "AfterCastWaitBuff": true, "DelayAfterCast": 0, "Requirement": "Mana%<30", - "Cooldown": 10 + "Cooldown": 10000 } ] }, diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index ca6ef84f5..becc5ce2f 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -33,7 +33,7 @@ "Name": "Stoneclaw Totem", "Key": "F9", "Requirement": "MobCount>2", - "Cooldown": 30, + "Cooldown": 30000, "Log": false, "MinMana": 30 }, @@ -41,7 +41,7 @@ "Name": "Searing Totem", "Key": "F7", "Requirement": "MobCount>2", - "Cooldown": 15, + "Cooldown": 15000, "Log": false, "MinMana": 95 }, @@ -52,7 +52,7 @@ "Health%<45", "MobCount>2" ], - "Cooldown": 120, + "Cooldown": 120000, "Log": false, "MinMana": 10 }, @@ -64,7 +64,7 @@ "Health%<40", "TargetHealth%>15" ], - "Cooldown": 5, + "Cooldown": 5000, "HasCastBar": true, "Log": false, "MinMana": 200 @@ -77,7 +77,7 @@ "InMeleeRange" ], "Log": false, - "Cooldown": 5, + "Cooldown": 5000, "MinMana": 87 }, { @@ -88,13 +88,13 @@ "TargetHealth%>30" ], "Log": false, - "Cooldown": 12, + "Cooldown": 12000, "MinMana": 80 }, { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -137,7 +137,7 @@ "DelayAfterCast": 0, "Key": "9", "Requirement": "Mana%<35", - "Cooldown": 6 + "Cooldown": 6000 }, { "Name": "Food", @@ -146,7 +146,7 @@ "DelayAfterCast": 0, "Key": "8", "Requirement": "Health%<35", - "Cooldown": 6 + "Cooldown": 6000 } ] } diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index 1c49c1505..0b36e35e5 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -19,13 +19,13 @@ "StopBeforeCast": false, "HasCastBar": false, "Requirement": "Mana%<50", - "Cooldown": 120, + "Cooldown": 120000, }, { "Name": "Stoneclaw Totem", "Key": "F9", "Requirement": "MobCount>2", - "Cooldown": 30, + "Cooldown": 30000, "Log": false, "MinMana": 30 }, @@ -33,7 +33,7 @@ "Name": "Searing Totem", "Key": "F7", "Requirement": "MobCount>2", - "Cooldown": 20, + "Cooldown": 20000, "Log": false, "MinMana": 95 }, @@ -41,7 +41,7 @@ "Name": "War Stomp", "Key": "0", "Requirement": "Health%<50", - "Cooldown": 120, + "Cooldown": 120000, "Log": false, "MinMana": 10 }, @@ -53,7 +53,7 @@ "Health%<40", "TargetHealth%>15" ], - "Cooldown": 5, + "Cooldown": 5000, "HasCastBar": true, "Log": false, "MinMana": 200 @@ -67,7 +67,7 @@ ], "Log": false, "StopBeforeCast": true, - "Cooldown": 5, + "Cooldown": 5000, "MinMana": 87 }, { @@ -78,13 +78,13 @@ "TargetHealth%>10" ], "Log": false, - "Cooldown": 12, + "Cooldown": 12000, "MinMana": 80 }, { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -128,7 +128,7 @@ "Health%<40", "Mana%>65" ], - "Cooldown": 3, + "Cooldown": 3000, "MinMana": 310, "Cost": 6 }, @@ -139,7 +139,7 @@ "DelayAfterCast": 0, "Key": "9", "Requirement": "Mana%<45", - "Cooldown": 6 + "Cooldown": 6000 }, { "Name": "Food", @@ -148,7 +148,7 @@ "DelayAfterCast": 0, "Key": "8", "Requirement": "Health%<45", - "Cooldown": 6 + "Cooldown": 6000 } ] } diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index 78475367d..f85c11f48 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -30,7 +30,7 @@ "Name": "heal", "Key": "N3", "Requirements": ["Health%<50", "BagItem:19005:1"], - "Cooldown": 120, + "Cooldown": 120000, "InCombat": "true", "Log": false }, @@ -90,14 +90,14 @@ "Requirement": "TargetHealth%>35", "School": "Shadow", "Log": false, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "Death Coil", "Key": "N5", "ResetOnNewTarget": true, "MinMana": 495, - "Cooldown": 120, + "Cooldown": 120000, "School": "Shadow", "Requirements": ["Health%<80"], "Log": false @@ -106,13 +106,13 @@ "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -126,7 +126,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 20 + "Cooldown": 20000 }, { "Name": "Water", @@ -135,7 +135,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<50", - "Cooldown": 20 + "Cooldown": 20000 } ] }, @@ -156,7 +156,7 @@ "MinMana": 736, "Requirements": ["BagItem:6265:1", "not Has Pet"], "Log": false, - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Life Tap", diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index 62c9a2c19..74db10c24 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -30,13 +30,13 @@ "Name": "shoot", "StopBeforeCast": true, "Key": "0", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -57,7 +57,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Water", @@ -66,7 +66,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<50", - "Cooldown": 60 + "Cooldown": 60000 } ] }, diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index d7dcd5ba0..b459b5732 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -64,20 +64,20 @@ "DelayAfterCast": 0, "Key": "2", "MinMana": 25, - "Cooldown": 8, + "Cooldown": 8000, "Log": false }, { "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -91,7 +91,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 20 + "Cooldown": 20000 }, { "Name": "Water", @@ -100,7 +100,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<40", - "Cooldown": 20 + "Cooldown": 20000 } ] }, @@ -121,7 +121,7 @@ "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], "Log": false, - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Life Tap", diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 42dd89b68..48c57e47c 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -28,7 +28,7 @@ "Name": "heal", "Key": "N3", "Requirements": ["Health%<50", "BagItem:19005:1"], - "Cooldown": 120, + "Cooldown": 120000, "InCombat": "true", "Log": false }, @@ -83,19 +83,19 @@ "MinMana": 110, "Requirement": "TargetHealth%>35", "Log": false, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] }, { @@ -116,7 +116,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 20 + "Cooldown": 20000 }, { "Name": "Water", @@ -125,7 +125,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<40", - "Cooldown": 20 + "Cooldown": 20000 } ] }, @@ -146,7 +146,7 @@ "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], "Log": false, - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Life Tap", diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index 8a4474c28..2b14dee02 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -86,19 +86,19 @@ "MinMana": 110, "Requirement": "TargetHealth%>35", "Log": false, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] }, { @@ -119,7 +119,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 20 + "Cooldown": 20000 }, { "Name": "Water", @@ -128,7 +128,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<40", - "Cooldown": 20 + "Cooldown": 20000 } ] }, @@ -149,7 +149,7 @@ "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], "Log": false, - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Life Tap", diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index 7af2b19f9..d777f13ff 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -34,7 +34,7 @@ "Name": "heal", "Key": "N3", "Requirements": ["Health%<50", "BagItem:19005:1"], - "Cooldown": 120, + "Cooldown": 120000, "InCombat": "true", "Log": false }, @@ -96,19 +96,19 @@ "Requirements": ["TargetHealth%>35", "not InMeleeRange"], "School": "Shadow", "Log": false, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] }, { @@ -129,7 +129,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 20 + "Cooldown": 20000 }, { "Name": "Water", @@ -138,7 +138,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<40", - "Cooldown": 20 + "Cooldown": 20000 } ] }, @@ -159,7 +159,7 @@ "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], "Log": false, - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Life Tap", diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index 4eff73834..b82e1b3c8 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -43,19 +43,19 @@ "StopBeforeCast": true, "Key": "2", "MinMana": 25, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "shoot", "StopBeforeCast": true, "Key": "0", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -85,7 +85,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Water", @@ -94,7 +94,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<50", - "Cooldown": 60 + "Cooldown": 60000 } ] }, diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index 70bfa953f..f1a97260f 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -51,19 +51,19 @@ "StopBeforeCast": true, "Key": "2", "MinMana": 25, - "Cooldown": 8 + "Cooldown": 8000 }, { "Name": "shoot", "Key": "0", "StopBeforeCast": true, - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { "Name": "AutoAttack", - "Cooldown": 3, + "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] @@ -77,7 +77,7 @@ "DelayAfterCast": 0, "Key": "N1", "Requirement": "Health%<50", - "Cooldown": 20 + "Cooldown": 20000 }, { "Name": "Water", @@ -86,7 +86,7 @@ "DelayAfterCast": 0, "Key": "N2", "Requirement": "Mana%<40", - "Cooldown": 20 + "Cooldown": 20000 } ] }, diff --git a/Json/class/Warrior.json b/Json/class/Warrior.json index d07f7964f..4df9a9d0c 100644 --- a/Json/class/Warrior.json +++ b/Json/class/Warrior.json @@ -24,7 +24,7 @@ { "Name": "Bloodrage", "Key": "2", - "Cooldown": 60 + "Cooldown": 60000 }, { "Name": "Battle Shout", @@ -36,14 +36,14 @@ "Name": "Overpower", "Key": "5", "MinRage": 5, - "Cooldown": 10 + "Cooldown": 10000 }, { "Name": "Rend", "Key": "3", "MinRage": 10, "Requirement": "not Rend", - "Cooldown": 5 + "Cooldown": 5000 }, { "Name": "Heroic Strike", @@ -54,7 +54,7 @@ { "Name": "Approach", "Requirement": "not InMeleeRange", - "Cooldown": 1 + "Cooldown": 1000 }, { "Name": "AutoAttack", @@ -68,7 +68,7 @@ "Name": "Healing Potion", "Key": "F4", "Requirement": "Health%<5", - "Cooldown": 60, + "Cooldown": 60000, "InCombat": "true", "Log": false, "Cost": 3 diff --git a/Json/class/Warrior_1.json b/Json/class/Warrior_1.json index 912e0eafe..7fe484ad6 100644 --- a/Json/class/Warrior_1.json +++ b/Json/class/Warrior_1.json @@ -29,7 +29,7 @@ "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<60", - "Cooldown": 5, + "Cooldown": 5000, "Cost": 3 } ] diff --git a/Json/class/Warrior_4.json b/Json/class/Warrior_4.json index ce5f0f81a..1996ee1bf 100644 --- a/Json/class/Warrior_4.json +++ b/Json/class/Warrior_4.json @@ -31,7 +31,7 @@ "Key": "5", "WhenUsable": true, "Requirement": "TargetHealth%>90", - "Cooldown": 60, + "Cooldown": 60000, "MinRage": 10 }, { @@ -60,7 +60,7 @@ "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<60", - "Cooldown": 5, + "Cooldown": 5000, "Cost": 3 } ] From bdba6f4a7d79e76859511d94f48a161a60002fcd Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 19:12:15 +0200 Subject: [PATCH 040/132] Update Readme.md about Cooldown and update examples --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0f4d465d6..8eaea26ee 100644 --- a/README.md +++ b/README.md @@ -256,7 +256,7 @@ e.g. "Key": "3", "MinEnergy": 25, "MinComboPoints": 2, - "Cooldown": 3, + "Cooldown": 3000, "Requirement": "Slice And Dice" }, @@ -272,7 +272,7 @@ Commands have the following parameters, only a subset will be used by each comma | ShapeShiftForm | For druids the shapeshift form to be in to cast this spell | None | | CastIfAddsVisible | If the bot can "See" any adds | false | | Charge | How many times shoud this Command be used in sequence and ignore its Cooldown | 1 | -| Cooldown | The cooldown in seconds until the command can be done again | 0 | +| Cooldown | The cooldown in milliseconds until the command can be done again | 0 | | MinMana | (Optional) The minimum Mana required to cast the spell | 0 | | MinRage | (Optional) The minimum Rage required to cast the spell | 0 | | MinEnergy | (Optional) The minimum Energy required to cast the spell | 0 | @@ -422,7 +422,7 @@ e.g. { "Name": "Curse of Weakness", "Key": "6", - "Cooldown": 10, + "Cooldown": 10000, "ResetOnNewTarget": true, "Requirement": "not Curse of Weakness", <--- Single Requirement "MinMana": 20, From 591a1fdac7d951f93537861979f30af13d095101 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 19:28:11 +0200 Subject: [PATCH 041/132] Profiles: remove HasCastBar: false and StopBeforeCast: false --- Json/class/Druid_cat.json | 3 +-- Json/class/Mage12.json | 2 -- Json/class/Mage16.json | 2 -- Json/class/Mage44.json | 2 -- Json/class/Mage_19.json | 2 -- Json/class/Mage_herb.json | 3 +-- Json/class/Shaman_55.json | 2 -- 7 files changed, 2 insertions(+), 14 deletions(-) diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index c058848e2..7047984c4 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -88,8 +88,7 @@ "Key": "6", "Requirement": "Health%<40", "Cooldown": 10000, - "StopBeforeCast": true, - "HasCastBar": false, + "HasCastBar": true, "Form": "None" } ] diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index db17456f8..6ec139d51 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -48,8 +48,6 @@ }, { "Name": "Fireblast", - "HasCastBar": false, - "StopBeforeCast": false, "Key": "0", "MinMana": 75, "Requirements": ["Health%<80", "SpellInRange:4"], diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index 828599975..1f0768eed 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -40,8 +40,6 @@ }, { "Name": "Fireblast", - "HasCastBar": false, - "StopBeforeCast": false, "Key": "0", "MinMana": 75, "Cooldown": 8000 diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index 0ef0de463..a5a40bfa8 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -51,8 +51,6 @@ }, { "Name": "Fireblast", - "HasCastBar": false, - "StopBeforeCast": false, "Key": "0", "MinMana": 75, "Cooldown": 8000 diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index 015ed0d2b..06ca4de1d 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -44,8 +44,6 @@ }, { "Name": "Fireblast", - "HasCastBar": false, - "StopBeforeCast": false, "Key": "0", "MinMana": 75, "Cooldown": 6000 diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index b646b49e1..a185c5016 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -43,8 +43,7 @@ "Key": "F8", "Cooldown": 120000, "Log": false, - "Requirement": "Health%<80", - "HasCastBar": false + "Requirement": "Health%<80" }, { "Name": "Healing Potion", diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index 0b36e35e5..b9af9c624 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -16,8 +16,6 @@ { "Name": "Shaman Ferry", "Key": "F3", - "StopBeforeCast": false, - "HasCastBar": false, "Requirement": "Mana%<50", "Cooldown": 120000, }, From a9c5a4e5af177b82b962b449d00acdc1c4380861 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 19:33:03 +0200 Subject: [PATCH 042/132] Druid Profiles: Remove StopBeforeCast if HasCastBar: true --- Json/class/Druid_1.json | 3 --- Json/class/Druid_10_bear.json | 1 - Json/class/Druid_12_bear.json | 1 - Json/class/Druid_14_bear.json | 1 - Json/class/Druid_16_bear.json | 1 - Json/class/Druid_4.json | 3 --- Json/class/Druid_6.json | 3 --- Json/class/Druid_bear.json | 5 ----- Json/class/Druid_cat.json | 3 --- 9 files changed, 21 deletions(-) diff --git a/Json/class/Druid_1.json b/Json/class/Druid_1.json index 4453cc65f..1eb274c2a 100644 --- a/Json/class/Druid_1.json +++ b/Json/class/Druid_1.json @@ -8,7 +8,6 @@ { "Name": "Wrath", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true } ] @@ -18,7 +17,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<50", "Cooldown": 5000 @@ -26,7 +24,6 @@ { "Name": "Wrath", "Key": "2", - "StopBeforeCast": true, "Requirement": "TargetHealth%>50", "HasCastBar": true }, diff --git a/Json/class/Druid_10_bear.json b/Json/class/Druid_10_bear.json index 8aacfd6e9..fe628e589 100644 --- a/Json/class/Druid_10_bear.json +++ b/Json/class/Druid_10_bear.json @@ -38,7 +38,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<25", "Cooldown": 5000, diff --git a/Json/class/Druid_12_bear.json b/Json/class/Druid_12_bear.json index 39e9f49ed..e71f5aa46 100644 --- a/Json/class/Druid_12_bear.json +++ b/Json/class/Druid_12_bear.json @@ -47,7 +47,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<30", "Cooldown": 5000, diff --git a/Json/class/Druid_14_bear.json b/Json/class/Druid_14_bear.json index 7b198154f..b96b90a4d 100644 --- a/Json/class/Druid_14_bear.json +++ b/Json/class/Druid_14_bear.json @@ -47,7 +47,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<30", "Cooldown": 5000, diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index fdc48f525..c0aeaeec9 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -51,7 +51,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<30", "Cooldown": 5000, diff --git a/Json/class/Druid_4.json b/Json/class/Druid_4.json index 0d43e4ae4..515afbdb1 100644 --- a/Json/class/Druid_4.json +++ b/Json/class/Druid_4.json @@ -8,7 +8,6 @@ { "Name": "Wrath", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true } ] @@ -18,7 +17,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<50", "Cooldown": 5000 @@ -26,7 +24,6 @@ { "Name": "Wrath", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true }, { diff --git a/Json/class/Druid_6.json b/Json/class/Druid_6.json index 875338bde..a37f1c629 100644 --- a/Json/class/Druid_6.json +++ b/Json/class/Druid_6.json @@ -9,7 +9,6 @@ { "Name": "Wrath", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true } ] @@ -19,7 +18,6 @@ { "Name": "Healing Touch", "Key": "3", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "Health%<25", "Cooldown": 5000 @@ -39,7 +37,6 @@ { "Name": "Wrath", "Key": "2", - "StopBeforeCast": true, "Requirement": "TargetHealth%>50", "HasCastBar": true }, diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index d0fa07c0e..cb74edfe2 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -51,7 +51,6 @@ "Name": "Wrath", "Key": "7", "Requirement": "OutOfCombatRange", - "StopBeforeCast": true, "Form": "None", "HasCastBar": true }, @@ -86,7 +85,6 @@ "Requirement": "Health%<50", "Cooldown": 10000, "HasCastBar": true, - "StopBeforeCast": true, "Form": "None" }, { @@ -175,7 +173,6 @@ }, { "Name": "Drink", - "HasCastBar": true, "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", @@ -185,7 +182,6 @@ }, { "Name": "Thorns", - "StopBeforeCast": false, "Key": "3", "Cooldown": 10000, "Requirement": "not Thorns", @@ -193,7 +189,6 @@ }, { "Name": "Mark of the Wild", - "StopBeforeCast": false, "Key": "4", "Cooldown": 10000, "Requirement": "not Mark of the Wild", diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index 7047984c4..463ea46af 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -58,7 +58,6 @@ "Name": "Wrath", "Key": "7", "Requirement": "OutOfCombatRange", - "StopBeforeCast": true, "Form": "None", "HasCastBar": true }, @@ -161,7 +160,6 @@ "Name": "Healing Touch", "Key": "6", "Requirement": "Health%<80", - "StopBeforeCast": true, "Cooldown": 10000, "HasCastBar": true, "Form": "None", @@ -176,7 +174,6 @@ }, { "Name": "Drink", - "HasCastBar": true, "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", From 60a182abefc6927620617408756602fd88a81187 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 19:34:55 +0200 Subject: [PATCH 043/132] Profiles: Replace 'Drink' with 'Water' --- Json/class/Druid_bear.json | 2 +- Json/class/Druid_cat.json | 2 +- Json/class/Mage.json | 2 +- Json/class/Mage12.json | 2 +- Json/class/Mage16.json | 2 +- Json/class/Mage1to4.json | 2 +- Json/class/Mage42.json | 2 +- Json/class/Mage44.json | 2 +- Json/class/MageAttendedGrind.json | 2 +- Json/class/MageGrind.json | 2 +- Json/class/MageRaid.json | 2 +- Json/class/Mage_19.json | 2 +- Json/class/Mage_25.json | 2 +- Json/class/Mage_30.json | 2 +- Json/class/Mage_herb.json | 2 +- Json/class/Mage_weeping.json | 2 +- Json/class/Paladin.json | 2 +- Json/class/Priest.json | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index cb74edfe2..446df079f 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -172,7 +172,7 @@ "Form": "None" }, { - "Name": "Drink", + "Name": "Water", "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index 463ea46af..6f6ea1489 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -173,7 +173,7 @@ "Form": "None" }, { - "Name": "Drink", + "Name": "Water", "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", diff --git a/Json/class/Mage.json b/Json/class/Mage.json index e6cbcbb96..758ec7a8e 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -78,7 +78,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 6ec139d51..ecccd117e 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -74,7 +74,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index 1f0768eed..d7cc265fc 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -65,7 +65,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 980938ed4..4040ac512 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -60,7 +60,7 @@ "Cooldown": 60000 }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "-", diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index e6cbcbb96..758ec7a8e 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -78,7 +78,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index a5a40bfa8..cb5b99396 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -88,7 +88,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index bac082497..b46659e82 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -83,7 +83,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index 3ad1de067..e49697c7c 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -78,7 +78,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index 6485b9b3f..762302bd3 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -76,7 +76,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index 06ca4de1d..706729239 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -91,7 +91,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 8bc7626a9..bbc74ae1f 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -88,7 +88,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index d0c55d4cf..2927a9d66 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -88,7 +88,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index a185c5016..99610929d 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -87,7 +87,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index 6fc0cdba1..ea4d25eff 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -97,7 +97,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "7", diff --git a/Json/class/Paladin.json b/Json/class/Paladin.json index e98a9ca4e..4a333b852 100644 --- a/Json/class/Paladin.json +++ b/Json/class/Paladin.json @@ -86,7 +86,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "8", diff --git a/Json/class/Priest.json b/Json/class/Priest.json index bdcd8cddf..37df6abc8 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -118,7 +118,7 @@ "Log": false }, { - "Name": "Drink", + "Name": "Water", "HasCastBar": true, "StopBeforeCast": true, "Key": "8", From 88b967d6da0c835c96b00157fa2af2822168320d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 19:42:30 +0200 Subject: [PATCH 044/132] Hunter profiles: When HasCastBar exists remove StopBeforeCast --- Json/class/Hunter_1.json | 2 -- Json/class/Hunter_10.json | 2 -- Json/class/Hunter_18.json | 2 -- Json/class/Hunter_26.json | 2 -- Json/class/Hunter_30.json | 2 -- Json/class/Hunter_4.json | 2 -- Json/class/Hunter_6.json | 1 - Json/class/Hunter_62.json | 2 -- 8 files changed, 15 deletions(-) diff --git a/Json/class/Hunter_1.json b/Json/class/Hunter_1.json index 4301a8a1a..8e21c5477 100644 --- a/Json/class/Hunter_1.json +++ b/Json/class/Hunter_1.json @@ -5,7 +5,6 @@ "Sequence": [ { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] @@ -25,7 +24,6 @@ "Sequence": [ { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] diff --git a/Json/class/Hunter_10.json b/Json/class/Hunter_10.json index ac2f25871..1e1a977e9 100644 --- a/Json/class/Hunter_10.json +++ b/Json/class/Hunter_10.json @@ -25,7 +25,6 @@ { "Name": "Gift of the Naaru", "Key": "1", - "StopBeforeCast": true, "HasCastBar": true, "WhenUsable": true, "Requirement": "Health%<45" @@ -47,7 +46,6 @@ }, { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_18.json b/Json/class/Hunter_18.json index 24f23a6f0..d52b5f2fd 100644 --- a/Json/class/Hunter_18.json +++ b/Json/class/Hunter_18.json @@ -25,7 +25,6 @@ { "Name": "Gift of the Naaru", "Key": "1", - "StopBeforeCast": true, "HasCastBar": true, "WhenUsable": true, "Requirement": "Health%<45" @@ -46,7 +45,6 @@ }, { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_26.json b/Json/class/Hunter_26.json index 359bca769..481fd19b4 100644 --- a/Json/class/Hunter_26.json +++ b/Json/class/Hunter_26.json @@ -26,7 +26,6 @@ { "Name": "Gift of the Naaru", "Key": "1", - "StopBeforeCast": true, "HasCastBar": true, "WhenUsable": true, "Requirement": "Health%<45" @@ -55,7 +54,6 @@ }, { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_30.json b/Json/class/Hunter_30.json index ecc52c71c..f8ec778da 100644 --- a/Json/class/Hunter_30.json +++ b/Json/class/Hunter_30.json @@ -25,7 +25,6 @@ { "Name": "Gift of the Naaru", "Key": "1", - "StopBeforeCast": true, "HasCastBar": true, "WhenUsable": true, "Requirement": "Health%<45" @@ -62,7 +61,6 @@ }, { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_4.json b/Json/class/Hunter_4.json index 0fa73cffc..d2ae09a6b 100644 --- a/Json/class/Hunter_4.json +++ b/Json/class/Hunter_4.json @@ -12,7 +12,6 @@ }, { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] @@ -31,7 +30,6 @@ "Sequence": [ { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_6.json b/Json/class/Hunter_6.json index c5089aff6..acc653732 100644 --- a/Json/class/Hunter_6.json +++ b/Json/class/Hunter_6.json @@ -31,7 +31,6 @@ }, { "Name": "autoshot", - "StopBeforeCast": true, "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_62.json b/Json/class/Hunter_62.json index ca7100216..821d327ea 100644 --- a/Json/class/Hunter_62.json +++ b/Json/class/Hunter_62.json @@ -30,7 +30,6 @@ { "Name": "Gift of the Naaru", "Key": "1", - "StopBeforeCast": true, "HasCastBar": true, "WhenUsable": true, "Requirement": "Health%<45" @@ -68,7 +67,6 @@ }, { "Name": "Auto Shot", - "StopBeforeCast": true, "HasCastBar": true, "WhenUsable": true, "Key": "3", From 034365e1232acc8a148c5e46cc1c18b280d1fd5e Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 23:48:03 +0200 Subject: [PATCH 045/132] Mage profiles: When HasCastBar exists remove StopBeforeCast --- Json/class/Mage.json | 8 -------- Json/class/Mage12.json | 8 -------- Json/class/Mage16.json | 8 -------- Json/class/Mage1to4.json | 5 ----- Json/class/Mage42.json | 8 -------- Json/class/Mage44.json | 6 ------ Json/class/Mage54.json | 6 ------ Json/class/MageAttendedGrind.json | 6 ------ Json/class/MageGrind.json | 6 ------ Json/class/MageRaid.json | 6 ------ Json/class/Mage_1.json | 3 --- Json/class/Mage_10.json | 6 ------ Json/class/Mage_12.json | 6 ------ Json/class/Mage_14_Arcane_Frost.json | 6 ------ Json/class/Mage_19.json | 16 ++++++---------- Json/class/Mage_25.json | 12 ++++-------- Json/class/Mage_30.json | 8 -------- Json/class/Mage_4.json | 5 ----- Json/class/Mage_54_Frost_Arcane.json | 8 -------- Json/class/Mage_6.json | 6 ------ Json/class/Mage_herb.json | 6 ------ Json/class/Mage_weeping.json | 6 ------ 22 files changed, 10 insertions(+), 145 deletions(-) diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 758ec7a8e..3c17ef554 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -22,7 +22,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 35 } @@ -47,7 +46,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 }, @@ -70,7 +68,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -79,7 +76,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", @@ -93,14 +89,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -109,7 +103,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8077:4", "Cooldown": 30000, @@ -118,7 +111,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1487:4", "Cooldown": 30000, diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index ecccd117e..52f3b3fbf 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -12,7 +12,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "MinMana": 35 }, @@ -56,7 +55,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 } @@ -66,7 +64,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -75,7 +72,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -89,14 +85,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -105,7 +99,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", "Cooldown": 30000, @@ -114,7 +107,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", "Cooldown": 30000, diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index d7cc265fc..9bea0cf4b 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -17,7 +17,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "MinMana": 35 }, @@ -47,7 +46,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 } @@ -57,7 +55,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -66,7 +63,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -80,14 +76,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -96,7 +90,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", "Cooldown": 30000, @@ -105,7 +98,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", "Cooldown": 30000, diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 4040ac512..7ad396244 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -12,7 +12,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30 } @@ -23,7 +22,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30 }, @@ -46,14 +44,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Eat", - "HasCastBar": true, "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<50", @@ -61,7 +57,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "-", "Requirement": "Mana%<50", diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index 758ec7a8e..3c17ef554 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -22,7 +22,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 35 } @@ -47,7 +46,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 }, @@ -70,7 +68,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -79,7 +76,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", @@ -93,14 +89,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -109,7 +103,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8077:4", "Cooldown": 30000, @@ -118,7 +111,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1487:4", "Cooldown": 30000, diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index cb5b99396..4e46be803 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -80,7 +80,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<70", @@ -89,7 +88,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<55", @@ -103,14 +101,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -119,7 +115,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8077:4", "Cooldown": 30000, @@ -128,7 +123,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1487:4", "Cooldown": 30000, diff --git a/Json/class/Mage54.json b/Json/class/Mage54.json index 8753e596a..7f270c0fb 100644 --- a/Json/class/Mage54.json +++ b/Json/class/Mage54.json @@ -15,7 +15,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25 } @@ -50,7 +49,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30, "Requirements": ["TargetHealth%>35"] @@ -97,7 +95,6 @@ "Sequence": [ { "Name": "Ice Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" @@ -111,7 +108,6 @@ }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -120,7 +116,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8078:4", "Cooldown": 30000, @@ -129,7 +124,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index b46659e82..05745cffd 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -75,7 +75,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -84,7 +83,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -98,7 +96,6 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 110, "Requirement": "not Frost Armor", @@ -106,7 +103,6 @@ }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -115,7 +111,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", "Cooldown": 30000, @@ -124,7 +119,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index e49697c7c..603d0af39 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -70,7 +70,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -79,7 +78,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -93,7 +91,6 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 110, "Requirement": "not Frost Armor", @@ -101,7 +98,6 @@ }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -110,7 +106,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", "Cooldown": 30000, @@ -119,7 +114,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index 762302bd3..1f22b47d7 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -68,7 +68,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -77,7 +76,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -91,7 +89,6 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 110, "Requirement": "not Frost Armor", @@ -99,7 +96,6 @@ }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -108,7 +104,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", "Cooldown": 30000, @@ -117,7 +112,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, diff --git a/Json/class/Mage_1.json b/Json/class/Mage_1.json index be56de34e..ad9eaf941 100644 --- a/Json/class/Mage_1.json +++ b/Json/class/Mage_1.json @@ -11,7 +11,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 } @@ -22,7 +21,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30, "Requirement": "TargetHealth%>10" @@ -46,7 +44,6 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index 22a00c275..f0d412490 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -10,7 +10,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25 } @@ -37,7 +36,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30, "Requirements": ["TargetHealth%>35"] @@ -84,14 +82,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -100,7 +96,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", "Cooldown": 30000, @@ -109,7 +104,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:5349:4", "Cooldown": 30000, diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12.json index 70f853e73..508b7ed04 100644 --- a/Json/class/Mage_12.json +++ b/Json/class/Mage_12.json @@ -10,7 +10,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25 } @@ -37,7 +36,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30, "Requirements": ["TargetHealth%>35"] @@ -84,14 +82,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -100,7 +96,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", "Cooldown": 30000, @@ -109,7 +104,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", "Cooldown": 30000, diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index a03fb0965..0538c53b8 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -10,7 +10,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25, "Requirement": "SpellInRange:3" @@ -39,7 +38,6 @@ { "Name": "Arcane Missiles", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30, "Requirements": ["TargetHealth%>35"] @@ -86,14 +84,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -102,7 +98,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", "Cooldown": 30000, @@ -111,7 +106,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", "Cooldown": 30000, diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index 706729239..97d2469a3 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -19,7 +19,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": false, "Key": "5", "MinMana": 35 }, @@ -27,7 +26,6 @@ "Name": "Fireball", "DelayBeforeCast": 1500, "HasCastBar": true, - "StopBeforeCast": false, "Key": "2", "MinMana": 65 } @@ -60,7 +58,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 }, @@ -83,8 +80,9 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<90", "Cooldown": 10000, @@ -92,8 +90,9 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<90", "Cooldown": 10000, @@ -106,14 +105,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -122,7 +119,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2288:4", "Cooldown": 30000, @@ -131,7 +127,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1113:4", "Cooldown": 30000, @@ -140,6 +135,8 @@ { "Name": "Well Fed", "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Key": "-", "Requirement": "not Well Fed", "Cooldown": 120000, @@ -147,7 +144,6 @@ }, { "Name": "Fire Power", - "StopBeforeCast": false, "Key": "1", "Requirement": "not Fire Power", "Cooldown": 120000, diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index bbc74ae1f..6abf11775 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -23,7 +23,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 35 } @@ -57,7 +56,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 }, @@ -80,8 +78,9 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Key": "6", "Requirement": "Health%<90", "Cooldown": 10000, @@ -89,8 +88,9 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, "Key": "7", "Requirement": "Mana%<70", "Cooldown": 10000, @@ -103,14 +103,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -119,7 +117,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:2136:4", "Cooldown": 30000, @@ -128,7 +125,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1114:4", "Cooldown": 30000, diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index 2927a9d66..39c852d1f 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -23,7 +23,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 35 } @@ -57,7 +56,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 65 }, @@ -80,7 +78,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -89,7 +86,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<70", @@ -103,14 +99,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -119,7 +113,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:3772:4", "Cooldown": 30000, @@ -128,7 +121,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:1114:4", "Cooldown": 30000, diff --git a/Json/class/Mage_4.json b/Json/class/Mage_4.json index 6bf0b106d..7ca5e98c5 100644 --- a/Json/class/Mage_4.json +++ b/Json/class/Mage_4.json @@ -11,7 +11,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25 } @@ -22,7 +21,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 30, "Requirement": "TargetHealth%>10" @@ -69,14 +67,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -85,7 +81,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:5350:4", "Cooldown": 30000, diff --git a/Json/class/Mage_54_Frost_Arcane.json b/Json/class/Mage_54_Frost_Arcane.json index 5070fc468..cf2125a4b 100644 --- a/Json/class/Mage_54_Frost_Arcane.json +++ b/Json/class/Mage_54_Frost_Arcane.json @@ -19,7 +19,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25, "Requirement": "MaxRange<36" @@ -63,7 +62,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25, "Requirements": [ "MaxRange>31", "MaxRange<36"] @@ -71,7 +69,6 @@ { "Name": "Arcane Missiles", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["MaxRange<30", "TargetHealth%>30"], "Key": "2", "MinMana": 500 @@ -114,7 +111,6 @@ { "Name": "Evocation", "Key": "N9", - "StopBeforeCast": true, "HasCastBar": true, "Cooldown": 600000, "Cost": 2, @@ -122,14 +118,12 @@ }, { "Name": "Ice Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -138,7 +132,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8078:4", "Cooldown": 30000, @@ -147,7 +140,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index 8c0bf1791..2c1c1008e 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -11,7 +11,6 @@ { "Name": "Frostbolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "1", "MinMana": 25 } @@ -30,7 +29,6 @@ { "Name": "Fireball", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 45 }, @@ -76,14 +74,12 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 60, "Requirement": "not Frost Armor" }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -92,7 +88,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:5350:4", "Cooldown": 30000, @@ -101,7 +96,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:5349:4", "Cooldown": 30000, diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index 99610929d..f8246dde7 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -79,7 +79,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -88,7 +87,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -102,7 +100,6 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 110, "Requirement": "not Frost Armor", @@ -110,7 +107,6 @@ }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -119,7 +115,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", "Cooldown": 30000, @@ -128,7 +123,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index ea4d25eff..068619cc9 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -89,7 +89,6 @@ "Sequence": [ { "Name": "Low Health", - "HasCastBar": true, "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", @@ -98,7 +97,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "7", "Requirement": "Mana%<90", @@ -112,7 +110,6 @@ "Sequence": [ { "Name": "Frost Armor", - "StopBeforeCast": false, "Key": "3", "MinMana": 110, "Requirement": "not Frost Armor", @@ -120,7 +117,6 @@ }, { "Name": "Arcane Intellect", - "StopBeforeCast": false, "Key": "4", "MinMana": 60, "Requirement": "not Arcane Intellect", @@ -129,7 +125,6 @@ { "Name": "Conjure Water", "HasCastBar": true, - "StopBeforeCast": true, "Key": "9", "Requirement": "not BagItem:8079:4", "Cooldown": 30000, @@ -138,7 +133,6 @@ { "Name": "Conjure Food", "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "not BagItem:8076:4", "Cooldown": 30000, From 72260cb6c4f51e6ddeffa3460787689b31a74ea6 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Wed, 13 Oct 2021 23:58:48 +0200 Subject: [PATCH 046/132] Profiles: When HasCastBar exists remove StopBeforeCast --- Json/class/Paladin.json | 5 ----- Json/class/Paladin_1.json | 1 - Json/class/Paladin_10.json | 1 - Json/class/Paladin_66.json | 4 ---- Json/class/Priest.json | 4 ---- Json/class/Rogue.json | 6 ++---- Json/class/Rogue_12.json | 1 - Json/class/Rogue_20.json | 4 ++-- Json/class/Shaman_1.json | 2 -- Json/class/Shaman_15.json | 7 +------ Json/class/Shaman_2.json | 3 --- Json/class/Shaman_22.json | 8 +------- Json/class/Shaman_4.json | 2 -- Json/class/Shaman_44.json | 10 ++-------- Json/class/Shaman_55.json | 6 ------ Json/class/Warlock.json | 6 ------ Json/class/Warlock_1.json | 3 --- Json/class/Warlock_10.json | 6 ------ Json/class/Warlock_20.json | 8 -------- Json/class/Warlock_20_shard_farm.json | 7 ------- Json/class/Warlock_26_Immunity.json | 10 ---------- Json/class/Warlock_4.json | 5 ----- Json/class/Warlock_8.json | 6 ------ Json/class/Warrior.json | 5 ++--- 24 files changed, 10 insertions(+), 110 deletions(-) diff --git a/Json/class/Paladin.json b/Json/class/Paladin.json index 4a333b852..2395991df 100644 --- a/Json/class/Paladin.json +++ b/Json/class/Paladin.json @@ -54,7 +54,6 @@ { "Name": "Holy Light", "HasCastBar": true, - "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<50", "Cooldown": 3000, @@ -64,14 +63,12 @@ }, { "Name": "Devotion Aura", - "StopBeforeCast": false, "Key": "5", "Requirement": "not Aura", "Log": false }, { "Name": "Blessing of Might", - "StopBeforeCast": false, "Key": "4", "MinMana": 45, "Requirement": "not Blessing", @@ -79,7 +76,6 @@ }, { "Name": "Well Fed", - "StopBeforeCast": false, "Key": "7", "Requirement": "not Well Fed", "Cooldown": 120000, @@ -98,7 +94,6 @@ { "Name": "Sharpen Weapon", "HasCastBar": true, - "StopBeforeCast": true, "Key": "F1", "Cooldown": 1800, "Log": false diff --git a/Json/class/Paladin_1.json b/Json/class/Paladin_1.json index 334dfe423..90f684724 100644 --- a/Json/class/Paladin_1.json +++ b/Json/class/Paladin_1.json @@ -26,7 +26,6 @@ { "Name": "Holy Light", "HasCastBar": true, - "StopBeforeCast": true, "Key": "3", "Requirement": "Health%<50", "Cooldown": 2000 diff --git a/Json/class/Paladin_10.json b/Json/class/Paladin_10.json index 35dbd31b5..d10fb3429 100644 --- a/Json/class/Paladin_10.json +++ b/Json/class/Paladin_10.json @@ -17,7 +17,6 @@ { "Name": "Holy Light", "HasCastBar": true, - "StopBeforeCast": true, "Key": "6", "Requirements": ["Health%<60", "TargetHealth%>20"], "Cooldown": 5000 diff --git a/Json/class/Paladin_66.json b/Json/class/Paladin_66.json index 2265edfa0..935b1d424 100644 --- a/Json/class/Paladin_66.json +++ b/Json/class/Paladin_66.json @@ -26,7 +26,6 @@ { "Name": "Holy Light", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "Requirements": [ "Health%<35", @@ -117,14 +116,12 @@ "Sequence": [ { "Name": "Devotion Aura", - "StopBeforeCast": false, "Key": "F8", "Requirement": "not Aura", "Log": false }, { "Name": "Blessing of Might", - "StopBeforeCast": false, "Key": "0", "MinMana": 45, "Requirement": "not Blessing", @@ -137,7 +134,6 @@ { "Name": "Holy Light", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "Requirements": [ "Health%<40", diff --git a/Json/class/Priest.json b/Json/class/Priest.json index 37df6abc8..9d2d25383 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -14,7 +14,6 @@ "Name": "Mind Blast", "Key": "5", "DelayBeforeCast": 500, - "StopBeforeCast": true, "HasCastBar": true }, { @@ -60,7 +59,6 @@ "Name": "Mind Blast", "Key": "5", "Cooldown": 10000, - "StopBeforeCast": true, "Requirements": ["Health%>40"], "HasCastBar": true, "MinMana": 2500, @@ -104,7 +102,6 @@ "Name": "Heal", "Key": "9", "Requirement": "Health%<60", - "StopBeforeCast": true, "Cooldown": 10000, "HasCastBar": true, "Log": false @@ -119,7 +116,6 @@ }, { "Name": "Water", - "HasCastBar": true, "StopBeforeCast": true, "Key": "8", "Requirement": "Mana%<40", diff --git a/Json/class/Rogue.json b/Json/class/Rogue.json index e729dc885..b63283a3f 100644 --- a/Json/class/Rogue.json +++ b/Json/class/Rogue.json @@ -101,7 +101,7 @@ }, { "Name": "Eat", - "StopBeforeCast": false, + "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<60", "DelayAfterCast": 1000, @@ -110,7 +110,7 @@ }, { "Name": "Well Fed", - "StopBeforeCast": false, + "StopBeforeCast": true, "Key": "7", "Requirement": "not Well Fed", "Cooldown": 1200, @@ -119,7 +119,6 @@ { "Name": "Sharpen Weapon 1", "HasCastBar": true, - "StopBeforeCast": true, "Key": "F1", "Cooldown": 1800, "Log": false @@ -127,7 +126,6 @@ { "Name": "Sharpen Weapon 2", "HasCastBar": true, - "StopBeforeCast": true, "Key": "F2", "Cooldown": 1800, "Log": false diff --git a/Json/class/Rogue_12.json b/Json/class/Rogue_12.json index 164b70a0f..4f3799a24 100644 --- a/Json/class/Rogue_12.json +++ b/Json/class/Rogue_12.json @@ -7,7 +7,6 @@ { "Name": "Throw", "Key": "6", - "StopBeforeCast": true, "HasCastbar": true, "WhenUsable": true, "WaitForWithinMeleeRange": true, diff --git a/Json/class/Rogue_20.json b/Json/class/Rogue_20.json index 5ac9a2d7a..98f4fb34f 100644 --- a/Json/class/Rogue_20.json +++ b/Json/class/Rogue_20.json @@ -74,14 +74,14 @@ }, { "Name": "poisonmh", - "StopBeforeCast": true, + "HasCastbar": true, "DelayAfterCast": 500, "Key": "N2", "Requirement": "not HasMainHandEnchant" }, { "Name": "poisonoh", - "StopBeforeCast": true, + "HasCastbar": true, "DelayAfterCast": 500, "Key": "N3", "Requirement": "not HasOffHandEnchant" diff --git a/Json/class/Shaman_1.json b/Json/class/Shaman_1.json index 188caaac4..c348fcd0d 100644 --- a/Json/class/Shaman_1.json +++ b/Json/class/Shaman_1.json @@ -9,7 +9,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 15 } @@ -20,7 +19,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 15, "Requirement": "not InMeleeRange" diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index c2672b8b7..163847269 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -15,9 +15,8 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, - "MinMana": 30, + "MinMana": 30 } ] }, @@ -26,7 +25,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 30, "Requirements": [ @@ -48,7 +46,6 @@ { "Name": "Healing Wave", "Key": "3", - "StopBeforeCast": true, "Requirement": "Health%<45", "Cooldown": 5000, "HasCastBar": true, @@ -89,14 +86,12 @@ "Sequence": [ { "Name": "Rockbiter Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 25, "Requirement": "not HasMainHandEnchant" }, { "Name": "Lightning Shield", - "StopBeforeCast": false, "Key": "6", "MinMana": 45, "Requirement": "not Lightning Shield" diff --git a/Json/class/Shaman_2.json b/Json/class/Shaman_2.json index 08d940b50..3b5d68e39 100644 --- a/Json/class/Shaman_2.json +++ b/Json/class/Shaman_2.json @@ -9,7 +9,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 15 } @@ -20,7 +19,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 15, "Requirement": "not InMeleeRange" @@ -45,7 +43,6 @@ "Sequence": [ { "Name": "Rockbiter Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 15, "Requirement": "not HasMainHandEnchant" diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index 8e0e46656..2ddc4d8a1 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -15,9 +15,8 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, - "MinMana": 75, + "MinMana": 75 } ] }, @@ -53,7 +52,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 75, "Requirements": [ @@ -64,7 +62,6 @@ { "Name": "Healing Wave", "Key": "3", - "StopBeforeCast": true, "Requirements": [ "Health%<45", "TargetHealth%>20" @@ -100,14 +97,12 @@ "Sequence": [ { "Name": "Rockbiter Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 25, "Requirement": "not HasMainHandEnchant" }, { "Name": "Lightning Shield", - "StopBeforeCast": false, "Key": "6", "MinMana": 45, "Requirement": "not Lightning Shield" @@ -118,7 +113,6 @@ "Sequence": [ { "Name": "Healing Wave", - "StopBeforeCast": true, "Key": "3", "Requirement": "Health%<50", "Cooldown": 5000, diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index b5dd16083..e80712728 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -8,7 +8,6 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "MinMana": 15 } @@ -46,7 +45,6 @@ "Sequence": [ { "Name": "Rockbiter Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 15, "Requirement": "not HasMainHandEnchant" diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index becc5ce2f..ff09ebd52 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -13,9 +13,8 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, - "MinMana": 95, + "MinMana": 95 } ] }, @@ -24,10 +23,9 @@ { "Name": "Lightning Bolt", "Key": "2", - "StopBeforeCast": true, "HasCastBar": true, "Requirement": "not InMeleeRange", - "MinMana": 95, + "MinMana": 95 }, { "Name": "Stoneclaw Totem", @@ -59,7 +57,6 @@ { "Name": "Healing Wave", "Key": "3", - "StopBeforeCast": true, "Requirements": [ "Health%<40", "TargetHealth%>15" @@ -106,21 +103,18 @@ "Sequence": [ { "Name": "Windfury Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 90, "Requirement": "not HasMainHandEnchant" }, { "Name": "Windfury/Falme Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 90, "Requirement": "not HasOffHandEnchant" }, { "Name": "Lightning Shield", - "StopBeforeCast": false, "Key": "7", "MinMana": 45, "Requirement": "not Lightning Shield", diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index b9af9c624..5b89e8762 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -46,7 +46,6 @@ { "Name": "Healing Wave", "Key": "3", - "StopBeforeCast": true, "Requirements": [ "Health%<40", "TargetHealth%>15" @@ -64,7 +63,6 @@ "InMeleeRange" ], "Log": false, - "StopBeforeCast": true, "Cooldown": 5000, "MinMana": 87 }, @@ -94,21 +92,18 @@ "Sequence": [ { "Name": "Windfury Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 90, "Requirement": "not HasMainHandEnchant" }, { "Name": "Windfury/Falme Weapon", - "StopBeforeCast": false, "Key": "5", "MinMana": 90, "Requirement": "not HasOffHandEnchant" }, { "Name": "Lightning Shield", - "StopBeforeCast": false, "Key": "7", "MinMana": 45, "Requirement": "not Lightning Shield", @@ -120,7 +115,6 @@ { "Name": "Healing Wave", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "Requirements": [ "Health%<40", diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index f85c11f48..9bebce6be 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -16,7 +16,6 @@ "Name": "pull", "Key": "5", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 289, "School": "Fire", @@ -38,7 +37,6 @@ "Name": "Drain Soul", "Key": "9", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["TargetHealth%<25", "not BagItem:6265:3", "TargetYieldXP"], "School": "Shadow", "MinMana": 290 @@ -47,7 +45,6 @@ "Name": "Drain Life", "Key": "N4", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Health%<30"], "MinMana": 240 }, @@ -56,7 +53,6 @@ "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate"], "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 289, "School": "Fire", @@ -84,7 +80,6 @@ "Name": "Shadow Bolt", "Key": "2", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 309, "Requirement": "TargetHealth%>35", @@ -151,7 +146,6 @@ { "Name": "Summon Voidwalker", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 736, "Requirements": ["BagItem:6265:1", "not Has Pet"], diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index 74db10c24..1ff34dbc4 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -11,7 +11,6 @@ { "Name": "Shadow Bolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 25 } @@ -22,7 +21,6 @@ { "Name": "Shadow Bolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 25 }, @@ -45,7 +43,6 @@ "Sequence": [ { "Name": "Demon Skin", - "StopBeforeCast": false, "Key": "3", "MinMana": 50, "Requirement": "not Demon Skin" diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index b459b5732..c27c1b7a4 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -11,7 +11,6 @@ { "Name": "pull", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "MinMana": 25 } @@ -23,14 +22,12 @@ "Name": "Drain Soul", "Key": "9", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["TargetHealth%<25", "not BagItem:6265:3", "TargetYieldXP"], "MinMana": 55 }, { "Name": "Immolate", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate"], "ResetOnNewTarget": true, @@ -49,7 +46,6 @@ { "Name": "Corruption", "HasCastBar": true, - "StopBeforeCast": true, "DelayAfterCast": 200, "Key": "7", "Requirements": ["TargetHealth%>35", "not Corruption"], @@ -59,7 +55,6 @@ { "Name": "Shadow Bolt", "HasCastBar": true, - "StopBeforeCast": true, "Requirement": "TargetHealth%>35", "DelayAfterCast": 0, "Key": "2", @@ -116,7 +111,6 @@ { "Name": "Summon Voidwalker", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 48c57e47c..07e7bbd09 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -15,7 +15,6 @@ "Name": "pull", "Key": "5", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 90, "Log": false @@ -36,7 +35,6 @@ "Name": "Drain Soul", "Key": "9", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["TargetHealth%<25", "not BagItem:6265:3", "TargetYieldXP"], "MinMana": 55 }, @@ -44,7 +42,6 @@ "Name": "Drain Life", "Key": "N4", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Health%<30"], "MinMana": 55 }, @@ -53,7 +50,6 @@ "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate"], "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 90, "Log": false @@ -78,7 +74,6 @@ "Name": "Shadow Bolt", "Key": "2", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 110, "Requirement": "TargetHealth%>35", @@ -102,7 +97,6 @@ "Name": "Health Funnel", "Key": "N6", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] } ] @@ -141,7 +135,6 @@ { "Name": "Summon Voidwalker", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], @@ -158,7 +151,6 @@ { "Name": "heal", "Key": "N3", - "StopBeforeCast": true, "HasCastBar": true, "Requirements": ["BagItem:6265:1", "not BagItem:19005:1"] } diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index 2b14dee02..197b5c0e3 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -21,7 +21,6 @@ "Name": "pull", "Key": "5", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 90, "Log": false @@ -35,7 +34,6 @@ "Key": "9", "School": "Shadow", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["TargetHealth%<40", "not BagItem:6265:72", "TargetYieldXP"], "MinMana": 55 }, @@ -44,7 +42,6 @@ "Key": "N4", "School": "Shadow", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Health%<30"], "MinMana": 55 }, @@ -53,7 +50,6 @@ "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate"], "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 90, "Log": false @@ -81,7 +77,6 @@ "Key": "2", "School": "Shadow", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 110, "Requirement": "TargetHealth%>35", @@ -105,7 +100,6 @@ "Name": "Health Funnel", "Key": "N6", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] } ] @@ -144,7 +138,6 @@ { "Name": "Summon Voidwalker", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index d777f13ff..976030299 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -20,7 +20,6 @@ "DelayBeforeCast": 1500, "Requirements": ["TargetHealth%>35", "not Immolate"], "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 90, "School": "Fire", @@ -42,7 +41,6 @@ "Name": "Drain Soul", "Key": "9", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["TargetHealth%<25", "not BagItem:6265:3", "TargetYieldXP"], "School": "Shadow", "MinMana": 55 @@ -51,7 +49,6 @@ "Name": "Drain Life", "Key": "N4", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Health%<30"], "MinMana": 55 }, @@ -60,7 +57,6 @@ "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate", "not InMeleeRange"], "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 90, "School": "Fire", @@ -70,7 +66,6 @@ "Name": "Curse of Agony", "Key": "1", "ResetOnNewTarget": true, - "StopBeforeCast": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], "MinMana": 50, "School": "Shadow", @@ -81,7 +76,6 @@ "Key": "7", "Requirements": ["TargetHealth%>35", "not Corruption"], "ResetOnNewTarget": true, - "StopBeforeCast": true, "MinMana": 55, "School": "Shadow", "Log": false @@ -90,7 +84,6 @@ "Name": "Shadow Bolt", "Key": "2", "HasCastBar": true, - "StopBeforeCast": true, "ResetOnNewTarget": true, "MinMana": 110, "Requirements": ["TargetHealth%>35", "not InMeleeRange"], @@ -115,7 +108,6 @@ "Name": "Health Funnel", "Key": "N6", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] } ] @@ -154,7 +146,6 @@ { "Name": "Summon Voidwalker", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 122, "Requirements": ["BagItem:6265:1", "not Has Pet"], @@ -172,7 +163,6 @@ "Name": "heal", "Key": "N3", "HasCastBar": true, - "StopBeforeCast": true, "Requirements": ["BagItem:6265:1", "not BagItem:19007:1"] } ] diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index b82e1b3c8..1018e5080 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -11,7 +11,6 @@ { "Name": "pull", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "MinMana": 25 } @@ -22,7 +21,6 @@ { "Name": "Immolate", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate"], "ResetOnNewTarget": true, @@ -31,7 +29,6 @@ { "Name": "Corruption", "HasCastBar": true, - "StopBeforeCast": true, "Key": "7", "Requirements": ["TargetHealth%>35", "not Corruption"], "ResetOnNewTarget": true, @@ -40,7 +37,6 @@ { "Name": "Shadow Bolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 25, "Cooldown": 8000 @@ -72,7 +68,6 @@ { "Name": "Summon Imp", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 122, "Requirement": "not Has Pet", diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index f1a97260f..a079534cd 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -11,7 +11,6 @@ { "Name": "pull", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "MinMana": 25 } @@ -22,7 +21,6 @@ { "Name": "Immolate", "HasCastBar": true, - "StopBeforeCast": true, "Key": "5", "Requirements": ["TargetHealth%>35", "not Immolate"], "ResetOnNewTarget": true, @@ -39,7 +37,6 @@ { "Name": "Corruption", "HasCastBar": true, - "StopBeforeCast": true, "Key": "7", "Requirements": ["TargetHealth%>35", "not Corruption"], "ResetOnNewTarget": true, @@ -48,7 +45,6 @@ { "Name": "Shadow Bolt", "HasCastBar": true, - "StopBeforeCast": true, "Key": "2", "MinMana": 25, "Cooldown": 8000 @@ -102,7 +98,6 @@ { "Name": "Summon Imp", "HasCastBar": true, - "StopBeforeCast": true, "Key": "4", "MinMana": 122, "Requirement": "not Has Pet", @@ -110,7 +105,6 @@ }, { "Name": "Life Tap", - "StopBeforeCast": true, "Key": "8", "Charge": 2, "Requirements": ["Health%>70","Mana%<60"], diff --git a/Json/class/Warrior.json b/Json/class/Warrior.json index 4df9a9d0c..4e678c64e 100644 --- a/Json/class/Warrior.json +++ b/Json/class/Warrior.json @@ -75,7 +75,7 @@ }, { "Name": "Eat", - "StopBeforeCast": false, + "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<60", "DelayAfterCast": 1000, @@ -84,7 +84,7 @@ }, { "Name": "Well Fed", - "StopBeforeCast": false, + "StopBeforeCast": true, "Key": "7", "Requirement": "not Well Fed", "Cooldown": 1200, @@ -93,7 +93,6 @@ { "Name": "Sharpen Weapon 1", "HasCastBar": true, - "StopBeforeCast": true, "Key": "F1", "Cooldown": 1800, "Log": false From 77574ba7bcf6bc2379cd41ecfb99738d916a38f3 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 00:00:33 +0200 Subject: [PATCH 047/132] Rename 'Low Heath' and 'Eat' KeyAction names to 'Food' special name. --- Json/class/Mage.json | 2 +- Json/class/Mage12.json | 2 +- Json/class/Mage16.json | 2 +- Json/class/Mage1to4.json | 2 +- Json/class/Mage42.json | 2 +- Json/class/Mage44.json | 2 +- Json/class/MageAttendedGrind.json | 2 +- Json/class/MageGrind.json | 2 +- Json/class/MageRaid.json | 2 +- Json/class/Mage_19.json | 2 +- Json/class/Mage_25.json | 2 +- Json/class/Mage_30.json | 2 +- Json/class/Mage_herb.json | 2 +- Json/class/Mage_weeping.json | 2 +- Json/class/Rogue.json | 2 +- Json/class/Warrior.json | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 3c17ef554..93388ca12 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -67,7 +67,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 52f3b3fbf..6cdec590c 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -63,7 +63,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index 9bea0cf4b..2cf3bb7c4 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -54,7 +54,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 7ad396244..29b595b8f 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -49,7 +49,7 @@ "Requirement": "not Frost Armor" }, { - "Name": "Eat", + "Name": "Food", "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<50", diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index 3c17ef554..93388ca12 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -67,7 +67,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index 4e46be803..f044d9955 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -79,7 +79,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<70", diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index 05745cffd..99dab4253 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -74,7 +74,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index 603d0af39..9d794dfaa 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -69,7 +69,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index 1f22b47d7..1dc66bad9 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -67,7 +67,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index 97d2469a3..fa1f0104f 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -79,7 +79,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "AfterCastWaitBuff": true, "DelayAfterCast": 0, diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 6abf11775..3fbc33f6b 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -77,7 +77,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "AfterCastWaitBuff": true, "DelayAfterCast": 0, diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index 39c852d1f..09b3182c5 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -77,7 +77,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index f8246dde7..cf6d74668 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -78,7 +78,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index 068619cc9..88ff3aeb5 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -88,7 +88,7 @@ "Parallel": { "Sequence": [ { - "Name": "Low Health", + "Name": "Food", "StopBeforeCast": true, "Key": "6", "Requirement": "Health%<90", diff --git a/Json/class/Rogue.json b/Json/class/Rogue.json index b63283a3f..fbfa960ee 100644 --- a/Json/class/Rogue.json +++ b/Json/class/Rogue.json @@ -100,7 +100,7 @@ "Cost": 3 }, { - "Name": "Eat", + "Name": "Food", "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<60", diff --git a/Json/class/Warrior.json b/Json/class/Warrior.json index 4e678c64e..b9d2e3217 100644 --- a/Json/class/Warrior.json +++ b/Json/class/Warrior.json @@ -74,7 +74,7 @@ "Cost": 3 }, { - "Name": "Eat", + "Name": "Food", "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<60", From 9ac0d0883f2c294124c9a33ce2ed2994a6e7d1da Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 00:28:21 +0200 Subject: [PATCH 048/132] Fix: Shoot/Wanding replace in every profile - remove macro since its not needed. --- Core/ClassConfig/ClassConfiguration.cs | 2 ++ Core/Goals/CastingHandler.cs | 2 ++ Core/Input/ConfigurableInput.cs | 2 +- Json/class/Mage.json | 8 +++----- Json/class/Mage12.json | 2 +- Json/class/Mage1to4.json | 8 -------- Json/class/Mage42.json | 8 +++----- Json/class/Mage44.json | 8 +++----- Json/class/Mage54.json | 8 +++----- Json/class/Mage_1.json | 8 -------- Json/class/Mage_10.json | 8 +++----- Json/class/Mage_12.json | 8 +++----- Json/class/Mage_14_Arcane_Frost.json | 8 +++----- Json/class/Mage_19.json | 8 +++----- Json/class/Mage_25.json | 8 +++----- Json/class/Mage_30.json | 8 +++----- Json/class/Mage_4.json | 8 -------- Json/class/Mage_54_Frost_Arcane.json | 10 ++++------ Json/class/Mage_6.json | 8 +++----- Json/class/Priest.json | 5 +++-- Json/class/Warlock.json | 8 +++----- Json/class/Warlock_1.json | 8 +++----- Json/class/Warlock_10.json | 8 +++----- Json/class/Warlock_20.json | 8 +++----- Json/class/Warlock_20_shard_farm.json | 8 +++----- Json/class/Warlock_26_Immunity.json | 8 +++----- Json/class/Warlock_4.json | 8 +++----- Json/class/Warlock_8.json | 8 +++----- README.md | 5 ----- 29 files changed, 70 insertions(+), 134 deletions(-) diff --git a/Core/ClassConfig/ClassConfiguration.cs b/Core/ClassConfig/ClassConfiguration.cs index b93bc5952..a7b057027 100644 --- a/Core/ClassConfig/ClassConfiguration.cs +++ b/Core/ClassConfig/ClassConfiguration.cs @@ -121,6 +121,8 @@ public void Initialise(DataConfig dataConfig, AddonReader addonReader, Requireme AutoAttack.DelayAfterCast = 0; AutoAttack.Initialise(addonReader, requirementFactory, logger); + StopAttack.PressDuration = 10; + InitializeKeyActions(Pull, Interact, Approach, AutoAttack); InitializeKeyActions(Combat, Interact, Approach, AutoAttack); diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 07e43b9aa..3a2b9b874 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -259,6 +259,8 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) if (playerReader.IsShooting) { await input.TapStopAttack("Stop AutoRepeat Shoot"); + await input.TapStopAttack("Stop AutoRepeat Shoot"); + await wait.Update(1); (bool interrupted, double elapsedMs) = await wait.InterruptTask(GCD, () => playerReader.UsableAction.Is(item)); diff --git a/Core/Input/ConfigurableInput.cs b/Core/Input/ConfigurableInput.cs index c37f314f1..442ee8cce 100644 --- a/Core/Input/ConfigurableInput.cs +++ b/Core/Input/ConfigurableInput.cs @@ -53,7 +53,7 @@ public async Task TapClearTarget(string desc = "") public async Task TapStopAttack(string desc = "") { - await KeyPress(ClassConfig.StopAttack.ConsoleKey, defaultKeyPress, string.IsNullOrEmpty(desc) ? "" : $"TapStopAttack: {desc}"); + await KeyPress(ClassConfig.StopAttack.ConsoleKey, ClassConfig.StopAttack.PressDuration, string.IsNullOrEmpty(desc) ? "" : $"TapStopAttack: {desc}"); this.ClassConfig.StopAttack.SetClicked(); } diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 93388ca12..47f5470bf 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -50,12 +50,10 @@ "MinMana": 65 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 6cdec590c..4e31f2067 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -24,7 +24,7 @@ "DelaybeforeCast": 1000 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", "StopBeforeCast": true, "Cooldown": 3000, diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 29b595b8f..5ed9902ac 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -25,14 +25,6 @@ "Key": "2", "MinMana": 30 }, - { - "Name": "shoot", - "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false - }, { "Name": "AutoAttack", "Cooldown": 3000, diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index 93388ca12..47f5470bf 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -50,12 +50,10 @@ "MinMana": 65 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index f044d9955..69e48f692 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -62,12 +62,10 @@ "MinMana": 65 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage54.json b/Json/class/Mage54.json index 7f270c0fb..8a8338f19 100644 --- a/Json/class/Mage54.json +++ b/Json/class/Mage54.json @@ -54,12 +54,10 @@ "Requirements": ["TargetHealth%>35"] }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_1.json b/Json/class/Mage_1.json index ad9eaf941..d03fe4368 100644 --- a/Json/class/Mage_1.json +++ b/Json/class/Mage_1.json @@ -25,14 +25,6 @@ "MinMana": 30, "Requirement": "TargetHealth%>10" }, - { - "Name": "shoot", - "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false - }, { "Name": "AutoAttack", "Cooldown": 3000, diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index f0d412490..813ba0cdb 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -41,12 +41,10 @@ "Requirements": ["TargetHealth%>35"] }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12.json index 508b7ed04..67a8a632d 100644 --- a/Json/class/Mage_12.json +++ b/Json/class/Mage_12.json @@ -41,12 +41,10 @@ "Requirements": ["TargetHealth%>35"] }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index 0538c53b8..c19b9aee4 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -43,12 +43,10 @@ "Requirements": ["TargetHealth%>35"] }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "Cooldown": 3000, - "StopBeforeCast": true, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index fa1f0104f..7a804f321 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -62,12 +62,10 @@ "MinMana": 65 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 3fbc33f6b..85c2f36b5 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -60,12 +60,10 @@ "MinMana": 65 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index 09b3182c5..a1ec552c4 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -60,12 +60,10 @@ "MinMana": 65 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_4.json b/Json/class/Mage_4.json index 7ca5e98c5..e8d6ef427 100644 --- a/Json/class/Mage_4.json +++ b/Json/class/Mage_4.json @@ -25,14 +25,6 @@ "MinMana": 30, "Requirement": "TargetHealth%>10" }, - { - "Name": "shoot", - "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false - }, { "Name": "AutoAttack", "Cooldown": 3000, diff --git a/Json/class/Mage_54_Frost_Arcane.json b/Json/class/Mage_54_Frost_Arcane.json index cf2125a4b..5a28ea92e 100644 --- a/Json/class/Mage_54_Frost_Arcane.json +++ b/Json/class/Mage_54_Frost_Arcane.json @@ -74,13 +74,11 @@ "MinMana": 500 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "Cooldown": 1000, - "StopBeforeCast": true, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false - } + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] + }, ] }, "Parallel": { diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index 2c1c1008e..ffc15b545 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -33,12 +33,10 @@ "MinMana": 45 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Priest.json b/Json/class/Priest.json index 9d2d25383..6f33d4961 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -23,8 +23,9 @@ }, { "Name": "Shoot", - "StopBeforeCast": true, - "Key": "0" + "Key": "0", + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] } ] }, diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index 9bebce6be..f3f49b2aa 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -98,12 +98,10 @@ "Log": false }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index 1ff34dbc4..e57b3c475 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -25,12 +25,10 @@ "MinMana": 25 }, { - "Name": "shoot", - "StopBeforeCast": true, + "Name": "Shoot", "Key": "0", - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index c27c1b7a4..fc96f9f50 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -63,12 +63,10 @@ "Log": false }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 07e7bbd09..933e937b7 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -81,12 +81,10 @@ "Cooldown": 8000 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index 197b5c0e3..a4456a725 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -84,12 +84,10 @@ "Cooldown": 8000 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index 976030299..699824e62 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -92,12 +92,10 @@ "Cooldown": 8000 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index 1018e5080..58215a633 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -42,12 +42,10 @@ "Cooldown": 8000 }, { - "Name": "shoot", - "StopBeforeCast": true, + "Name": "Shoot", "Key": "0", - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index a079534cd..095614851 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -50,12 +50,10 @@ "Cooldown": 8000 }, { - "Name": "shoot", + "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], - "Log": false + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"] }, { "Name": "AutoAttack", diff --git a/README.md b/README.md index 8eaea26ee..78d323e14 100644 --- a/README.md +++ b/README.md @@ -342,11 +342,6 @@ Repair macro example: /tar Vargus /script SelectGossipOption(1) -Spammable wand macro `shoot` in many profiles - - /#showtooltip - /cast !shoot - Warlock `pull` macro used in warlock profiles #showtooltip From 071dc4590428747b33be8be5e4ae27f4dd849eb5 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 00:34:36 +0200 Subject: [PATCH 049/132] Hunters: Remove 'autoshot' macro since its no more needed. --- Json/class/Hunter_1.json | 4 ++-- Json/class/Hunter_10.json | 2 +- Json/class/Hunter_18.json | 2 +- Json/class/Hunter_26.json | 2 +- Json/class/Hunter_30.json | 2 +- Json/class/Hunter_4.json | 4 ++-- Json/class/Hunter_6.json | 2 +- README.md | 5 ----- 8 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Json/class/Hunter_1.json b/Json/class/Hunter_1.json index 8e21c5477..8e2abbbdb 100644 --- a/Json/class/Hunter_1.json +++ b/Json/class/Hunter_1.json @@ -4,7 +4,7 @@ "Pull": { "Sequence": [ { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] @@ -23,7 +23,7 @@ "Combat": { "Sequence": [ { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "not InMeleeRange", "not AutoShot", "HasAmmo"] diff --git a/Json/class/Hunter_10.json b/Json/class/Hunter_10.json index 1e1a977e9..870e17897 100644 --- a/Json/class/Hunter_10.json +++ b/Json/class/Hunter_10.json @@ -45,7 +45,7 @@ "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_18.json b/Json/class/Hunter_18.json index d52b5f2fd..4ef15091b 100644 --- a/Json/class/Hunter_18.json +++ b/Json/class/Hunter_18.json @@ -44,7 +44,7 @@ "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "Mana%>55", "not Serpent Sting"] }, { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_26.json b/Json/class/Hunter_26.json index 481fd19b4..d19c801e2 100644 --- a/Json/class/Hunter_26.json +++ b/Json/class/Hunter_26.json @@ -53,7 +53,7 @@ "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "TargetHealth%>90"] }, { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_30.json b/Json/class/Hunter_30.json index f8ec778da..9285de2b8 100644 --- a/Json/class/Hunter_30.json +++ b/Json/class/Hunter_30.json @@ -60,7 +60,7 @@ "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "TargetHealth%>90"] }, { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_4.json b/Json/class/Hunter_4.json index d2ae09a6b..62141567d 100644 --- a/Json/class/Hunter_4.json +++ b/Json/class/Hunter_4.json @@ -11,7 +11,7 @@ "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] @@ -29,7 +29,7 @@ "Combat": { "Sequence": [ { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/Json/class/Hunter_6.json b/Json/class/Hunter_6.json index acc653732..0907c8f22 100644 --- a/Json/class/Hunter_6.json +++ b/Json/class/Hunter_6.json @@ -30,7 +30,7 @@ "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { - "Name": "autoshot", + "Name": "Auto Shot", "HasCastBar": true, "Key": "3", "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not AutoShot"] diff --git a/README.md b/README.md index 78d323e14..5e683225f 100644 --- a/README.md +++ b/README.md @@ -358,11 +358,6 @@ Warlock `heal` macro used in warlock profiles. /use Major Healthstone /use Master Healthstone -Hunter `autoshot` spammable Auto Shoot macro - - #showtooltip - /cast !Auto Shot - Hunter `feedpet` macro replace `Roasted Quail` with the proper diet #showtooltip From 18d25d97cf8578e4408d5f80c32a07cdd68c269c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 00:37:55 +0200 Subject: [PATCH 050/132] Warlock: 'pull' macro -> Immolate no macro needed. update heal macro --- Json/class/Warlock.json | 2 +- Json/class/Warlock_10.json | 2 +- Json/class/Warlock_20.json | 2 +- Json/class/Warlock_20_shard_farm.json | 2 +- Json/class/Warlock_4.json | 2 +- Json/class/Warlock_8.json | 2 +- README.md | 8 ++------ 7 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index f3f49b2aa..60776205d 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -13,7 +13,7 @@ "Pull": { "Sequence": [ { - "Name": "pull", + "Name": "Immolate", "Key": "5", "HasCastBar": true, "ResetOnNewTarget": true, diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index fc96f9f50..11071e81f 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -9,7 +9,7 @@ "Pull": { "Sequence": [ { - "Name": "pull", + "Name": "Immolate", "HasCastBar": true, "Key": "5", "MinMana": 25 diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 933e937b7..0e4dcac8d 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -12,7 +12,7 @@ "Pull": { "Sequence": [ { - "Name": "pull", + "Name": "Immolate", "Key": "5", "HasCastBar": true, "ResetOnNewTarget": true, diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index a4456a725..bd19a1155 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -18,7 +18,7 @@ "Pull": { "Sequence": [ { - "Name": "pull", + "Name": "Immolate", "Key": "5", "HasCastBar": true, "ResetOnNewTarget": true, diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index 58215a633..4bafaa07b 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -9,7 +9,7 @@ "Pull": { "Sequence": [ { - "Name": "pull", + "Name": "Immolate", "HasCastBar": true, "Key": "5", "MinMana": 25 diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index 095614851..ffcd556c9 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -9,7 +9,7 @@ "Pull": { "Sequence": [ { - "Name": "pull", + "Name": "Immolate", "HasCastBar": true, "Key": "5", "MinMana": 25 diff --git a/README.md b/README.md index 5e683225f..7415c2c00 100644 --- a/README.md +++ b/README.md @@ -342,15 +342,10 @@ Repair macro example: /tar Vargus /script SelectGossipOption(1) -Warlock `pull` macro used in warlock profiles - - #showtooltip - /cast Immolate - Warlock `heal` macro used in warlock profiles. #showtooltip - /cast Create Healthstone + /cast [nocombat] Create Healthstone /use Minor Healthstone /use Lesser Healthstone /use Healthstone @@ -358,6 +353,7 @@ Warlock `heal` macro used in warlock profiles. /use Major Healthstone /use Master Healthstone + Hunter `feedpet` macro replace `Roasted Quail` with the proper diet #showtooltip From 98d74b60b2e6d482c3c5f4f60b2a1973e433b18b Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 01:02:29 +0200 Subject: [PATCH 051/132] Hunter: Reduce Serpent Sting cooldown --- Json/class/Hunter_10.json | 2 +- Json/class/Hunter_18.json | 2 +- Json/class/Hunter_26.json | 2 +- Json/class/Hunter_30.json | 2 +- Json/class/Hunter_4.json | 2 +- Json/class/Hunter_6.json | 8 -------- 6 files changed, 5 insertions(+), 13 deletions(-) diff --git a/Json/class/Hunter_10.json b/Json/class/Hunter_10.json index 870e17897..176c0abe8 100644 --- a/Json/class/Hunter_10.json +++ b/Json/class/Hunter_10.json @@ -41,7 +41,7 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15000, + "Cooldown": 4000, "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { diff --git a/Json/class/Hunter_18.json b/Json/class/Hunter_18.json index 4ef15091b..23e704fb4 100644 --- a/Json/class/Hunter_18.json +++ b/Json/class/Hunter_18.json @@ -40,7 +40,7 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15000, + "Cooldown": 4000, "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "Mana%>55", "not Serpent Sting"] }, { diff --git a/Json/class/Hunter_26.json b/Json/class/Hunter_26.json index d19c801e2..21206ee7b 100644 --- a/Json/class/Hunter_26.json +++ b/Json/class/Hunter_26.json @@ -41,7 +41,7 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15000, + "Cooldown": 4000, "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting", "Mana%>55"] }, { diff --git a/Json/class/Hunter_30.json b/Json/class/Hunter_30.json index 9285de2b8..ba2fe35dd 100644 --- a/Json/class/Hunter_30.json +++ b/Json/class/Hunter_30.json @@ -48,7 +48,7 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15000, + "Cooldown": 4000, "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting", "Mana%>55"] }, { diff --git a/Json/class/Hunter_4.json b/Json/class/Hunter_4.json index 62141567d..499a0f50c 100644 --- a/Json/class/Hunter_4.json +++ b/Json/class/Hunter_4.json @@ -7,7 +7,7 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15000, + "Cooldown": 2000, "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { diff --git a/Json/class/Hunter_6.json b/Json/class/Hunter_6.json index 0907c8f22..9cd542275 100644 --- a/Json/class/Hunter_6.json +++ b/Json/class/Hunter_6.json @@ -7,7 +7,6 @@ "Name": "Serpent Sting", "Key": "2", "MinMana": 15, - "Cooldown": 15000, "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] }, { @@ -22,13 +21,6 @@ }, "Combat": { "Sequence": [ - { - "Name": "Serpent Sting", - "Key": "2", - "MinMana": 15, - "Cooldown": 15000, - "Requirements": ["HasRangedWeapon", "HasAmmo", "not InMeleeRange", "not Serpent Sting"] - }, { "Name": "Auto Shot", "HasCastBar": true, From 7c99bdfca2bead5dd62a2794f59b0cbb95a9143f Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 01:09:19 +0200 Subject: [PATCH 052/132] HasMainHandEnchant and HasOffHandEnchant no longer requires 'DelayAfterCast' in order to prevent execuing twice in a row. --- Core/Goals/CastingHandler.cs | 13 +++++++++---- Json/class/Rogue_20.json | 2 -- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 3a2b9b874..4e11cc4be 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -1,4 +1,4 @@ -using SharedLib.NpcFinder; +using SharedLib.NpcFinder; using Microsoft.Extensions.Logging; using System; using System.Diagnostics; @@ -21,7 +21,10 @@ public class CastingHandler private readonly StopMoving stopMoving; private readonly KeyAction defaultKeyAction = new KeyAction(); + private const int GCD = 1500; + private const int SpellQueueTimeMs = 325; + private const int MaxWaitCastTimeMs = GCD; private const int MaxWaitBuffTimeMs = GCD; private const int MaxCastTimeMs = 15000; @@ -164,10 +167,12 @@ private async Task CastInstant(KeyAction item) if (item.RequirementObjects.Any()) { - (bool firstReq, double firstReqElapsedMs) = await wait.InterruptTask(100, - () => !item.CanRun() || !playerReader.UsableAction.Is(item) + // Rockbiter Weapon -> !item.CanRun() + // Serpent Sting -> !item.CanRun() && !playerReader.UsableAction.Is(item) + (bool firstReq, double firstReqElapsedMs) = await wait.InterruptTask(SpellQueueTimeMs, + () => !item.CanRun() ); - item.LogInformation($" ... instant interrupt: {!firstReq} | CanRun:{item.CanRun()} | Usable:{playerReader.UsableAction.Is(item)} | Delay: {firstReqElapsedMs}ms"); + item.LogInformation($" ... instant interrupt: {!firstReq} | CanRun:{item.CanRun()} | Delay: {firstReqElapsedMs}ms"); } return true; diff --git a/Json/class/Rogue_20.json b/Json/class/Rogue_20.json index 98f4fb34f..e1521b3e2 100644 --- a/Json/class/Rogue_20.json +++ b/Json/class/Rogue_20.json @@ -75,14 +75,12 @@ { "Name": "poisonmh", "HasCastbar": true, - "DelayAfterCast": 500, "Key": "N2", "Requirement": "not HasMainHandEnchant" }, { "Name": "poisonoh", "HasCastbar": true, - "DelayAfterCast": 500, "Key": "N3", "Requirement": "not HasOffHandEnchant" }, From acecd1ae5182a0e5749f5d9969e0c08a1470d911 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 01:26:40 +0200 Subject: [PATCH 053/132] Hunter_62 remove some of the odd Cooldown conditions --- Json/class/Hunter_62.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/Json/class/Hunter_62.json b/Json/class/Hunter_62.json index 821d327ea..0e98c1cf8 100644 --- a/Json/class/Hunter_62.json +++ b/Json/class/Hunter_62.json @@ -45,7 +45,6 @@ "Name": "Intimidation", "Key": "N4", "MinMana": 15, - "Cooldown": 60000, "WhenUsable": true, "Requirements": ["Has Pet", "TargetHealth%<70||TargetCastingSpell"] }, @@ -53,7 +52,6 @@ "Name": "Bestial Wrath", "Key": "N2", "MinMana": 15, - "Cooldown": 8000, "WhenUsable": true, "Requirements": ["not InMeleeRange", "HasRangedWeapon", "HasAmmo", "Has Pet", "TargetHealth%>85"] }, @@ -61,7 +59,6 @@ "Name": "Rapid Fire", "Key": "N3", "MinMana": 15, - "Cooldown": 8000, "WhenUsable": true, "Requirements": ["not InMeleeRange", "HasRangedWeapon", "HasAmmo", "TargetHealth%>75"] }, From 0ecc8c865bd3b20e00fe250d7d36056521b76065 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 11:39:55 +0200 Subject: [PATCH 054/132] Relocate timers to the end cells --- Addons/DataToColor/DataToColor.lua | 7 +++++-- Addons/DataToColor/DataToColor.toc | 2 +- Core/Addon/PlayerReader.cs | 5 +++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Addons/DataToColor/DataToColor.lua b/Addons/DataToColor/DataToColor.lua index 5e77389ca..ce8b16fda 100644 --- a/Addons/DataToColor/DataToColor.lua +++ b/Addons/DataToColor/DataToColor.lua @@ -50,6 +50,7 @@ DataToColor.lastAutoShot = 0 DataToColor.lastMainHandMeleeSwing = 0 DataToColor.lastCastEvent = 0 DataToColor.lastCastSpellId = 0 +DataToColor.lastCastId = 0 DataToColor.targetChanged = true @@ -499,8 +500,10 @@ function DataToColor:CreateFrames(n) MakePixelSquareArrI(DataToColor:getGuid(DataToColor.C.unitPetTarget), 69) -- pet target -- Timers - MakePixelSquareArrI(DataToColor.globalTime, 70) - MakePixelSquareArrI(DataToColor.lastLoot, 71) + MakePixelSquareArrI(DataToColor.lastLoot, 97) + MakePixelSquareArrI(DataToColor.globalTime, 98) + + -- 99 Reserved DataToColor:ConsumeChanges() diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index 806c3a5ae..d5403374d 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.29 +## Version: 1.1.30 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Core/Addon/PlayerReader.cs b/Core/Addon/PlayerReader.cs index f051a2e0e..629f529de 100644 --- a/Core/Addon/PlayerReader.cs +++ b/Core/Addon/PlayerReader.cs @@ -175,8 +175,9 @@ public string Target public int PetTargetGuid => (int)reader.GetLongAtCell(69); public bool PetHasTarget => PetTargetGuid != 0; - public RecordInt GlobalTime = new RecordInt(70); - public long LastLootTime => reader.GetLongAtCell(71); + public long LastLootTime => reader.GetLongAtCell(97); + + public RecordInt GlobalTime = new RecordInt(98); // https://wowpedia.fandom.com/wiki/Mob_experience public bool TargetYieldXP => PlayerLevel switch From 90a8c753f68a9bfb0f52071e8bb9b7e83c8dc8a1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 12:07:15 +0200 Subject: [PATCH 055/132] Take advantage of the UnitCastingInfo and UnitChannelInfo to distinguish two consecutive successful same spell cast. --- Addons/DataToColor/DataToColor.lua | 8 +++++++- Addons/DataToColor/Query.lua | 12 ++++++++++-- Core/Addon/PlayerReader.cs | 2 ++ Core/Goals/CastingHandler.cs | 11 ++++++----- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Addons/DataToColor/DataToColor.lua b/Addons/DataToColor/DataToColor.lua index ce8b16fda..131bc9821 100644 --- a/Addons/DataToColor/DataToColor.lua +++ b/Addons/DataToColor/DataToColor.lua @@ -50,7 +50,9 @@ DataToColor.lastAutoShot = 0 DataToColor.lastMainHandMeleeSwing = 0 DataToColor.lastCastEvent = 0 DataToColor.lastCastSpellId = 0 -DataToColor.lastCastId = 0 + +DataToColor.lastCastStartTime = 0 +DataToColor.CastNum = 0 DataToColor.targetChanged = true @@ -181,6 +183,9 @@ function DataToColor:Reset() DataToColor.lastCastEvent = 0 DataToColor.lastCastSpellId = 0 + DataToColor.lastCastStartTime = 0 + DataToColor.CastNum = 0 + playerDebuffCount = 0 playerBuffCount = 0 targetDebuffCount = 0 @@ -498,6 +503,7 @@ function DataToColor:CreateFrames(n) MakePixelSquareArrI(DataToColor:getGuid(DataToColor.C.unitPet), 68) -- pet guid MakePixelSquareArrI(DataToColor:getGuid(DataToColor.C.unitPetTarget), 69) -- pet target + MakePixelSquareArrI(DataToColor.CastNum, 70) -- Timers MakePixelSquareArrI(DataToColor.lastLoot, 97) diff --git a/Addons/DataToColor/Query.lua b/Addons/DataToColor/Query.lua index 95cd84bd7..384199938 100644 --- a/Addons/DataToColor/Query.lua +++ b/Addons/DataToColor/Query.lua @@ -99,12 +99,20 @@ function DataToColor:GetTargetName(partition) end function DataToColor:CastingInfoSpellId(target) - local _, _, _, _, _, _, _, spellID = UnitCastingInfo(target) + local _, _, _, _, startTime, _, _, spellID = UnitCastingInfo(target) if spellID ~= nil then + if startTime ~= DataToColor.lastCastStartTime then + DataToColor.lastCastStartTime = startTime + DataToColor.CastNum = DataToColor.CastNum + 1 + end return spellID end - _, _, _, _, _, _, spellID = UnitChannelInfo(target) + _, _, _, startTime, _, _, spellID = UnitChannelInfo(target) if spellID ~= nil then + if startTime ~= DataToColor.lastCastStartTime then + DataToColor.lastCastStartTime = startTime + DataToColor.CastNum = DataToColor.CastNum + 1 + end return spellID end return 0 diff --git a/Core/Addon/PlayerReader.cs b/Core/Addon/PlayerReader.cs index 629f529de..e2aa262a8 100644 --- a/Core/Addon/PlayerReader.cs +++ b/Core/Addon/PlayerReader.cs @@ -175,6 +175,8 @@ public string Target public int PetTargetGuid => (int)reader.GetLongAtCell(69); public bool PetHasTarget => PetTargetGuid != 0; + public int CastCount => (int)reader.GetLongAtCell(70); + public long LastLootTime => reader.GetLongAtCell(97); public RecordInt GlobalTime = new RecordInt(98); diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 4e11cc4be..2443b005f 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -167,8 +167,6 @@ private async Task CastInstant(KeyAction item) if (item.RequirementObjects.Any()) { - // Rockbiter Weapon -> !item.CanRun() - // Serpent Sting -> !item.CanRun() && !playerReader.UsableAction.Is(item) (bool firstReq, double firstReqElapsedMs) = await wait.InterruptTask(SpellQueueTimeMs, () => !item.CanRun() ); @@ -195,13 +193,16 @@ private async Task CastCastbar(KeyAction item) bool beforeHasTarget = playerReader.HasTarget; int beforeCastEventValue = playerReader.CastEvent.Value; int beforeSpellId = playerReader.CastSpellId.Value; + int beforeCastCount = playerReader.CastCount; await PressKeyAction(item); (bool input, double inputElapsedMs) = await wait.InterruptTask(MaxWaitCastTimeMs, interrupt: () => - beforeCastEventValue != playerReader.CastEvent.Value // this worked really well - || beforeSpellId != playerReader.CastSpellId.Value); + beforeCastEventValue != playerReader.CastEvent.Value || + beforeSpellId != playerReader.CastSpellId.Value || + beforeCastCount != playerReader.CastCount + ); if (!input) { @@ -213,7 +214,7 @@ private async Task CastCastbar(KeyAction item) return false; } - item.LogInformation($" ... casting: {playerReader.IsCasting} -- usable: {playerReader.UsableAction.Is(item)} -- {(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value}"); + item.LogInformation($" ... casting: {playerReader.IsCasting} -- count:{playerReader.CastCount} -- usable: {playerReader.UsableAction.Is(item)} -- {(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value}"); if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value)) { From 7d6479d3543ab035a4d15359635e77825766da02 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 12:32:03 +0200 Subject: [PATCH 056/132] Reset ActionBarCostReader --- Core/Actionbar/ActionBarCostReader.cs | 5 +++++ Core/Addon/AddonReader.cs | 1 + 2 files changed, 6 insertions(+) diff --git a/Core/Actionbar/ActionBarCostReader.cs b/Core/Actionbar/ActionBarCostReader.cs index 08992cd59..936380a41 100644 --- a/Core/Actionbar/ActionBarCostReader.cs +++ b/Core/Actionbar/ActionBarCostReader.cs @@ -62,6 +62,11 @@ public void Read() } } + public void Reset() + { + dict.Clear(); + } + public Tuple GetCostByActionBarSlot(PlayerReader playerReader, KeyAction keyAction) { if (KeyReader.ActionBarSlotMap.TryGetValue(keyAction.Key, out int slot)) diff --git a/Core/Addon/AddonReader.cs b/Core/Addon/AddonReader.cs index a6657ca50..d01e481f2 100644 --- a/Core/Addon/AddonReader.cs +++ b/Core/Addon/AddonReader.cs @@ -106,6 +106,7 @@ public void Refresh() public void Reset() { PlayerReader.Initialized = false; + ActionBarCostReader.Reset(); PlayerReader.Reset(); } From 5d3b3ceeee0669d213940513567a7f7b555a9769 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 13:37:21 +0200 Subject: [PATCH 057/132] Only Count the players casts --- Addons/DataToColor/DataToColor.toc | 2 +- Addons/DataToColor/Query.lua | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index d5403374d..f5dede330 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.30 +## Version: 1.1.31 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Addons/DataToColor/Query.lua b/Addons/DataToColor/Query.lua index 384199938..14b9900f7 100644 --- a/Addons/DataToColor/Query.lua +++ b/Addons/DataToColor/Query.lua @@ -98,18 +98,18 @@ function DataToColor:GetTargetName(partition) return 0 end -function DataToColor:CastingInfoSpellId(target) - local _, _, _, _, startTime, _, _, spellID = UnitCastingInfo(target) +function DataToColor:CastingInfoSpellId(unitId) + local _, _, _, _, startTime, _, _, spellID = UnitCastingInfo(unitId) if spellID ~= nil then - if startTime ~= DataToColor.lastCastStartTime then + if unitId == DataToColor.C.unitPlayer and startTime ~= DataToColor.lastCastStartTime then DataToColor.lastCastStartTime = startTime DataToColor.CastNum = DataToColor.CastNum + 1 end return spellID end - _, _, _, startTime, _, _, spellID = UnitChannelInfo(target) + _, _, _, startTime, _, _, spellID = UnitChannelInfo(unitId) if spellID ~= nil then - if startTime ~= DataToColor.lastCastStartTime then + if unitId == DataToColor.C.unitPlayer and startTime ~= DataToColor.lastCastStartTime then DataToColor.lastCastStartTime = startTime DataToColor.CastNum = DataToColor.CastNum + 1 end From ad59da53e408637fba2f85c0aa69df5daf9bb5a5 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 17:08:38 +0200 Subject: [PATCH 058/132] ActionBarBits: Make sure to use the corrent offset when calculating the index. Previusly used the currently active Form which was bad. --- Core/Actionbar/ActionBarBits.cs | 2 +- Core/Addon/Stance.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/Actionbar/ActionBarBits.cs b/Core/Actionbar/ActionBarBits.cs index c88e10c7f..d9ab26164 100644 --- a/Core/Actionbar/ActionBarBits.cs +++ b/Core/Actionbar/ActionBarBits.cs @@ -21,7 +21,7 @@ public bool Is(KeyAction item) { if (KeyReader.ActionBarSlotMap.TryGetValue(item.Key, out int slot)) { - slot += Stance.RuntimeSlotToActionBar(playerReader, slot); + slot += Stance.RuntimeSlotToActionBar(item, playerReader, slot); int array = (int)(slot / 24); return bits[array].IsBitSet((slot - 1) % 24); diff --git a/Core/Addon/Stance.cs b/Core/Addon/Stance.cs index 3238b234a..d258c8924 100644 --- a/Core/Addon/Stance.cs +++ b/Core/Addon/Stance.cs @@ -68,12 +68,12 @@ public Stance(long value) _ => Form.None }; - public static int RuntimeSlotToActionBar(PlayerReader playerReader, int slot) + public static int RuntimeSlotToActionBar(KeyAction item, PlayerReader playerReader, int slot) { - if (slot > 12 || playerReader.Form == Form.None) + if (slot > 12 || item.FormEnum == Form.None) return 0; - return FormToActionBar(playerReader.PlayerClass, playerReader.Form); + return FormToActionBar(playerReader.PlayerClass, item.FormEnum); } public static int FormToActionBar(PlayerClassEnum playerClass, Form form) From ed469fb0cd441a3c7e6863c91245f455c714318d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 17:12:17 +0200 Subject: [PATCH 059/132] Druid and Warrior: When using multiple From/Stance and the same ConsoleKey is bound to multiple ActionbarSlot the Cooldown was incorrectly used. To fix this instead of using the raw ConsoleKey, create a hash with ConsoleKey+Form. This way two KeyAction can share the same button and can preserve its state. --- BlazorServer/Pages/GoapGoalView.razor | 5 ++--- Core/ClassConfig/KeyAction.cs | 28 +++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/BlazorServer/Pages/GoapGoalView.razor b/BlazorServer/Pages/GoapGoalView.razor index 45749cbe8..abe554f98 100644 --- a/BlazorServer/Pages/GoapGoalView.razor +++ b/BlazorServer/Pages/GoapGoalView.razor @@ -27,11 +27,10 @@ @if (this.goal.Keys != null) { - var lastKeyClicked = Core.KeyAction.LastKeyClicked(); - + int lastKeyClicked = Core.KeyAction.LastKeyClicked(); foreach (var key in this.goal.Keys) { - + @key.Name [@key.ConsoleKey] diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index 26a1db39f..d0f975765 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -60,14 +60,16 @@ public class KeyAction public List RequirementObjects { get; } = new List(); - protected static ConcurrentDictionary LastClicked { get; } = new ConcurrentDictionary(); + public int ConsoleKeyFormHash; - public static ConsoleKey LastKeyClicked() + protected static ConcurrentDictionary LastClicked { get; } = new ConcurrentDictionary(); + + public static int LastKeyClicked() { var last = LastClicked.OrderByDescending(s => s.Value).FirstOrDefault(); if (last.Key == 0 || (DateTime.Now - last.Value).TotalSeconds > 2) { - return ConsoleKey.NoName; + return (int)ConsoleKey.NoName; } return last.Key; } @@ -109,6 +111,8 @@ public void Initialise(AddonReader addonReader, RequirementFactory requirementFa } } + ConsoleKeyFormHash = ((int)FormEnum * 1000) + (int)ConsoleKey; + UpdateMinResourceRequirement(playerReader, addonReader.ActionBarCostReader); requirementFactory.InitialiseRequirements(this); @@ -147,12 +151,12 @@ public float GetCooldownRemaining() { try { - if (!LastClicked.ContainsKey(this.ConsoleKey)) + if (!LastClicked.ContainsKey(ConsoleKeyFormHash)) { return 0; } - var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[this.ConsoleKey]).TotalMilliseconds); + var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[ConsoleKeyFormHash]).TotalMilliseconds); return remaining < 0 ? 0 : remaining; } @@ -172,13 +176,13 @@ internal void SetClicked() LastClickPostion = this.playerReader.PlayerLocation; } - if (LastClicked.ContainsKey(this.ConsoleKey)) + if (LastClicked.ContainsKey(ConsoleKeyFormHash)) { - LastClicked[this.ConsoleKey] = DateTime.Now; + LastClicked[ConsoleKeyFormHash] = DateTime.Now; } else { - LastClicked.TryAdd(this.ConsoleKey, DateTime.Now); + LastClicked.TryAdd(ConsoleKeyFormHash, DateTime.Now); } } catch (Exception ex) @@ -187,13 +191,13 @@ internal void SetClicked() } } - public double MillisecondsSinceLastClick => LastClicked.ContainsKey(this.ConsoleKey) ? (DateTime.Now - LastClicked[this.ConsoleKey]).TotalMilliseconds : double.MaxValue; + public double MillisecondsSinceLastClick => LastClicked.ContainsKey(ConsoleKeyFormHash) ? (DateTime.Now - LastClicked[ConsoleKeyFormHash]).TotalMilliseconds : double.MaxValue; internal void ResetCooldown() { - if (LastClicked.ContainsKey(ConsoleKey)) + if (LastClicked.ContainsKey(ConsoleKeyFormHash)) { - LastClicked.TryRemove(ConsoleKey, out _); + LastClicked.TryRemove(ConsoleKeyFormHash, out _); } } From 7e9dcbddaac58b8eb93d370dd9948838be82ffd9 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 19:25:08 +0200 Subject: [PATCH 060/132] Stance: properly calculate RuntimeSlotToActionBar! --- Core/Actionbar/ActionBarBits.cs | 11 +++++++++++ Core/Addon/Stance.cs | 8 +++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Core/Actionbar/ActionBarBits.cs b/Core/Actionbar/ActionBarBits.cs index d9ab26164..19138335b 100644 --- a/Core/Actionbar/ActionBarBits.cs +++ b/Core/Actionbar/ActionBarBits.cs @@ -29,5 +29,16 @@ public bool Is(KeyAction item) return false; } + + public int Num(KeyAction item) + { + if (KeyReader.ActionBarSlotMap.TryGetValue(item.Key, out int slot)) + { + slot += Stance.RuntimeSlotToActionBar(item, playerReader, slot); + return slot; + } + + return 0; + } } } diff --git a/Core/Addon/Stance.cs b/Core/Addon/Stance.cs index d258c8924..840db886e 100644 --- a/Core/Addon/Stance.cs +++ b/Core/Addon/Stance.cs @@ -70,10 +70,12 @@ public Stance(long value) public static int RuntimeSlotToActionBar(KeyAction item, PlayerReader playerReader, int slot) { - if (slot > 12 || item.FormEnum == Form.None) - return 0; + if (slot <= 12) + { + return FormToActionBar(playerReader.PlayerClass, item.HasFormRequirement() ? item.FormEnum : playerReader.Form); + } - return FormToActionBar(playerReader.PlayerClass, item.FormEnum); + return 0; } public static int FormToActionBar(PlayerClassEnum playerClass, Form form) From ad0e5784f271a5af87c4cac64527861899e0b34c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 19:30:46 +0200 Subject: [PATCH 061/132] Rethink how the From/Stance change works in order to preserve the current ClassConfig setup. If a higher priority KeyAction could be used but the player is not in the desired Form then switch to form(if can) and then check again if the higher prio KeyAction becomes usable. If not then just remain the in the Form. That way dont have to specify in the ClassConfig sequence when to switch form. it should work out of the box. --- Core/ClassConfig/KeyAction.cs | 27 +++++++++++++++++++----- Core/Goals/CastingHandler.cs | 29 ++++++++++++++------------ Core/Requirement/RequirementFactory.cs | 22 +++++++++++-------- 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index d0f975765..c7d389749 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -92,7 +92,7 @@ public void Initialise(AddonReader addonReader, RequirementFactory requirementFa Requirements.Add(this.Requirement); } - if (!string.IsNullOrEmpty(Form)) + if (HasFormRequirement()) { if (Enum.TryParse(typeof(Form), Form, out var desiredForm)) { @@ -122,7 +122,7 @@ public void InitialiseForm(AddonReader addonReader, RequirementFactory requireme { Initialise(addonReader, requirementFactory, logger); - if (!string.IsNullOrEmpty(Form)) + if (HasFormRequirement()) { if (addonReader.PlayerReader.FormCost.ContainsKey(FormEnum)) { @@ -130,7 +130,7 @@ public void InitialiseForm(AddonReader addonReader, RequirementFactory requireme } addonReader.PlayerReader.FormCost.Add(FormEnum, MinMana); - LogInformation($"Added {FormEnum} to FormCost with {MinMana}"); + logger.LogInformation($"[{Name}] Added {FormEnum} to FormCost with {MinMana}"); } } @@ -167,6 +167,12 @@ public float GetCooldownRemaining() } } + public bool CanDoFormChangeAndHaveMinimumMana() + { + return playerReader != null && + (playerReader.FormCost.ContainsKey(FormEnum) && playerReader.ManaCurrent >= playerReader.FormCost[FormEnum] + MinMana); + } + internal void SetClicked() { try @@ -246,6 +252,11 @@ public bool CanRun() return !this.RequirementObjects.Any(r => !r.HasRequirement()); } + public bool HasFormRequirement() + { + return !string.IsNullOrEmpty(Form); + } + private void UpdateMinResourceRequirement(PlayerReader playerReader, ActionBarCostReader actionBarCostReader) { var tuple = actionBarCostReader.GetCostByActionBarSlot(playerReader, this); @@ -268,7 +279,13 @@ private void UpdateMinResourceRequirement(PlayerReader playerReader, ActionBarCo break; } - logger.LogInformation($"[{Name}] Update {tuple.Item1} cost to {tuple.Item2} from {oldValue}"); + int formCost = 0; + if (HasFormRequirement() && FormEnum != Core.Form.None && playerReader.FormCost.ContainsKey(FormEnum)) + { + formCost = playerReader.FormCost[FormEnum]; + } + + logger.LogInformation($"[{Name}] Update {tuple.Item1} cost to {tuple.Item2} from {oldValue}" + (formCost > 0 ? $" +{formCost} Mana to change {FormEnum} Form" : "")); } } diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 2443b005f..89d12adb7 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -141,8 +141,7 @@ private async Task CastInstant(KeyAction item) { (inputNotHappened, inputElapsedMs) = await wait.InterruptTask(MaxWaitCastTimeMs, interrupt: () => - (beforeSpellId != playerReader.CastSpellId.Value && - beforeCastEventValue != playerReader.CastEvent.Value) || + (beforeSpellId != playerReader.CastSpellId.Value && beforeCastEventValue != playerReader.CastEvent.Value) || beforeUsable != playerReader.UsableAction.Is(item) ); } @@ -257,8 +256,17 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) return true; } - if (!await SwitchToCorrectStanceForm(item)) + bool beforeUsable = playerReader.UsableAction.Is(item); + var beforeForm = playerReader.Form; + + if (!await SwitchToCorrectStanceForm(beforeForm, item)) + { + return false; + } + + if (beforeForm != playerReader.Form && !beforeUsable && !playerReader.UsableAction.Is(item)) { + item.LogInformation(" ... after Form switch still not usable!"); return false; } @@ -396,7 +404,7 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) return true; } - protected async Task SwitchToCorrectStanceForm(KeyAction item) + protected async Task SwitchToCorrectStanceForm(Form beforeForm, KeyAction item) { if (string.IsNullOrEmpty(item.Form)) return true; @@ -416,16 +424,11 @@ protected async Task SwitchToCorrectStanceForm(KeyAction item) return false; } - if (formKeyAction.CanRun()) - { - var beforeForm = playerReader.Form; - await input.KeyPress(formKeyAction.ConsoleKey, item.PressDuration); - (bool notChanged, double elapsedMs) = await wait.InterruptTask(100, () => beforeForm != playerReader.Form); - item.LogInformation($" ... form changed: {!notChanged} | Delay: {elapsedMs}ms"); - return playerReader.Form == item.FormEnum; - } + await input.KeyPress(formKeyAction.ConsoleKey, item.PressDuration); + (bool notChanged, double elapsedMs) = await wait.InterruptTask(SpellQueueTimeMs, () => beforeForm != playerReader.Form); + item.LogInformation($" ... form changed: {!notChanged} | Delay: {elapsedMs}ms"); - return false; + return playerReader.Form == item.FormEnum; } public async Task PressKey(ConsoleKey key, string description = "", int duration = 50) diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 71f078a45..2bbde6d8f 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -127,8 +127,15 @@ private void CreateActionUsableRequirement(List RequirementObjects, { RequirementObjects.Add(new Requirement { - HasRequirement = () => playerReader.UsableAction.Is(item), - LogMessage = () => $"Usable" + HasRequirement = () => + !item.HasFormRequirement() ? playerReader.UsableAction.Is(item) : + (playerReader.Form == item.FormEnum && playerReader.UsableAction.Is(item)) || + (playerReader.Form != item.FormEnum && item.CanDoFormChangeAndHaveMinimumMana()), + + LogMessage = () => + !item.HasFormRequirement() ? $"Usable" : // {playerReader.UsableAction.Num(item)} + (playerReader.Form != item.FormEnum && item.CanDoFormChangeAndHaveMinimumMana()) ? $"Usable after Form change" : // {playerReader.UsableAction.Num(item)} + (playerReader.Form == item.FormEnum && playerReader.UsableAction.Is(item)) ? $"Usable current Form" : $"not Usable current Form" // {playerReader.UsableAction.Num(item)} }); } } @@ -495,23 +502,20 @@ private Requirement GetValueBasedRequirement(string name, string requirement, Fo } var valueCheck = valueDictionary[parts[0]]; - - Func formChangeCost = () => playerReader.Form != form ? (playerReader.FormCost.TryGetValue(form, out int cost) ? cost : 0) : 0; - if (symbol == ">") { return new Requirement { - HasRequirement = () => valueCheck() + formChangeCost() >= value, - LogMessage = () => $"{parts[0]} {valueCheck() + formChangeCost()} >= {value}" + HasRequirement = () => valueCheck() >= value, + LogMessage = () => $"{parts[0]} {valueCheck()} >= {value}" }; } else { return new Requirement { - HasRequirement = () => valueCheck() + formChangeCost() <= value, - LogMessage = () => $"{parts[0]} {valueCheck() + formChangeCost()} <= {value}" + HasRequirement = () => valueCheck() <= value, + LogMessage = () => $"{parts[0]} {valueCheck()} <= {value}" }; } } From 83e61b064a8ba66dac0ed192f92c075f8415614c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 19:34:37 +0200 Subject: [PATCH 062/132] Warrior_4 fix Rend Form condition --- Json/class/Warrior_4.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Json/class/Warrior_4.json b/Json/class/Warrior_4.json index 1996ee1bf..99f25597d 100644 --- a/Json/class/Warrior_4.json +++ b/Json/class/Warrior_4.json @@ -31,7 +31,7 @@ "Key": "5", "WhenUsable": true, "Requirement": "TargetHealth%>90", - "Cooldown": 60000, + "Form": "Warrior_BattleStance", "MinRage": 10 }, { From 976843577797e52127a470a09564dbb60f0aa84a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 19:47:38 +0200 Subject: [PATCH 063/132] Shaman profiles: instead of using hard coded Cooldowns use WhenUsable in order to use the spell on cooldown when the Requirements are met. --- Json/class/Shaman_15.json | 2 +- Json/class/Shaman_22.json | 2 +- Json/class/Shaman_4.json | 2 +- Json/class/Shaman_44.json | 2 +- Json/class/Shaman_55.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index 163847269..1c7109790 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -59,7 +59,7 @@ "Mana%>40", "InMeleeRange" ], - "Cooldown": 6000, + "WhenUsable": true, "Log": false, "MinMana": 80 }, diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index 2ddc4d8a1..1d9d7eaf7 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -78,7 +78,7 @@ "Mana%>40", "InMeleeRange" ], - "Cooldown": 6000, + "WhenUsable": true, "Log": false, "MinMana": 80 }, diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index e80712728..e4c3a4fa9 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -18,8 +18,8 @@ { "Name": "Earth Shock", "Key": "6", + "WhenUsable": true, "Requirements": ["TargetHealth%>10", "SpellInRange:1"], - "Cooldown": 6000, "MinMana": 30 }, { diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index ff09ebd52..33918edc9 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -85,7 +85,7 @@ "TargetHealth%>30" ], "Log": false, - "Cooldown": 12000, + "WhenUsable": true, "MinMana": 80 }, { diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index 5b89e8762..e2a53954e 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -74,7 +74,7 @@ "TargetHealth%>10" ], "Log": false, - "Cooldown": 12000, + "WhenUsable": true, "MinMana": 80 }, { From 945643ec8cf7f45375f291cd1e98b55478af2c1a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 20:40:07 +0200 Subject: [PATCH 064/132] Warrior Heroic strike MinRage cost --- Json/class/Warrior_1.json | 2 +- Json/class/Warrior_4.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Json/class/Warrior_1.json b/Json/class/Warrior_1.json index 7fe484ad6..9922ff681 100644 --- a/Json/class/Warrior_1.json +++ b/Json/class/Warrior_1.json @@ -8,7 +8,7 @@ "Key": "2", "AfterCastWaitNextSwing": true, "WhenUsable": true, - "MinRage": 10 + "MinRage": 15 }, { "Name": "Approach", diff --git a/Json/class/Warrior_4.json b/Json/class/Warrior_4.json index 99f25597d..5fd3134dc 100644 --- a/Json/class/Warrior_4.json +++ b/Json/class/Warrior_4.json @@ -39,7 +39,7 @@ "Key": "2", "AfterCastWaitNextSwing": true, "WhenUsable": true, - "MinRage": 10 + "MinRage": 15 }, { "Name": "Approach", From 9b896e3fa913fcba400141949af267ab6f8434db Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 20:45:30 +0200 Subject: [PATCH 065/132] use Stance.RuntimeSlotToActionBar everywhere instead of FormToActionBar --- Core/Actionbar/ActionBarCostReader.cs | 4 ++-- Core/Addon/Stance.cs | 2 +- Core/ClassConfig/KeyAction.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/Actionbar/ActionBarCostReader.cs b/Core/Actionbar/ActionBarCostReader.cs index 936380a41..19ae107d5 100644 --- a/Core/Actionbar/ActionBarCostReader.cs +++ b/Core/Actionbar/ActionBarCostReader.cs @@ -71,9 +71,9 @@ public Tuple GetCostByActionBarSlot(PlayerReader playerReader, K { if (KeyReader.ActionBarSlotMap.TryGetValue(keyAction.Key, out int slot)) { - if (keyAction.FormEnum != Form.None && slot <= 12) + if (slot <= 12) { - slot += Stance.FormToActionBar(playerReader.PlayerClass, keyAction.FormEnum); + slot += Stance.RuntimeSlotToActionBar(keyAction, playerReader, slot); } if (dict.TryGetValue(slot, out var tuple)) diff --git a/Core/Addon/Stance.cs b/Core/Addon/Stance.cs index 840db886e..e50c2d442 100644 --- a/Core/Addon/Stance.cs +++ b/Core/Addon/Stance.cs @@ -78,7 +78,7 @@ public static int RuntimeSlotToActionBar(KeyAction item, PlayerReader playerRead return 0; } - public static int FormToActionBar(PlayerClassEnum playerClass, Form form) + private static int FormToActionBar(PlayerClassEnum playerClass, Form form) { switch (playerClass) { diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index c7d389749..5b5963377 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -101,7 +101,7 @@ public void Initialise(AddonReader addonReader, RequirementFactory requirementFa if (KeyReader.ActionBarSlotMap.TryGetValue(Key, out int slot)) { - int offset = Stance.FormToActionBar(playerReader.PlayerClass, FormEnum); + int offset = Stance.RuntimeSlotToActionBar(this, playerReader, slot); this.logger.LogInformation($"[{Name}] Actionbar Form key map: Key:{Key} -> Actionbar:{slot} -> Form Map:{slot + offset}"); } } From 269ebcac05ae99ef6357a7a3c0519090345d8abe Mon Sep 17 00:00:00 2001 From: Xian55 Date: Thu, 14 Oct 2021 20:46:12 +0200 Subject: [PATCH 066/132] ActionBarPopulator: Properly populate Form based slots --- Core/ActionbarPopulator/ActionBarPopulator.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Core/ActionbarPopulator/ActionBarPopulator.cs b/Core/ActionbarPopulator/ActionBarPopulator.cs index 36e5be072..8b43aa8e1 100644 --- a/Core/ActionbarPopulator/ActionBarPopulator.cs +++ b/Core/ActionbarPopulator/ActionBarPopulator.cs @@ -7,12 +7,12 @@ namespace Core { public class ActionBarPopulator { - struct ActionBarSource { + struct ActionBarSource + { public string Name; public string Key; public bool Item; - public string Requirement; - public Form Form; + public KeyAction KeyAction; } private readonly ILogger logger; @@ -57,15 +57,14 @@ private void CollectKeyActions() private void AddUnique(KeyAction a) { if (!KeyReader.KeyMapping.ContainsKey(a.Key)) return; - if (sources.Any(i => i.Key == a.Key && i.Form == a.FormEnum)) return; + if (sources.Any(i => i.KeyAction.ConsoleKeyFormHash == a.ConsoleKeyFormHash)) return; var source = new ActionBarSource { Name = a.Name, Key = a.Key, Item = false, - Requirement = a.Requirement, - Form = a.FormEnum + KeyAction = a }; sources.Add(source); @@ -155,7 +154,7 @@ private string CalculateActionNumber(ActionBarSource a, string key, string prefi { if (offset == 0 && hotkey <= 12) { - offset += Stance.FormToActionBar(addonReader.PlayerReader.PlayerClass, a.Form); + offset += Stance.RuntimeSlotToActionBar(a.KeyAction, addonReader.PlayerReader, hotkey); } if (hotkey == 0) From 6127bcd9260d073b45460f2ce59778f0015a0528 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Fri, 15 Oct 2021 18:00:41 +0200 Subject: [PATCH 067/132] Druid: added Rake debuff --- Addons/DataToColor/DataToColor.toc | 2 +- Addons/DataToColor/Storage.lua | 1 + Core/Addon/DeBuffStatus.cs | 1 + Core/Requirement/RequirementFactory.cs | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index f5dede330..3298f9429 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.31 +## Version: 1.1.32 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index 3d73f19cf..01c9dad27 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -160,6 +160,7 @@ function CreateTargetDebuffList() DataToColor.S.targetDebuffs[2] = { "Rip", [132152]=1 } DataToColor.S.targetDebuffs[3] = { "Moonfire", [136096]=1 } DataToColor.S.targetDebuffs[4] = { "Entangling Roots", [136100]=1 } + DataToColor.S.targetDebuffs[5] = { "Rake", [132122]=1 } elseif DataToColor.C.CHARACTER_CLASS == "PALADIN" then elseif DataToColor.C.CHARACTER_CLASS == "MAGE" then DataToColor.S.targetDebuffs[0] = { "Frostbite", [135842]=1 } diff --git a/Core/Addon/DeBuffStatus.cs b/Core/Addon/DeBuffStatus.cs index 55714d55b..e0e9690ac 100644 --- a/Core/Addon/DeBuffStatus.cs +++ b/Core/Addon/DeBuffStatus.cs @@ -31,6 +31,7 @@ public bool IsBitSet(int pos) public bool Rip => IsBitSet(2); public bool Moonfire => IsBitSet(3); public bool EntanglingRoots => IsBitSet(4); + public bool Rake => IsBitSet(5); // Paladin diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 2bbde6d8f..ff7e579fe 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -310,6 +310,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) { "Rip", ()=> playerReader.Debuffs.Rip }, { "Moonfire", ()=> playerReader.Debuffs.Moonfire }, { "Entangling Roots", ()=> playerReader.Debuffs.EntanglingRoots }, + { "Rake", ()=> playerReader.Debuffs.Rake }, // Warrior Debuff { "Rend", ()=> playerReader.Debuffs.Rend }, // Priest Debuff From a7ae27fd4299248912f8b4cd36683c57c4d5cd4c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Fri, 15 Oct 2021 18:01:26 +0200 Subject: [PATCH 068/132] SpellInRange: Simplify Druid ranges --- Core/Addon/SpellInRange.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Addon/SpellInRange.cs b/Core/Addon/SpellInRange.cs index fd20486f9..f037b84ff 100644 --- a/Core/Addon/SpellInRange.cs +++ b/Core/Addon/SpellInRange.cs @@ -67,7 +67,7 @@ public bool IsBitSet(int pos) PlayerClassEnum.Warrior => (playerReader.PlayerLevel >= 4 && Warrior_Charge) || playerReader.IsInMeleeRange, PlayerClassEnum.Rogue => Rogue_Throw, PlayerClassEnum.Priest => Priest_ShadowWordPain, - PlayerClassEnum.Druid => playerReader.Form == Form.Druid_Bear ? Druid_Maul : playerReader.Form == Form.Druid_Cat ? Druid_Rip : Druid_Wrath, + PlayerClassEnum.Druid => Druid_Wrath, PlayerClassEnum.Paladin => (playerReader.PlayerLevel >= 4 && Paladin_Judgement) || playerReader.IsInMeleeRange, PlayerClassEnum.Mage => (playerReader.PlayerLevel >= 4 && Mage_Frostbolt) || Mage_Fireball, PlayerClassEnum.Hunter => (playerReader.PlayerLevel >=4 && Hunter_SerpentSting) || Hunter_AutoShoot, @@ -81,7 +81,7 @@ public bool IsBitSet(int pos) PlayerClassEnum.Warrior => (playerReader.PlayerLevel >= 4 && Warrior_Rend) || playerReader.IsInMeleeRange, PlayerClassEnum.Rogue => Rogue_SinisterStrike, PlayerClassEnum.Priest => Priest_Shoot, - PlayerClassEnum.Druid => playerReader.Form == Form.Druid_Bear ? Druid_Maul : playerReader.Form == Form.Druid_Cat ? Druid_Rip : Druid_Wrath, + PlayerClassEnum.Druid => Druid_Wrath || playerReader.IsInMeleeRange, PlayerClassEnum.Paladin => (playerReader.PlayerLevel >= 4 && Paladin_Judgement) || playerReader.IsInMeleeRange, PlayerClassEnum.Mage => Mage_Frostbolt || Mage_Fireball, PlayerClassEnum.Hunter => (playerReader.PlayerLevel >= 4 && Hunter_SerpentSting) || Hunter_AutoShoot || playerReader.IsInMeleeRange, From b6227cff9039b1fbd96a73cdfecf344882f87b72 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Fri, 15 Oct 2021 18:02:43 +0200 Subject: [PATCH 069/132] ClassConfig: have an enchanced log message upon Initialise the KeyActions based on the Goals --- Core/ClassConfig/ClassConfiguration.cs | 12 +++++++----- Core/ClassConfig/KeyActions.cs | 7 ++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Core/ClassConfig/ClassConfiguration.cs b/Core/ClassConfig/ClassConfiguration.cs index a7b057027..61766fde0 100644 --- a/Core/ClassConfig/ClassConfiguration.cs +++ b/Core/ClassConfig/ClassConfiguration.cs @@ -126,12 +126,14 @@ public void Initialise(DataConfig dataConfig, AddonReader addonReader, Requireme InitializeKeyActions(Pull, Interact, Approach, AutoAttack); InitializeKeyActions(Combat, Interact, Approach, AutoAttack); + logger.LogInformation("[Form] Initialise KeyActions."); Form.ForEach(i => i.InitialiseForm(addonReader, requirementFactory, logger)); - Pull.Initialise(addonReader, requirementFactory, logger); - Combat.Initialise(addonReader, requirementFactory, logger); - Adhoc.Initialise(addonReader, requirementFactory, logger); - NPC.Initialise(addonReader, requirementFactory, logger); - Parallel.Initialise(addonReader, requirementFactory, logger); + + Pull.Initialise("Pull", addonReader, requirementFactory, logger); + Combat.Initialise("Combat", addonReader, requirementFactory, logger); + Adhoc.Initialise("Adhoc", addonReader, requirementFactory, logger); + NPC.Initialise("AdhocNpc", addonReader, requirementFactory, logger); + Parallel.Initialise("Parallel", addonReader, requirementFactory, logger); Jump.Key = JumpKey; Jump.Initialise(addonReader, requirementFactory, logger); diff --git a/Core/ClassConfig/KeyActions.cs b/Core/ClassConfig/KeyActions.cs index a5ec37238..29ef1ce6f 100644 --- a/Core/ClassConfig/KeyActions.cs +++ b/Core/ClassConfig/KeyActions.cs @@ -7,8 +7,13 @@ public class KeyActions { public List Sequence { get; } = new List(); - public void Initialise(AddonReader addonReader, RequirementFactory requirementFactory, ILogger logger) + public void Initialise(string prefix, AddonReader addonReader, RequirementFactory requirementFactory, ILogger logger) { + if (Sequence.Count > 0) + { + logger.LogInformation($"[{prefix}] Initialise KeyActions."); + } + Sequence.ForEach(i => i.Initialise(addonReader, requirementFactory, logger)); } } From 62b2cc1e581e5ce99582b5989f0c1b85b1ecd020 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Fri, 15 Oct 2021 18:08:01 +0200 Subject: [PATCH 070/132] RequirementFactory: Added 'Form' based Requirement --- Core/Requirement/RequirementFactory.cs | 25 +++++++++++++++++++++++++ README.md | 10 ++++++++++ 2 files changed, 35 insertions(+) diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index ff7e579fe..846d96fea 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -219,6 +219,11 @@ public Requirement GetRequirement(string name, string requirement, Form form) return CreateTargetCastingSpellRequirement(requirement); } + if(requirement.Contains("Form")) + { + return CreateFormRequirement(requirement); + } + if (BuffDictionary.Count == 0) { BuffDictionary = new Dictionary> @@ -405,6 +410,26 @@ private Requirement CreateTargetCastingSpellRequirement(string requirement) } } + private Requirement CreateFormRequirement(string requirement) + { + var parts = requirement.Split(":"); + var form = Enum.Parse
(parts[1]); + + if (requirement.StartsWith("!") || requirement.StartsWith("not ")) + { + return new Requirement + { + HasRequirement = () => playerReader.Form != form, + LogMessage = () => $"not {form}" + }; + } + return new Requirement + { + HasRequirement = () => playerReader.Form == form, + LogMessage = () => $"{playerReader.Form}" + }; + } + private Requirement CreateNpcRequirement(string requirement) { var parts = requirement.Split(":"); diff --git a/README.md b/README.md index 7415c2c00..ad0ad55e8 100644 --- a/README.md +++ b/README.md @@ -480,6 +480,16 @@ e.g. * "not BagItem:19007:1" - Must have a lesser Healthstone in the bag https://classic.wowhead.com/item=19007 * "not BagItem:6265:3"- Must not have 3 soulshards in the bag. +#### Form requirements + +If the character must be - in or not - the specified `Form` use this requirement. Useful to determine when to switch Form for the given situation. + +It has the format Form:[Form] + +e.g. +* "Form:Druid_Bear - Must be in `Druid_Bear` form +* "not Form:Druid_Cat" - Shoudn't be in `Druid_Cat` form + #### Buff / Debuff Allow requirements about what buffs you have or the target has to be evaluated. From a7b8b64e97999d78a418f2990a29db914441a64d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Fri, 15 Oct 2021 18:17:44 +0200 Subject: [PATCH 071/132] Added Druid_20_cat_bear profile demonstrating the switching form depending on the situation. ex. it will prefers Cat form as long as it safe. Upon engaging with 2 mobs it will shift into bear for better survivability. After time if only one enemy remains it will try to switch back to cat. --- Json/class/Druid_16_bear.json | 7 -- Json/class/Druid_20_cat_bear.json | 175 ++++++++++++++++++++++++++++++ 2 files changed, 175 insertions(+), 7 deletions(-) create mode 100644 Json/class/Druid_20_cat_bear.json diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index c0aeaeec9..76fef9224 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -108,13 +108,6 @@ }, "Adhoc": { "Sequence": [ - { - //macro: #showtooltip Small Barnacled Clam /use Small Barnacled Clam - "Name": "clam", - "Key": "F12", - "DelayAfterCast": 0, - "Requirement": "BagItem:5523" - }, { "Name": "Mark of the Wild", "Key": "4", diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json new file mode 100644 index 000000000..89c126f02 --- /dev/null +++ b/Json/class/Druid_20_cat_bear.json @@ -0,0 +1,175 @@ +{ + "ClassName": "Druid", + "Loot": true, + "PathFilename": "\\_pack\\1-20\\Human\\15-18_Westfall_The Dagger Hills (defias).json", + "PathReduceSteps": true, + "CheckTargetGivesExp": true, + "Form": [ + { + //macro: /cancelform + "Name": "cancelform", + "Key": "F1", + "Form": "None" + }, + //macro: #showtooltip Bear form /cast [nostance:1] Bear form + { + "Name": "bearform", + "Key": "F2", + "Form": "Druid_Bear", + "MinMana": 50 + }, + //macro: #showtooltip Cat form /cast [nostance:3] Cat form + { + "Name": "catform", + "Key": "F3", + "Form": "Druid_Cat", + "MinMana": 123 + } + ], + "Pull": { + "Sequence": [ + { + "Name": "Rejuvenation", + "Key": "6", + "AfterCastWaitBuff": true, + "Requirements": ["Health%<75", "not Rejuvenation"], + "Cooldown": 5000, + "Form": "None" + }, + { + "Name": "Moonfire", + "Key": "5", + "AfterCastWaitBuff": true, + "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>40"], + "StopBeforeCast": true, + "Form": "None" + }, + { + "Name": "Cat Form", + "Key": "F3", + "Requirements": ["Moonfire", "not Form:Druid_Cat"], + "WaitForWithinMeleeRange": true + }, + { + "Name": "Approach", + "Log": false + } + ] + }, + "Combat": { + "Sequence": [ + { + "Name": "Healing Touch", + "Key": "3", + "HasCastBar": true, + "Requirement": "Health%<30", + "Cooldown": 5000, + "Form": "None" + }, + { + "Name": "Rip", + "Key": "3", + "MinEnergy": 30, + "MinComboPoints": 1, + "WhenUsable": true, + "Requirements": ["InMeleeRange", "not Rip", "MobCount<1", "Form:Druid_Cat"], + "Form": "Druid_Cat" + }, + { + "Name": "Claw", + "Key": "2", + "MinEnergy": 40, + "WhenUsable": true, + "Requirements": ["InMeleeRange", "MobCount<1", "Form:Druid_Cat"], + "Form": "Druid_Cat" + }, + { + "Name": "Bear Form", + "Key": "F2", + "Requirements": ["not Form:Druid_Bear", "Health%<50||MobCount>2"] + }, + { + "Name": "Bash", + "Key": "5", + "Requirements": ["InMeleeRange", "TargetCastingSpell"], + "WhenUsable": true, + "MinRage": 10, + "Form": "Druid_Bear" + }, + { + "Name": "Enrage", + "Key": "4", + "WhenUsable": true, + "Requirement": "Form:Druid_Bear", + "Form": "Druid_Bear" + }, + { + "Name": "Demoralizing Roar", + "Key": "3", + "MinRage": 10, + "WhenUsable": true, + "Requirements": ["InMeleeRange", "not Demoralizing Roar", "MobCount>2", "Form:Druid_Bear"], + "Form": "Druid_Bear" + }, + { + "Name": "Swipe", + "Key": "6", + "MinRage": 20, + "WhenUsable": true, + "Requirements": ["InMeleeRange", "MobCount>2", "Form:Druid_Bear"], + "Form": "Druid_Bear" + }, + { + "Name": "Maul", + "Key": "2", + "MinRage": 15, + "Requirements": ["InMeleeRange", "MobCount<1", "LastMainHandMs>2100", "Form:Druid_Bear"], // bear swing speed fixed at 2.5 + "AfterCastWaitNextSwing": true, + "Form": "Druid_Bear" + }, + { + "Name": "Cat Form", + "Key": "F3", + "Requirements": ["not Form:Druid_Cat", "Health%>60", "MobCount<1"] + }, + { + "Name": "Approach", + "Log": false + }, + { + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" + } + ] + }, + "Adhoc": { + "Sequence": [ + { + "Name": "Mark of the Wild", + "Key": "4", + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, + "Requirement": "not Mark of the Wild", + "Form": "None" + }, + { + "Name": "Thorns", + "Key": "7", + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, + "Requirement": "not Thorns", + "Form": "None" + }, + { + "Name": "Water", + "Key": "-", + "StopBeforeCast": true, + "AfterCastWaitBuff": true, + "DelayAfterCast": 0, + "Requirement": "Mana%<40", + "Cooldown": 10000, + "Form": "None" + } + ] + } +} \ No newline at end of file From 5dc09d5babc2800c595f5f712ec266446d8640a6 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 22:12:16 +0200 Subject: [PATCH 072/132] CastingHandler: For instant based spells/items make sure the previously casted spell has no affect of the current ones success. beforeUsable:True and after keypress afterUsable:False means the spell/item has been used, count as success. --- Core/Goals/CastingHandler.cs | 11 ++++++----- README.md | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 89d12adb7..0ac085e5e 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -103,8 +103,7 @@ private static bool CastSuccessfull(UI_ERROR uiEvent) return uiEvent == UI_ERROR.CAST_START || uiEvent == UI_ERROR.CAST_SUCCESS || - uiEvent == UI_ERROR.NONE || - uiEvent == UI_ERROR.SPELL_FAILED_ITEM_NOT_READY; + uiEvent == UI_ERROR.NONE; } private async Task CastInstant(KeyAction item) @@ -156,9 +155,9 @@ private async Task CastInstant(KeyAction item) return false; } - item.LogInformation($" ... usable: {playerReader.UsableAction.Is(item)} -- ({(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value})"); + item.LogInformation($" ... usable: {beforeUsable}->{playerReader.UsableAction.Is(item)} -- ({(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value})"); - if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value)) + if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value) || (beforeUsable && !playerReader.UsableAction.Is(item))) { await ReactToLastCastingEvent(item, $"{item.Name}-{GetType().Name}: CastInstant"); return false; @@ -190,6 +189,8 @@ private async Task CastCastbar(KeyAction item) await wait.Update(1); bool beforeHasTarget = playerReader.HasTarget; + + bool beforeUsable = playerReader.UsableAction.Is(item); int beforeCastEventValue = playerReader.CastEvent.Value; int beforeSpellId = playerReader.CastSpellId.Value; int beforeCastCount = playerReader.CastCount; @@ -213,7 +214,7 @@ private async Task CastCastbar(KeyAction item) return false; } - item.LogInformation($" ... casting: {playerReader.IsCasting} -- count:{playerReader.CastCount} -- usable: {playerReader.UsableAction.Is(item)} -- {(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value}"); + item.LogInformation($" ... casting: {playerReader.IsCasting} -- count:{playerReader.CastCount} -- usable: {beforeUsable}->{playerReader.UsableAction.Is(item)} -- {(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value}"); if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value)) { diff --git a/README.md b/README.md index ad0ad55e8..ba95c0970 100644 --- a/README.md +++ b/README.md @@ -277,7 +277,7 @@ Commands have the following parameters, only a subset will be used by each comma | MinRage | (Optional) The minimum Rage required to cast the spell | 0 | | MinEnergy | (Optional) The minimum Energy required to cast the spell | 0 | | MinComboPoints | The minimum combo points required to cast the spell | 0 | -| WhenUsable | When not in cooldown and have the min resource(mana,rage,energy) to use it. | false | +| WhenUsable | When not in cooldown(GCD included) and have the min resource(mana,rage,energy) to use it. | false | | Requirement | A single "Requirement" (See below) which must be true | | | Requirements | A list of "Requirements" which must be true | | | WaitForWithinMelleRange| Wait after casting for the mob to be in melee range | false | From ff7d20d9ec778a947f9f6a08e30a97d9eac1bdfc Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 22:25:27 +0200 Subject: [PATCH 073/132] RequirementFactory: CreateConsumableRequirement mainly for 'Food' and 'Water' to reduce the length in the profile. --- Core/Requirement/RequirementFactory.cs | 40 ++++---------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 846d96fea..11ca92fa8 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -64,13 +64,13 @@ public void InitialiseRequirements(KeyAction item) CreateMinRequirement(item.RequirementObjects, "Rage", item.MinRage); CreateMinRequirement(item.RequirementObjects, "Energy", item.MinEnergy); + CreateConsumableRequirement("Water", item); + CreateConsumableRequirement("Food", item); + CreateMinComboPointsRequirement(item.RequirementObjects, item); CreateTargetIsCastingRequirement(item.RequirementObjects, item.UseWhenTargetIsCasting); CreateActionUsableRequirement(item.RequirementObjects, item); - CreateWaterRequirement(item); - CreateFoodRequirement(item); - item.CreateCooldownRequirement(); item.CreateChargeRequirement(); } @@ -140,39 +140,11 @@ private void CreateActionUsableRequirement(List RequirementObjects, } } - private void CreateWaterRequirement(KeyAction item) + private void CreateConsumableRequirement(string name, KeyAction item) { - if (item.Name == "Water") + if (item.Name == name) { - item.RequirementObjects.Add(new Requirement - { - HasRequirement = () => bagReader.ItemCount(bagReader.HighestQuantityOfWaterId()) > 0, - LogMessage = () => $"Has Water" - }); - - item.RequirementObjects.Add(new Requirement - { - HasRequirement = () => !playerReader.PlayerBitValues.IsSwimming, - LogMessage = () => $"Not swim" - }); - - item.RequirementObjects.Add(new Requirement - { - HasRequirement = () => !playerReader.PlayerBitValues.IsFalling, - LogMessage = () => $"Not falling" - }); - } - } - - private void CreateFoodRequirement(KeyAction item) - { - if (item.Name == "Food") - { - item.RequirementObjects.Add(new Requirement - { - HasRequirement = () => bagReader.ItemCount(bagReader.HighestQuantityOfFoodId()) > 0, - LogMessage = () => $"Has Food" - }); + item.WhenUsable = true; item.RequirementObjects.Add(new Requirement { From ccdad1171ae0bd2b869f91e4790512e2c816e7e3 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 22:51:58 +0200 Subject: [PATCH 074/132] CastingHandler: Instant cast success ofc negated :sweat: --- Core/Goals/CastingHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 0ac085e5e..640c6ac65 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -157,7 +157,7 @@ private async Task CastInstant(KeyAction item) item.LogInformation($" ... usable: {beforeUsable}->{playerReader.UsableAction.Is(item)} -- ({(UI_ERROR)beforeCastEventValue}->{(UI_ERROR)playerReader.CastEvent.Value})"); - if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value) || (beforeUsable && !playerReader.UsableAction.Is(item))) + if (!CastSuccessfull((UI_ERROR)playerReader.CastEvent.Value) || !(beforeUsable && !playerReader.UsableAction.Is(item))) { await ReactToLastCastingEvent(item, $"{item.Name}-{GetType().Name}: CastInstant"); return false; From fa7028a9cbfb131c5a9912f8ae9308ce38792933 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 23:01:59 +0200 Subject: [PATCH 075/132] Added Clearcasting and PresenceOfMind class based buffs --- Addons/DataToColor/DataToColor.toc | 2 +- Addons/DataToColor/Storage.lua | 2 ++ Core/Addon/BuffStatus.cs | 2 ++ Core/Requirement/RequirementFactory.cs | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index 3298f9429..9c8a24008 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.32 +## Version: 1.1.33 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index 01c9dad27..c8ed336aa 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -104,6 +104,7 @@ function CreatePlayerBuffList() DataToColor.S.playerBuffs[1] = { "Drink", [132794]=1, [132800]=1, [132805]=1, [132802]=1 } DataToColor.S.playerBuffs[2] = { "Well Fed", [136000]=1 } DataToColor.S.playerBuffs[3] = { "Mana Regeneration", [2]=1 } -- potion? + DataToColor.S.playerBuffs[4] = { "Clearcasting", [136170]=1 } -- Druid / Mage / Shaman if DataToColor.C.CHARACTER_CLASS == "PRIEST" then DataToColor.S.playerBuffs[10] = { "Fortitude", [135987]=1, [135941]=1 } @@ -129,6 +130,7 @@ function CreatePlayerBuffList() DataToColor.S.playerBuffs[13] = { "Ward", [135806]=1, [135850]=1 } DataToColor.S.playerBuffs[14] = { "Fire Power", [135817]=1 } -- not sure what is this DataToColor.S.playerBuffs[15] = { "Mana Shield", [136153]=1 } + DataToColor.S.playerBuffs[16] = { "Presence of Mind", [136031]=1 } elseif DataToColor.C.CHARACTER_CLASS == "ROGUE" then DataToColor.S.playerBuffs[10] = { "Slice and Dice", [132306]=1 } DataToColor.S.playerBuffs[11] = { "Stealth", [132320]=1 } diff --git a/Core/Addon/BuffStatus.cs b/Core/Addon/BuffStatus.cs index 63d88842f..c67f8ffb6 100644 --- a/Core/Addon/BuffStatus.cs +++ b/Core/Addon/BuffStatus.cs @@ -19,6 +19,7 @@ public bool IsBitSet(int pos) public bool Drinking => IsBitSet(1); public bool WellFed => IsBitSet(2); public bool ManaRegeneration => IsBitSet(3); + public bool Clearcasting => IsBitSet(4); // Priest public bool Fortitude => IsBitSet(10); @@ -47,6 +48,7 @@ public bool IsBitSet(int pos) public bool Ward => IsBitSet(13); public bool FirePower => IsBitSet(14); public bool ManaShield => IsBitSet(15); + public bool PresenceOfMind => IsBitSet(16); // Rogue public bool SliceAndDice => IsBitSet(10); diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 11ca92fa8..71424a029 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -228,6 +228,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) { "Drinking", ()=> playerReader.Buffs.Drinking }, { "Mana Regeneration", ()=> playerReader.Buffs.ManaRegeneration }, { "Well Fed", ()=> playerReader.Buffs.WellFed }, + { "Clearcasting", ()=> playerReader.Buffs.Clearcasting }, //Priest { "Fortitude", ()=> playerReader.Buffs.Fortitude }, { "InnerFire", ()=> playerReader.Buffs.InnerFire }, @@ -255,6 +256,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) { "Ward", ()=>playerReader.Buffs.Ward }, { "Fire Power", ()=>playerReader.Buffs.FirePower }, { "Mana Shield", ()=>playerReader.Buffs.ManaShield }, + { "Presence of Mind", ()=>playerReader.Buffs.PresenceOfMind }, // Rogue { "Slice and Dice", ()=> playerReader.Buffs.SliceAndDice }, { "Stealth", ()=> playerReader.Buffs.Stealth }, From 04a9c043bf3c2f94bcdddefd8c599d886934bce0 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 23:06:00 +0200 Subject: [PATCH 076/132] RequirementFactory: When creating CreateMinRequirement consider Clearcasting --- Core/Requirement/RequirementFactory.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 71424a029..6c4b91d84 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -91,11 +91,11 @@ private void CreateMinRequirement(List RequirementObjects, string t { if (value > 0) { - if( type == "Mana") + if (type == "Mana") { RequirementObjects.Add(new Requirement { - HasRequirement = () => playerReader.ManaCurrent >= value, + HasRequirement = () => playerReader.ManaCurrent >= value || playerReader.Buffs.Clearcasting, LogMessage = () => $"{type} {playerReader.ManaCurrent} >= {value}" }); } @@ -103,7 +103,7 @@ private void CreateMinRequirement(List RequirementObjects, string t { RequirementObjects.Add(new Requirement { - HasRequirement = () => playerReader.PTCurrent >= value, + HasRequirement = () => playerReader.PTCurrent >= value || playerReader.Buffs.Clearcasting, LogMessage = () => $"{type} {playerReader.PTCurrent} >= {value}" }); } From c6818c33d365d7e0f4aaee590c7c193d021ee21e Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 23:11:53 +0200 Subject: [PATCH 077/132] Added buff Arcane Power --- Addons/DataToColor/Storage.lua | 1 + Core/Addon/BuffStatus.cs | 1 + Core/Requirement/RequirementFactory.cs | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index c8ed336aa..7fbf42ecd 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -131,6 +131,7 @@ function CreatePlayerBuffList() DataToColor.S.playerBuffs[14] = { "Fire Power", [135817]=1 } -- not sure what is this DataToColor.S.playerBuffs[15] = { "Mana Shield", [136153]=1 } DataToColor.S.playerBuffs[16] = { "Presence of Mind", [136031]=1 } + DataToColor.S.playerBuffs[17] = { "Arcane Power", [136048]=1 } elseif DataToColor.C.CHARACTER_CLASS == "ROGUE" then DataToColor.S.playerBuffs[10] = { "Slice and Dice", [132306]=1 } DataToColor.S.playerBuffs[11] = { "Stealth", [132320]=1 } diff --git a/Core/Addon/BuffStatus.cs b/Core/Addon/BuffStatus.cs index c67f8ffb6..ca024b9fd 100644 --- a/Core/Addon/BuffStatus.cs +++ b/Core/Addon/BuffStatus.cs @@ -49,6 +49,7 @@ public bool IsBitSet(int pos) public bool FirePower => IsBitSet(14); public bool ManaShield => IsBitSet(15); public bool PresenceOfMind => IsBitSet(16); + public bool ArcanePower => IsBitSet(17); // Rogue public bool SliceAndDice => IsBitSet(10); diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 6c4b91d84..32a868017 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -121,6 +121,7 @@ private void CreateMinComboPointsRequirement(List RequirementObject }); } } + private void CreateActionUsableRequirement(List RequirementObjects, KeyAction item) { if (item.WhenUsable && !string.IsNullOrEmpty(item.Key)) @@ -144,7 +145,9 @@ private void CreateConsumableRequirement(string name, KeyAction item) { if (item.Name == name) { + item.StopBeforeCast = true; item.WhenUsable = true; + item.AfterCastWaitBuff = true; item.RequirementObjects.Add(new Requirement { @@ -257,6 +260,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) { "Fire Power", ()=>playerReader.Buffs.FirePower }, { "Mana Shield", ()=>playerReader.Buffs.ManaShield }, { "Presence of Mind", ()=>playerReader.Buffs.PresenceOfMind }, + { "Arcane Power", ()=>playerReader.Buffs.ArcanePower }, // Rogue { "Slice and Dice", ()=> playerReader.Buffs.SliceAndDice }, { "Stealth", ()=> playerReader.Buffs.Stealth }, From b16af46f34d94cf46fe3063587bf1d6343a8e65f Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 23:19:25 +0200 Subject: [PATCH 078/132] Added debuff Slow --- Addons/DataToColor/Storage.lua | 1 + Core/Addon/DeBuffStatus.cs | 1 + Core/Requirement/RequirementFactory.cs | 1 + 3 files changed, 3 insertions(+) diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index 7fbf42ecd..e3f5aabc9 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -167,6 +167,7 @@ function CreateTargetDebuffList() elseif DataToColor.C.CHARACTER_CLASS == "PALADIN" then elseif DataToColor.C.CHARACTER_CLASS == "MAGE" then DataToColor.S.targetDebuffs[0] = { "Frostbite", [135842]=1 } + DataToColor.S.targetDebuffs[1] = { "Slow", [136091]=1 } elseif DataToColor.C.CHARACTER_CLASS == "ROGUE" then elseif DataToColor.C.CHARACTER_CLASS == "WARRIOR" then DataToColor.S.targetDebuffs[0] = { "Rend", [132155]=1 } diff --git a/Core/Addon/DeBuffStatus.cs b/Core/Addon/DeBuffStatus.cs index e0e9690ac..3a4b3e11c 100644 --- a/Core/Addon/DeBuffStatus.cs +++ b/Core/Addon/DeBuffStatus.cs @@ -37,6 +37,7 @@ public bool IsBitSet(int pos) // Mage public bool Frostbite => IsBitSet(0); + public bool Slow => IsBitSet(1); // Rogue diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 32a868017..296010129 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -300,6 +300,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) { "Shadow Word: Pain", ()=> playerReader.Debuffs.ShadowWordPain }, // Mage Debuff { "Frostbite", ()=> playerReader.Debuffs.Frostbite }, + { "Slow", ()=> playerReader.Debuffs.Slow }, // Warlock Debuff { "Curse of Weakness", ()=> playerReader.Debuffs.Curseof }, { "Curse of Elements", ()=> playerReader.Debuffs.Curseof }, From defb76f49a48d3f3f7038d243525ed118c68cca1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 23:53:45 +0200 Subject: [PATCH 079/132] Priest: make SpellInRange for shoot the same index as the other classes for 'Shoot' 3 -> 1 --- Addons/DataToColor/Storage.lua | 4 ++-- Core/Addon/SpellInRange.cs | 5 ++--- Json/class/Priest.json | 6 +++--- README.md | 4 ++-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index e3f5aabc9..86c7653bb 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -63,9 +63,9 @@ function CreateSpellInRangeList() elseif DataToColor.C.CHARACTER_CLASS == "PRIEST" then DataToColor.S.spellInRangeList = { 589, -- "Shadow Word: Pain" - 8092, -- "Mind Blast" + 5019, -- "Shoot" 15407, -- "Mind Flay" - 5019 -- "Shoot" + 8092 -- "Mind Blast" } elseif DataToColor.C.CHARACTER_CLASS == "PALADIN" then DataToColor.S.spellInRangeList = { diff --git a/Core/Addon/SpellInRange.cs b/Core/Addon/SpellInRange.cs index f037b84ff..5d4e4187f 100644 --- a/Core/Addon/SpellInRange.cs +++ b/Core/Addon/SpellInRange.cs @@ -28,10 +28,9 @@ public bool IsBitSet(int pos) // Priest public bool Priest_ShadowWordPain => IsBitSet(0); - - public bool Priest_MindBlast => IsBitSet(1); + public bool Priest_Shoot => IsBitSet(1); public bool Priest_MindFlay => IsBitSet(2); - public bool Priest_Shoot => IsBitSet(3); + public bool Priest_MindBlast => IsBitSet(3); // Druid public bool Druid_Wrath => IsBitSet(0); diff --git a/Json/class/Priest.json b/Json/class/Priest.json index 6f33d4961..78e5ea6cf 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -74,10 +74,10 @@ "Log": false }, { - "Name": "Shooting", + "Name": "Shoot", "Key": "0", - "Requirement": "not Shooting", - "Cooldown": 2000, + "HasCastBar": true, + "Requirements": ["HasRangedWeapon", "not Shooting"], "Log": false }, { diff --git a/README.md b/README.md index ba95c0970..398009ab5 100644 --- a/README.md +++ b/README.md @@ -620,9 +620,9 @@ In the Addon DataToColor.lua is function DataToColor:areSpellsInRange() this tri | WARRIOR | Shoot Gun | 2 | | --- | --- | --- | | PRIEST | Shadow Word: Pain | 0 | -| PRIEST | Mind Blast | 1 | +| PRIEST | Shoot | 1 | | PRIEST | Mind Flay | 2 | -| PRIEST | Shoot | 3 | +| PRIEST | Mind Blast | 3 | | --- | --- | --- | | PALADIN | Judgement | 0 | | --- | --- | --- | From 45f75a0cd4e0ec58d91dfd110d8901c6e194e37a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sat, 16 Oct 2021 23:58:18 +0200 Subject: [PATCH 080/132] All profiles which using 'Shoot' make sure to check range as well --- Json/class/Mage.json | 2 +- Json/class/Mage12.json | 2 +- Json/class/Mage42.json | 2 +- Json/class/Mage44.json | 2 +- Json/class/Mage54.json | 2 +- Json/class/Mage_10.json | 2 +- Json/class/Mage_12.json | 2 +- Json/class/Mage_14_Arcane_Frost.json | 2 +- Json/class/Mage_19.json | 2 +- Json/class/Mage_25.json | 2 +- Json/class/Mage_30.json | 2 +- Json/class/Mage_54_Frost_Arcane.json | 2 +- Json/class/Mage_6.json | 2 +- Json/class/Priest.json | 4 ++-- Json/class/Warlock.json | 2 +- Json/class/Warlock_1.json | 2 +- Json/class/Warlock_10.json | 2 +- Json/class/Warlock_20.json | 2 +- Json/class/Warlock_20_shard_farm.json | 2 +- Json/class/Warlock_26_Immunity.json | 2 +- Json/class/Warlock_4.json | 2 +- Json/class/Warlock_8.json | 2 +- 22 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 47f5470bf..e00657474 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -53,7 +53,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 4e31f2067..8e1dfd519 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -28,7 +28,7 @@ "Key": "0", "StopBeforeCast": true, "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting"], + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"], "Log": false }, { diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index 47f5470bf..e00657474 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -53,7 +53,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index 69e48f692..cd3eee6c6 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -65,7 +65,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage54.json b/Json/class/Mage54.json index 8a8338f19..d64f9b20e 100644 --- a/Json/class/Mage54.json +++ b/Json/class/Mage54.json @@ -57,7 +57,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index 813ba0cdb..e10e6c2a4 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -44,7 +44,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12.json index 67a8a632d..e24f3ac3d 100644 --- a/Json/class/Mage_12.json +++ b/Json/class/Mage_12.json @@ -44,7 +44,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index c19b9aee4..62b204cdd 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -46,7 +46,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index 7a804f321..4e582aae4 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -65,7 +65,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 85c2f36b5..84bc516e8 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -63,7 +63,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index a1ec552c4..537173fdf 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -63,7 +63,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Mage_54_Frost_Arcane.json b/Json/class/Mage_54_Frost_Arcane.json index 5a28ea92e..3f79c5789 100644 --- a/Json/class/Mage_54_Frost_Arcane.json +++ b/Json/class/Mage_54_Frost_Arcane.json @@ -77,7 +77,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, ] }, diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index ffc15b545..1755087f2 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -36,7 +36,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Priest.json b/Json/class/Priest.json index 78e5ea6cf..9da489634 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -25,7 +25,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] } ] }, @@ -77,7 +77,7 @@ "Name": "Shoot", "Key": "0", "HasCastBar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"], + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"], "Log": false }, { diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index 60776205d..a52d8bc59 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -101,7 +101,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index e57b3c475..8984d53bc 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -28,7 +28,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index 11071e81f..98994270b 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -66,7 +66,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 0e4dcac8d..3cb43e4c7 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -84,7 +84,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index bd19a1155..2f2458657 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -87,7 +87,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index 699824e62..d1c887103 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -95,7 +95,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index 4bafaa07b..4c906a6a8 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -45,7 +45,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index ffcd556c9..86bceb53b 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -53,7 +53,7 @@ "Name": "Shoot", "Key": "0", "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting"] + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", From 02401550600b93992669802f36096f956bff4a06 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 00:30:28 +0200 Subject: [PATCH 081/132] PullTargetGoal: After pull sequnce and casted anything, wait at max 1s to have a target whos targeting the player or the players pet. This way can eliminate for casters running into melee range on pull --- Core/Goals/PullTargetGoal.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/Goals/PullTargetGoal.cs b/Core/Goals/PullTargetGoal.cs index a78936b03..368ef64f4 100644 --- a/Core/Goals/PullTargetGoal.cs +++ b/Core/Goals/PullTargetGoal.cs @@ -211,7 +211,9 @@ public async Task Pull() if (castAny) { - (bool interrupted, double elapsedMs) = await wait.InterruptTask(1000, () => playerReader.PlayerBitValues.PlayerInCombat); + (bool interrupted, double elapsedMs) = await wait.InterruptTask(1000, + () => playerReader.TargetTarget == TargetTargetEnum.TargetIsTargettingMe || + playerReader.TargetTarget == TargetTargetEnum.TargetIsTargettingPet); if (!interrupted) { Log($"Entered combat after {elapsedMs}ms"); From 542a00fb8f3f097fc482f9bc5252e2fb5b93abec Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 01:39:54 +0200 Subject: [PATCH 082/132] MountHandler: fix mounting. Create a construct which allows to use instant cast based mounting such as (travel form, flight form) and also considers normal mounting which ususally requires a castbar --- Core/Goals/MountHandler.cs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Core/Goals/MountHandler.cs b/Core/Goals/MountHandler.cs index 9ca2388d3..44e42bd9f 100644 --- a/Core/Goals/MountHandler.cs +++ b/Core/Goals/MountHandler.cs @@ -41,21 +41,25 @@ public async Task MountUp() } else { - await stopMoving.Stop(); - await wait.Update(1); - if (playerReader.PlayerBitValues.IsFalling) { (bool notfalling, double fallingElapsedMs) = await wait.InterruptTask(10000, () => !playerReader.PlayerBitValues.IsFalling); - if (!notfalling) - { - logger.LogInformation($"{GetType().Name}: waited for landing {fallingElapsedMs}ms"); - } + logger.LogInformation($"{GetType().Name}: waited for landing interrupted: {!notfalling} - {fallingElapsedMs}ms"); } - int beforeCastEventValue = playerReader.CastEvent.Value; + await stopMoving.Stop(); + await wait.Update(1); + await input.TapMount(); - await wait.Interrupt(mountCastTimeMs, () => playerReader.PlayerBitValues.IsMounted || beforeCastEventValue != playerReader.CastEvent.Value); + + (bool notStartedCasted, double castStartElapsedMs) = await wait.InterruptTask(400, () => playerReader.PlayerBitValues.IsMounted || playerReader.IsCasting); + logger.LogInformation($"{GetType().Name}: casting: {!notStartedCasted} | Mounted: {playerReader.PlayerBitValues.IsMounted} | Delay: {castStartElapsedMs}ms"); + + if (!playerReader.PlayerBitValues.IsMounted) + { + (bool notmounted, double elapsedMs) = await wait.InterruptTask(mountCastTimeMs, () => playerReader.PlayerBitValues.IsMounted || !playerReader.IsCasting); + logger.LogInformation($"{GetType().Name}: interrupted: {!notmounted} | Mounted: {playerReader.PlayerBitValues.IsMounted} | Delay: {elapsedMs}ms"); + } } } } From f0dcb4255c13560e07f2b7b5507ceb752bce233a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 01:42:02 +0200 Subject: [PATCH 083/132] FollowRouteGoal: fix after mounting reset stuckDetector timers in order to avoid unstuck --- Core/Goals/FollowRouteGoal.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Core/Goals/FollowRouteGoal.cs b/Core/Goals/FollowRouteGoal.cs index 005a5b911..252d0ac90 100644 --- a/Core/Goals/FollowRouteGoal.cs +++ b/Core/Goals/FollowRouteGoal.cs @@ -346,6 +346,7 @@ private async Task MountIfRequired() if (!npcNameFinder.MobsVisible) { await mountHandler.MountUp(); + stuckDetector.ResetStuckParameters(); } else { From c43d089cba5cf15632fd3341d4cf239b46c00fd8 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 02:00:13 +0200 Subject: [PATCH 084/132] CastingHandler: split more how to react ERR_SPELL_OUT_OF_RANGE. incase before pull, try to close the gap. However it happens after pull wait for the mob to come to the player unless its starts casting --- Core/Goals/CastingHandler.cs | 39 ++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 640c6ac65..88ece912e 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -581,9 +581,44 @@ private async Task ReactToLastCastingEvent(KeyAction item, string source) return; } - logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Start moving forward"); + float minRange = playerReader.MinRange; + if (playerReader.PlayerBitValues.PlayerInCombat && playerReader.HasTarget && !playerReader.IsTargetCasting) + { + await wait.Update(2); + if (playerReader.TargetTarget == TargetTargetEnum.TargetIsTargettingMe) + { + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Just wait for the target to get in range."); + + (bool inputNotHappened, double inputElapsedMs) = await wait.InterruptTask(MaxWaitCastTimeMs, + () => minRange != playerReader.MinRange || playerReader.IsTargetCasting + ); + } + } + else + { + double beforeDirection = playerReader.Direction; + await input.TapInteractKey(""); + await input.TapStopAttack(); + await stopMoving.Stop(); + await wait.Update(1); - input.SetKeyState(ConsoleKey.UpArrow, true, false, ""); + if (beforeDirection != playerReader.Direction) + { + await input.TapInteractKey(""); + + (bool inputNotHappened, double inputElapsedMs) = await wait.InterruptTask(MaxWaitCastTimeMs, + () => minRange != playerReader.MinRange); + + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Approached target {minRange}->{playerReader.MinRange}"); + } + else + { + logger.LogInformation($"{source} -- React to {UI_ERROR.ERR_SPELL_OUT_OF_RANGE} -- Start moving forward"); + input.SetKeyState(ConsoleKey.UpArrow, true, false, ""); + } + + + } break; case UI_ERROR.ERR_BADATTACKFACING: From ac6cb89176fc08db147b34b39fe16d7ba2256bd3 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 15:34:39 +0200 Subject: [PATCH 085/132] All profiles: Simplify 'Water' and 'Food' KeyActions by removing unnecessary 'Cooldown', 'DelayAfterCast', 'StopBeforeCast' - This two KeyActions are special and they have their own reserved conditions in backend --- Json/class/Druid_1.json | 6 +----- Json/class/Druid_10_bear.json | 4 ---- Json/class/Druid_12_bear.json | 4 ---- Json/class/Druid_14_bear.json | 4 ---- Json/class/Druid_16_bear.json | 4 ---- Json/class/Druid_20_cat_bear.json | 4 ---- Json/class/Druid_4.json | 6 +----- Json/class/Druid_6.json | 6 +----- Json/class/Druid_bear.json | 2 -- Json/class/Druid_cat.json | 2 -- Json/class/Hunter_10.json | 12 ++---------- Json/class/Hunter_18.json | 12 ++---------- Json/class/Hunter_26.json | 12 ++---------- Json/class/Hunter_30.json | 12 ++---------- Json/class/Hunter_4.json | 12 ++---------- Json/class/Hunter_6.json | 12 ++---------- Json/class/Hunter_62.json | 12 ++---------- Json/class/Mage.json | 10 ++-------- Json/class/Mage12.json | 10 ++-------- Json/class/Mage16.json | 10 ++-------- Json/class/Mage42.json | 10 ++-------- Json/class/Mage44.json | 10 ++-------- Json/class/Mage54.json | 12 ++---------- Json/class/MageAttendedGrind.json | 10 ++-------- Json/class/MageGrind.json | 10 ++-------- Json/class/MageRaid.json | 10 ++-------- Json/class/Mage_1.json | 12 ++---------- Json/class/Mage_10.json | 12 ++---------- Json/class/Mage_12.json | 12 ++---------- Json/class/Mage_14_Arcane_Frost.json | 12 ++---------- Json/class/Mage_19.json | 14 ++------------ Json/class/Mage_25.json | 14 ++------------ Json/class/Mage_30.json | 10 ++-------- Json/class/Mage_4.json | 12 ++---------- Json/class/Mage_54_Frost_Arcane.json | 12 ++---------- Json/class/Mage_6.json | 12 ++---------- Json/class/Mage_herb.json | 10 ++-------- Json/class/Mage_weeping.json | 10 ++-------- Json/class/Paladin.json | 6 +----- Json/class/Paladin_10.json | 13 ++----------- Json/class/Paladin_66.json | 12 ++---------- Json/class/Priest.json | 5 +---- Json/class/Rogue.json | 3 --- Json/class/Rogue_1.json | 6 +----- Json/class/Rogue_10.json | 6 +----- Json/class/Rogue_12.json | 6 +----- Json/class/Shaman_1.json | 12 ++---------- Json/class/Shaman_15.json | 12 ++---------- Json/class/Shaman_2.json | 12 ++---------- Json/class/Shaman_22.json | 12 ++---------- Json/class/Shaman_4.json | 12 ++---------- Json/class/Shaman_44.json | 12 ++---------- Json/class/Shaman_55.json | 12 ++---------- Json/class/Warlock.json | 12 ++---------- Json/class/Warlock_1.json | 12 ++---------- Json/class/Warlock_10.json | 12 ++---------- Json/class/Warlock_20.json | 12 ++---------- Json/class/Warlock_20_shard_farm.json | 12 ++---------- Json/class/Warlock_26_Immunity.json | 12 ++---------- Json/class/Warlock_4.json | 12 ++---------- Json/class/Warlock_8.json | 12 ++---------- Json/class/Warrior.json | 3 --- Json/class/Warrior_1.json | 4 ---- Json/class/Warrior_4.json | 4 ---- 64 files changed, 98 insertions(+), 510 deletions(-) diff --git a/Json/class/Druid_1.json b/Json/class/Druid_1.json index 1eb274c2a..62144dcb2 100644 --- a/Json/class/Druid_1.json +++ b/Json/class/Druid_1.json @@ -42,11 +42,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Druid_10_bear.json b/Json/class/Druid_10_bear.json index fe628e589..8b9e8af79 100644 --- a/Json/class/Druid_10_bear.json +++ b/Json/class/Druid_10_bear.json @@ -98,11 +98,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_12_bear.json b/Json/class/Druid_12_bear.json index e71f5aa46..8ebd91b21 100644 --- a/Json/class/Druid_12_bear.json +++ b/Json/class/Druid_12_bear.json @@ -113,11 +113,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_14_bear.json b/Json/class/Druid_14_bear.json index b96b90a4d..027ddfa1d 100644 --- a/Json/class/Druid_14_bear.json +++ b/Json/class/Druid_14_bear.json @@ -122,11 +122,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index 76fef9224..8df46ffb0 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -127,11 +127,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index 89c126f02..32011ed63 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -163,11 +163,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None" } ] diff --git a/Json/class/Druid_4.json b/Json/class/Druid_4.json index 515afbdb1..53e84e79e 100644 --- a/Json/class/Druid_4.json +++ b/Json/class/Druid_4.json @@ -37,11 +37,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" }, { "Name": "Mark of the Wild", diff --git a/Json/class/Druid_6.json b/Json/class/Druid_6.json index a37f1c629..46be8513f 100644 --- a/Json/class/Druid_6.json +++ b/Json/class/Druid_6.json @@ -69,11 +69,7 @@ { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index 446df079f..23adbdc7e 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -173,10 +173,8 @@ }, { "Name": "Water", - "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None", "Cost": 3 }, diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index 6f6ea1489..2f99bf0af 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -174,10 +174,8 @@ }, { "Name": "Water", - "StopBeforeCast": true, "Key": "0", "Requirement": "Mana%<40", - "Cooldown": 10000, "Form": "None", "Cost": 3 }, diff --git a/Json/class/Hunter_10.json b/Json/class/Hunter_10.json index 176c0abe8..83f6d2970 100644 --- a/Json/class/Hunter_10.json +++ b/Json/class/Hunter_10.json @@ -101,21 +101,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<40", - "Cooldown": 10000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<40", - "Cooldown": 10000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Hunter_18.json b/Json/class/Hunter_18.json index 23e704fb4..4b63e76d0 100644 --- a/Json/class/Hunter_18.json +++ b/Json/class/Hunter_18.json @@ -100,21 +100,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<40", - "Cooldown": 10000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<40", - "Cooldown": 10000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Hunter_26.json b/Json/class/Hunter_26.json index 21206ee7b..6a20645c4 100644 --- a/Json/class/Hunter_26.json +++ b/Json/class/Hunter_26.json @@ -109,21 +109,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<40", - "Cooldown": 10000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<40", - "Cooldown": 10000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Hunter_30.json b/Json/class/Hunter_30.json index ba2fe35dd..0d5213d05 100644 --- a/Json/class/Hunter_30.json +++ b/Json/class/Hunter_30.json @@ -116,21 +116,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<40", - "Cooldown": 10000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<40", - "Cooldown": 10000 + "Requirement": "Mana%<40" } ] } diff --git a/Json/class/Hunter_4.json b/Json/class/Hunter_4.json index 499a0f50c..3bddba868 100644 --- a/Json/class/Hunter_4.json +++ b/Json/class/Hunter_4.json @@ -62,21 +62,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<30", - "Cooldown": 10000 + "Requirement": "Health%<30" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Hunter_6.json b/Json/class/Hunter_6.json index 9cd542275..606b7b62b 100644 --- a/Json/class/Hunter_6.json +++ b/Json/class/Hunter_6.json @@ -55,21 +55,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<30", - "Cooldown": 10000 + "Requirement": "Health%<30" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Hunter_62.json b/Json/class/Hunter_62.json index 0e98c1cf8..22b53a715 100644 --- a/Json/class/Hunter_62.json +++ b/Json/class/Hunter_62.json @@ -129,21 +129,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "-", - "Requirement": "Health%<40", - "Cooldown": 10000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "=", - "Requirement": "Mana%<40", - "Cooldown": 10000 + "Requirement": "Mana%<40" } ] } diff --git a/Json/class/Mage.json b/Json/class/Mage.json index e00657474..74f27f4f4 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -66,19 +66,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<70", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<70" } ] }, diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 8e1dfd519..697b5af15 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -64,19 +64,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index 2cf3bb7c4..aa7d985a5 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -55,19 +55,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index e00657474..74f27f4f4 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -66,19 +66,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<70", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<70" } ] }, diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index cd3eee6c6..ab443ed90 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -78,19 +78,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<70", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<70" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<55", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<55" } ] }, diff --git a/Json/class/Mage54.json b/Json/class/Mage54.json index d64f9b20e..a1f6ef79c 100644 --- a/Json/class/Mage54.json +++ b/Json/class/Mage54.json @@ -70,21 +70,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<60", - "Cooldown": 10000 + "Requirement": "Health%<60" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<60", - "Cooldown": 10000 + "Requirement": "Mana%<60" } ] }, diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index 99dab4253..eec6bec30 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -75,19 +75,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index 9d794dfaa..96fee8ae4 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -70,19 +70,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index 1dc66bad9..5c4b0d6eb 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -68,19 +68,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/Mage_1.json b/Json/class/Mage_1.json index d03fe4368..602ad676c 100644 --- a/Json/class/Mage_1.json +++ b/Json/class/Mage_1.json @@ -42,21 +42,13 @@ }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "=", - "Requirement": "Health%<30", - "Cooldown": 15000 + "Requirement": "Health%<30" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "-", - "Requirement": "Mana%<30", - "Cooldown": 15000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index e10e6c2a4..e879620e1 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -57,21 +57,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<60", - "Cooldown": 10000 + "Requirement": "Health%<60" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<60", - "Cooldown": 10000 + "Requirement": "Mana%<60" } ] }, diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12.json index e24f3ac3d..0c8c755bb 100644 --- a/Json/class/Mage_12.json +++ b/Json/class/Mage_12.json @@ -57,21 +57,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<60", - "Cooldown": 10000 + "Requirement": "Health%<60" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<60", - "Cooldown": 10000 + "Requirement": "Mana%<60" } ] }, diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index 62b204cdd..64a344fd4 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -59,21 +59,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<60", - "Cooldown": 10000 + "Requirement": "Health%<60" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<60", - "Cooldown": 10000 + "Requirement": "Mana%<60" } ] }, diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index 4e582aae4..d75ece602 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -78,23 +78,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 84bc516e8..65ad25312 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -76,23 +76,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<70", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<70" } ] }, diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index 537173fdf..7a4b97b26 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -76,19 +76,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<70", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<70" } ] }, diff --git a/Json/class/Mage_4.json b/Json/class/Mage_4.json index e8d6ef427..a07faaf04 100644 --- a/Json/class/Mage_4.json +++ b/Json/class/Mage_4.json @@ -36,21 +36,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<30", - "Cooldown": 10000 + "Requirement": "Health%<30" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Mage_54_Frost_Arcane.json b/Json/class/Mage_54_Frost_Arcane.json index 3f79c5789..87cf68bb7 100644 --- a/Json/class/Mage_54_Frost_Arcane.json +++ b/Json/class/Mage_54_Frost_Arcane.json @@ -85,21 +85,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 5000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<50", - "Cooldown": 5000 + "Requirement": "Mana%<50" } ] }, diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index 1755087f2..c1c0ebdcf 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -49,21 +49,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "6", - "Requirement": "Health%<50", - "Cooldown": 10000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Mana%<50", - "Cooldown": 10000 + "Requirement": "Mana%<50" } ] }, diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index cf6d74668..4486f899b 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -79,19 +79,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index 88ff3aeb5..513634d7a 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -89,19 +89,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, "Key": "6", - "Requirement": "Health%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Health%<90" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "7", - "Requirement": "Mana%<90", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<90" } ] }, diff --git a/Json/class/Paladin.json b/Json/class/Paladin.json index 2395991df..3fc4c95b7 100644 --- a/Json/class/Paladin.json +++ b/Json/class/Paladin.json @@ -83,13 +83,9 @@ }, { "Name": "Water", - "HasCastBar": true, - "StopBeforeCast": true, "Key": "8", "Requirement": "Mana%<80", - "Cooldown": 60000, - "Cost": 3, - "Log": false + "Cost": 3 }, { "Name": "Sharpen Weapon", diff --git a/Json/class/Paladin_10.json b/Json/class/Paladin_10.json index d10fb3429..431653a69 100644 --- a/Json/class/Paladin_10.json +++ b/Json/class/Paladin_10.json @@ -70,23 +70,14 @@ "Sequence": [ { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "-", - "Requirement": "Mana%<50", - "Cooldown": 5000 + "Requirement": "Mana%<50" }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "=", - "Requirement": "Health%<50", - "Cooldown": 5000 + "Requirement": "Health%<50" } - ] } } diff --git a/Json/class/Paladin_66.json b/Json/class/Paladin_66.json index 935b1d424..ce7609216 100644 --- a/Json/class/Paladin_66.json +++ b/Json/class/Paladin_66.json @@ -145,21 +145,13 @@ }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "8", - "Requirement": "Mana%<50", - "Cooldown": 6000 + "Requirement": "Mana%<50" }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "7", - "Requirement": "Health%<50", - "Cooldown": 6000 + "Requirement": "Health%<50" } ] } diff --git a/Json/class/Priest.json b/Json/class/Priest.json index 9da489634..53fbb9513 100644 --- a/Json/class/Priest.json +++ b/Json/class/Priest.json @@ -117,11 +117,8 @@ }, { "Name": "Water", - "StopBeforeCast": true, "Key": "8", - "Requirement": "Mana%<40", - "Cooldown": 10000, - "Log": false + "Requirement": "Mana%<40" }, { "Name": "Fortitude", diff --git a/Json/class/Rogue.json b/Json/class/Rogue.json index fbfa960ee..64b97d4a4 100644 --- a/Json/class/Rogue.json +++ b/Json/class/Rogue.json @@ -101,11 +101,8 @@ }, { "Name": "Food", - "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<60", - "DelayAfterCast": 1000, - "Log": false, "Cost": 3 }, { diff --git a/Json/class/Rogue_1.json b/Json/class/Rogue_1.json index 3cdddbbf9..3d2d22a20 100644 --- a/Json/class/Rogue_1.json +++ b/Json/class/Rogue_1.json @@ -29,12 +29,8 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<30", - "Cooldown": 15000 + "Requirement": "Health%<30" } ] }, diff --git a/Json/class/Rogue_10.json b/Json/class/Rogue_10.json index 920c5ea34..15041710d 100644 --- a/Json/class/Rogue_10.json +++ b/Json/class/Rogue_10.json @@ -64,12 +64,8 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<30", - "Cooldown": 15000 + "Requirement": "Health%<30" } ] }, diff --git a/Json/class/Rogue_12.json b/Json/class/Rogue_12.json index 4f3799a24..1a6ea1a1b 100644 --- a/Json/class/Rogue_12.json +++ b/Json/class/Rogue_12.json @@ -63,12 +63,8 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<30", - "Cooldown": 15000 + "Requirement": "Health%<30" } ] }, diff --git a/Json/class/Shaman_1.json b/Json/class/Shaman_1.json index c348fcd0d..ab085ccbc 100644 --- a/Json/class/Shaman_1.json +++ b/Json/class/Shaman_1.json @@ -46,21 +46,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "=", - "Requirement": "Health%<30", - "Cooldown": 10000 + "Requirement": "Health%<30" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "-", - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] } diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index 1c7109790..d60d8618f 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -102,21 +102,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "8", - "Requirement": "Health%<40", - "Cooldown": 6000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "9", - "Requirement": "Mana%<40", - "Cooldown": 6000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Shaman_2.json b/Json/class/Shaman_2.json index 3b5d68e39..fd086e85b 100644 --- a/Json/class/Shaman_2.json +++ b/Json/class/Shaman_2.json @@ -54,20 +54,12 @@ { "Name": "Food", "Key": "=", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Health%<30", - "Cooldown": 10000 + "Requirement": "Health%<30" }, { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] } diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index 1d9d7eaf7..c8236e3b8 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -122,21 +122,13 @@ }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "8", - "Requirement": "Health%<40", - "Cooldown": 6000 + "Requirement": "Health%<40" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "9", - "Requirement": "Mana%<40", - "Cooldown": 6000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index e4c3a4fa9..b82c4e6e5 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -56,20 +56,12 @@ { "Name": "Food", "Key": "=", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Health%<30", - "Cooldown": 10000 + "Requirement": "Health%<30" }, { "Name": "Water", "Key": "-", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Requirement": "Mana%<30", - "Cooldown": 10000 + "Requirement": "Mana%<30" } ] }, diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index 33918edc9..8e91064dc 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -126,21 +126,13 @@ "Sequence": [ { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "9", - "Requirement": "Mana%<35", - "Cooldown": 6000 + "Requirement": "Mana%<35" }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "8", - "Requirement": "Health%<35", - "Cooldown": 6000 + "Requirement": "Health%<35" } ] } diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index e2a53954e..af0680ed6 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -126,21 +126,13 @@ }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "9", - "Requirement": "Mana%<45", - "Cooldown": 6000 + "Requirement": "Mana%<45" }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "8", - "Requirement": "Health%<45", - "Cooldown": 6000 + "Requirement": "Health%<45" } ] } diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index a52d8bc59..40737fdcd 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -114,21 +114,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 20000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<50", - "Cooldown": 20000 + "Requirement": "Mana%<50" } ] }, diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index 8984d53bc..9c98ea1bc 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -47,21 +47,13 @@ }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 60000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<50", - "Cooldown": 60000 + "Requirement": "Mana%<50" } ] }, diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index 98994270b..39e3c561f 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -79,21 +79,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 20000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<40", - "Cooldown": 20000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 3cb43e4c7..908bd69d5 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -103,21 +103,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 20000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<40", - "Cooldown": 20000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index 2f2458657..d92f7e94c 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -106,21 +106,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 20000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<40", - "Cooldown": 20000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index d1c887103..7a8786261 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -114,21 +114,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 20000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<40", - "Cooldown": 20000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index 4c906a6a8..d4552e000 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -73,21 +73,13 @@ }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 60000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<50", - "Cooldown": 60000 + "Requirement": "Mana%<50" } ] }, diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index 86bceb53b..709d0d679 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -66,21 +66,13 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 20000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N2", - "Requirement": "Mana%<40", - "Cooldown": 20000 + "Requirement": "Mana%<40" } ] }, diff --git a/Json/class/Warrior.json b/Json/class/Warrior.json index b9d2e3217..274496d02 100644 --- a/Json/class/Warrior.json +++ b/Json/class/Warrior.json @@ -75,11 +75,8 @@ }, { "Name": "Food", - "StopBeforeCast": true, "Key": "=", "Requirement": "Health%<60", - "DelayAfterCast": 1000, - "Log": false, "Cost": 3 }, { diff --git a/Json/class/Warrior_1.json b/Json/class/Warrior_1.json index 9922ff681..1c9c02e3c 100644 --- a/Json/class/Warrior_1.json +++ b/Json/class/Warrior_1.json @@ -24,12 +24,8 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<60", - "Cooldown": 5000, "Cost": 3 } ] diff --git a/Json/class/Warrior_4.json b/Json/class/Warrior_4.json index 5fd3134dc..991e6aa41 100644 --- a/Json/class/Warrior_4.json +++ b/Json/class/Warrior_4.json @@ -55,12 +55,8 @@ "Sequence": [ { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "=", "Requirement": "Health%<60", - "Cooldown": 5000, "Cost": 3 } ] From 2c05b09973b6e7175724f4400150ae2517320158 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 15:40:55 +0200 Subject: [PATCH 086/132] All profiles: Simplify 'Water' and 'Food' - make sure to save... --- Json/class/Mage1to4.json | 8 ++------ Json/class/Rogue_20.json | 6 +----- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 5ed9902ac..9b17869d2 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -42,17 +42,13 @@ }, { "Name": "Food", - "StopBeforeCast": true, "Key": "=", - "Requirement": "Health%<50", - "Cooldown": 60000 + "Requirement": "Health%<50" }, { "Name": "Water", - "StopBeforeCast": true, "Key": "-", - "Requirement": "Mana%<50", - "Cooldown": 60000 + "Requirement": "Mana%<50" } ] } diff --git a/Json/class/Rogue_20.json b/Json/class/Rogue_20.json index e1521b3e2..0a8e067b9 100644 --- a/Json/class/Rogue_20.json +++ b/Json/class/Rogue_20.json @@ -65,12 +65,8 @@ }, { "Name": "Food", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, "Key": "N1", - "Requirement": "Health%<50", - "Cooldown": 15000 + "Requirement": "Health%<50" }, { "Name": "poisonmh", From 3cf9cafae8fd717b6f5414feaf54d8f39f744376 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 16:13:15 +0200 Subject: [PATCH 087/132] all profiles fix order of 'AutoAttack' and 'Approach' and remove any cooldown --- Json/class/Druid_1.json | 8 ++++---- Json/class/Druid_10_bear.json | 8 ++++---- Json/class/Druid_12_bear.json | 8 ++++---- Json/class/Druid_14_bear.json | 8 ++++---- Json/class/Druid_16_bear.json | 8 ++++---- Json/class/Druid_20_cat_bear.json | 8 ++++---- Json/class/Druid_6.json | 8 ++++---- Json/class/Druid_bear.json | 8 ++++---- Json/class/Druid_cat.json | 8 ++++---- Json/class/Mage.json | 1 - Json/class/Mage12.json | 1 - Json/class/Mage1to4.json | 1 - Json/class/Mage42.json | 1 - Json/class/Mage44.json | 1 - Json/class/Mage54.json | 1 - Json/class/Mage_1.json | 9 ++++++--- Json/class/Mage_10.json | 1 - Json/class/Mage_12.json | 1 - Json/class/Mage_14_Arcane_Frost.json | 1 - Json/class/Mage_19.json | 1 - Json/class/Mage_25.json | 1 - Json/class/Mage_30.json | 1 - Json/class/Mage_4.json | 7 +++++-- Json/class/Mage_6.json | 1 - Json/class/Paladin_1.json | 9 ++++----- Json/class/Paladin_10.json | 8 ++++---- Json/class/Paladin_66.json | 9 ++++----- Json/class/Rogue.json | 9 ++++----- Json/class/Rogue_1.json | 9 ++++----- Json/class/Rogue_10.json | 9 ++++----- Json/class/Rogue_12.json | 9 ++++----- Json/class/Rogue_20.json | 6 +++++- Json/class/Shaman_1.json | 9 ++++----- Json/class/Shaman_15.json | 9 ++++----- Json/class/Shaman_2.json | 7 +++++-- Json/class/Shaman_22.json | 9 ++++----- Json/class/Shaman_4.json | 8 ++++---- Json/class/Shaman_44.json | 9 ++++----- Json/class/Shaman_55.json | 9 ++++----- Json/class/Warlock.json | 1 - Json/class/Warlock_1.json | 11 ++++------- Json/class/Warlock_10.json | 1 - Json/class/Warlock_20.json | 1 - Json/class/Warlock_20_shard_farm.json | 1 - Json/class/Warlock_26_Immunity.json | 1 - Json/class/Warlock_4.json | 11 ++++------- Json/class/Warlock_8.json | 1 - Json/class/Warrior.json | 9 ++++----- Json/class/Warrior_1.json | 8 ++++---- Json/class/Warrior_4.json | 8 ++++---- 50 files changed, 129 insertions(+), 153 deletions(-) diff --git a/Json/class/Druid_1.json b/Json/class/Druid_1.json index 62144dcb2..db07105d1 100644 --- a/Json/class/Druid_1.json +++ b/Json/class/Druid_1.json @@ -27,13 +27,13 @@ "Requirement": "TargetHealth%>50", "HasCastBar": true }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_10_bear.json b/Json/class/Druid_10_bear.json index 8b9e8af79..4d008c0ec 100644 --- a/Json/class/Druid_10_bear.json +++ b/Json/class/Druid_10_bear.json @@ -67,13 +67,13 @@ "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_12_bear.json b/Json/class/Druid_12_bear.json index 8ebd91b21..2bcf75df1 100644 --- a/Json/class/Druid_12_bear.json +++ b/Json/class/Druid_12_bear.json @@ -75,13 +75,13 @@ "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_14_bear.json b/Json/class/Druid_14_bear.json index 027ddfa1d..a117c7d73 100644 --- a/Json/class/Druid_14_bear.json +++ b/Json/class/Druid_14_bear.json @@ -84,13 +84,13 @@ "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index 8df46ffb0..e3a8b7753 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -96,13 +96,13 @@ "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index 32011ed63..3782fc122 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -132,13 +132,13 @@ "Key": "F3", "Requirements": ["not Form:Druid_Cat", "Health%>60", "MobCount<1"] }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_6.json b/Json/class/Druid_6.json index 46be8513f..40b8b642b 100644 --- a/Json/class/Druid_6.json +++ b/Json/class/Druid_6.json @@ -40,13 +40,13 @@ "Requirement": "TargetHealth%>50", "HasCastBar": true }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index 23adbdc7e..9349ddd48 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -133,13 +133,13 @@ "Requirements": ["InMeleeRange", "MobCount<1", "LastMainHandMs>2100"], // bear swing speed fixed at 2.5 "Form": "Druid_Bear" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index 2f99bf0af..b797d8b8e 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -135,13 +135,13 @@ "Cooldown": 1000, "Form": "Druid_Cat" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 74f27f4f4..702210878 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -57,7 +57,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage12.json b/Json/class/Mage12.json index 697b5af15..0dfb17a0a 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage12.json @@ -33,7 +33,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json index 9b17869d2..4f6c92154 100644 --- a/Json/class/Mage1to4.json +++ b/Json/class/Mage1to4.json @@ -27,7 +27,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage42.json b/Json/class/Mage42.json index 74f27f4f4..702210878 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage42.json @@ -57,7 +57,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index ab443ed90..7013fc833 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -69,7 +69,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage54.json b/Json/class/Mage54.json index a1f6ef79c..6949ace3b 100644 --- a/Json/class/Mage54.json +++ b/Json/class/Mage54.json @@ -61,7 +61,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_1.json b/Json/class/Mage_1.json index 602ad676c..0bd33438b 100644 --- a/Json/class/Mage_1.json +++ b/Json/class/Mage_1.json @@ -23,12 +23,15 @@ "HasCastBar": true, "Key": "2", "MinMana": 30, - "Requirement": "TargetHealth%>10" + "Requirement": "TargetHealth%>20" }, { "Name": "AutoAttack", - "Cooldown": 3000, - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] + "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index e879620e1..37f1cd7b9 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -48,7 +48,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12.json index 0c8c755bb..6c1386c56 100644 --- a/Json/class/Mage_12.json +++ b/Json/class/Mage_12.json @@ -48,7 +48,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index 64a344fd4..8b9d7f235 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -50,7 +50,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19.json index d75ece602..83c13a791 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19.json @@ -69,7 +69,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25.json index 65ad25312..87b1c3ed4 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25.json @@ -67,7 +67,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30.json index 7a4b97b26..25e45111f 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30.json @@ -67,7 +67,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Mage_4.json b/Json/class/Mage_4.json index a07faaf04..5da4d68b9 100644 --- a/Json/class/Mage_4.json +++ b/Json/class/Mage_4.json @@ -27,8 +27,11 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] + "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index c1c0ebdcf..2e73d69e5 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -40,7 +40,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Paladin_1.json b/Json/class/Paladin_1.json index 90f684724..4be838b15 100644 --- a/Json/class/Paladin_1.json +++ b/Json/class/Paladin_1.json @@ -10,14 +10,13 @@ "Cooldown": 2000, "Requirement": "not Seal" }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Paladin_10.json b/Json/class/Paladin_10.json index 431653a69..26e08b06a 100644 --- a/Json/class/Paladin_10.json +++ b/Json/class/Paladin_10.json @@ -39,13 +39,13 @@ "WaitBuffAfterCast": true, "Requirement": "not Seal" }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Paladin_66.json b/Json/class/Paladin_66.json index ce7609216..705cd6197 100644 --- a/Json/class/Paladin_66.json +++ b/Json/class/Paladin_66.json @@ -101,14 +101,13 @@ "Mana%>60" ] }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Rogue.json b/Json/class/Rogue.json index 64b97d4a4..81c3efc01 100644 --- a/Json/class/Rogue.json +++ b/Json/class/Rogue.json @@ -77,14 +77,13 @@ "Key": "2", "MinEnergy": 40 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Rogue_1.json b/Json/class/Rogue_1.json index 3d2d22a20..737e9a5b4 100644 --- a/Json/class/Rogue_1.json +++ b/Json/class/Rogue_1.json @@ -14,14 +14,13 @@ "Key": "2", "MinEnergy": 45 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Rogue_10.json b/Json/class/Rogue_10.json index 15041710d..7c3ece6ab 100644 --- a/Json/class/Rogue_10.json +++ b/Json/class/Rogue_10.json @@ -50,13 +50,12 @@ "Requirement": "LastMainHandMs<500" }, { - "Name": "Approach", - "Log": false + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" }, { - "Name": "AutoAttack", - "Requirement": "not AutoAttacking", - "Cooldown": 1000 + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Rogue_12.json b/Json/class/Rogue_12.json index 1a6ea1a1b..b75236d99 100644 --- a/Json/class/Rogue_12.json +++ b/Json/class/Rogue_12.json @@ -49,13 +49,12 @@ "Requirement": "LastMainHandMs<500" }, { - "Name": "Approach", - "Log": false + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" }, { - "Name": "AutoAttack", - "Requirement": "not AutoAttacking", - "Cooldown": 1000 + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Rogue_20.json b/Json/class/Rogue_20.json index 0a8e067b9..920c215ec 100644 --- a/Json/class/Rogue_20.json +++ b/Json/class/Rogue_20.json @@ -48,7 +48,11 @@ }, { "Name": "AutoAttack", - "Cooldown": 1000 + "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_1.json b/Json/class/Shaman_1.json index ab085ccbc..5ca422025 100644 --- a/Json/class/Shaman_1.json +++ b/Json/class/Shaman_1.json @@ -31,14 +31,13 @@ "HasCastBar": true, "MinMana": 25 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index d60d8618f..5db983af0 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -71,14 +71,13 @@ "Log": false, "MinMana": 30 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_2.json b/Json/class/Shaman_2.json index fd086e85b..087a90458 100644 --- a/Json/class/Shaman_2.json +++ b/Json/class/Shaman_2.json @@ -34,8 +34,11 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, - "Requirements": ["not AutoAttacking"] + "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index c8236e3b8..d81f594e3 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -82,14 +82,13 @@ "Log": false, "MinMana": 80 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index b82c4e6e5..500fd22a7 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -31,13 +31,13 @@ "Log": false, "MinMana": 25 }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index 8e91064dc..040026394 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -88,14 +88,13 @@ "WhenUsable": true, "MinMana": 80 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index af0680ed6..33bda52a5 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -77,14 +77,13 @@ "WhenUsable": true, "MinMana": 80 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index 40737fdcd..2b01ccd6d 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -105,7 +105,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index 9c98ea1bc..f5aef6651 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -25,15 +25,12 @@ "MinMana": 25 }, { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" }, { - "Name": "AutoAttack", - "Cooldown": 3000, - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index 39e3c561f..8b594a614 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -70,7 +70,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 908bd69d5..8d2d97c8c 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -88,7 +88,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] }, { diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index d92f7e94c..d1c4c513e 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -91,7 +91,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] }, { diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index 7a8786261..cadf48e5d 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -99,7 +99,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] }, { diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index d4552e000..10031e1d1 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -42,15 +42,12 @@ "Cooldown": 8000 }, { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" }, { - "Name": "AutoAttack", - "Cooldown": 3000, - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index 709d0d679..2b996c667 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -57,7 +57,6 @@ }, { "Name": "AutoAttack", - "Cooldown": 3000, "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] diff --git a/Json/class/Warrior.json b/Json/class/Warrior.json index 274496d02..e38c83ece 100644 --- a/Json/class/Warrior.json +++ b/Json/class/Warrior.json @@ -51,14 +51,13 @@ "AfterCastWaitNextSwing": true, "MinRage": 10 }, - { - "Name": "Approach", - "Requirement": "not InMeleeRange", - "Cooldown": 1000 - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Warrior_1.json b/Json/class/Warrior_1.json index 1c9c02e3c..3f0ec32a3 100644 --- a/Json/class/Warrior_1.json +++ b/Json/class/Warrior_1.json @@ -10,13 +10,13 @@ "WhenUsable": true, "MinRage": 15 }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, diff --git a/Json/class/Warrior_4.json b/Json/class/Warrior_4.json index 991e6aa41..cebbfb3cd 100644 --- a/Json/class/Warrior_4.json +++ b/Json/class/Warrior_4.json @@ -41,13 +41,13 @@ "WhenUsable": true, "MinRage": 15 }, - { - "Name": "Approach", - "Log": false - }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false } ] }, From 6ce46f32b87fdf0f0b623c9f6d6e854fb24b7212 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 16:19:58 +0200 Subject: [PATCH 088/132] Mage profiles: remove 'Interact' keyaction --- Json/class/Mage16.json | 10 ---------- Json/class/Mage44.json | 5 ----- 2 files changed, 15 deletions(-) diff --git a/Json/class/Mage16.json b/Json/class/Mage16.json index aa7d985a5..412d9eb06 100644 --- a/Json/class/Mage16.json +++ b/Json/class/Mage16.json @@ -9,11 +9,6 @@ "Pull": { "Sequence": [ - { - "Name": "Interact", - "Cooldown": 12000, - "DelayAfterCast": 0 - }, { "Name": "Frostbolt", "HasCastBar": true, @@ -32,11 +27,6 @@ }, "Combat": { "Sequence": [ - { - "Name": "Interact", - "Cooldown": 12000, - "DelayAfterCast": 0 - }, { "Name": "Fireblast", "Key": "0", diff --git a/Json/class/Mage44.json b/Json/class/Mage44.json index 7013fc833..170a7a68c 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage44.json @@ -19,11 +19,6 @@ "Pull": { "Sequence": [ - { - "Name": "Interact", - "Cooldown": 12000, - "DelayAfterCast": 0 - }, { "Name": "Fireball", "HasCastBar": true, From 9c35683fe05256de2eaf035d0c62c699f0c2b540 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 16:20:44 +0200 Subject: [PATCH 089/132] Rename mage profiles --- Json/class/Mage1to4.json | 54 ------------------- .../{Mage12.json => Mage_12_Arcane.json} | 5 -- .../class/{Mage_12.json => Mage_12_Fire.json} | 0 3 files changed, 59 deletions(-) delete mode 100644 Json/class/Mage1to4.json rename Json/class/{Mage12.json => Mage_12_Arcane.json} (95%) rename Json/class/{Mage_12.json => Mage_12_Fire.json} (100%) diff --git a/Json/class/Mage1to4.json b/Json/class/Mage1to4.json deleted file mode 100644 index 4f6c92154..000000000 --- a/Json/class/Mage1to4.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": false, - - "PathFilename": "1_Gnome.json", - "SpiritPathFilename": "1_Gnome.json", - "PathThereAndBack": true, - "PathReduceSteps": false, - - "Pull": { - "Sequence": [ - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 30 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 30 - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Adhoc": { - "Sequence": [ - { - "Name": "Frost Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Food", - "Key": "=", - "Requirement": "Health%<50" - }, - { - "Name": "Water", - "Key": "-", - "Requirement": "Mana%<50" - } - ] - } -} diff --git a/Json/class/Mage12.json b/Json/class/Mage_12_Arcane.json similarity index 95% rename from Json/class/Mage12.json rename to Json/class/Mage_12_Arcane.json index 0dfb17a0a..95912893a 100644 --- a/Json/class/Mage12.json +++ b/Json/class/Mage_12_Arcane.json @@ -39,11 +39,6 @@ }, "Combat": { "Sequence": [ - { - "Name": "Interact", - "Cooldown": 12000, - "DelayAfterCast": 0 - }, { "Name": "Fireblast", "Key": "0", diff --git a/Json/class/Mage_12.json b/Json/class/Mage_12_Fire.json similarity index 100% rename from Json/class/Mage_12.json rename to Json/class/Mage_12_Fire.json From b84b5eb4d8d8e5b2e50f4a1d35eca4c0e6bd6ba3 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 16:27:26 +0200 Subject: [PATCH 090/132] Mage profiles: file naming convention - added primary school spells as suffix - removed blink --- Json/class/Mage.json | 6 ------ Json/class/MageAttendedGrind.json | 5 ----- Json/class/MageGrind.json | 5 ----- Json/class/MageRaid.json | 7 +------ Json/class/{Mage16.json => Mage_16_Arcane_Fire.json} | 0 Json/class/{Mage_19.json => Mage_19_Fire.json} | 5 ----- Json/class/{Mage_25.json => Mage_25_Fire.json} | 6 ------ Json/class/{Mage_30.json => Mage_30_Fire.json} | 6 ------ Json/class/{Mage42.json => Mage_42_Fire.json} | 6 ------ Json/class/{Mage44.json => Mage_44_Fire.json} | 5 ----- Json/class/{Mage54.json => Mage_54_Fire.json} | 0 Json/class/Mage_herb.json | 7 +------ Json/class/Mage_weeping.json | 5 ----- 13 files changed, 2 insertions(+), 61 deletions(-) rename Json/class/{Mage16.json => Mage_16_Arcane_Fire.json} (100%) rename Json/class/{Mage_19.json => Mage_19_Fire.json} (96%) rename Json/class/{Mage_25.json => Mage_25_Fire.json} (98%) rename Json/class/{Mage_30.json => Mage_30_Fire.json} (98%) rename Json/class/{Mage42.json => Mage_42_Fire.json} (97%) rename Json/class/{Mage44.json => Mage_44_Fire.json} (98%) rename Json/class/{Mage54.json => Mage_54_Fire.json} (100%) diff --git a/Json/class/Mage.json b/Json/class/Mage.json index 702210878..c4ace8aaf 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -11,12 +11,6 @@ "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/MageAttendedGrind.json b/Json/class/MageAttendedGrind.json index eec6bec30..024faf487 100644 --- a/Json/class/MageAttendedGrind.json +++ b/Json/class/MageAttendedGrind.json @@ -13,11 +13,6 @@ "Blacklist": ["hive","tortured"], - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/MageGrind.json b/Json/class/MageGrind.json index 96fee8ae4..a63166ee4 100644 --- a/Json/class/MageGrind.json +++ b/Json/class/MageGrind.json @@ -11,11 +11,6 @@ "Blacklist": ["hive","tortured"], - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/MageRaid.json b/Json/class/MageRaid.json index 5c4b0d6eb..f87bd6881 100644 --- a/Json/class/MageRaid.json +++ b/Json/class/MageRaid.json @@ -12,12 +12,7 @@ "Mode": "AttendedGrind", "Blacklist": ["hive","tortured"], - - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - + "Pull": { "Sequence": [ { diff --git a/Json/class/Mage16.json b/Json/class/Mage_16_Arcane_Fire.json similarity index 100% rename from Json/class/Mage16.json rename to Json/class/Mage_16_Arcane_Fire.json diff --git a/Json/class/Mage_19.json b/Json/class/Mage_19_Fire.json similarity index 96% rename from Json/class/Mage_19.json rename to Json/class/Mage_19_Fire.json index 83c13a791..ce6945391 100644 --- a/Json/class/Mage_19.json +++ b/Json/class/Mage_19_Fire.json @@ -11,11 +11,6 @@ "Pull": { "Sequence": [ - { - "Name": "Interact", - "Cooldown": 12000, - "DelayAfterCast": 0 - }, { "Name": "Frostbolt", "HasCastBar": true, diff --git a/Json/class/Mage_25.json b/Json/class/Mage_25_Fire.json similarity index 98% rename from Json/class/Mage_25.json rename to Json/class/Mage_25_Fire.json index 87b1c3ed4..c0577e99a 100644 --- a/Json/class/Mage_25.json +++ b/Json/class/Mage_25_Fire.json @@ -12,12 +12,6 @@ "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/Mage_30.json b/Json/class/Mage_30_Fire.json similarity index 98% rename from Json/class/Mage_30.json rename to Json/class/Mage_30_Fire.json index 25e45111f..eb1ffef55 100644 --- a/Json/class/Mage_30.json +++ b/Json/class/Mage_30_Fire.json @@ -12,12 +12,6 @@ "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/Mage42.json b/Json/class/Mage_42_Fire.json similarity index 97% rename from Json/class/Mage42.json rename to Json/class/Mage_42_Fire.json index 702210878..c4ace8aaf 100644 --- a/Json/class/Mage42.json +++ b/Json/class/Mage_42_Fire.json @@ -11,12 +11,6 @@ "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/Mage44.json b/Json/class/Mage_44_Fire.json similarity index 98% rename from Json/class/Mage44.json rename to Json/class/Mage_44_Fire.json index 170a7a68c..ae72fd3e2 100644 --- a/Json/class/Mage44.json +++ b/Json/class/Mage_44_Fire.json @@ -12,11 +12,6 @@ "Blacklist": ["Loch Crocolisk","Stonesplinter","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { diff --git a/Json/class/Mage54.json b/Json/class/Mage_54_Fire.json similarity index 100% rename from Json/class/Mage54.json rename to Json/class/Mage_54_Fire.json diff --git a/Json/class/Mage_herb.json b/Json/class/Mage_herb.json index 4486f899b..6062d4de2 100644 --- a/Json/class/Mage_herb.json +++ b/Json/class/Mage_herb.json @@ -13,11 +13,6 @@ "Blacklist": ["hive","tortured"], - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { @@ -39,7 +34,7 @@ "Combat": { "Sequence": [ { - "Name": "Hero Charm", + "Name": "Trinket Hero Charm", "Key": "F8", "Cooldown": 120000, "Log": false, diff --git a/Json/class/Mage_weeping.json b/Json/class/Mage_weeping.json index 513634d7a..3acb88f1e 100644 --- a/Json/class/Mage_weeping.json +++ b/Json/class/Mage_weeping.json @@ -13,11 +13,6 @@ "Blacklist": ["hive","tortured"], - "Blink":{ - "Name": "Blink", - "Key": "T" - }, - "Pull": { "Sequence": [ { From 65c42e00593463acc41c9ab5809284bf1c09fe6b Mon Sep 17 00:00:00 2001 From: Xian55 Date: Sun, 17 Oct 2021 16:32:18 +0200 Subject: [PATCH 091/132] Warlock profiles: 'Health Funnel' higher prio and use 'WhenUsable' since pet can be outside of range --- Json/class/Warlock_20.json | 13 +++++++------ Json/class/Warlock_20_shard_farm.json | 13 +++++++------ Json/class/Warlock_26_Immunity.json | 13 +++++++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 8d2d97c8c..4d96e130c 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -80,6 +80,13 @@ "Log": false, "Cooldown": 8000 }, + { + "Name": "Health Funnel", + "Key": "N6", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] + }, { "Name": "Shoot", "Key": "0", @@ -89,12 +96,6 @@ { "Name": "AutoAttack", "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - }, - { - "Name": "Health Funnel", - "Key": "N6", - "HasCastBar": true, - "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] } ] }, diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index d1c4c513e..16cd2c57e 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -83,6 +83,13 @@ "Log": false, "Cooldown": 8000 }, + { + "Name": "Health Funnel", + "Key": "N6", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] + }, { "Name": "Shoot", "Key": "0", @@ -92,12 +99,6 @@ { "Name": "AutoAttack", "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - }, - { - "Name": "Health Funnel", - "Key": "N6", - "HasCastBar": true, - "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] } ] }, diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index cadf48e5d..0323211b7 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -91,6 +91,13 @@ "Log": false, "Cooldown": 8000 }, + { + "Name": "Health Funnel", + "Key": "N6", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] + }, { "Name": "Shoot", "Key": "0", @@ -100,12 +107,6 @@ { "Name": "AutoAttack", "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - }, - { - "Name": "Health Funnel", - "Key": "N6", - "HasCastBar": true, - "Requirements": ["Has Pet", "Health%>70", "PetHealth%<30"] } ] }, From bbfcfea5f335b0beac3d0f8b9adec420d5a622ff Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 13:19:04 +0200 Subject: [PATCH 092/132] CastinHandler: use formKeyAction PressDuration --- Core/Goals/CastingHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 88ece912e..38da1d960 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -425,7 +425,7 @@ protected async Task SwitchToCorrectStanceForm(Form beforeForm, KeyAction return false; } - await input.KeyPress(formKeyAction.ConsoleKey, item.PressDuration); + await input.KeyPress(formKeyAction.ConsoleKey, formKeyAction.PressDuration); (bool notChanged, double elapsedMs) = await wait.InterruptTask(SpellQueueTimeMs, () => beforeForm != playerReader.Form); item.LogInformation($" ... form changed: {!notChanged} | Delay: {elapsedMs}ms"); From 7d9f118f9975559df4bd0770d7c55b4589de5310 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 13:51:23 +0200 Subject: [PATCH 093/132] Druid cat with bear: Upon not casting Moonfire atleast go into cat form --- Json/class/Druid_20_cat_bear.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index 3782fc122..7489de266 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -47,7 +47,7 @@ { "Name": "Cat Form", "Key": "F3", - "Requirements": ["Moonfire", "not Form:Druid_Cat"], + "Requirements": ["not Form:Druid_Cat"], "WaitForWithinMeleeRange": true }, { @@ -62,8 +62,8 @@ "Name": "Healing Touch", "Key": "3", "HasCastBar": true, + "WhenUsable": true, "Requirement": "Health%<30", - "Cooldown": 5000, "Form": "None" }, { From 3116b36c72571d6e4e7c1f4e30b192d40932e762 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 13:55:41 +0200 Subject: [PATCH 094/132] CombatGoal: Only react to LastUIErrorMessage when current KeyAction either Approach or AutoAttack --- Core/Goals/CombatGoal.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Core/Goals/CombatGoal.cs b/Core/Goals/CombatGoal.cs index 9a4cd38e7..8600072ff 100644 --- a/Core/Goals/CombatGoal.cs +++ b/Core/Goals/CombatGoal.cs @@ -76,13 +76,14 @@ protected async Task Fight() lastKnownMaxDistance = playerReader.MaxRange; } - if (playerReader.IsAutoAttacking) - { - await castingHandler.ReactToLastUIErrorMessage($"{GetType().Name}: Fight AutoAttacking"); - } - if (await castingHandler.CastIfReady(item, item.DelayBeforeCast)) { + if (item.Name == classConfiguration.Approach.Name || + item.Name == classConfiguration.AutoAttack.Name) + { + await castingHandler.ReactToLastUIErrorMessage($"{GetType().Name}: Fight {item.Name}"); + } + break; } } From f87f4568d2a5631e35d8705d0a4aa3c0333c9560 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 16:02:38 +0200 Subject: [PATCH 095/132] NpcNameFinder: Define regions of the screen to determine possible target count and possible adds count around the target. When using 'PotentialAddsExist' show the numbers --- Core/Goals/CastingHandler.cs | 3 ++- SharedLib/NpcFinder/NpcNameFinder.cs | 29 ++++++++++++++++++++++------ SharedLib/NpcFinder/NpcPosition.cs | 20 ++++++++++++------- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 38da1d960..3756aaad6 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -52,7 +52,7 @@ protected bool CanRun(KeyAction item) var needAdds = bool.Parse(item.CastIfAddsVisible); if (needAdds != npcNameFinder.PotentialAddsExist) { - item.LogInformation($"Only cast if adds exist = {item.CastIfAddsVisible} and it is {npcNameFinder.PotentialAddsExist}"); + item.LogInformation($"Only cast if adds exist = {item.CastIfAddsVisible} and it is {npcNameFinder.PotentialAddsExist} - Targets:{npcNameFinder.TargetCount} - Adds:{npcNameFinder.AddCount}"); return false; } } @@ -550,6 +550,7 @@ private async Task ReactToLastCastingEvent(KeyAction item, string source) case UI_ERROR.NONE: break; case UI_ERROR.ERR_SPELL_FAILED_INTERRUPTED: + item.SetClicked(); break; case UI_ERROR.CAST_START: break; diff --git a/SharedLib/NpcFinder/NpcNameFinder.cs b/SharedLib/NpcFinder/NpcNameFinder.cs index 393fa1719..c7163ff0f 100644 --- a/SharedLib/NpcFinder/NpcNameFinder.cs +++ b/SharedLib/NpcFinder/NpcNameFinder.cs @@ -38,6 +38,8 @@ public class NpcNameFinder public List Npcs { get; private set; } = new List(); public int NpcCount => npcs.Count; + public int AddCount { private set; get; } + public int TargetCount { private set; get; } public bool MobsVisible => npcs.Count > 0; public bool PotentialAddsExist { get; private set; } public DateTime LastPotentialAddsSeen { get; private set; } = default; @@ -146,19 +148,20 @@ public void Update() public void UpdatePotentialAddsExist() { - var countAdds = Npcs.Where(c => c.IsAdd).Where(c => c.Height > ScaleHeight(2)).Count(); - var MobsVisible = Npcs.Where(c => c.Height > ScaleHeight(2)).Any(); + TargetCount = Npcs.Where(c => !c.IsAdd).Where(c => Math.Abs(c.ClickPoint.X - c.screenMid) < c.screenTargetBuffer).Count(); + AddCount = Npcs.Where(c => c.IsAdd).Count(); - if (countAdds > 0) + if (Npcs.Count > 1 && TargetCount >= 1 && AddCount > 0) { PotentialAddsExist = true; LastPotentialAddsSeen = DateTime.Now; } else { - if (PotentialAddsExist && (DateTime.Now - LastPotentialAddsSeen).TotalSeconds > 2) + if (PotentialAddsExist && (DateTime.Now - LastPotentialAddsSeen).TotalSeconds > 1) { PotentialAddsExist = false; + AddCount = 0; } } } @@ -262,10 +265,24 @@ public void ShowNames(Graphics gr) { return; } - using (var whitePen = new Pen(Color.White, 3)) + + using var whitePen = new Pen(Color.White, 3); + using var greyPen = new Pen(Color.Gray, 3); + + /* + if (Npcs.Any()) { - Npcs.ForEach(n => gr.DrawRectangle(whitePen, new Rectangle(n.Min, new Size(n.Width, n.Height)))); + // target area + gr.DrawLine(whitePen, new Point(Npcs[0].screenMid - Npcs[0].screenTargetBuffer, Area.Top), new Point(Npcs[0].screenMid - Npcs[0].screenTargetBuffer, Area.Bottom)); + gr.DrawLine(whitePen, new Point(Npcs[0].screenMid + Npcs[0].screenTargetBuffer, Area.Top), new Point(Npcs[0].screenMid + Npcs[0].screenTargetBuffer, Area.Bottom)); + + // adds area + gr.DrawLine(greyPen, new Point(Npcs[0].screenMid - Npcs[0].screenAddBuffer, Area.Top), new Point(Npcs[0].screenMid - Npcs[0].screenAddBuffer, Area.Bottom)); + gr.DrawLine(greyPen, new Point(Npcs[0].screenMid + Npcs[0].screenAddBuffer, Area.Top), new Point(Npcs[0].screenMid + Npcs[0].screenAddBuffer, Area.Bottom)); } + */ + + Npcs.ForEach(n => gr.DrawRectangle(n.IsAdd ? greyPen : whitePen, new Rectangle(n.Min, new Size(n.Width, n.Height)))); } public Point ToScreenCoordinates(int x, int y) diff --git a/SharedLib/NpcFinder/NpcPosition.cs b/SharedLib/NpcFinder/NpcPosition.cs index 6b1c178b8..35fa6aba3 100644 --- a/SharedLib/NpcFinder/NpcPosition.cs +++ b/SharedLib/NpcFinder/NpcPosition.cs @@ -12,22 +12,28 @@ public class NpcPosition public int Height => Max.Y - Min.Y; public int Width => Max.X - Min.X; - private readonly int screenMid; - private readonly int screenMidBuffer; + public readonly int screenMid; + public readonly int screenTargetBuffer; + public readonly int screenMidBuffer; + public readonly int screenAddBuffer; private readonly float yOffset; private readonly float heightMul; - public bool IsAdd => ClickPoint.X < screenMid - screenMidBuffer || ClickPoint.X > screenMid + screenMidBuffer; + public bool IsAdd => + (ClickPoint.X < screenMid - screenTargetBuffer && ClickPoint.X > screenMid - screenAddBuffer) || + (ClickPoint.X > screenMid + screenTargetBuffer && ClickPoint.X < screenMid + screenAddBuffer); public Point ClickPoint => new Point(Min.X + (Width / 2), (int)(Max.Y + yOffset + (Height * heightMul))); public NpcPosition(Point min, Point max, int screenWidth, float yOffset, float heightMul) { - this.Min = min; - this.Max = max; - this.screenMid = screenWidth / 2; - this.screenMidBuffer = screenWidth / 10; + Min = min; + Max = max; + screenMid = screenWidth / 2; + screenMidBuffer = screenWidth / 15; + screenTargetBuffer = screenMidBuffer / 4; + screenAddBuffer = screenMidBuffer * 3; this.yOffset = yOffset; this.heightMul = heightMul; From 931ec7e86581979ee0bf05aaac530e9d2e493b6e Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 16:03:34 +0200 Subject: [PATCH 096/132] Druid cat bear: more accurate range checks and reduce min mana for drink --- Json/class/Druid_20_cat_bear.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index 7489de266..85ec6b31c 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -64,6 +64,7 @@ "HasCastBar": true, "WhenUsable": true, "Requirement": "Health%<30", + "Cooldown": 5000, "Form": "None" }, { @@ -72,7 +73,7 @@ "MinEnergy": 30, "MinComboPoints": 1, "WhenUsable": true, - "Requirements": ["InMeleeRange", "not Rip", "MobCount<1", "Form:Druid_Cat"], + "Requirements": ["SpellInRange:2", "not Rip", "MobCount<1", "Form:Druid_Cat"], "Form": "Druid_Cat" }, { @@ -80,7 +81,7 @@ "Key": "2", "MinEnergy": 40, "WhenUsable": true, - "Requirements": ["InMeleeRange", "MobCount<1", "Form:Druid_Cat"], + "Requirements": ["SpellInRange:2", "MobCount<1", "Form:Druid_Cat"], "Form": "Druid_Cat" }, { @@ -91,7 +92,7 @@ { "Name": "Bash", "Key": "5", - "Requirements": ["InMeleeRange", "TargetCastingSpell"], + "Requirements": ["SpellInRange:1", "TargetCastingSpell"], "WhenUsable": true, "MinRage": 10, "Form": "Druid_Bear" @@ -163,7 +164,7 @@ { "Name": "Water", "Key": "-", - "Requirement": "Mana%<40", + "Requirement": "Mana%<30", "Form": "None" } ] From 3600cd5c49fe65a6df21a79c382bce60d118b178 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 16:04:53 +0200 Subject: [PATCH 097/132] Druid cat bear: Only use moonfire on pull when 'CastIfAddsVisible' after that if casted moonfire wait for the target to reach the player otherwise just go the the target in cat form --- Json/class/Druid_20_cat_bear.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index 85ec6b31c..ba05933a2 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -40,6 +40,7 @@ "Name": "Moonfire", "Key": "5", "AfterCastWaitBuff": true, + "CastIfAddsVisible": true, "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>40"], "StopBeforeCast": true, "Form": "None" @@ -47,8 +48,13 @@ { "Name": "Cat Form", "Key": "F3", - "Requirements": ["not Form:Druid_Cat"], - "WaitForWithinMeleeRange": true + "WaitForWithinMeleeRange": true, + "Requirements": ["Moonfire", "not Form:Druid_Cat"] + }, + { + "Name": "Cat Form", + "Key": "F3", + "Requirements": ["not Form:Druid_Cat"] }, { "Name": "Approach", From c4824a6a4a8a1270a82c628d9c88c654602838cc Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 16:06:11 +0200 Subject: [PATCH 098/132] KeyAction: remove int cast Cooldown - remove Contains check --- Core/ClassConfig/KeyAction.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Core/ClassConfig/KeyAction.cs b/Core/ClassConfig/KeyAction.cs index 5b5963377..926a95bac 100644 --- a/Core/ClassConfig/KeyAction.cs +++ b/Core/ClassConfig/KeyAction.cs @@ -156,7 +156,7 @@ public float GetCooldownRemaining() return 0; } - var remaining = this.Cooldown - ((int)(DateTime.Now - LastClicked[ConsoleKeyFormHash]).TotalMilliseconds); + var remaining = Cooldown - (float)(DateTime.Now - LastClicked[ConsoleKeyFormHash]).TotalMilliseconds; return remaining < 0 ? 0 : remaining; } @@ -201,10 +201,7 @@ internal void SetClicked() internal void ResetCooldown() { - if (LastClicked.ContainsKey(ConsoleKeyFormHash)) - { - LastClicked.TryRemove(ConsoleKeyFormHash, out _); - } + LastClicked.TryRemove(ConsoleKeyFormHash, out _); } public void CreateChargeRequirement() From 6b8ea2d527573f8755619b679043ebfca9ff1cdb Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 17:30:54 +0200 Subject: [PATCH 099/132] Blacklist: So when body pulling a blacklisted npc and a humanoid like creature starts flee at low heath it will lose its target(the player) however still have to kill it in order to lose combat asap. --- Core/Blacklist/Blacklist.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Core/Blacklist/Blacklist.cs b/Core/Blacklist/Blacklist.cs index b08fd720c..600f6ec60 100644 --- a/Core/Blacklist/Blacklist.cs +++ b/Core/Blacklist/Blacklist.cs @@ -43,6 +43,10 @@ public bool IsTargetBlacklisted() LastWarningTargetGuid = 0; return false; } + else if (playerReader.DamageTaken.Exists(x => x.LastKnownHealthPercent > 0 && x.CreatureId == playerReader.TargetGuid)) + { + return false; + } if(this.playerReader.PetHasTarget && this.playerReader.TargetGuid == playerReader.PetGuid) From cb9630ecd619daf7be7946cd4081346822f7a505 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 17:34:18 +0200 Subject: [PATCH 100/132] CastingHandler: druid incase switching from from any shapeshift to none still have to wait for GCD --- Core/Goals/CastingHandler.cs | 53 ++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index 3756aaad6..a438606e9 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -1,4 +1,4 @@ -using SharedLib.NpcFinder; +using SharedLib.NpcFinder; using Microsoft.Extensions.Logging; using System; using System.Diagnostics; @@ -303,24 +303,10 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) bool beforeHasTarget = playerReader.HasTarget; int auraHash = playerReader.AuraCount.Hash; - if (item.WaitForGCD) - { - (bool gcd, double gcdElapsedMs) = await wait.InterruptTask(GCD, - () => playerReader.UsableAction.Is(item) || beforeHasTarget != playerReader.HasTarget); - if (!gcd) - { - item.LogInformation($" ... gcd interrupted {gcdElapsedMs}ms"); - if (beforeHasTarget != playerReader.HasTarget) - { - item.LogInformation($" ... lost target!"); - return false; - } - } - else - { - item.LogInformation($" ... gcd fully waited {gcdElapsedMs}ms"); - } + if (!await WaitForGCD(item, beforeHasTarget)) + { + return false; } if (!item.HasCastBar) @@ -405,6 +391,31 @@ public async Task CastIfReady(KeyAction item, int sleepBeforeCast = 0) return true; } + private async Task WaitForGCD(KeyAction item, bool beforeHasTarget) + { + if (item.WaitForGCD) + { + (bool gcd, double gcdElapsedMs) = await wait.InterruptTask(GCD, + () => playerReader.UsableAction.Is(item) || beforeHasTarget != playerReader.HasTarget); + if (!gcd) + { + item.LogInformation($" ... gcd interrupted {gcdElapsedMs}ms"); + + if (beforeHasTarget != playerReader.HasTarget) + { + item.LogInformation($" ... lost target!"); + return false; + } + } + else + { + item.LogInformation($" ... gcd fully waited {gcdElapsedMs}ms"); + } + } + + return true; + } + protected async Task SwitchToCorrectStanceForm(Form beforeForm, KeyAction item) { if (string.IsNullOrEmpty(item.Form)) @@ -429,6 +440,12 @@ protected async Task SwitchToCorrectStanceForm(Form beforeForm, KeyAction (bool notChanged, double elapsedMs) = await wait.InterruptTask(SpellQueueTimeMs, () => beforeForm != playerReader.Form); item.LogInformation($" ... form changed: {!notChanged} | Delay: {elapsedMs}ms"); + if (playerReader.Form == Form.None) + { + item.LogInformation($" ... wait for GCD after form change {beforeForm}->{playerReader.Form}!"); + await WaitForGCD(item, playerReader.HasTarget); + } + return playerReader.Form == item.FormEnum; } From ea9547bdcf0e7fe498f112b9facc5454036aaa19 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 17:36:23 +0200 Subject: [PATCH 101/132] CombatGoal: after killing the current target, only try to search for possible theat when previusly multiple damage came from different source. --- Core/Goals/CombatGoal.cs | 43 +++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/Core/Goals/CombatGoal.cs b/Core/Goals/CombatGoal.cs index 8600072ff..e5c6bb8ca 100644 --- a/Core/Goals/CombatGoal.cs +++ b/Core/Goals/CombatGoal.cs @@ -215,32 +215,35 @@ private async Task CreatureTargetMeOrMyPet() return playerReader.HasTarget; } - await input.TapNearestTarget($"{GetType().Name}: Checking target in front of me"); - await wait.Update(1); - if (playerReader.HasTarget) + if (playerReader.CombatCreatureCount > 1) { - if (playerReader.PlayerBitValues.TargetInCombat && playerReader.PlayerBitValues.TargetOfTargetIsPlayer) + await input.TapNearestTarget($"{GetType().Name}: Checking target in front of me"); + await wait.Update(1); + if (playerReader.HasTarget) { - ResetCooldowns(); + if (playerReader.PlayerBitValues.TargetInCombat && playerReader.PlayerBitValues.TargetOfTargetIsPlayer) + { + ResetCooldowns(); - logger.LogWarning("---- Somebody is attacking me!"); - await input.TapInteractKey("Found new target to attack"); - await stopMoving.Stop(); + logger.LogWarning("---- Somebody is attacking me!"); + await input.TapInteractKey("Found new target to attack"); + await stopMoving.Stop(); + await wait.Update(1); + return true; + } + + await input.TapClearTarget(); await wait.Update(1); - return true; } - - await input.TapClearTarget(); - await wait.Update(1); - } - else - { - // threat must be behind me - var anyDamageTakens = playerReader.DamageTaken.Where(x => (DateTime.Now - x.LastEvent).TotalSeconds < 10 && x.LastKnownHealthPercent > 0); - if (anyDamageTakens.Any()) + else { - logger.LogWarning($"---- Possible threats found behind {anyDamageTakens.Count()}. Waiting for my target to change!"); - await wait.Interrupt(2000, () => playerReader.HasTarget); + // threat must be behind me + var anyDamageTakens = playerReader.DamageTaken.Where(x => (DateTime.Now - x.LastEvent).TotalSeconds < 10 && x.LastKnownHealthPercent > 0); + if (anyDamageTakens.Any()) + { + logger.LogWarning($"---- Possible threats found behind {anyDamageTakens.Count()}. Waiting for my target to change!"); + await wait.Interrupt(2000, () => playerReader.HasTarget); + } } } From 5de45ebf6c4ea8fdb4c971af45403cdd662f558e Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 17:38:46 +0200 Subject: [PATCH 102/132] TargetFinder: make sure to always switch the ChangeNpcType when it comes to obtain target --- Core/Goals/TargetFinder.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Core/Goals/TargetFinder.cs b/Core/Goals/TargetFinder.cs index c4be85078..ecf0a3b62 100644 --- a/Core/Goals/TargetFinder.cs +++ b/Core/Goals/TargetFinder.cs @@ -68,7 +68,10 @@ private async Task LookForTarget(string source, CancellationToken cancella else { if (!cancellationToken.IsCancellationRequested) + { + npcNameTargeting.ChangeNpcType(NpcNameToFind); await input.TapNearestTarget(source); + } if (!playerReader.HasTarget && !cancellationToken.IsCancellationRequested) { From f0efa2b2f4a15e91c3219f4874a9d723d56cb813 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 17:40:36 +0200 Subject: [PATCH 103/132] CastingHandler: when 'PotentialAddsExist' is set make sure to show how many possible targets and adds is detected --- Core/Goals/CastingHandler.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Core/Goals/CastingHandler.cs b/Core/Goals/CastingHandler.cs index a438606e9..a35f80317 100644 --- a/Core/Goals/CastingHandler.cs +++ b/Core/Goals/CastingHandler.cs @@ -1,4 +1,4 @@ -using SharedLib.NpcFinder; +using SharedLib.NpcFinder; using Microsoft.Extensions.Logging; using System; using System.Diagnostics; @@ -55,6 +55,10 @@ protected bool CanRun(KeyAction item) item.LogInformation($"Only cast if adds exist = {item.CastIfAddsVisible} and it is {npcNameFinder.PotentialAddsExist} - Targets:{npcNameFinder.TargetCount} - Adds:{npcNameFinder.AddCount}"); return false; } + else + { + item.LogInformation($"Only cast if adds exist = {item.CastIfAddsVisible} and it is {npcNameFinder.PotentialAddsExist} - Targets:{npcNameFinder.TargetCount} - Adds:{npcNameFinder.AddCount}"); + } } if(item.School != SchoolMask.None) From 8de4f9b25cd8bab4ffba45e058c22ad81de98e88 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 19:26:32 +0200 Subject: [PATCH 104/132] NpcNameFinder: Reduce the 'screenTargetBuffer' and store the TargetCount and AddCount --- SharedLib/NpcFinder/NpcNameFinder.cs | 6 +++--- SharedLib/NpcFinder/NpcPosition.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SharedLib/NpcFinder/NpcNameFinder.cs b/SharedLib/NpcFinder/NpcNameFinder.cs index c7163ff0f..fbdc910fe 100644 --- a/SharedLib/NpcFinder/NpcNameFinder.cs +++ b/SharedLib/NpcFinder/NpcNameFinder.cs @@ -1,4 +1,4 @@ -using SharedLib.Extensions; +using SharedLib.Extensions; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; @@ -148,10 +148,10 @@ public void Update() public void UpdatePotentialAddsExist() { - TargetCount = Npcs.Where(c => !c.IsAdd).Where(c => Math.Abs(c.ClickPoint.X - c.screenMid) < c.screenTargetBuffer).Count(); + TargetCount = Npcs.Where(c => !c.IsAdd && Math.Abs(c.ClickPoint.X - c.screenMid) < c.screenTargetBuffer).Count(); AddCount = Npcs.Where(c => c.IsAdd).Count(); - if (Npcs.Count > 1 && TargetCount >= 1 && AddCount > 0) + if (AddCount > 0 || TargetCount > 1) { PotentialAddsExist = true; LastPotentialAddsSeen = DateTime.Now; diff --git a/SharedLib/NpcFinder/NpcPosition.cs b/SharedLib/NpcFinder/NpcPosition.cs index 35fa6aba3..628de5b07 100644 --- a/SharedLib/NpcFinder/NpcPosition.cs +++ b/SharedLib/NpcFinder/NpcPosition.cs @@ -32,7 +32,7 @@ public NpcPosition(Point min, Point max, int screenWidth, float yOffset, float h Max = max; screenMid = screenWidth / 2; screenMidBuffer = screenWidth / 15; - screenTargetBuffer = screenMidBuffer / 4; + screenTargetBuffer = screenMidBuffer / 2; screenAddBuffer = screenMidBuffer * 3; this.yOffset = yOffset; From c2393077fab7fb8368263b1fb973150a517e5d8a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 19:27:07 +0200 Subject: [PATCH 105/132] NpcNameFinder: reduce computation time by half. --- SharedLib/NpcFinder/NpcNameFinder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharedLib/NpcFinder/NpcNameFinder.cs b/SharedLib/NpcFinder/NpcNameFinder.cs index fbdc910fe..89d8c0bb4 100644 --- a/SharedLib/NpcFinder/NpcNameFinder.cs +++ b/SharedLib/NpcFinder/NpcNameFinder.cs @@ -64,7 +64,7 @@ public class NpcNameFinder public int DetermineNpcsHeightOffset2 { get; set; } = 2; - public int incX { get; set; } = 1; + public int incX { get; set; } = 2; public int incY { get; set; } = 1; From 1f98304c4ba722a5e770f6172d42da5cd58c97ec Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 20:31:03 +0200 Subject: [PATCH 106/132] Druid cat bear: Rejuv stop before cast. Use Bash when player hp below 38% --- Json/class/Druid_20_cat_bear.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index ba05933a2..5de25eef1 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -31,6 +31,7 @@ { "Name": "Rejuvenation", "Key": "6", + "StopBeforeCast": true, "AfterCastWaitBuff": true, "Requirements": ["Health%<75", "not Rejuvenation"], "Cooldown": 5000, @@ -98,7 +99,7 @@ { "Name": "Bash", "Key": "5", - "Requirements": ["SpellInRange:1", "TargetCastingSpell"], + "Requirements": ["SpellInRange:1", "TargetCastingSpell||Health%<38"], "WhenUsable": true, "MinRage": 10, "Form": "Druid_Bear" From 551ad0dab76f8a027b6c514033264b381dac3cb9 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 20:42:23 +0200 Subject: [PATCH 107/132] Revert "NpcNameFinder: reduce computation time by half." This reverts commit c2393077fab7fb8368263b1fb973150a517e5d8a. --- SharedLib/NpcFinder/NpcNameFinder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharedLib/NpcFinder/NpcNameFinder.cs b/SharedLib/NpcFinder/NpcNameFinder.cs index 89d8c0bb4..fbdc910fe 100644 --- a/SharedLib/NpcFinder/NpcNameFinder.cs +++ b/SharedLib/NpcFinder/NpcNameFinder.cs @@ -64,7 +64,7 @@ public class NpcNameFinder public int DetermineNpcsHeightOffset2 { get; set; } = 2; - public int incX { get; set; } = 2; + public int incX { get; set; } = 1; public int incY { get; set; } = 1; From 07513578ff4a6042c8e0e57b29deae1596ca5971 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 22:05:03 +0200 Subject: [PATCH 108/132] Added Shaman Stoneskin buff --- Addons/DataToColor/DataToColor.toc | 2 +- Addons/DataToColor/Storage.lua | 1 + Core/Addon/BuffStatus.cs | 1 + Core/Requirement/RequirementFactory.cs | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index 9c8a24008..fabf30db8 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.33 +## Version: 1.1.34 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index 86c7653bb..28a10a7c4 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -146,6 +146,7 @@ function CreatePlayerBuffList() DataToColor.S.playerBuffs[10] = { "Lightning Shield", [136051]=1 } DataToColor.S.playerBuffs[11] = { "Water Shield", [132315]=1 } DataToColor.S.playerBuffs[12] = { "Focused", [136027]=1 } -- Shamanistic Focus + DataToColor.S.playerBuffs[13] = { "Stoneskin", [136098]=1 } elseif DataToColor.C.CHARACTER_CLASS == "HUNTER" then DataToColor.S.playerBuffs[10] = { "Aspect of", [136076]=1, [132159]=1, [132252]=1, [132267]=1, [132160]=1, [136074]=1 } DataToColor.S.playerBuffs[11] = { "Rapid Fire", [132208]=1 } diff --git a/Core/Addon/BuffStatus.cs b/Core/Addon/BuffStatus.cs index ca024b9fd..b8c77c976 100644 --- a/Core/Addon/BuffStatus.cs +++ b/Core/Addon/BuffStatus.cs @@ -68,6 +68,7 @@ public bool IsBitSet(int pos) public bool LightningShield => IsBitSet(10); public bool WaterShield => IsBitSet(11); public bool ShamanisticFocus => IsBitSet(12); + public bool Stoneskin => IsBitSet(13); // Hunter public bool Aspect => IsBitSet(10); //Any Aspect of diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 296010129..2835e088d 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -276,6 +276,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) { "Lightning Shield", ()=> playerReader.Buffs.LightningShield }, { "Water Shield", ()=> playerReader.Buffs.WaterShield }, { "Shamanistic Focus", ()=> playerReader.Buffs.ShamanisticFocus }, + { "Stoneskin", ()=> playerReader.Buffs.Stoneskin }, //Hunter { "Aspect of the Cheetah", ()=> playerReader.Buffs.Aspect }, { "Aspect of the Pack", ()=> playerReader.Buffs.Aspect }, From 1bf18ec674d89c332445ef2065bdde827bbbfde2 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 22:15:01 +0200 Subject: [PATCH 109/132] Updated Shaman_4 profile with Stoneskin totem, branching pull. Priority to stay in the active totem. --- Json/class/Shaman_4.json | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index 500fd22a7..dcf8f25f3 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -9,6 +9,15 @@ "Name": "Lightning Bolt", "Key": "2", "HasCastBar": true, + "Requirements": ["SpellInRange:0", "Stoneskin", "Mana%>50"], + "WaitForWithinMeleeRange": true, + "MinMana": 15 + }, + { + "Name": "Lightning Bolt", + "Key": "2", + "HasCastBar": true, + "Requirements": ["SpellInRange:0", "not Stoneskin", "Mana%>70"], "MinMana": 15 } ] @@ -19,18 +28,26 @@ "Name": "Earth Shock", "Key": "6", "WhenUsable": true, - "Requirements": ["TargetHealth%>10", "SpellInRange:1"], + "Requirements": ["TargetHealth%>10", "SpellInRange:1", "Mana%>50", "TargetHealth%>20"], "MinMana": 30 }, { "Name": "Healing Wave", "Key": "3", - "Requirement": "Health%<40", - "Cooldown": 10000, "HasCastBar": true, - "Log": false, + "WhenUsable": true, + "Requirement": "Health%<40", + "Cooldown": 5000, "MinMana": 25 }, + { + "Name": "Stoneskin Totem", + "Key": "F2", + "WhenUsable": true, + "Cooldown": 30000, + "Requirements": ["InMeleeRange", "TargetHealth%>50", "Mana%>50", "BagItem:5175", "not Stoneskin"], + "MinMana": 30 + }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" From 891783b267925eb7f1881c4556691fc399d20466 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 22:18:47 +0200 Subject: [PATCH 110/132] readme update with shaman 'Stoneskin' buff --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 398009ab5..a5224024c 100644 --- a/README.md +++ b/README.md @@ -567,6 +567,7 @@ e.g. | Shaman | "Lightning Shield" | | Shaman | "Water Shield" | | Shaman | "Shamanistic Focus" | +| Shaman | "Stoneskin" | | Hunter | "Aspect of the Cheetah" | | Hunter | "Aspect of the Pack" | | Hunter | "Aspect of the Beast" | From c1f9b759f0fc31b7adc8d2ff9ef806d917f1ff8c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 23:10:06 +0200 Subject: [PATCH 111/132] Cleanup Mage profiles --- Json/class/Mage_1.json | 4 +- Json/class/Mage_10.json | 31 +++--- Json/class/Mage_12_Arcane.json | 76 +++++++-------- Json/class/Mage_12_Fire.json | 26 +++-- Json/class/Mage_14_Arcane_Frost.json | 29 +++--- Json/class/Mage_16_Arcane_Fire.json | 76 ++++++++------- Json/class/Mage_19_Fire.json | 136 --------------------------- Json/class/Mage_25_Fire.json | 123 ------------------------ Json/class/Mage_30_Fire.json | 123 ------------------------ Json/class/Mage_4.json | 11 +-- Json/class/Mage_42_Fire.json | 113 ---------------------- Json/class/Mage_44_Fire.json | 130 ------------------------- Json/class/Mage_6.json | 22 ++--- 13 files changed, 131 insertions(+), 769 deletions(-) delete mode 100644 Json/class/Mage_19_Fire.json delete mode 100644 Json/class/Mage_25_Fire.json delete mode 100644 Json/class/Mage_30_Fire.json delete mode 100644 Json/class/Mage_42_Fire.json delete mode 100644 Json/class/Mage_44_Fire.json diff --git a/Json/class/Mage_1.json b/Json/class/Mage_1.json index 0bd33438b..beac981fb 100644 --- a/Json/class/Mage_1.json +++ b/Json/class/Mage_1.json @@ -10,8 +10,8 @@ "Sequence": [ { "Name": "Fireball", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, "MinMana": 65 } ] @@ -20,8 +20,8 @@ "Sequence": [ { "Name": "Fireball", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, "MinMana": 30, "Requirement": "TargetHealth%>20" }, diff --git a/Json/class/Mage_10.json b/Json/class/Mage_10.json index 37f1cd7b9..81275f4a4 100644 --- a/Json/class/Mage_10.json +++ b/Json/class/Mage_10.json @@ -9,8 +9,9 @@ "Sequence": [ { "Name": "Frostbolt", - "HasCastBar": true, "Key": "1", + "HasCastBar": true, + "Requirement": "SpellInRange:3", "MinMana": 25 } ] @@ -21,24 +22,23 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8000, + "WhenUsable": true, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", - "Key": 6, + "Key": "6", "MinMana": 55, - "Cooldown": 25000, + "WhenUsable": true, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 }, { "Name": "Fireball", - "HasCastBar": true, "Key": "2", - "MinMana": 30, - "Requirements": ["TargetHealth%>35"] + "HasCastBar": true, + "MinMana": 30 }, { "Name": "Shoot", @@ -56,12 +56,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<60" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<60" } ] @@ -79,24 +79,21 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:2288:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:5349:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 } ]}, "NPC": { diff --git a/Json/class/Mage_12_Arcane.json b/Json/class/Mage_12_Arcane.json index 95912893a..b857c8d81 100644 --- a/Json/class/Mage_12_Arcane.json +++ b/Json/class/Mage_12_Arcane.json @@ -11,25 +11,43 @@ "Sequence": [ { "Name": "Frostbolt", + "Key": "1", "HasCastBar": true, - "Key": "5", + "Requirement": "SpellInRange:3", "MinMana": 35 + } + ] + }, + "Combat": { + "Sequence": [ + { + "Name": "Fire Blast", + "Key": "5", + "MinMana": 40, + "WhenUsable": true, + "Requirements": ["TargetHealth%<45", "SpellInRange:4"] + }, + { + "Name": "Frost Nova", + "Key": "6", + "MinMana": 55, + "WhenUsable": true, + "Requirement": "InMeleeRange", + "StepBackAfterCast": 1000, + "DelayAfterCast": 0 }, { "Name": "Arcane Missiles", + "Key": "7", "HasCastBar": true, - "Key": "=", "MinMana": 140, - "Cooldown": 60000, - "DelaybeforeCast": 1000 + "Requirement": "SpellInRange:3" }, { "Name": "Shoot", "Key": "0", - "StopBeforeCast": true, - "Cooldown": 3000, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"], - "Log": false + "HasCastBar": true, + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] }, { "Name": "AutoAttack", @@ -37,33 +55,16 @@ } ] }, - "Combat": { - "Sequence": [ - { - "Name": "Fireblast", - "Key": "0", - "MinMana": 75, - "Requirements": ["Health%<80", "SpellInRange:4"], - "Cooldown": 8000 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - } - ] - }, "Parallel": { "Sequence": [ { "Name": "Food", - "Key": "6", + "Key": "=", "Requirement": "Health%<90" }, { "Name": "Water", - "Key": "7", + "Key": "-", "Requirement": "Mana%<90" } ] @@ -81,32 +82,21 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:2288:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:1113:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false + "Cooldown": 30000 } ] } diff --git a/Json/class/Mage_12_Fire.json b/Json/class/Mage_12_Fire.json index 6c1386c56..e21776b8c 100644 --- a/Json/class/Mage_12_Fire.json +++ b/Json/class/Mage_12_Fire.json @@ -9,8 +9,9 @@ "Sequence": [ { "Name": "Frostbolt", - "HasCastBar": true, "Key": "1", + "HasCastBar": true, + "Requirement": "SpellInRange:3", "MinMana": 25 } ] @@ -21,14 +22,14 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8000, + "WhenUsable": true, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", - "Key": 6, + "Key": "6", "MinMana": 55, - "Cooldown": 25000, + "WhenUsable": true, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, "DelayAfterCast": 0 @@ -56,12 +57,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<60" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<60" } ] @@ -79,24 +80,21 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:2288:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:1113:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 } ]}, "NPC": { diff --git a/Json/class/Mage_14_Arcane_Frost.json b/Json/class/Mage_14_Arcane_Frost.json index 8b9d7f235..1a8adf7cf 100644 --- a/Json/class/Mage_14_Arcane_Frost.json +++ b/Json/class/Mage_14_Arcane_Frost.json @@ -9,8 +9,8 @@ "Sequence": [ { "Name": "Frostbolt", - "HasCastBar": true, "Key": "1", + "HasCastBar": true, "MinMana": 25, "Requirement": "SpellInRange:3" } @@ -22,14 +22,13 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8000, + "WhenUsable": true, "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Frost Nova", - "Key": 6, + "Key": "6", "MinMana": 55, - "Cooldown": 25000, "WhenUsable": true, "Requirement": "InMeleeRange", "StepBackAfterCast": 1000, @@ -38,9 +37,8 @@ { "Name": "Arcane Missiles", "HasCastBar": true, - "Key": "2", - "MinMana": 30, - "Requirements": ["TargetHealth%>35"] + "Key": "7", + "MinMana": 30 }, { "Name": "Shoot", @@ -58,12 +56,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<60" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<60" } ] @@ -81,24 +79,21 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:2288:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:1113:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 } ]}, "NPC": { diff --git a/Json/class/Mage_16_Arcane_Fire.json b/Json/class/Mage_16_Arcane_Fire.json index 412d9eb06..a63a0b160 100644 --- a/Json/class/Mage_16_Arcane_Fire.json +++ b/Json/class/Mage_16_Arcane_Fire.json @@ -12,32 +12,53 @@ { "Name": "Frostbolt", "HasCastBar": true, - "Key": "5", + "Key": "1", + "Requirement": "SpellInRange:3", "MinMana": 35 - }, - { - "Name": "Arcane Missiles", - "HasCastBar": true, - "Key": "=", - "MinMana": 140, - "Cooldown": 60000, - "DelaybeforeCast": 1000 } ] }, "Combat": { "Sequence": [ { - "Name": "Fireblast", - "Key": "0", - "MinMana": 75, - "Cooldown": 8000 + "Name": "Fire Blast", + "Key": "5", + "MinMana": 40, + "WhenUsable": true, + "Requirements": ["TargetHealth%<45", "SpellInRange:4"] + }, + { + "Name": "Frost Nova", + "Key": "6", + "MinMana": 55, + "WhenUsable": true, + "Requirement": "InMeleeRange", + "StepBackAfterCast": 1000, + "DelayAfterCast": 0 }, { "Name": "Fireball", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, + "Requirement": "not InMeleeRange", "MinMana": 65 + }, + { + "Name": "Arcane Missiles", + "Key": "7", + "HasCastBar": true, + "MinMana": 140, + "Requirements": ["SpellInRange:3", "InMeleeRange"] + }, + { + "Name": "Shoot", + "Key": "0", + "HasCastbar": true, + "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] + }, + { + "Name": "AutoAttack", + "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] } ] }, @@ -45,12 +66,12 @@ "Sequence": [ { "Name": "Food", - "Key": "6", + "Key": "=", "Requirement": "Health%<90" }, { "Name": "Water", - "Key": "7", + "Key": "-", "Requirement": "Mana%<90" } ] @@ -68,33 +89,22 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:2288:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:1113:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false - }, + "Cooldown": 30000 + } ] } } diff --git a/Json/class/Mage_19_Fire.json b/Json/class/Mage_19_Fire.json deleted file mode 100644 index ce6945391..000000000 --- a/Json/class/Mage_19_Fire.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": false, - - "PathFilename": "19_LochModan.json", - "SpiritPathFilename": "19_LochModan_SpiritHealer.json", - "PathThereAndBack": false, - "PathReduceSteps": false, - - "Blacklist": ["Loch Crocolisk","Stonesplinter","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Pull": { - "Sequence": [ - { - "Name": "Frostbolt", - "HasCastBar": true, - "Key": "5", - "MinMana": 35 - }, - { - "Name": "Fireball", - "DelayBeforeCast": 1500, - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Healing Potion", - "Key": "F4", - "Requirement": "Health%<10", - "Cooldown": 60000, - "Log": false - }, - { - "Name": "Fireblast", - "Key": "0", - "MinMana": 75, - "Cooldown": 6000 - }, - { - "Name": "Frost Nova", - "Key": 6, - "MinMana": 55, - "Cooldown": 25000, - "Requirement": "InMeleeRange", - "StepBackAfterCast": 1000, - "DelayAfterCast": 0 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - }, - { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "Key": "6", - "Requirement": "Health%<90" - }, - { - "Name": "Water", - "Key": "7", - "Requirement": "Mana%<90" - } - ] - }, - - "Adhoc": { - "Sequence": [ - { - "Name": "Frost Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Arcane Intellect", - "Key": "4", - "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false - }, - { - "Name": "Conjure Water", - "HasCastBar": true, - "Key": "9", - "Requirement": "not BagItem:2288:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Conjure Food", - "HasCastBar": true, - "Key": "8", - "Requirement": "not BagItem:1113:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "AfterCastWaitBuff": true, - "DelayAfterCast": 0, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false - }, - { - "Name": "Fire Power", - "Key": "1", - "Requirement": "not Fire Power", - "Cooldown": 120000, - "Log": false - } - ] - } -} diff --git a/Json/class/Mage_25_Fire.json b/Json/class/Mage_25_Fire.json deleted file mode 100644 index c0577e99a..000000000 --- a/Json/class/Mage_25_Fire.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": true, - - "NPCMaxLevels_Below": 6, - "NPCMaxLevels_Above": 2, - - "PathFilename": "25_wetlands.json", - "SpiritPathFilename": "25_wetlands_spirithealer.json", - "PathThereAndBack": true, - "PathReduceSteps": true, - - "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Pull": { - "Sequence": [ - { - "Name": "Frostbolt", - "HasCastBar": true, - "Key": "1", - "MinMana": 35 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Healing Potion", - "Key": "F4", - "Requirement": "Health%<10", - "Cooldown": 60000, - "Log": false - }, - { - "Name": "Fireblast", - "Key": "5", - "MinMana": 40, - "Cooldown": 8000, - "Requirements": ["Health%<80", "SpellInRange:4"] - }, - { - "Name": "Frost Nova", - "Key": 6, - "MinMana": 55, - "Cooldown": 25000, - "Requirement": "InMeleeRange", - "StepBackAfterCast": 1000, - "DelayAfterCast": 0 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - }, - { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "Key": "6", - "Requirement": "Health%<90" - }, - { - "Name": "Water", - "Key": "7", - "Requirement": "Mana%<70" - } - ] - }, - - "Adhoc": { - "Sequence": [ - { - "Name": "Frost Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Arcane Intellect", - "Key": "4", - "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false - }, - { - "Name": "Conjure Water", - "HasCastBar": true, - "Key": "9", - "Requirement": "not BagItem:2136:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Conjure Food", - "HasCastBar": true, - "Key": "8", - "Requirement": "not BagItem:1114:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false - } - ]} -} diff --git a/Json/class/Mage_30_Fire.json b/Json/class/Mage_30_Fire.json deleted file mode 100644 index eb1ffef55..000000000 --- a/Json/class/Mage_30_Fire.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": true, - - "NPCMaxLevels_Below": 6, - "NPCMaxLevels_Above": 2, - - "PathFilename": "33_Arathi.json", - "SpiritPathFilename": "33_Arathi_SpiritHealer.json", - "PathThereAndBack": true, - "PathReduceSteps": true, - - "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Pull": { - "Sequence": [ - { - "Name": "Frostbolt", - "HasCastBar": true, - "Key": "1", - "MinMana": 35 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Healing Potion", - "Key": "F4", - "Requirement": "Health%<10", - "Cooldown": 60000, - "Log": false - }, - { - "Name": "Fireblast", - "Key": "5", - "MinMana": 40, - "Cooldown": 8000, - "Requirements": ["Health%<80", "SpellInRange:4"] - }, - { - "Name": "Frost Nova", - "Key": 6, - "MinMana": 55, - "Cooldown": 25000, - "Requirement": "InMeleeRange", - "StepBackAfterCast": 1000, - "DelayAfterCast": 0 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - }, - { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "Key": "6", - "Requirement": "Health%<90" - }, - { - "Name": "Water", - "Key": "7", - "Requirement": "Mana%<70" - } - ] - }, - - "Adhoc": { - "Sequence": [ - { - "Name": "Frost Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Arcane Intellect", - "Key": "4", - "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false - }, - { - "Name": "Conjure Water", - "HasCastBar": true, - "Key": "9", - "Requirement": "not BagItem:3772:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Conjure Food", - "HasCastBar": true, - "Key": "8", - "Requirement": "not BagItem:1114:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false - } - ]} -} diff --git a/Json/class/Mage_4.json b/Json/class/Mage_4.json index 5da4d68b9..66b3a39d1 100644 --- a/Json/class/Mage_4.json +++ b/Json/class/Mage_4.json @@ -12,6 +12,7 @@ "Name": "Frostbolt", "HasCastBar": true, "Key": "1", + "Requirement": "SpellInRange:3", "MinMana": 25 } ] @@ -39,12 +40,12 @@ "Sequence": [ { "Name": "Food", - "Key": "6", + "Key": "=", "Requirement": "Health%<30" }, { "Name": "Water", - "Key": "7", + "Key": "-", "Requirement": "Mana%<30" } ] @@ -62,16 +63,14 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", "HasCastBar": true, "Key": "9", "Requirement": "not BagItem:5350:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 } ]}, "NPC": { diff --git a/Json/class/Mage_42_Fire.json b/Json/class/Mage_42_Fire.json deleted file mode 100644 index c4ace8aaf..000000000 --- a/Json/class/Mage_42_Fire.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": true, - - "NPCMaxLevels_Below": 6, - "NPCMaxLevels_Above": 2, - - "PathFilename": "38_Arathi.json", - "PathThereAndBack": true, - "PathReduceSteps": true, - - "Blacklist": ["Kolkar","Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Pull": { - "Sequence": [ - { - "Name": "Frostbolt", - "HasCastBar": true, - "Key": "1", - "MinMana": 35 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Healing Potion", - "Key": "F4", - "Requirement": "Health%<10", - "Cooldown": 60000, - "Log": false - }, - { - "Name": "Fireblast", - "Key": "5", - "MinMana": 40, - "Cooldown": 8000, - "Requirements": ["Health%<80", "SpellInRange:4"] - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - }, - { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "Key": "6", - "Requirement": "Health%<90" - }, - { - "Name": "Water", - "Key": "7", - "Requirement": "Mana%<70" - } - ] - }, - - "Adhoc": { - "Sequence": [ - { - "Name": "Frost Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Arcane Intellect", - "Key": "4", - "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false - }, - { - "Name": "Conjure Water", - "HasCastBar": true, - "Key": "9", - "Requirement": "not BagItem:8077:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Conjure Food", - "HasCastBar": true, - "Key": "8", - "Requirement": "not BagItem:1487:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false - } - ]} -} diff --git a/Json/class/Mage_44_Fire.json b/Json/class/Mage_44_Fire.json deleted file mode 100644 index ae72fd3e2..000000000 --- a/Json/class/Mage_44_Fire.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": true, - - "PathFilename": "44_Tanaris.json", - "SpiritPathFilename": "44_Tanaris_SpiritHealer.json", - "PathThereAndBack": false, - "PathReduceSteps": false, - - "NPCMaxLevels_Below": 7, - "NPCMaxLevels_Above": 3, - - "Blacklist": ["Loch Crocolisk","Stonesplinter","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Pull": { - "Sequence": [ - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65, - "DelayUntilCombat": true, - "DelayAfterCast": 2000 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Healing Potion", - "Key": "F4", - "Requirement": "Health%<10", - "Cooldown": 60000, - "Log": false - }, - { - "Name": "Fireblast", - "Key": "0", - "MinMana": 75, - "Cooldown": 8000 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 65 - }, - { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "Key": "6", - "Requirement": "Health%<70" - }, - { - "Name": "Water", - "Key": "7", - "Requirement": "Mana%<55" - } - ] - }, - - "Adhoc": { - "Sequence": [ - { - "Name": "Frost Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Arcane Intellect", - "Key": "4", - "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false - }, - { - "Name": "Conjure Water", - "HasCastBar": true, - "Key": "9", - "Requirement": "not BagItem:8077:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Conjure Food", - "HasCastBar": true, - "Key": "8", - "Requirement": "not BagItem:1487:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false - }, - { - "Name": "Fire Power Potion", - "StopBeforeCast": true, - "Key": "=", - "Requirement": "not Fire Power", - "Cooldown": 18000, - "Log": false - } - ] - } -} diff --git a/Json/class/Mage_6.json b/Json/class/Mage_6.json index 2e73d69e5..d86a2ddfd 100644 --- a/Json/class/Mage_6.json +++ b/Json/class/Mage_6.json @@ -12,6 +12,7 @@ "Name": "Frostbolt", "HasCastBar": true, "Key": "1", + "Requirement": "SpellInRange:3", "MinMana": 25 } ] @@ -22,14 +23,13 @@ "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8000, - "Requirements": ["TargetHealth%<45", "SpellInRange:4"], - "DelayAfterCast": 0 + "WhenUsable": true, + "Requirements": ["TargetHealth%<45", "SpellInRange:4"] }, { "Name": "Fireball", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, "MinMana": 45 }, { @@ -48,12 +48,12 @@ "Sequence": [ { "Name": "Food", - "Key": "6", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "7", + "Key": "-", "Requirement": "Mana%<50" } ] @@ -76,19 +76,17 @@ }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:5350:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:5349:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 } ]}, "NPC": { From 48960385195d6e185ba3b6ad7834ffb02331611c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 23:15:46 +0200 Subject: [PATCH 112/132] Cleanup high level Mage profiles --- Json/class/Mage.json | 40 ++++++------ Json/class/Mage_54_Fire.json | 123 ----------------------------------- 2 files changed, 19 insertions(+), 144 deletions(-) delete mode 100644 Json/class/Mage_54_Fire.json diff --git a/Json/class/Mage.json b/Json/class/Mage.json index c4ace8aaf..95a7c2548 100644 --- a/Json/class/Mage.json +++ b/Json/class/Mage.json @@ -31,11 +31,20 @@ "Log": false }, { - "Name": "Fireblast", + "Name": "Fire Blast", "Key": "5", "MinMana": 40, - "Cooldown": 8000, - "Requirements": ["Health%<80", "SpellInRange:4"] + "WhenUsable": true, + "Requirements": ["TargetHealth%<45", "SpellInRange:4"] + }, + { + "Name": "Frost Nova", + "Key": "6", + "MinMana": 55, + "WhenUsable": true, + "Requirement": "InMeleeRange", + "StepBackAfterCast": 1000, + "DelayAfterCast": 0 }, { "Name": "Fireball", @@ -59,12 +68,12 @@ "Sequence": [ { "Name": "Food", - "Key": "6", + "Key": "=", "Requirement": "Health%<90" }, { "Name": "Water", - "Key": "7", + "Key": "-", "Requirement": "Mana%<70" } ] @@ -82,32 +91,21 @@ "Name": "Arcane Intellect", "Key": "4", "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false + "Requirement": "not Arcane Intellect" }, { "Name": "Conjure Water", - "HasCastBar": true, "Key": "9", + "HasCastBar": true, "Requirement": "not BagItem:8077:4", - "Cooldown": 30000, - "Log": false + "Cooldown": 30000 }, { "Name": "Conjure Food", - "HasCastBar": true, "Key": "8", + "HasCastBar": true, "Requirement": "not BagItem:1487:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Well Fed", - "StopBeforeCast": true, - "Key": "-", - "Requirement": "not Well Fed", - "Cooldown": 120000, - "Log": false + "Cooldown": 30000 } ]} } diff --git a/Json/class/Mage_54_Fire.json b/Json/class/Mage_54_Fire.json deleted file mode 100644 index 6949ace3b..000000000 --- a/Json/class/Mage_54_Fire.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "ClassName": "Mage", - "Loot": true, - "NPCMaxLevels_Below": 10, - "NPCMaxLevels_Above": 2, - - "PathFilename": "56_Azshara.json", - "PathThereAndBack": false, - "PathReduceSteps": false, - - "Blacklist": ["Legashi","Blood Elf","Elf Reclaim","Elf Survey","Searing Roc","Living Storm","Land Rager","BLUEGI","Tunnel","OL' SO","HAREN S","THRAGO", "Elder Razormaw","Highland Razormaw","Boulderfist","witherbark","venomhide","tar beast","toxic horror","hive","hazzali"], - - "Pull": { - "Sequence": [ - { - "Name": "Frostbolt", - "HasCastBar": true, - "Key": "1", - "MinMana": 25 - } - ] - }, - "Combat": { - "Sequence": [ - { - "Name": "Ice Barrier", - "Key": "7", - "MinMana": 60, - "Cooldown": 30000, - "WhenUsable": true, - "Requirement": "not Ice Barrier" - }, - { - "Name": "Fire Blast", - "Key": "5", - "MinMana": 40, - "Cooldown": 8000, - "Requirements": ["TargetHealth%<45", "SpellInRange:4"] - }, - { - "Name": "Frost Nova", - "Key": 6, - "MinMana": 55, - "Cooldown": 25000, - "Requirement": "InMeleeRange", - "StepBackAfterCast": 1000, - "DelayAfterCast": 0 - }, - { - "Name": "Fireball", - "HasCastBar": true, - "Key": "2", - "MinMana": 30, - "Requirements": ["TargetHealth%>35"] - }, - { - "Name": "Shoot", - "Key": "0", - "HasCastbar": true, - "Requirements": ["HasRangedWeapon", "not Shooting", "SpellInRange:1"] - }, - { - "Name": "AutoAttack", - "Requirements": ["not HasRangedWeapon", "not AutoAttacking"] - } - ] - }, - "Parallel": { - "Sequence": [ - { - "Name": "Food", - "Key": "N1", - "Requirement": "Health%<60" - }, - { - "Name": "Water", - "Key": "N2", - "Requirement": "Mana%<60" - } - ] - }, - - "Adhoc": { - "Sequence": [ - { - "Name": "Ice Armor", - "Key": "3", - "MinMana": 60, - "Requirement": "not Frost Armor" - }, - { - "Name": "Ice Barrier", - "Key": "7", - "MinMana": 60, - "Cooldown": 30000, - "Requirement": "not Ice Barrier" - }, - { - "Name": "Arcane Intellect", - "Key": "4", - "MinMana": 60, - "Requirement": "not Arcane Intellect", - "Log": false - }, - { - "Name": "Conjure Water", - "HasCastBar": true, - "Key": "9", - "Requirement": "not BagItem:8078:4", - "Cooldown": 30000, - "Log": false - }, - { - "Name": "Conjure Food", - "HasCastBar": true, - "Key": "8", - "Requirement": "not BagItem:8076:4", - "Cooldown": 30000, - "Log": false - } - ] - } -} From 95f52004db48ae613d27250235c801dd1e554f5d Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 23:32:37 +0200 Subject: [PATCH 113/132] Rogue_12: only use Throw when 'CastIfAddsVisible' --- Json/class/Rogue_12.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Json/class/Rogue_12.json b/Json/class/Rogue_12.json index b75236d99..50205c3ee 100644 --- a/Json/class/Rogue_12.json +++ b/Json/class/Rogue_12.json @@ -10,11 +10,8 @@ "HasCastbar": true, "WhenUsable": true, "WaitForWithinMeleeRange": true, + "CastIfAddsVisible": true, "Requirements": ["HasRangedWeapon", "not InMeleeRange", "SpellInRange:1", "not Items Broken"] - }, - { - "Name": "Approach", - "Log": false } ] }, From cbdbe02b8ac1ce591f7003d6aae7c5a5bb2039b6 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Mon, 18 Oct 2021 23:49:23 +0200 Subject: [PATCH 114/132] Warlock profiles: cleanup --- Json/class/Warlock.json | 37 ++++++++----------------- Json/class/Warlock_1.json | 7 +++-- Json/class/Warlock_10.json | 39 +++++++++------------------ Json/class/Warlock_20.json | 32 ++++++++-------------- Json/class/Warlock_20_shard_farm.json | 27 +++++++------------ Json/class/Warlock_26_Immunity.json | 34 +++++++++-------------- Json/class/Warlock_4.json | 22 +++++++-------- Json/class/Warlock_8.json | 28 ++++++++----------- 8 files changed, 79 insertions(+), 147 deletions(-) diff --git a/Json/class/Warlock.json b/Json/class/Warlock.json index 2b01ccd6d..41331762e 100644 --- a/Json/class/Warlock.json +++ b/Json/class/Warlock.json @@ -18,8 +18,7 @@ "HasCastBar": true, "ResetOnNewTarget": true, "MinMana": 289, - "School": "Fire", - "Log": false + "School": "Fire" } ] }, @@ -30,8 +29,7 @@ "Key": "N3", "Requirements": ["Health%<50", "BagItem:19005:1"], "Cooldown": 120000, - "InCombat": "true", - "Log": false + "InCombat": "true" }, { "Name": "Drain Soul", @@ -55,8 +53,7 @@ "HasCastBar": true, "ResetOnNewTarget": true, "MinMana": 289, - "School": "Fire", - "Log": false + "School": "Fire" }, { "Name": "Curse of Agony", @@ -64,8 +61,7 @@ "School": "Shadow", "ResetOnNewTarget": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], - "MinMana": 50, - "Log": false + "MinMana": 50 }, { "Name": "Corruption", @@ -73,8 +69,7 @@ "Requirements": ["TargetHealth%>35", "not Corruption"], "ResetOnNewTarget": true, "MinMana": 225, - "School": "Shadow", - "Log": false + "School": "Shadow" }, { "Name": "Shadow Bolt", @@ -84,7 +79,6 @@ "MinMana": 309, "Requirement": "TargetHealth%>35", "School": "Shadow", - "Log": false, "Cooldown": 8000 }, { @@ -94,8 +88,7 @@ "MinMana": 495, "Cooldown": 120000, "School": "Shadow", - "Requirements": ["Health%<80"], - "Log": false + "Requirements": ["Health%<80"] }, { "Name": "Shoot", @@ -113,12 +106,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<50" } ] @@ -129,8 +122,7 @@ "Name": "Demon Armor", "Key": "3", "MinMana": 800, - "Requirement": "not Demon Armor", - "Log": false + "Requirement": "not Demon Armor" }, { "Name": "Summon Voidwalker", @@ -138,20 +130,13 @@ "Key": "4", "MinMana": 736, "Requirements": ["BagItem:6265:1", "not Has Pet"], - "Log": false, "Cooldown": 60000 }, { "Name": "Life Tap", "Key": "8", - "Requirements": ["Health%>70","Mana%<60"], - "Log": false - }, - { - "Name": "Life Tap 2", - "Key": "8", - "Requirements": ["Health%>80","Mana%<80"], - "Log": false + "Chage": 2, + "Requirements": ["Health%>70","Mana%<60"] }, { "Name": "heal", diff --git a/Json/class/Warlock_1.json b/Json/class/Warlock_1.json index f5aef6651..46eac84be 100644 --- a/Json/class/Warlock_1.json +++ b/Json/class/Warlock_1.json @@ -1,7 +1,6 @@ { "ClassName": "Warlock", "Loot": true, - "NPCMaxLevels_Below": 3, "PathFilename": "1_Gnome.json", "PathThereAndBack": true, "PathReduceSteps": false, @@ -10,8 +9,8 @@ "Sequence": [ { "Name": "Shadow Bolt", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, "MinMana": 25 } ] @@ -44,12 +43,12 @@ }, { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<50" } ] diff --git a/Json/class/Warlock_10.json b/Json/class/Warlock_10.json index 8b594a614..db684916e 100644 --- a/Json/class/Warlock_10.json +++ b/Json/class/Warlock_10.json @@ -10,8 +10,8 @@ "Sequence": [ { "Name": "Immolate", - "HasCastBar": true, "Key": "5", + "HasCastBar": true, "MinMana": 25 } ] @@ -27,40 +27,31 @@ }, { "Name": "Immolate", - "HasCastBar": true, "Key": "5", + "HasCastBar": true, "Requirements": ["TargetHealth%>35", "not Immolate"], - "ResetOnNewTarget": true, - "DelayAfterCast": 200, "MinMana": 25 }, { "Name": "Curse of Agony", "Key": "1", - "ResetOnNewTarget": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], - "MinMana": 25, - "StepBackAfterCast": 50, - "Log": false + "MinMana": 25 }, { "Name": "Corruption", - "HasCastBar": true, - "DelayAfterCast": 200, "Key": "7", - "Requirements": ["TargetHealth%>35", "not Corruption"], - "ResetOnNewTarget": true, + "HasCastBar": true, + "Requirements": ["TargetHealth%>35", "not Corruption"], "MinMana": 25 }, { "Name": "Shadow Bolt", + "Key": "2", "HasCastBar": true, "Requirement": "TargetHealth%>35", - "DelayAfterCast": 0, - "Key": "2", "MinMana": 25, - "Cooldown": 8000, - "Log": false + "Cooldown": 8000 }, { "Name": "Shoot", @@ -78,12 +69,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<40" } ] @@ -94,24 +85,20 @@ "Name": "Demon Skin", "Key": "3", "MinMana": 50, - "Requirement": "not Demon Skin", - "Log": false + "Requirement": "not Demon Skin" }, { "Name": "Summon Voidwalker", - "HasCastBar": true, "Key": "4", + "HasCastBar": true, "MinMana": 122, - "Requirements": ["BagItem:6265:1", "not Has Pet"], - "Log": false, - "Cooldown": 60000 + "Requirements": ["BagItem:6265:1", "not Has Pet"] }, { "Name": "Life Tap", "Key": "8", "Charge": 2, - "Requirements": ["Health%>70","Mana%<60"], - "Log": false + "Requirements": ["Health%>70","Mana%<60"] } ] }, diff --git a/Json/class/Warlock_20.json b/Json/class/Warlock_20.json index 4d96e130c..fefb5ec2c 100644 --- a/Json/class/Warlock_20.json +++ b/Json/class/Warlock_20.json @@ -16,8 +16,7 @@ "Key": "5", "HasCastBar": true, "ResetOnNewTarget": true, - "MinMana": 90, - "Log": false + "MinMana": 90 } ] }, @@ -28,8 +27,7 @@ "Key": "N3", "Requirements": ["Health%<50", "BagItem:19005:1"], "Cooldown": 120000, - "InCombat": "true", - "Log": false + "InCombat": "true" }, { "Name": "Drain Soul", @@ -51,24 +49,21 @@ "Requirements": ["TargetHealth%>35", "not Immolate"], "HasCastBar": true, "ResetOnNewTarget": true, - "MinMana": 90, - "Log": false + "MinMana": 90 }, { "Name": "Curse of Agony", "Key": "1", "ResetOnNewTarget": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], - "MinMana": 50, - "Log": false + "MinMana": 50 }, { "Name": "Corruption", "Key": "7", "Requirements": ["TargetHealth%>35", "not Corruption"], "ResetOnNewTarget": true, - "MinMana": 55, - "Log": false + "MinMana": 55 }, { "Name": "Shadow Bolt", @@ -77,7 +72,6 @@ "ResetOnNewTarget": true, "MinMana": 110, "Requirement": "TargetHealth%>35", - "Log": false, "Cooldown": 8000 }, { @@ -103,12 +97,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<40" } ] @@ -119,24 +113,20 @@ "Name": "Demon Armor", "Key": "3", "MinMana": 50, - "Requirement": "not Demon Armor", - "Log": false + "Requirement": "not Demon Armor" }, { "Name": "Summon Voidwalker", - "HasCastBar": true, "Key": "4", + "HasCastBar": true, "MinMana": 122, - "Requirements": ["BagItem:6265:1", "not Has Pet"], - "Log": false, - "Cooldown": 60000 + "Requirements": ["BagItem:6265:1", "not Has Pet"] }, { "Name": "Life Tap", "Key": "8", "Charge": 2, - "Requirements": ["Health%>70","Mana%<60"], - "Log": false + "Requirements": ["Health%>70","Mana%<60"] }, { "Name": "heal", diff --git a/Json/class/Warlock_20_shard_farm.json b/Json/class/Warlock_20_shard_farm.json index 16cd2c57e..bce6192a5 100644 --- a/Json/class/Warlock_20_shard_farm.json +++ b/Json/class/Warlock_20_shard_farm.json @@ -21,9 +21,7 @@ "Name": "Immolate", "Key": "5", "HasCastBar": true, - "ResetOnNewTarget": true, - "MinMana": 90, - "Log": false + "MinMana": 90 } ] }, @@ -51,8 +49,7 @@ "Requirements": ["TargetHealth%>35", "not Immolate"], "HasCastBar": true, "ResetOnNewTarget": true, - "MinMana": 90, - "Log": false + "MinMana": 90 }, { "Name": "Curse of Agony", @@ -60,8 +57,7 @@ "School": "Shadow", "ResetOnNewTarget": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], - "MinMana": 50, - "Log": false + "MinMana": 50 }, { "Name": "Corruption", @@ -80,7 +76,6 @@ "ResetOnNewTarget": true, "MinMana": 110, "Requirement": "TargetHealth%>35", - "Log": false, "Cooldown": 8000 }, { @@ -106,12 +101,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<40" } ] @@ -122,24 +117,20 @@ "Name": "Demon Armor", "Key": "3", "MinMana": 50, - "Requirement": "not Demon Armor", - "Log": false + "Requirement": "not Demon Armor" }, { "Name": "Summon Voidwalker", - "HasCastBar": true, "Key": "4", + "HasCastBar": true, "MinMana": 122, - "Requirements": ["BagItem:6265:1", "not Has Pet"], - "Log": false, - "Cooldown": 60000 + "Requirements": ["BagItem:6265:1", "not Has Pet"] }, { "Name": "Life Tap", "Key": "8", "Charge": 2, - "Requirements": ["Health%>70","Mana%<60"], - "Log": false + "Requirements": ["Health%>70","Mana%<60"] } ] } diff --git a/Json/class/Warlock_26_Immunity.json b/Json/class/Warlock_26_Immunity.json index 0323211b7..4588d9f51 100644 --- a/Json/class/Warlock_26_Immunity.json +++ b/Json/class/Warlock_26_Immunity.json @@ -17,13 +17,12 @@ { "Name": "Immolate", "Key": "5", + "HasCastBar": true, "DelayBeforeCast": 1500, "Requirements": ["TargetHealth%>35", "not Immolate"], - "HasCastBar": true, "ResetOnNewTarget": true, "MinMana": 90, - "School": "Fire", - "Log": false + "School": "Fire" } ] }, @@ -34,8 +33,7 @@ "Key": "N3", "Requirements": ["Health%<50", "BagItem:19005:1"], "Cooldown": 120000, - "InCombat": "true", - "Log": false + "InCombat": "true" }, { "Name": "Drain Soul", @@ -55,12 +53,11 @@ { "Name": "Immolate", "Key": "5", - "Requirements": ["TargetHealth%>35", "not Immolate", "not InMeleeRange"], "HasCastBar": true, + "Requirements": ["TargetHealth%>35", "not Immolate", "not InMeleeRange"], "ResetOnNewTarget": true, "MinMana": 90, - "School": "Fire", - "Log": false + "School": "Fire" }, { "Name": "Curse of Agony", @@ -68,8 +65,7 @@ "ResetOnNewTarget": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], "MinMana": 50, - "School": "Shadow", - "Log": false + "School": "Shadow" }, { "Name": "Corruption", @@ -77,8 +73,7 @@ "Requirements": ["TargetHealth%>35", "not Corruption"], "ResetOnNewTarget": true, "MinMana": 55, - "School": "Shadow", - "Log": false + "School": "Shadow" }, { "Name": "Shadow Bolt", @@ -88,7 +83,6 @@ "MinMana": 110, "Requirements": ["TargetHealth%>35", "not InMeleeRange"], "School": "Shadow", - "Log": false, "Cooldown": 8000 }, { @@ -114,12 +108,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<40" } ] @@ -130,24 +124,20 @@ "Name": "Demon Armor", "Key": "3", "MinMana": 275, - "Requirement": "not Demon Armor", - "Log": false + "Requirement": "not Demon Armor" }, { "Name": "Summon Voidwalker", "HasCastBar": true, "Key": "4", "MinMana": 122, - "Requirements": ["BagItem:6265:1", "not Has Pet"], - "Log": false, - "Cooldown": 60000 + "Requirements": ["BagItem:6265:1", "not Has Pet"] }, { "Name": "Life Tap", "Key": "8", "Charge": 2, - "Requirements": ["Health%>70","Mana%<60"], - "Log": false + "Requirements": ["Health%>70","Mana%<60"] }, { "Name": "heal", diff --git a/Json/class/Warlock_4.json b/Json/class/Warlock_4.json index 10031e1d1..ac7345ec2 100644 --- a/Json/class/Warlock_4.json +++ b/Json/class/Warlock_4.json @@ -10,8 +10,8 @@ "Sequence": [ { "Name": "Immolate", - "HasCastBar": true, "Key": "5", + "HasCastBar": true, "MinMana": 25 } ] @@ -20,24 +20,22 @@ "Sequence": [ { "Name": "Immolate", - "HasCastBar": true, "Key": "5", + "HasCastBar": true, "Requirements": ["TargetHealth%>35", "not Immolate"], - "ResetOnNewTarget": true, "MinMana": 25 }, { "Name": "Corruption", - "HasCastBar": true, "Key": "7", + "HasCastBar": true, "Requirements": ["TargetHealth%>35", "not Corruption"], - "ResetOnNewTarget": true, "MinMana": 25 }, { "Name": "Shadow Bolt", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, "MinMana": 25, "Cooldown": 8000 }, @@ -57,25 +55,23 @@ "Name": "Demon Skin", "Key": "3", "MinMana": 50, - "Requirement": "not Demon Skin", - "Log": false + "Requirement": "not Demon Skin" }, { "Name": "Summon Imp", - "HasCastBar": true, "Key": "4", + "HasCastBar": true, "MinMana": 122, - "Requirement": "not Has Pet", - "Log": false + "Requirement": "not Has Pet" }, { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<50" } ] diff --git a/Json/class/Warlock_8.json b/Json/class/Warlock_8.json index 2b996c667..55486d517 100644 --- a/Json/class/Warlock_8.json +++ b/Json/class/Warlock_8.json @@ -10,8 +10,8 @@ "Sequence": [ { "Name": "Immolate", - "HasCastBar": true, "Key": "5", + "HasCastBar": true, "MinMana": 25 } ] @@ -20,32 +20,29 @@ "Sequence": [ { "Name": "Immolate", - "HasCastBar": true, "Key": "5", + "HasCastBar": true, "Requirements": ["TargetHealth%>35", "not Immolate"], - "ResetOnNewTarget": true, "MinMana": 25 }, { "Name": "Curse of Agony", "Key": "1", - "ResetOnNewTarget": true, "Requirements": [ "TargetHealth%>35", "not Curse of Agony"], "MinMana": 25, "Log": false }, { "Name": "Corruption", - "HasCastBar": true, "Key": "7", - "Requirements": ["TargetHealth%>35", "not Corruption"], - "ResetOnNewTarget": true, + "HasCastBar": true, + "Requirements": ["TargetHealth%>35", "not Corruption"], "MinMana": 25 }, { "Name": "Shadow Bolt", - "HasCastBar": true, "Key": "2", + "HasCastBar": true, "MinMana": 25, "Cooldown": 8000 }, @@ -65,12 +62,12 @@ "Sequence": [ { "Name": "Food", - "Key": "N1", + "Key": "=", "Requirement": "Health%<50" }, { "Name": "Water", - "Key": "N2", + "Key": "-", "Requirement": "Mana%<40" } ] @@ -81,23 +78,20 @@ "Name": "Demon Skin", "Key": "3", "MinMana": 50, - "Requirement": "not Demon Skin", - "Log": false + "Requirement": "not Demon Skin" }, { "Name": "Summon Imp", - "HasCastBar": true, "Key": "4", + "HasCastBar": true, "MinMana": 122, - "Requirement": "not Has Pet", - "Log": false + "Requirement": "not Has Pet" }, { "Name": "Life Tap", "Key": "8", "Charge": 2, - "Requirements": ["Health%>70","Mana%<60"], - "Log": false + "Requirements": ["Health%>70","Mana%<60"] } ] }, From ed3625836bcbe0768244a2a84a27af644e6693da Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 00:12:07 +0200 Subject: [PATCH 115/132] Readme: suggestion to replace default font with bold one --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index a5224024c..636b790bf 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,13 @@ and copy next to the common-2.MPQ file. 1. Nvidia Control panel settings * Make sure the `Image Sharpening` under the `Manage 3D Settings`-> Global settings or Program Settings(for WoW) is set to `Sharpening Off, Scaling disabled`! +## 3.2 Optional - Replace default game Font + +I would highly suggest to replace the default World of Warcraft font with a much **Bolder** one. +Follow this guide (https://classic.wowhead.com/guides/changing-wow-text-font) +Should be only concerned about `Friz Quadrata: the "Everything Else" Font` which is the `FRIZQT__.ttf` named file. +By replacing the default with for example - `Robot-Medium` https://fonts.google.com/specimen/Roboto?thickness=5) - you can highly increase the success rate of the `NpcNameFinder` compontent which is responsible to find - friendly, enemy, corpse - names above NPCs head. + ## 4. Build the bot You will probably already have Visual Studio or Visual Studio Code installed. You need to build the bot using either one of them, or use powershell. From 82530e494ed83317438c79a3f7540d912fdb3fdf Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 00:13:54 +0200 Subject: [PATCH 116/132] Readme: suggestion to replace default font with bold one 2 --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 636b790bf..7dbdbd5ec 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,11 @@ and copy next to the common-2.MPQ file. ## 3.2 Optional - Replace default game Font I would highly suggest to replace the default World of Warcraft font with a much **Bolder** one. + Follow this guide (https://classic.wowhead.com/guides/changing-wow-text-font) + Should be only concerned about `Friz Quadrata: the "Everything Else" Font` which is the `FRIZQT__.ttf` named file. + By replacing the default with for example - `Robot-Medium` https://fonts.google.com/specimen/Roboto?thickness=5) - you can highly increase the success rate of the `NpcNameFinder` compontent which is responsible to find - friendly, enemy, corpse - names above NPCs head. ## 4. Build the bot From eb0ba4496152d354b57900c4eb54221ef028e0b1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 00:25:58 +0200 Subject: [PATCH 117/132] Readme update --- README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7dbdbd5ec..3b7d026b8 100644 --- a/README.md +++ b/README.md @@ -200,14 +200,14 @@ From the main menu (ESC) set the following: ## 7.1. Actionbar Key Bindings: The default class profiles assumes the following `Keybinds` setup and using English Keyboard layout. -In total, `32` key supported. +In total, `34` key supported. Highly recommended to use the default setup, in order to get properly working the `ActionBarSlotCost` and `ActionBarSlotUsable` features! https://wowwiki-archive.fandom.com/wiki/ActionSlot | ActionSlot | Key | Description | | --- | --- | --- | -| 1-10 | 1,2,3 .. 9,0 | 0 is the 10th key | +| 1-10 | 1,2,3 .. 9,0,-,= | 0 is the 10th key. | | Bottom Right ActionBar | - | - | | 49-58 | N1,N2,N3 .. N9,N0 | N means Numpad - 0 is the 10th key | | Bottom Left ActionBar | - | - | @@ -345,7 +345,7 @@ The "Key" is a key that is bound to a macro. The macro needs to target the NPC, Sell macro example bound to the "C" key using BindPad or Key bindings. /tar Jannos Ironwill - /run DataToColor:sell({"Light Leather","Cheese","Light Feather"}); + /run DataToColor[1]:sell({"Light Leather","Cheese","Light Feather"}); Repair macro example: @@ -418,11 +418,10 @@ e.g. { "Name": "Curse of Weakness", "Key": "6", - "Cooldown": 10000, + "WhenUsable": true, "ResetOnNewTarget": true, "Requirement": "not Curse of Weakness", <--- Single Requirement - "MinMana": 20, - "Log": false + "MinMana": 20 }, #### Value base requirements @@ -613,7 +612,6 @@ Allow requirements about spell range to be used, the spell in question depends u e.g. "Requirement": "SpellInRange:4" e.g. "Requirements": ["Health%<80", "SpellInRange:4"] -In the Addon DataToColor.lua is function DataToColor:areSpellsInRange() this tries to get a list of spells unique to each class that are in range. This is read by Libs.SpellInRange.cs. | Class | Spell | id | | --- | --- | --- | From ae2c4ed857f93348824b4a727803296d0c3bd28a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 15:45:42 +0200 Subject: [PATCH 118/132] FollowRouteGoal: reduce overall CPU usage --- Core/Goals/FollowRouteGoal.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Core/Goals/FollowRouteGoal.cs b/Core/Goals/FollowRouteGoal.cs index 252d0ac90..398de4a76 100644 --- a/Core/Goals/FollowRouteGoal.cs +++ b/Core/Goals/FollowRouteGoal.cs @@ -263,7 +263,7 @@ public override async Task PerformAction() LastActive = DateTime.Now; - await Task.Delay(10); + await wait.Update(1); } private void StartLookingForTarget() @@ -278,6 +278,7 @@ private void StartLookingForTarget() while (!found && !targetFinderCts.IsCancellationRequested) { found = await targetFinder.Search(GetType().Name, targetFinderCts.Token); + await wait.Update(1); } if (found) From ab2b8dd6f1d73c72a4a82d998812a681e96f42c2 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 16:00:18 +0200 Subject: [PATCH 119/132] Shaman_4 only cast L Bolt when not in melee range --- Json/class/Shaman_4.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index dcf8f25f3..3c7340e98 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -9,7 +9,7 @@ "Name": "Lightning Bolt", "Key": "2", "HasCastBar": true, - "Requirements": ["SpellInRange:0", "Stoneskin", "Mana%>50"], + "Requirements": ["not InMeleeRange", "SpellInRange:0", "Stoneskin", "Mana%>50"], "WaitForWithinMeleeRange": true, "MinMana": 15 }, @@ -17,7 +17,7 @@ "Name": "Lightning Bolt", "Key": "2", "HasCastBar": true, - "Requirements": ["SpellInRange:0", "not Stoneskin", "Mana%>70"], + "Requirements": ["not InMeleeRange", "SpellInRange:0", "not Stoneskin", "Mana%>70"], "MinMana": 15 } ] From 6b4622a653d83b6f9ff614e1f36247c68e3aecd3 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 18:37:18 +0200 Subject: [PATCH 120/132] Addon: Obtain player race along with player class --- Addons/DataToColor/Constants.lua | 3 ++- Addons/DataToColor/DataToColor.lua | 2 +- Addons/DataToColor/DataToColor.toc | 2 +- Addons/DataToColor/Storage.lua | 27 --------------------------- Core/Addon/PlayerClassEnum.cs | 22 +++++++++++++--------- Core/Addon/PlayerReader.cs | 4 +++- Core/Addon/RaceEnum.cs | 18 ++++++++++++++++++ Core/BotController.cs | 2 +- 8 files changed, 39 insertions(+), 41 deletions(-) create mode 100644 Core/Addon/RaceEnum.cs diff --git a/Addons/DataToColor/Constants.lua b/Addons/DataToColor/Constants.lua index 6763c18c4..57958fb53 100644 --- a/Addons/DataToColor/Constants.lua +++ b/Addons/DataToColor/Constants.lua @@ -21,7 +21,8 @@ DataToColor.C.Totem = "Totem" -- Character's name DataToColor.C.CHARACTER_NAME = UnitName(DataToColor.C.unitPlayer) DataToColor.C.CHARACTER_GUID = UnitGUID(DataToColor.C.unitPlayer) -_, DataToColor.C.CHARACTER_CLASS = UnitClass(DataToColor.C.unitPlayer) +_, DataToColor.C.CHARACTER_CLASS, DataToColor.C.CHARACTER_CLASS_ID = UnitClass(DataToColor.C.unitPlayer) +_, _, DataToColor.C.CHARACTER_RACE_ID = UnitRace(DataToColor.C.unitPlayer) -- Actionbar power cost DataToColor.C.MAX_POWER_TYPE = 1000000 diff --git a/Addons/DataToColor/DataToColor.lua b/Addons/DataToColor/DataToColor.lua index 131bc9821..c2e50c311 100644 --- a/Addons/DataToColor/DataToColor.lua +++ b/Addons/DataToColor/DataToColor.lua @@ -450,7 +450,7 @@ function DataToColor:CreateFrames(n) --MakePixelSquareArrI(DataToColor:GetGossipIcons(), 45) -- Returns which gossip icons are on display in dialogue box - MakePixelSquareArrI(DataToColor.S.PlayerClass, 46) -- Returns player class as an integer + MakePixelSquareArrI(DataToColor.C.CHARACTER_RACE_ID * 100 + DataToColor.C.CHARACTER_CLASS_ID, 46) MakePixelSquareArrI(DataToColor:isUnskinnable(), 47) -- Returns 1 if creature is unskinnable MakePixelSquareArrI(DataToColor:shapeshiftForm(), 48) -- Shapeshift id https://wowwiki.fandom.com/wiki/API_GetShapeshiftForm MakePixelSquareArrI(DataToColor:getRange(), 49) -- 15 Represents if target is within 0-5 5-15 15-20, 20-30, 30-35, or greater than 35 yards diff --git a/Addons/DataToColor/DataToColor.toc b/Addons/DataToColor/DataToColor.toc index fabf30db8..77588a444 100644 --- a/Addons/DataToColor/DataToColor.toc +++ b/Addons/DataToColor/DataToColor.toc @@ -2,7 +2,7 @@ ## Title: DataToColor ## Author: FreeHongKongMMO ## Notes: An addon that displays player position as color -## Version: 1.1.34 +## Version: 1.1.35 ## RequiredDeps: ## OptionalDeps: Ace3, LibDataBroker-1.1, LibCompress, LibRangeCheck ## SavedVariables: diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index 28a10a7c4..9c73d8139 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -1,45 +1,18 @@ local Load = select(2, ...) local DataToColor = unpack(Load) -DataToColor.S.PlayerClass = 0 DataToColor.S.spellInRangeList = {} DataToColor.S.playerBuffs = {} DataToColor.S.targetDebuffs = {} function DataToColor:InitStorage() - CreatePlayerClass() CreateSpellInRangeList() CreatePlayerBuffList() CreateTargetDebuffList() end -function CreatePlayerClass() - -- UnitClass returns class and the class in uppercase e.g. "Mage" and "MAGE" - if DataToColor.C.CHARACTER_CLASS == "MAGE" then - DataToColor.S.PlayerClass = 128 - elseif DataToColor.C.CHARACTER_CLASS == "ROGUE" then - DataToColor.S.PlayerClass = 64 - elseif DataToColor.C.CHARACTER_CLASS == "WARRIOR" then - DataToColor.S.PlayerClass = 32 - elseif DataToColor.C.CHARACTER_CLASS == "PALADIN" then - DataToColor.S.PlayerClass = 16 - elseif DataToColor.C.CHARACTER_CLASS == "HUNTER" then - DataToColor.S.PlayerClass = 8 - elseif DataToColor.C.CHARACTER_CLASS == "PRIEST" then - DataToColor.S.PlayerClass = 4 - elseif DataToColor.C.CHARACTER_CLASS == "SHAMAN" then - DataToColor.S.PlayerClass = 2 - elseif DataToColor.C.CHARACTER_CLASS == "WARLOCK" then - DataToColor.S.PlayerClass = 1 - elseif DataToColor.C.CHARACTER_CLASS == "DRUID" then - DataToColor.S.PlayerClass = 256 - else - DataToColor.S.PlayerClass = 0 - end -end - function CreateSpellInRangeList() if DataToColor.C.CHARACTER_CLASS == "ROGUE" then DataToColor.S.spellInRangeList = { diff --git a/Core/Addon/PlayerClassEnum.cs b/Core/Addon/PlayerClassEnum.cs index 69e700cba..e3d5e707c 100644 --- a/Core/Addon/PlayerClassEnum.cs +++ b/Core/Addon/PlayerClassEnum.cs @@ -2,14 +2,18 @@ { public enum PlayerClassEnum { - Druid = 256, - Mage = 128, - Rogue = 64, - Warrior = 32, - Paladin = 16, - Hunter = 8, - Priest = 4, - Shaman = 2, - Warlock = 1 + None, + Warrior, + Paladin, + Hunter, + Rogue, + Priest, + Death_Knight, + Shaman, + Mage, + Warlock, + Monk, + Druid, + Demon_Hunter } } \ No newline at end of file diff --git a/Core/Addon/PlayerReader.cs b/Core/Addon/PlayerReader.cs index e2aa262a8..dcf326e37 100644 --- a/Core/Addon/PlayerReader.cs +++ b/Core/Addon/PlayerReader.cs @@ -113,7 +113,9 @@ public string Target public long Gold => reader.GetLongAtCell(44) + (reader.GetLongAtCell(45) * 1000000); - public PlayerClassEnum PlayerClass => (PlayerClassEnum)reader.GetLongAtCell(46); + public RaceEnum PlayerRace => (RaceEnum)(int)(reader.GetLongAtCell(46) / 100f); + + public PlayerClassEnum PlayerClass => (PlayerClassEnum)(int)(reader.GetLongAtCell(46) - ((int)PlayerRace * 100f)); public bool Unskinnable => reader.GetLongAtCell(47) != 0; // Returns 1 if creature is unskinnable diff --git a/Core/Addon/RaceEnum.cs b/Core/Addon/RaceEnum.cs new file mode 100644 index 000000000..d05640aea --- /dev/null +++ b/Core/Addon/RaceEnum.cs @@ -0,0 +1,18 @@ +namespace Core +{ + public enum RaceEnum + { + None, + Human, + Orc, + Dwarf, + NightElf, + Undead, + Tauren, + Gnome, + Troll, + Goblin, + BloodElf, + Draenei + } +} \ No newline at end of file diff --git a/Core/BotController.cs b/Core/BotController.cs index 2f2ed4fba..f0ceecdab 100644 --- a/Core/BotController.cs +++ b/Core/BotController.cs @@ -127,7 +127,7 @@ public BotController(ILogger logger, IPPather pather, DataConfig dataConfig, ICo Thread.Sleep(100); } - logger.LogDebug($"Woohoo, I have read the player class. You are a {AddonReader.PlayerReader.PlayerClass}."); + logger.LogDebug($"Woohoo, I have read the player class. You are a {AddonReader.PlayerReader.PlayerRace} {AddonReader.PlayerReader.PlayerClass}."); npcNameFinder = new NpcNameFinder(logger, WowScreen); npcNameTargeting = new NpcNameTargeting(logger, npcNameFinder, WowProcessInput); From bd2f438eab071dd379d41f2a4075e5b37626ba16 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 18:52:10 +0200 Subject: [PATCH 121/132] RequirementFactory: added 'Race' Requirement with improved docs --- Core/Requirement/RequirementFactory.cs | 28 ++++++++++++- README.md | 54 +++++++++++++++++++++++++- 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 2835e088d..60abddb5c 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -194,11 +194,16 @@ public Requirement GetRequirement(string name, string requirement, Form form) return CreateTargetCastingSpellRequirement(requirement); } - if(requirement.Contains("Form")) + if (requirement.Contains("Form")) { return CreateFormRequirement(requirement); } + if (requirement.Contains("Race")) + { + return CreateRaceRequirement(requirement); + } + if (BuffDictionary.Count == 0) { BuffDictionary = new Dictionary> @@ -410,6 +415,27 @@ private Requirement CreateFormRequirement(string requirement) }; } + private Requirement CreateRaceRequirement(string requirement) + { + var parts = requirement.Split(":"); + var race = Enum.Parse(parts[1]); + + if (requirement.StartsWith("!") || requirement.StartsWith("not ")) + { + return new Requirement + { + HasRequirement = () => playerReader.PlayerRace != race, + LogMessage = () => $"not {race}" + }; + } + return new Requirement + { + HasRequirement = () => playerReader.PlayerRace == race, + LogMessage = () => $"{playerReader.PlayerRace}" + }; + } + + private Requirement CreateNpcRequirement(string requirement) { var parts = requirement.Split(":"); diff --git a/README.md b/README.md index 3b7d026b8..20c690f37 100644 --- a/README.md +++ b/README.md @@ -493,12 +493,62 @@ e.g. If the character must be - in or not - the specified `Form` use this requirement. Useful to determine when to switch Form for the given situation. -It has the format Form:[Form] +It has the format `Form:Form` e.g. -* "Form:Druid_Bear - Must be in `Druid_Bear` form +* "Form:Druid_Bear" - Must be in `Druid_Bear` form * "not Form:Druid_Cat" - Shoudn't be in `Druid_Cat` form +| Form | +| --- | +| None +| Druid_Bear | +| Druid_Aquatic | +| Druid_Cat | +| Druid_Travel | +| Druid_Moonkin | +| Druid_Flight | +| Druid_Cat_Prowl | +| Priest_Shadowform | +| Rogue_Stealth | +| Rogue_Vanish | +| Shaman_GhostWolf | +| Warrior_BattleStance | +| Warrior_DefensiveStance | +| Warrior_BerserkerStance | +| Paladin_Devotion_Aura | +| Paladin_Retribution_Aura | +| Paladin_Concentration_Aura | +| Paladin_Shadow_Resistance_Aura | +| Paladin_Frost_Resistance_Aura | +| Paladin_Fire_Resistance_Aura | +| Paladin_Crusader_Aura | + +#### Race requirements + +If the character must be - in or not - the specified `Race` use this requirement. Useful to determine Racial abilities. + +It has the format `Race:Race` + +e.g. +* "Race:Orc" - Must be `Orc` race +* "not Race:Human" - Shoudn't be `Human` race + +| Race | +| --- | +| None | +| Human | +| Orc | +| Dwarf | +| NightElf | +| Undead | +| Tauren | +| Gnome | +| Troll | +| Goblin | +| BloodElf | +| Draenei | + #### Buff / Debuff Allow requirements about what buffs you have or the target has to be evaluated. From 08bc38131a37a411f9a38e29059159978094e3dc Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 18:53:33 +0200 Subject: [PATCH 122/132] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20c690f37..a2873a476 100644 --- a/README.md +++ b/README.md @@ -526,7 +526,7 @@ e.g. #### Race requirements -If the character must be - in or not - the specified `Race` use this requirement. Useful to determine Racial abilities. +If the character must be - or not - the specified `Race` use this requirement. Useful to determine Racial abilities. It has the format `Race:Race` From 8b3ed87c6a10b1df00f0b66f463fe15d0d965b96 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 18:59:19 +0200 Subject: [PATCH 123/132] Hunter profiles fixed with Draenei Racial ability condition --- Json/class/Hunter_10.json | 2 +- Json/class/Hunter_18.json | 2 +- Json/class/Hunter_26.json | 2 +- Json/class/Hunter_30.json | 2 +- Json/class/Hunter_62.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Json/class/Hunter_10.json b/Json/class/Hunter_10.json index 83f6d2970..b49fd6fbc 100644 --- a/Json/class/Hunter_10.json +++ b/Json/class/Hunter_10.json @@ -27,7 +27,7 @@ "Key": "1", "HasCastBar": true, "WhenUsable": true, - "Requirement": "Health%<45" + "Requirements": ["Race:Draenei", "Health%<45"] }, { "Name": "Mend Pet", diff --git a/Json/class/Hunter_18.json b/Json/class/Hunter_18.json index 4b63e76d0..2c9ba0ad4 100644 --- a/Json/class/Hunter_18.json +++ b/Json/class/Hunter_18.json @@ -27,7 +27,7 @@ "Key": "1", "HasCastBar": true, "WhenUsable": true, - "Requirement": "Health%<45" + "Requirements": ["Race:Draenei", "Health%<45"] }, { "Name": "Mend Pet", diff --git a/Json/class/Hunter_26.json b/Json/class/Hunter_26.json index 6a20645c4..523c94d68 100644 --- a/Json/class/Hunter_26.json +++ b/Json/class/Hunter_26.json @@ -28,7 +28,7 @@ "Key": "1", "HasCastBar": true, "WhenUsable": true, - "Requirement": "Health%<45" + "Requirements": ["Race:Draenei", "Health%<45"] }, { "Name": "Mend Pet", diff --git a/Json/class/Hunter_30.json b/Json/class/Hunter_30.json index 0d5213d05..1f259c0d3 100644 --- a/Json/class/Hunter_30.json +++ b/Json/class/Hunter_30.json @@ -27,7 +27,7 @@ "Key": "1", "HasCastBar": true, "WhenUsable": true, - "Requirement": "Health%<45" + "Requirements": ["Race:Draenei", "Health%<45"] }, { "Name": "Mend Pet", diff --git a/Json/class/Hunter_62.json b/Json/class/Hunter_62.json index 22b53a715..2d45b4555 100644 --- a/Json/class/Hunter_62.json +++ b/Json/class/Hunter_62.json @@ -32,7 +32,7 @@ "Key": "1", "HasCastBar": true, "WhenUsable": true, - "Requirement": "Health%<45" + "Requirements": ["Race:Draenei", "Health%<45"] }, { "Name": "Mend Pet", From 1255a8e216457d5bd7685df6649a5e249f15d602 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 19:02:00 +0200 Subject: [PATCH 124/132] Shaman profiles highest priority in combat to healself --- Json/class/Shaman_1.json | 14 +++++++------- Json/class/Shaman_15.json | 18 +++++++++--------- Json/class/Shaman_2.json | 14 +++++++------- Json/class/Shaman_22.json | 24 ++++++++++++------------ Json/class/Shaman_4.json | 14 +++++++------- Json/class/Shaman_44.json | 24 ++++++++++++------------ Json/class/Shaman_55.json | 24 ++++++++++++------------ 7 files changed, 66 insertions(+), 66 deletions(-) diff --git a/Json/class/Shaman_1.json b/Json/class/Shaman_1.json index 5ca422025..6f5ab0d63 100644 --- a/Json/class/Shaman_1.json +++ b/Json/class/Shaman_1.json @@ -16,13 +16,6 @@ }, "Combat": { "Sequence": [ - { - "Name": "Lightning Bolt", - "Key": "2", - "HasCastBar": true, - "MinMana": 15, - "Requirement": "not InMeleeRange" - }, { "Name": "Healing Wave", "Key": "3", @@ -31,6 +24,13 @@ "HasCastBar": true, "MinMana": 25 }, + { + "Name": "Lightning Bolt", + "Key": "2", + "HasCastBar": true, + "MinMana": 15, + "Requirement": "not InMeleeRange" + }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index 5db983af0..d1994bae6 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -22,6 +22,15 @@ }, "Combat": { "Sequence": [ + { + "Name": "Healing Wave", + "Key": "3", + "Requirement": "Health%<45", + "Cooldown": 5000, + "HasCastBar": true, + "Log": false, + "MinMana": 80 + }, { "Name": "Lightning Bolt", "Key": "2", @@ -43,15 +52,6 @@ "Log": false, "MinMana": 10 }, - { - "Name": "Healing Wave", - "Key": "3", - "Requirement": "Health%<45", - "Cooldown": 5000, - "HasCastBar": true, - "Log": false, - "MinMana": 80 - }, { "Name": "Fire shock", "Key": "4", diff --git a/Json/class/Shaman_2.json b/Json/class/Shaman_2.json index 087a90458..97160df2e 100644 --- a/Json/class/Shaman_2.json +++ b/Json/class/Shaman_2.json @@ -16,13 +16,6 @@ }, "Combat": { "Sequence": [ - { - "Name": "Lightning Bolt", - "Key": "2", - "HasCastBar": true, - "MinMana": 15, - "Requirement": "not InMeleeRange" - }, { "Name": "Healing Wave", "Key": "3", @@ -32,6 +25,13 @@ "Log": false, "MinMana": 25 }, + { + "Name": "Lightning Bolt", + "Key": "2", + "HasCastBar": true, + "MinMana": 15, + "Requirement": "not InMeleeRange" + }, { "Name": "AutoAttack", "Requirement": "not AutoAttacking" diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index d81f594e3..ab7428a42 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -22,6 +22,18 @@ }, "Combat": { "Sequence": [ + { + "Name": "Healing Wave", + "Key": "3", + "Requirements": [ + "Health%<45", + "TargetHealth%>20" + ], + "Cooldown": 5000, + "HasCastBar": true, + "Log": false, + "MinMana": 80 + }, { "Name": "Stoneclaw Totem", "Key": "7", @@ -59,18 +71,6 @@ "Mana%>30" ] }, - { - "Name": "Healing Wave", - "Key": "3", - "Requirements": [ - "Health%<45", - "TargetHealth%>20" - ], - "Cooldown": 5000, - "HasCastBar": true, - "Log": false, - "MinMana": 80 - }, { "Name": "Fire shock", "Key": "4", diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index 3c7340e98..5363c00e4 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -24,13 +24,6 @@ }, "Combat": { "Sequence": [ - { - "Name": "Earth Shock", - "Key": "6", - "WhenUsable": true, - "Requirements": ["TargetHealth%>10", "SpellInRange:1", "Mana%>50", "TargetHealth%>20"], - "MinMana": 30 - }, { "Name": "Healing Wave", "Key": "3", @@ -40,6 +33,13 @@ "Cooldown": 5000, "MinMana": 25 }, + { + "Name": "Earth Shock", + "Key": "6", + "WhenUsable": true, + "Requirements": ["TargetHealth%>10", "SpellInRange:1", "Mana%>50", "TargetHealth%>20"], + "MinMana": 30 + }, { "Name": "Stoneskin Totem", "Key": "F2", diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index 040026394..d584046c6 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -20,6 +20,18 @@ }, "Combat": { "Sequence": [ + { + "Name": "Healing Wave", + "Key": "3", + "Requirements": [ + "Health%<40", + "TargetHealth%>15" + ], + "Cooldown": 5000, + "HasCastBar": true, + "Log": false, + "MinMana": 200 + }, { "Name": "Lightning Bolt", "Key": "2", @@ -54,18 +66,6 @@ "Log": false, "MinMana": 10 }, - { - "Name": "Healing Wave", - "Key": "3", - "Requirements": [ - "Health%<40", - "TargetHealth%>15" - ], - "Cooldown": 5000, - "HasCastBar": true, - "Log": false, - "MinMana": 200 - }, { "Name": "Stormstrike", "Key": "1", diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index 33bda52a5..3368ed5ee 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -13,6 +13,18 @@ }, "Combat": { "Sequence": [ + { + "Name": "Healing Wave", + "Key": "3", + "Requirements": [ + "Health%<40", + "TargetHealth%>15" + ], + "Cooldown": 5000, + "HasCastBar": true, + "Log": false, + "MinMana": 200 + }, { "Name": "Shaman Ferry", "Key": "F3", @@ -43,18 +55,6 @@ "Log": false, "MinMana": 10 }, - { - "Name": "Healing Wave", - "Key": "3", - "Requirements": [ - "Health%<40", - "TargetHealth%>15" - ], - "Cooldown": 5000, - "HasCastBar": true, - "Log": false, - "MinMana": 200 - }, { "Name": "Stormstrike", "Key": "1", From 91248bfb20887696521c5e568d7c4296f1c416e4 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 19:24:07 +0200 Subject: [PATCH 125/132] Added Shaman_8 profile and every shaman profile below that using 'Gift of the Naaru' with Race condition --- Json/class/Shaman_1.json | 7 +++ Json/class/Shaman_2.json | 7 +++ Json/class/Shaman_4.json | 7 +++ Json/class/Shaman_8.json | 117 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 Json/class/Shaman_8.json diff --git a/Json/class/Shaman_1.json b/Json/class/Shaman_1.json index 6f5ab0d63..00ce24c6a 100644 --- a/Json/class/Shaman_1.json +++ b/Json/class/Shaman_1.json @@ -16,6 +16,13 @@ }, "Combat": { "Sequence": [ + { + "Name": "Gift of the Naaru", + "Key": "4", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Race:Draenei", "Health%<50"] + }, { "Name": "Healing Wave", "Key": "3", diff --git a/Json/class/Shaman_2.json b/Json/class/Shaman_2.json index 97160df2e..9a61e1db8 100644 --- a/Json/class/Shaman_2.json +++ b/Json/class/Shaman_2.json @@ -16,6 +16,13 @@ }, "Combat": { "Sequence": [ + { + "Name": "Gift of the Naaru", + "Key": "4", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Race:Draenei", "Health%<50"] + }, { "Name": "Healing Wave", "Key": "3", diff --git a/Json/class/Shaman_4.json b/Json/class/Shaman_4.json index 5363c00e4..f00c9430e 100644 --- a/Json/class/Shaman_4.json +++ b/Json/class/Shaman_4.json @@ -24,6 +24,13 @@ }, "Combat": { "Sequence": [ + { + "Name": "Gift of the Naaru", + "Key": "4", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Race:Draenei", "Health%<50"] + }, { "Name": "Healing Wave", "Key": "3", diff --git a/Json/class/Shaman_8.json b/Json/class/Shaman_8.json new file mode 100644 index 000000000..ebf6672b4 --- /dev/null +++ b/Json/class/Shaman_8.json @@ -0,0 +1,117 @@ +{ + "ClassName": "Shaman", + "Loot": true, + "PathFilename": "_pack\\1-20\\Draenei\\5-9_Azuremyst Isle.json", + "KillIfGivesExp": true, + "Pull": { + "Sequence": [ + { + "Name": "Lightning Bolt", + "Key": "2", + "HasCastBar": true, + "Requirements": ["not InMeleeRange", "SpellInRange:0", "Stoneskin", "Mana%>60"], + "WaitForWithinMeleeRange": true, + "MinMana": 15 + }, + { + "Name": "Lightning Bolt", + "Key": "2", + "HasCastBar": true, + "Requirements": ["not InMeleeRange", "SpellInRange:0", "not Stoneskin", "Mana%>70"], + "MinMana": 15 + } + ] + }, + "Combat": { + "Sequence": [ + { + "Name": "Gift of the Naaru", + "Key": "4", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Race:Draenei", "Health%<50"] + }, + { + "Name": "Healing Wave", + "Key": "3", + "HasCastBar": true, + "WhenUsable": true, + "Requirement": "Health%<40", + "Cooldown": 5000, + "MinMana": 25 + }, + { + "Name": "Earth Shock", + "Key": "6", + "WhenUsable": true, + "Requirements": ["TargetHealth%>10", "SpellInRange:1", "Mana%>55", "TargetHealth%>20"], + "MinMana": 30 + }, + { + "Name": "Stoneskin Totem", + "Key": "F2", + "WhenUsable": true, + "Cooldown": 30000, + "Requirements": ["InMeleeRange", "TargetHealth%>50", "Mana%>55", "BagItem:5175", "not Stoneskin"], + "MinMana": 30 + }, + { + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false + } + ] + }, + "Adhoc": { + "Sequence": [ + { + "Name": "Rockbiter Weapon", + "Key": "5", + "MinMana": 15, + "Requirement": "not HasMainHandEnchant" + }, + { + "Name": "Lightning Shield", + "Key": "7", + "MinMana": 25, + "Cooldown": 10000, + "Requirements": ["not Lightning Shield", "Mana%>50"] + } + ] + }, + "Parallel": { + "Sequence": [ + { + "Name": "Food", + "Key": "=", + "Requirement": "Health%<30" + }, + { + "Name": "Water", + "Key": "-", + "Requirement": "Mana%<30" + } + ] + }, + "NPC": { + "Sequence": [ + { + "Name": "Repair", + "Key": "C", + "Requirement": "Items Broken", + "PathFilename": "1_Draenei_Vendor.json", + "Cost": 6 + }, + { + "Name": "Sell", + "Key": "C", + "Requirement": "BagFull", + "PathFilename": "1_Draenei_Vendor.json", + "Cost": 6 + } + ] + } +} From d55a36240d0e1d0b16506aaf17c4ca2e669d9f7a Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 19:28:44 +0200 Subject: [PATCH 126/132] Shaman high level profiles now using 'Race:Tauren' condition for 'War Stomp' --- Json/class/Shaman_15.json | 4 ++-- Json/class/Shaman_22.json | 4 ++-- Json/class/Shaman_44.json | 6 +++--- Json/class/Shaman_55.json | 8 +++++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Json/class/Shaman_15.json b/Json/class/Shaman_15.json index d1994bae6..14f131dbe 100644 --- a/Json/class/Shaman_15.json +++ b/Json/class/Shaman_15.json @@ -45,11 +45,11 @@ "Name": "War Stomp", "Key": "0", "Requirements": [ + "Race:Tauren", "Health%<49", "MobCount>2" ], - "Cooldown": 120000, - "Log": false, + "WhenUsable": true, "MinMana": 10 }, { diff --git a/Json/class/Shaman_22.json b/Json/class/Shaman_22.json index ab7428a42..007e6fca7 100644 --- a/Json/class/Shaman_22.json +++ b/Json/class/Shaman_22.json @@ -54,11 +54,11 @@ "Name": "War Stomp", "Key": "0", "Requirements": [ + "Race:Tauren", "Health%<49", "MobCount>2" ], - "Cooldown": 120000, - "Log": false, + "WhenUsable": true, "MinMana": 10 }, { diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index d584046c6..1e59f3a15 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -59,11 +59,11 @@ "Name": "War Stomp", "Key": "0", "Requirements": [ - "Health%<45", + "Race:Tauren", + "Health%<49", "MobCount>2" ], - "Cooldown": 120000, - "Log": false, + "WhenUsable": true, "MinMana": 10 }, { diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index 3368ed5ee..eabdbe320 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -50,9 +50,11 @@ { "Name": "War Stomp", "Key": "0", - "Requirement": "Health%<50", - "Cooldown": 120000, - "Log": false, + "Requirements": [ + "Race:Tauren", + "Health%<49" + ], + "WhenUsable": true, "MinMana": 10 }, { From 552f44c3b679b4fe64e2b3f10a28df005d9962e7 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 19:34:18 +0200 Subject: [PATCH 127/132] RequirementFactory: removed unnecessary Form parameter --- Core/Requirement/RequirementFactory.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Core/Requirement/RequirementFactory.cs b/Core/Requirement/RequirementFactory.cs index 60abddb5c..4b3622e3c 100644 --- a/Core/Requirement/RequirementFactory.cs +++ b/Core/Requirement/RequirementFactory.cs @@ -34,7 +34,7 @@ public void InitialiseRequirements(KeyAction item) }; foreach (string part in requirement.Split("||")) { - var sub = GetRequirement(item.Name, part, item.FormEnum); + var sub = GetRequirement(item.Name, part); orCombinedRequirement = orCombinedRequirement.Or(sub); } @@ -48,7 +48,7 @@ public void InitialiseRequirements(KeyAction item) }; foreach (string part in requirement.Split("&&")) { - var sub = GetRequirement(item.Name, part, item.FormEnum); + var sub = GetRequirement(item.Name, part); andCombinedRequirement = andCombinedRequirement.And(sub); } @@ -56,7 +56,7 @@ public void InitialiseRequirements(KeyAction item) } else { - item.RequirementObjects.Add(GetRequirement(item.Name, requirement, item.FormEnum)); + item.RequirementObjects.Add(GetRequirement(item.Name, requirement)); } } @@ -163,7 +163,7 @@ private void CreateConsumableRequirement(string name, KeyAction item) } } - public Requirement GetRequirement(string name, string requirement, Form form) + public Requirement GetRequirement(string name, string requirement) { this.logger.LogInformation($"[{name}] Processing requirement: {requirement}"); @@ -171,7 +171,7 @@ public Requirement GetRequirement(string name, string requirement, Form form) if (requirement.Contains(">") || requirement.Contains("<")) { - return GetValueBasedRequirement(name, requirement, form); + return GetValueBasedRequirement(name, requirement); } if (requirement.Contains("npcID:")) @@ -498,7 +498,7 @@ private Requirement CreateSpellInRangeRequirement(string requirement) }; } - private Requirement GetValueBasedRequirement(string name, string requirement, Form form) + private Requirement GetValueBasedRequirement(string name, string requirement) { var symbol = "<"; if (requirement.Contains(">")) From 15602cf84813ea22ad8c8f39ea41ef270ae6a21c Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 19:48:10 +0200 Subject: [PATCH 128/132] Priest: use Smite for default SpellInRange instead of Shadow Word: Pain --- Addons/DataToColor/Storage.lua | 3 ++- Core/Addon/SpellInRange.cs | 5 +++-- README.md | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Addons/DataToColor/Storage.lua b/Addons/DataToColor/Storage.lua index 9c73d8139..9afefc78b 100644 --- a/Addons/DataToColor/Storage.lua +++ b/Addons/DataToColor/Storage.lua @@ -38,7 +38,8 @@ function CreateSpellInRangeList() 589, -- "Shadow Word: Pain" 5019, -- "Shoot" 15407, -- "Mind Flay" - 8092 -- "Mind Blast" + 8092, -- "Mind Blast" + 585 -- "Smite" } elseif DataToColor.C.CHARACTER_CLASS == "PALADIN" then DataToColor.S.spellInRangeList = { diff --git a/Core/Addon/SpellInRange.cs b/Core/Addon/SpellInRange.cs index 5d4e4187f..c91a16beb 100644 --- a/Core/Addon/SpellInRange.cs +++ b/Core/Addon/SpellInRange.cs @@ -31,6 +31,7 @@ public bool IsBitSet(int pos) public bool Priest_Shoot => IsBitSet(1); public bool Priest_MindFlay => IsBitSet(2); public bool Priest_MindBlast => IsBitSet(3); + public bool Priest_Smite => IsBitSet(4); // Druid public bool Druid_Wrath => IsBitSet(0); @@ -65,7 +66,7 @@ public bool IsBitSet(int pos) { PlayerClassEnum.Warrior => (playerReader.PlayerLevel >= 4 && Warrior_Charge) || playerReader.IsInMeleeRange, PlayerClassEnum.Rogue => Rogue_Throw, - PlayerClassEnum.Priest => Priest_ShadowWordPain, + PlayerClassEnum.Priest => Priest_Smite, PlayerClassEnum.Druid => Druid_Wrath, PlayerClassEnum.Paladin => (playerReader.PlayerLevel >= 4 && Paladin_Judgement) || playerReader.IsInMeleeRange, PlayerClassEnum.Mage => (playerReader.PlayerLevel >= 4 && Mage_Frostbolt) || Mage_Fireball, @@ -79,7 +80,7 @@ public bool IsBitSet(int pos) { PlayerClassEnum.Warrior => (playerReader.PlayerLevel >= 4 && Warrior_Rend) || playerReader.IsInMeleeRange, PlayerClassEnum.Rogue => Rogue_SinisterStrike, - PlayerClassEnum.Priest => Priest_Shoot, + PlayerClassEnum.Priest => Priest_Smite, PlayerClassEnum.Druid => Druid_Wrath || playerReader.IsInMeleeRange, PlayerClassEnum.Paladin => (playerReader.PlayerLevel >= 4 && Paladin_Judgement) || playerReader.IsInMeleeRange, PlayerClassEnum.Mage => Mage_Frostbolt || Mage_Fireball, diff --git a/README.md b/README.md index a2873a476..cd4cb33fb 100644 --- a/README.md +++ b/README.md @@ -682,6 +682,7 @@ e.g. "Requirements": ["Health%<80", "SpellInRange:4"] | PRIEST | Shoot | 1 | | PRIEST | Mind Flay | 2 | | PRIEST | Mind Blast | 3 | +| PRIEST | Smite | 4 | | --- | --- | --- | | PALADIN | Judgement | 0 | | --- | --- | --- | From da6480058776ce9273cc4020b422cdc730d693f1 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 20:30:03 +0200 Subject: [PATCH 129/132] PullTargetGoal: WaitForMeleeRange, Stop waiting upon getting damage :sweat: --- Core/Goals/PullTargetGoal.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Goals/PullTargetGoal.cs b/Core/Goals/PullTargetGoal.cs index 368ef64f4..6cd8a01e2 100644 --- a/Core/Goals/PullTargetGoal.cs +++ b/Core/Goals/PullTargetGoal.cs @@ -146,14 +146,14 @@ protected async Task WaitForWithinMeleeRange(KeyAction item, bool lastCastSucces await wait.Update(1); var start = DateTime.Now; - var playerHealth = playerReader.HealthCurrent; + var lastKnownHealth = playerReader.HealthCurrent; int maxWaitTime = 10; Log($"Waiting for the target to reach melee range - max {maxWaitTime}s"); while (playerReader.HasTarget && !playerReader.IsInMeleeRange && (DateTime.Now - start).TotalSeconds < maxWaitTime) { - if (playerHealth < playerReader.HealthCurrent) + if (playerReader.HealthCurrent < lastKnownHealth) { Log("Got damage. Stop waiting for melee range."); break; From db886158e731e9349b3b1d96050bfbe2d5c58f2f Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 21:14:58 +0200 Subject: [PATCH 130/132] Druid profiles: From without macro --- Json/class/Druid_10_bear.json | 24 +++++++++++++++++------- Json/class/Druid_12_bear.json | 22 ++++++++++++++++------ Json/class/Druid_14_bear.json | 25 +++++++++++++++++-------- Json/class/Druid_16_bear.json | 24 +++++++++++++++--------- Json/class/Druid_20_cat_bear.json | 10 ++-------- Json/class/Druid_bear.json | 12 ++++++------ Json/class/Druid_cat.json | 12 ++++++------ 7 files changed, 79 insertions(+), 50 deletions(-) diff --git a/Json/class/Druid_10_bear.json b/Json/class/Druid_10_bear.json index 4d008c0ec..65e0c1183 100644 --- a/Json/class/Druid_10_bear.json +++ b/Json/class/Druid_10_bear.json @@ -13,8 +13,7 @@ "Form": "None" }, { - //macro: #showtooltip Bear form /cast [nostance:1] Bear form - "Name": "bearform", + "Name": "Bear Form", "Key": "F2", "Form": "Druid_Bear" } @@ -24,12 +23,23 @@ { "Name": "Moonfire", "Key": "5", - "Requirements": ["SpellInRange:0", "not Moonfire"], + "AfterCastWaitBuff": true, + "CastIfAddsVisible": true, + "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], + "WaitForWithinMeleeRange": true, + "StopBeforeCast": true, "Form": "None" }, { - "Name": "Approach", - "Log": false + "Name": "Bear Form", + "Key": "F2", + "WaitForWithinMeleeRange": true, + "Requirements": ["Moonfire", "not Form:Druid_Bear"] + }, + { + "Name": "Bear Form", + "Key": "F2", + "Requirements": ["not Form:Druid_Bear"] } ] }, @@ -56,14 +66,14 @@ "Key": "3", "MinRage": 10, "WhenUsable": true, - "Requirements": ["InMeleeRange", "not Demoralizing Roar"], + "Requirements": ["InMeleeRange", "not Demoralizing Roar", "Form:Druid_Bear"], "Form": "Druid_Bear" }, { "Name": "Maul", "Key": "2", "MinRage": 15, - "Requirements": ["InMeleeRange", "LastMainHandMs>2100"], // bear swing speed fixed at 2.5 + "Requirements": ["InMeleeRange", "LastMainHandMs>2100", "Form:Druid_Bear"], // bear swing speed fixed at 2.5 "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, diff --git a/Json/class/Druid_12_bear.json b/Json/class/Druid_12_bear.json index 2bcf75df1..b0f9a77b1 100644 --- a/Json/class/Druid_12_bear.json +++ b/Json/class/Druid_12_bear.json @@ -13,8 +13,7 @@ "Form": "None" }, { - //macro: #showtooltip Bear form /cast [nostance:1] Bear form - "Name": "bearform", + "Name": "Bear Form", "Key": "F2", "Form": "Druid_Bear", "MinMana": 50 @@ -33,12 +32,23 @@ { "Name": "Moonfire", "Key": "5", + "AfterCastWaitBuff": true, + "CastIfAddsVisible": true, "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], + "WaitForWithinMeleeRange": true, + "StopBeforeCast": true, "Form": "None" }, { - "Name": "Approach", - "Log": false + "Name": "Bear Form", + "Key": "F2", + "WaitForWithinMeleeRange": true, + "Requirements": ["Moonfire", "not Form:Druid_Bear"] + }, + { + "Name": "Bear Form", + "Key": "F2", + "Requirements": ["not Form:Druid_Bear"] } ] }, @@ -64,14 +74,14 @@ "Key": "3", "MinRage": 10, "WhenUsable": true, - "Requirements": ["InMeleeRange", "not Demoralizing Roar"], + "Requirements": ["InMeleeRange", "not Demoralizing Roar", "Form:Druid_Bear"], "Form": "Druid_Bear" }, { "Name": "Maul", "Key": "2", "MinRage": 15, - "Requirements": ["InMeleeRange", "LastMainHandMs>2100"], // bear swing speed fixed at 2.5 + "Requirements": ["InMeleeRange", "LastMainHandMs>2100", "Form:Druid_Bear"], // bear swing speed fixed at 2.5 "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, diff --git a/Json/class/Druid_14_bear.json b/Json/class/Druid_14_bear.json index a117c7d73..dd311a1a5 100644 --- a/Json/class/Druid_14_bear.json +++ b/Json/class/Druid_14_bear.json @@ -13,8 +13,7 @@ "Form": "None" }, { - //macro: #showtooltip Bear form /cast [nostance:1] Bear form - "Name": "bearform", + "Name": "Bear Form", "Key": "F2", "Form": "Druid_Bear", "MinMana": 50 @@ -33,12 +32,23 @@ { "Name": "Moonfire", "Key": "5", + "AfterCastWaitBuff": true, + "CastIfAddsVisible": true, "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], + "WaitForWithinMeleeRange": true, + "StopBeforeCast": true, "Form": "None" }, { - "Name": "Approach", - "Log": false + "Name": "Bear Form", + "Key": "F2", + "WaitForWithinMeleeRange": true, + "Requirements": ["Moonfire", "not Form:Druid_Bear"] + }, + { + "Name": "Bear Form", + "Key": "F2", + "Requirements": ["not Form:Druid_Bear"] } ] }, @@ -62,10 +72,9 @@ { "Name": "Bash", "Key": "5", - "Requirement": "InMeleeRange", - "UseWhenTargetIsCasting": true, "WhenUsable": true, "MinRage": 10, + "Requirements": ["SpellInRange:1", "TargetCastingSpell||Health%<38"], "Form": "Druid_Bear" }, { @@ -73,14 +82,14 @@ "Key": "3", "MinRage": 10, "WhenUsable": true, - "Requirements": ["InMeleeRange", "not Demoralizing Roar"], + "Requirements": ["InMeleeRange", "not Demoralizing Roar", "Form:Druid_Bear"], "Form": "Druid_Bear" }, { "Name": "Maul", "Key": "2", "MinRage": 15, - "Requirements": ["InMeleeRange", "LastMainHandMs>2100"], // bear swing speed fixed at 2.5 + "Requirements": ["InMeleeRange", "LastMainHandMs>2100", "Form:Druid_Bear"], // bear swing speed fixed at 2.5 "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, diff --git a/Json/class/Druid_16_bear.json b/Json/class/Druid_16_bear.json index e3a8b7753..9b5bd86c8 100644 --- a/Json/class/Druid_16_bear.json +++ b/Json/class/Druid_16_bear.json @@ -14,8 +14,7 @@ "Form": "None" }, { - //macro: #showtooltip Bear form /cast [nostance:1] Bear form - "Name": "bearform", + "Name": "Bear Form", "Key": "F2", "Form": "Druid_Bear", "MinMana": 50 @@ -35,14 +34,22 @@ "Name": "Moonfire", "Key": "5", "AfterCastWaitBuff": true, + "CastIfAddsVisible": true, "Requirements": ["SpellInRange:0", "not InMeleeRange", "not Moonfire", "Mana%>50"], "WaitForWithinMeleeRange": true, "StopBeforeCast": true, "Form": "None" }, { - "Name": "Approach", - "Log": false + "Name": "Bear Form", + "Key": "F2", + "WaitForWithinMeleeRange": true, + "Requirements": ["Moonfire", "not Form:Druid_Bear"] + }, + { + "Name": "Bear Form", + "Key": "F2", + "Requirements": ["not Form:Druid_Bear"] } ] }, @@ -66,8 +73,7 @@ { "Name": "Bash", "Key": "5", - "Requirement": "InMeleeRange", - "UseWhenTargetIsCasting": true, + "Requirements": ["SpellInRange:1", "TargetCastingSpell||Health%<38"], "WhenUsable": true, "MinRage": 10, "Form": "Druid_Bear" @@ -77,7 +83,7 @@ "Key": "3", "MinRage": 10, "WhenUsable": true, - "Requirements": ["InMeleeRange", "not Demoralizing Roar"], + "Requirements": ["InMeleeRange", "not Demoralizing Roar", "Form:Druid_Bear"], "Form": "Druid_Bear" }, { @@ -85,14 +91,14 @@ "Key": "6", "MinRage": 20, "WhenUsable": true, - "Requirements": ["InMeleeRange", "MobCount>2"], + "Requirements": ["InMeleeRange", "MobCount>2", "Form:Druid_Bear"], "Form": "Druid_Bear" }, { "Name": "Maul", "Key": "2", "MinRage": 15, - "Requirements": ["InMeleeRange", "MobCount<1", "LastMainHandMs>2100"], // bear swing speed fixed at 2.5 + "Requirements": ["InMeleeRange", "MobCount<1", "LastMainHandMs>2100", "Form:Druid_Bear"], // bear swing speed fixed at 2.5 "AfterCastWaitNextSwing": true, "Form": "Druid_Bear" }, diff --git a/Json/class/Druid_20_cat_bear.json b/Json/class/Druid_20_cat_bear.json index 5de25eef1..39ddc0c28 100644 --- a/Json/class/Druid_20_cat_bear.json +++ b/Json/class/Druid_20_cat_bear.json @@ -11,16 +11,14 @@ "Key": "F1", "Form": "None" }, - //macro: #showtooltip Bear form /cast [nostance:1] Bear form { - "Name": "bearform", + "Name": "Bear Form", "Key": "F2", "Form": "Druid_Bear", "MinMana": 50 }, - //macro: #showtooltip Cat form /cast [nostance:3] Cat form { - "Name": "catform", + "Name": "Cat form", "Key": "F3", "Form": "Druid_Cat", "MinMana": 123 @@ -56,10 +54,6 @@ "Name": "Cat Form", "Key": "F3", "Requirements": ["not Form:Druid_Cat"] - }, - { - "Name": "Approach", - "Log": false } ] }, diff --git a/Json/class/Druid_bear.json b/Json/class/Druid_bear.json index 9349ddd48..5d6581bc4 100644 --- a/Json/class/Druid_bear.json +++ b/Json/class/Druid_bear.json @@ -28,13 +28,13 @@ "Form": "None" }, { - "Name": "Druid_Bear", - "Key": "2", + "Name": "Bear Form", + "Key": "F2", "Form": "Druid_Bear" }, { - "Name": "Druid_Travel", - "Key": "1", + "Name": "Travel Form", + "Key": "F1", "Form": "Druid_Travel" } ], @@ -70,8 +70,8 @@ "WaitForWithinMeleeRange": true }, { - "Name": "Bear form", - "Key": "2", + "Name": "Bear Form", + "Key": "F2", "Form": "None", "WaitForWithinMeleeRange": true } diff --git a/Json/class/Druid_cat.json b/Json/class/Druid_cat.json index b797d8b8e..09eec2246 100644 --- a/Json/class/Druid_cat.json +++ b/Json/class/Druid_cat.json @@ -35,13 +35,13 @@ "Form": "None" }, { - "Name": "Druid_Cat", - "Key": "2", + "Name": "Cat Form", + "Key": "F2", "Form": "Druid_Cat" }, { - "Name": "Druid_Travel", - "Key": "1", + "Name": "Travel Form", + "Key": "F1", "Form": "Druid_Travel" } ], @@ -77,8 +77,8 @@ "WaitForWithinMeleeRange": true }, { - "Name": "Cat form", - "Key": "2", + "Name": "Cat Form", + "Key": "F2", "Form": "None", "WaitForWithinMeleeRange": true }, From 5f76ba0537c379816e69e9329939441a1ae98dd6 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 21:15:21 +0200 Subject: [PATCH 131/132] Added Priest_1 --- Json/class/Priest_1.json | 66 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Json/class/Priest_1.json diff --git a/Json/class/Priest_1.json b/Json/class/Priest_1.json new file mode 100644 index 000000000..9c79e87f5 --- /dev/null +++ b/Json/class/Priest_1.json @@ -0,0 +1,66 @@ +{ + "ClassName": "Priest", + "Loot": true, + "PathFilename": "_pack\\1-20\\Draenei\\1-5_Azuremyst Isle.json", + "PathThereAndBack": true, + "PathReduceSteps": true, + "Pull": { + "Sequence": [ + { + "Name": "Smite", + "Key": "2", + "HasCastBar": true, + "MinMana": 15, + "Requirement": "Mana%>50" + } + ] + }, + "Combat": { + "Sequence": [ + { + "Name": "Gift of the Naaru", + "Key": "4", + "HasCastBar": true, + "WhenUsable": true, + "Requirements": ["Race:Draenei", "Health%<50"] + }, + { + "Name": "Lesser Heal", + "Key": "3", + "Requirement": "Health%<40", + "Cooldown": 10000, + "HasCastBar": true, + "MinMana": 25 + }, + { + "Name": "Smite", + "Key": "2", + "HasCastBar": true, + "MinMana": 15, + "Requirements": ["not InMeleeRange", "Mana%>50"] + }, + { + "Name": "AutoAttack", + "Requirement": "not AutoAttacking" + }, + { + "Name": "Approach", + "Log": false + } + ] + }, + "Parallel": { + "Sequence": [ + { + "Name": "Food", + "Key": "=", + "Requirement": "Health%<30" + }, + { + "Name": "Water", + "Key": "-", + "Requirement": "Mana%<30" + } + ] + } +} From f060ea1e50e0d2de58b5ec0fb4e8ca3a6548e9c6 Mon Sep 17 00:00:00 2001 From: Xian55 Date: Tue, 19 Oct 2021 21:16:07 +0200 Subject: [PATCH 132/132] GoalThreat: Fix exception when multiple enemies around an unable to run Linq.Min --- Core/Goals/GoalThread.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/Goals/GoalThread.cs b/Core/Goals/GoalThread.cs index 75542d335..15b93987b 100644 --- a/Core/Goals/GoalThread.cs +++ b/Core/Goals/GoalThread.cs @@ -47,7 +47,9 @@ public void OnActionEvent(object sender, ActionEventArgs e) if (routeInfo != null && routeInfo.PoiList.Any()) { var closest = routeInfo.PoiList.Where(p => p.Name == "Corpse"). - Min(i => (WowPoint.DistanceTo(goapAgent.PlayerReader.PlayerLocation, i.Location), i)); + Select(i => new { i, d = WowPoint.DistanceTo(goapAgent.PlayerReader.PlayerLocation, i.Location) }). + Aggregate((a, b) => a.d <= b.d ? a : b); + if (closest.i != null) { routeInfo.PoiList.Remove(closest.i);