Hi,
i want to duplicate a Rotation and adjust one of them.
i tried to duplicate just the Rotation in the classfolder and renamed it, but i won't appear ingame.
Hi,
i want to duplicate a Rotation and adjust one of them.
i tried to duplicate just the Rotation in the classfolder and renamed it, but i won't appear ingame.
Hi,
you have to overwrite the default one; otherwise you have to make a .toc file and put the directory in wow/interface/addon
Basically you have to create an addon to keep the rotations separated
Last edited by Abramacadabra; 01-15-2015 at 04:08 PM.
thanks AgoAbramacadabra.
i tried to duplicate and Change Akes Protection Paladin Rotation.
there is already a .toc file to seperate it:
id duplicated paladin\protection.lua and named it protection DPS. i Also inserted it in the toc file, but it wont apear ingame.Code:## Interface: 60000 ## Title: Probably - akeRotations ## Notes: ProbablyEngine Custom Rotations by Ake ## Dependencies: Probably -- Library references external\core.lua external\conditions.lua external\interface.lua external\listener.lua -- Rotations mage\frost.lua paladin\protection.lua paladin\protectionDPS.lua paladin\retribution.lua shaman\elemental.lua
this ist the rotation file:
Code:-- ProbablyEngine Rotation Packager -- ProbablyEngine Rotation Packager -- Author: AkeRotations -- Version: 2.32 26/12/2014 Reduce Holy power wastage through spells; Sacred Shield, Holy Avenger and a rework of Grand Crusader Procs. Add default Seal selection (also works with Empowered Seals). -- Hotkeys: Left Control = Light's Hammer -- Left Shift = Cleanse mouseover target -- Left Alt = Pause --Update from GUI local fetch = ProbablyEngine.interface.fetchKey local combat_rotation = { -- Rotation Utilities { "pause", "modifier.lalt" }, {{ {"/targetenemy [noexists]", "!target.exists"}, {"/targetenemy [dead]", {"target.exists", "target.dead"}}, }, (function() return fetch('akeonProtection', 'auto_target') end)}, -- Mouseovers { "Light's Hammer", { "modifier.lcontrol" }, "mouseover.ground" }, { "Cleanse", { "modifier.lshift", "!modifier.last(Cleanse)", "mouseover.exists", "mouseover.alive", "mouseover.friend", "mouseover.range <= 40", "mouseover.dispellable(Cleanse)" }, "mouseover" }, -- Self Heals { "Flash of Light", { "player.buff(Selfless Healer).count = 3", (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'flashoflight_spin')) end), (function() return fetch('akeonProtection', 'flashoflight_check') end) } }, { "Word of Glory", { "player.holypower >= 3", (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'wordofglory_spin')) end), (function() return fetch('akeonProtection', 'wordofglory_check') end) } }, { "Lay on Hands", { (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'layonhands_spin')) end), (function() return fetch('akeonProtection', 'layonhands_check') end) } }, { "#5512", { (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'healthstone_spin')) end), (function() return fetch('akeonProtection', 'healthstone_check') end) } }, -- Healthstone (5512) -- Survival { "Eternal Flame", { "player.buff(Eternal Flame).duration < 3", (function() return fetch('akeonProtection', 'eternalglory') end) }, "player" }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 7", "target.range > 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Hand of Freedom", { "!player.buff", "player.state.root", (function() return fetch('akeonProtection', 'handoffreedom') end) }, "player" }, { "Emancipate", { "!modifier.last(Emancipate)", "player.state.root", (function() return fetch('akeonProtection', 'emancipate') end) }, "player" }, { "Cleanse", { "!modifier.last(Cleanse)", "player.dispellable(Cleanse)", (function() return fetch('akeonProtection', 'cleanse') end) }, "player" }, { "Divine Protection", { (function() return fetch('akeonProtection', 'divprot') end) }, "player" }, -- Seals { "Seal of Insight", { "player.seal != 3", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'insight' end) } }, { "Seal of Truth", { "player.seal != 1", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'truth' end) } }, { "Seal of Righteousness", { "player.seal != 2", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'righteousness' end) } }, {{ --TalentRow 7 Empowered Seals (Twisting) { "Seal of Truth", { "player.seal != 1", "!player.buff(Maraad's Truth).duration > 3", "player.spell(Judgment).cooldown <= 1" } }, { "Seal of Righteousness", { "player.seal != 2", "!player.buff(Liadrin's Righteousness).duration > 3", "player.buff(Maraad's Truth)", "player.spell(Judgment).cooldown <= 1" } }, { "Seal of Insight", { "player.seal != 3", "!player.buff(Uther's Insight).duration > 3", "player.buff(Maraad's Truth)", "player.buff(Liadrin's Righteousness)", "player.spell(Judgment).cooldown <= 1" } }, { "Seal of Righteousness", { "player.seal != 2", "player.spell(Judgment).cooldown > 1", "modifier.multitarget" } }, -- AE Waiting { "Seal of Truth", { "player.seal != 1", "player.spell(Judgment).cooldown > 1", "!modifier.multitarget", "!toggle.smartae" } }, -- ST Waiting {{-- SmartAE Waiting -- Healing { "Seal of Insight", { "player.seal != 3", "player.spell(Judgment).cooldown > 1", (function() return fetch("akeonProtection", "sealselect") == 'insight' end) } }, { "Seal of Righteousness", { "player.seal != 2", "player.spell(Judgment).cooldown > 1", (function() return fetch("akeonProtection", "sealselect") == 'righteousness' end) } }, { "Seal of Truth", { "player.seal != 1", "player.spell(Judgment).cooldown > 1", (function() return fetch("akeonProtection", "sealselect") == 'truth' end) } } }, "toggle.smartae" }, { "Judgment", { "!player.buff(Liadrin's Righteousness).duration < 3" } }, { "Judgment", { "!player.buff(Maraad's Truth).duration < 3" } } }, "talent(7, 1)" }, -- Interrupts { "Rebuke", { "modifier.interrupt", "target.interruptAt(40)" } }, --Cooldowns {{ { "Seraphim" }, --Start TalentRow 7 Seraphim { "Holy Avenger", { "player.holypower < 3", "player.buff(Seraphim)", "modifier.cooldowns" } } --TalentRow 7 Seraphim }, "talent(7, 2)" }, -- End TalentRow 7 Seraphim { "Holy Avenger", { "player.holypower < 3", "!talent(7, 2)", "modifier.cooldowns" } }, -- No GCD { "Shield of the Righteous", { "player.holypower >= 5" } }, { "Shield of the Righteous", { "player.buff(Divine Purpose)" } }, { "Shield of the Righteous", { "player.buff(Holy Avenger)", "player.holypower >= 3", "!talent(7, 2)" } }, { "Shield of the Righteous", { "player.buff(Holy Avenger)", "player.holypower >= 3", "player.buff(Seraphim)" } }, { "Shield of the Righteous", { "player.buff(Holy Avenger)", "player.holypower >= 3", "player.spell(Seraphim).cooldown >= 5" } }, {{ -- Raid Healing and Protection { "Flash of Light", { "lowest.alive", "player.buff(Selfless Healer).count = 3", (function() return dynamicEval("lowest.health <= " .. fetch('akeonProtection', 'flashoflight_spin')) end), (function() return fetch('akeonProtection', 'flashoflight_check') end) }, "lowest" }, { "Lay on Hands", { "lowest.alive", (function() return dynamicEval("lowest.health <= " .. fetch('akeonProtection', 'layonhands_spin')) end), (function() return fetch('akeonProtection', 'layonhands_check') end) }, "lowest" }, { "Hand of Protection", { "lowest.alive", "!lowest.role(tank)", "!lowest.immune.melee", (function() return dynamicEval("lowest.health <= " .. fetch('akeonProtection', 'handoprot_spin')) end), (function() return fetch('akeonProtection', 'handoprot_check') end) }, "lowest" } }, (function() return fetch('akeonProtection', 'raidprotection') end) }, {{ -- AE { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Hammer of the Righteous" }, { "Light's Hammer", nil, "target.ground" }, { "Judgment", { "glyph(Double Jeopardy)", "target.exists", "target.enemy", "target.judgement" }, "target" }, { "Judgment", { "glyph(Double Jeopardy)", "focus.exists", "focus.enemy", "focus.judgement" }, "focus" }, { "Judgment" }, { "Holy Wrath", { "talent(5, 2)" } }, { "Holy Prism", nil, "player" }, { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Avenger's Shield" }, { "Consecration", { "!player.moving" } }, { "Holy Wrath" } }, "modifier.multitarget" }, {{ -- SmartAE { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Hammer of the Righteous" }, { "Light's Hammer", nil, "target.ground" }, { "Judgment", { "glyph(Double Jeopardy)", "target.exists", "target.enemy", "target.judgement" }, "target" }, { "Judgment", { "glyph(Double Jeopardy)", "focus.exists", "focus.enemy", "focus.judgement" }, "focus" }, { "Judgment" }, { "Holy Wrath", { "talent(5, 2)" } }, { "Holy Prism", nil, "player" }, { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Avenger's Shield" }, { "Consecration", { "!player.moving" } }, { "Holy Wrath" } }, { "toggle.smartae", "player.area(8).enemies >= 3" } }, -- Single Target DPS Rotation { "Crusader Strike" }, { "Judgment", { "glyph(Double Jeopardy)", "target.exists", "target.enemy", "target.judgement" }, "target" }, { "Judgment", { "glyph(Double Jeopardy)", "focus.exists", "focus.enemy", "focus.judgement" }, "focus" }, { "Judgment" }, { "Holy Wrath", { "talent(5, 2)" } }, { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Holy Prism", { "talent(5, 1)" } }, { "Execution Sentence", nil, "target" }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Avenger's Shield" }, { "Hammer of Wrath" }, { "Consecration", "!player.moving" }, { "Holy Wrath" }, } local oocRotation = { -- OUT OF COMBAT ROTATION -- Pause { "pause", "modifier.lcontrol" }, -- Seals { "Seal of Insight", { "player.seal != 3", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'insight' end) } }, { "Seal of Truth", { "player.seal != 1", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'truth' end) } }, { "Seal of Righteousness", { "player.seal != 2", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'righteousness' end) } }, -- Blessings {"/run setBlessing('akeonProtection')", nil, "player"}, -- Stance { "Righteous Fury", "!player.buff(Righteous Fury)" }, -- Start Combat { "Crusader Strike", "tank.combat", (function() return fetch('akeonProtection', 'startcombat') end) }, } local onLoad = function() -- Buttons ProbablyEngine.toggle.create('smartae', 'Interface\\Icons\\spell_holy_sealofrighteousness', 'Enable Smart AE', 'Enable automatic detection of Area or Single target rotations.') -- GUI Show displayFrame(akeon_prot_config) end ProbablyEngine.rotation.register_custom(66, "akeProtectionPaladin", combat_rotation, oocRotation, onLoad)
Last line of protectionDPS .lua file:
ProbablyEngine.rotation.register_custom(66, "akeProtectionPaladin", combat_rotation, oocRotation, onLoad)
change "akeProtectionPaladin", in a name you like (ex: "myprotectionDPS"). Keep the name between "" or will be error.
Let me know.
changed it. but it still wont appear ingame.
Code:## Interface: 60000 ## Title: Probably - akeRotations ## Notes: ProbablyEngine Custom Rotations by Ake ## Dependencies: Probably -- Library references external\core.lua external\conditions.lua external\interface.lua external\listener.lua -- Rotations mage\frost.lua paladin\protectiondeeps.lua paladin\protection.lua paladin\retribution.lua shaman\elemental.luaCode:-- ProbablyEngine Rotation Packager -- ProbablyEngine Rotation Packager -- Author: AkeRotations -- Version: 2.32 26/12/2014 Reduce Holy power wastage through spells; Sacred Shield, Holy Avenger and a rework of Grand Crusader Procs. Add default Seal selection (also works with Empowered Seals). -- Hotkeys: Left Control = Light's Hammer -- Left Shift = Cleanse mouseover target -- Left Alt = Pause --Update from GUI local fetch = ProbablyEngine.interface.fetchKey local combat_rotation = { -- Rotation Utilities { "pause", "modifier.lalt" }, {{ {"/targetenemy [noexists]", "!target.exists"}, {"/targetenemy [dead]", {"target.exists", "target.dead"}}, }, (function() return fetch('akeonProtection', 'auto_target') end)}, -- Mouseovers { "Light's Hammer", { "modifier.lcontrol" }, "mouseover.ground" }, { "Cleanse", { "modifier.lshift", "!modifier.last(Cleanse)", "mouseover.exists", "mouseover.alive", "mouseover.friend", "mouseover.range <= 40", "mouseover.dispellable(Cleanse)" }, "mouseover" }, -- Self Heals { "Flash of Light", { "player.buff(Selfless Healer).count = 3", (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'flashoflight_spin')) end), (function() return fetch('akeonProtection', 'flashoflight_check') end) } }, { "Word of Glory", { "player.holypower >= 3", (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'wordofglory_spin')) end), (function() return fetch('akeonProtection', 'wordofglory_check') end) } }, { "Lay on Hands", { (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'layonhands_spin')) end), (function() return fetch('akeonProtection', 'layonhands_check') end) } }, { "#5512", { (function() return dynamicEval("player.health <= " .. fetch('akeonProtection', 'healthstone_spin')) end), (function() return fetch('akeonProtection', 'healthstone_check') end) } }, -- Healthstone (5512) -- Survival { "Eternal Flame", { "player.buff(Eternal Flame).duration < 3", (function() return fetch('akeonProtection', 'eternalglory') end) }, "player" }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 7", "target.range > 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Hand of Freedom", { "!player.buff", "player.state.root", (function() return fetch('akeonProtection', 'handoffreedom') end) }, "player" }, { "Emancipate", { "!modifier.last(Emancipate)", "player.state.root", (function() return fetch('akeonProtection', 'emancipate') end) }, "player" }, { "Cleanse", { "!modifier.last(Cleanse)", "player.dispellable(Cleanse)", (function() return fetch('akeonProtection', 'cleanse') end) }, "player" }, { "Divine Protection", { (function() return fetch('akeonProtection', 'divprot') end) }, "player" }, -- Seals { "Seal of Insight", { "player.seal != 3", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'insight' end) } }, { "Seal of Truth", { "player.seal != 1", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'truth' end) } }, { "Seal of Righteousness", { "player.seal != 2", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'righteousness' end) } }, {{ --TalentRow 7 Empowered Seals (Twisting) { "Seal of Truth", { "player.seal != 1", "!player.buff(Maraad's Truth).duration > 3", "player.spell(Judgment).cooldown <= 1" } }, { "Seal of Righteousness", { "player.seal != 2", "!player.buff(Liadrin's Righteousness).duration > 3", "player.buff(Maraad's Truth)", "player.spell(Judgment).cooldown <= 1" } }, { "Seal of Insight", { "player.seal != 3", "!player.buff(Uther's Insight).duration > 3", "player.buff(Maraad's Truth)", "player.buff(Liadrin's Righteousness)", "player.spell(Judgment).cooldown <= 1" } }, { "Seal of Righteousness", { "player.seal != 2", "player.spell(Judgment).cooldown > 1", "modifier.multitarget" } }, -- AE Waiting { "Seal of Truth", { "player.seal != 1", "player.spell(Judgment).cooldown > 1", "!modifier.multitarget", "!toggle.smartae" } }, -- ST Waiting {{-- SmartAE Waiting -- Healing { "Seal of Insight", { "player.seal != 3", "player.spell(Judgment).cooldown > 1", (function() return fetch("akeonProtection", "sealselect") == 'insight' end) } }, { "Seal of Righteousness", { "player.seal != 2", "player.spell(Judgment).cooldown > 1", (function() return fetch("akeonProtection", "sealselect") == 'righteousness' end) } }, { "Seal of Truth", { "player.seal != 1", "player.spell(Judgment).cooldown > 1", (function() return fetch("akeonProtection", "sealselect") == 'truth' end) } } }, "toggle.smartae" }, { "Judgment", { "!player.buff(Liadrin's Righteousness).duration < 3" } }, { "Judgment", { "!player.buff(Maraad's Truth).duration < 3" } } }, "talent(7, 1)" }, -- Interrupts { "Rebuke", { "modifier.interrupt", "target.interruptAt(40)" } }, --Cooldowns {{ { "Seraphim" }, --Start TalentRow 7 Seraphim { "Holy Avenger", { "player.holypower < 3", "player.buff(Seraphim)", "modifier.cooldowns" } } --TalentRow 7 Seraphim }, "talent(7, 2)" }, -- End TalentRow 7 Seraphim { "Holy Avenger", { "player.holypower < 3", "!talent(7, 2)", "modifier.cooldowns" } }, -- No GCD { "Shield of the Righteous", { "player.holypower >= 5" } }, { "Shield of the Righteous", { "player.buff(Divine Purpose)" } }, { "Shield of the Righteous", { "player.buff(Holy Avenger)", "player.holypower >= 3", "!talent(7, 2)" } }, { "Shield of the Righteous", { "player.buff(Holy Avenger)", "player.holypower >= 3", "player.buff(Seraphim)" } }, { "Shield of the Righteous", { "player.buff(Holy Avenger)", "player.holypower >= 3", "player.spell(Seraphim).cooldown >= 5" } }, {{ -- Raid Healing and Protection { "Flash of Light", { "lowest.alive", "player.buff(Selfless Healer).count = 3", (function() return dynamicEval("lowest.health <= " .. fetch('akeonProtection', 'flashoflight_spin')) end), (function() return fetch('akeonProtection', 'flashoflight_check') end) }, "lowest" }, { "Lay on Hands", { "lowest.alive", (function() return dynamicEval("lowest.health <= " .. fetch('akeonProtection', 'layonhands_spin')) end), (function() return fetch('akeonProtection', 'layonhands_check') end) }, "lowest" }, { "Hand of Protection", { "lowest.alive", "!lowest.role(tank)", "!lowest.immune.melee", (function() return dynamicEval("lowest.health <= " .. fetch('akeonProtection', 'handoprot_spin')) end), (function() return fetch('akeonProtection', 'handoprot_check') end) }, "lowest" } }, (function() return fetch('akeonProtection', 'raidprotection') end) }, {{ -- AE { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Hammer of the Righteous" }, { "Light's Hammer", nil, "target.ground" }, { "Judgment", { "glyph(Double Jeopardy)", "target.exists", "target.enemy", "target.judgement" }, "target" }, { "Judgment", { "glyph(Double Jeopardy)", "focus.exists", "focus.enemy", "focus.judgement" }, "focus" }, { "Judgment" }, { "Holy Wrath", { "talent(5, 2)" } }, { "Holy Prism", nil, "player" }, { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Avenger's Shield" }, { "Consecration", { "!player.moving" } }, { "Holy Wrath" } }, "modifier.multitarget" }, {{ -- SmartAE { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Hammer of the Righteous" }, { "Light's Hammer", nil, "target.ground" }, { "Judgment", { "glyph(Double Jeopardy)", "target.exists", "target.enemy", "target.judgement" }, "target" }, { "Judgment", { "glyph(Double Jeopardy)", "focus.exists", "focus.enemy", "focus.judgement" }, "focus" }, { "Judgment" }, { "Holy Wrath", { "talent(5, 2)" } }, { "Holy Prism", nil, "player" }, { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Avenger's Shield" }, { "Consecration", { "!player.moving" } }, { "Holy Wrath" } }, { "toggle.smartae", "player.area(8).enemies >= 3" } }, -- Single Target DPS Rotation { "Crusader Strike" }, { "Judgment", { "glyph(Double Jeopardy)", "target.exists", "target.enemy", "target.judgement" }, "target" }, { "Judgment", { "glyph(Double Jeopardy)", "focus.exists", "focus.enemy", "focus.judgement" }, "focus" }, { "Judgment" }, { "Holy Wrath", { "talent(5, 2)" } }, { "Avenger's Shield", { "player.buff(Grand Crusader)" } }, { "Holy Prism", { "talent(5, 1)" } }, { "Execution Sentence", nil, "target" }, { "Sacred Shield", { "player.buff(Sacred Shield).duration < 3", (function() return fetch('akeonProtection', 'sacredshield') end) }, "player" }, { "Avenger's Shield" }, { "Hammer of Wrath" }, { "Consecration", "!player.moving" }, { "Holy Wrath" }, } local oocRotation = { -- OUT OF COMBAT ROTATION -- Pause { "pause", "modifier.lcontrol" }, -- Seals { "Seal of Insight", { "player.seal != 3", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'insight' end) } }, { "Seal of Truth", { "player.seal != 1", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'truth' end) } }, { "Seal of Righteousness", { "player.seal != 2", "!talent(7, 1)", (function() return fetch("akeonProtection", "sealselect") == 'righteousness' end) } }, -- Blessings {"/run setBlessing('akeonProtection')", nil, "player"}, -- Stance { "Righteous Fury", "!player.buff(Righteous Fury)" }, -- Start Combat { "Crusader Strike", "tank.combat", (function() return fetch('akeonProtection', 'startcombat') end) }, } local onLoad = function() -- Buttons ProbablyEngine.toggle.create('smartae', 'Interface\\Icons\\spell_holy_sealofrighteousness', 'Enable Smart AE', 'Enable automatic detection of Area or Single target rotations.') -- GUI Show displayFrame(akeon_prot_config) end ProbablyEngine.rotation.register_custom(66, "protectiondeeps", combat_rotation, oocRotation, onLoad)