├── .gitignore
├── LazyDruid
├── BiteTracking.lua
├── LazyDruid.lua
├── LazyDruid.toc
├── LazyDruid.xml
├── Localization.lua
└── ParseDruid.lua
├── LazyHunter
├── LazyHunter.lua
├── LazyHunter.toc
├── LazyHunter.xml
├── Localization.lua
└── ParseHunter.lua
├── LazyMage
├── LazyMage.lua
├── LazyMage.toc
├── LazyMage.xml
├── Localization.lua
└── ParseMage.lua
├── LazyPaladin
├── LazyPaladin.lua
├── LazyPaladin.toc
├── LazyPaladin.xml
├── Localization.lua
└── ParsePaladin.lua
├── LazyPriest
├── LazyPriest.lua
├── LazyPriest.toc
├── LazyPriest.xml
├── Localization.lua
└── ParsePriest.lua
├── LazyRogue
├── EviscerateTracking.lua
├── LazyRogue.lua
├── LazyRogue.toc
├── LazyRogue.xml
├── Localization.lua
└── ParseRogue.lua
├── LazyScript
├── About.lua
├── About.xml
├── Actions.lua
├── AutoAttack.lua
├── Bindings.xml
├── Deathstimator.lua
├── Deathstimator.xml
├── FormEdit.lua
├── FormEdit.xml
├── Immunity.xml
├── ImmunityTypeTracking.lua
├── Interrupt.lua
├── Interrupt.xml
├── LSActionsWarrior.md
├── LSBuffDebuf.md
├── LSCriteriaWarrior.md
├── LSOverview.md
├── LazyScript.lua
├── LazyScript.toc
├── LazyScript.xml
├── Localization.lua
├── MinimapMenu.lua
├── MinimapMenu.xml
├── Minion.lua
├── Minion.xml
├── Parse.lua
├── ParseBuffs.lua
├── ParseGeneral.lua
├── Tooltip.lua
├── Tooltip.xml
├── Util.lua
└── img
│ └── corner.tga
├── LazyShaman
├── LazyShaman.lua
├── LazyShaman.toc
├── LazyShaman.xml
├── Localization.lua
└── ParseShaman.lua
├── LazyWarlock
├── LazyWarlock.lua
├── LazyWarlock.toc
├── LazyWarlock.xml
├── Localization.lua
└── ParseWarlock.lua
├── LazyWarrior
├── LazyWarrior.lua
├── LazyWarrior.toc
├── LazyWarrior.xml
├── Localization.lua
└── ParseWarrior.lua
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | *.rar
3 |
--------------------------------------------------------------------------------
/LazyDruid/BiteTracking.lua:
--------------------------------------------------------------------------------
1 | lazyDruidLoad.metadata:updateRevisionFromKeyword("$Revision: 524 $")
2 |
3 | -- Ferocious bite tracking
4 |
5 | function lazyDruidLoad.LoadBiteTracking()
6 | if (not lazyDruid.spellSearch(lazyDruid.actions.bite)) then
7 | lazyDruid.d(DRUID_YOU_DONT_HAVE_BITE)
8 | return
9 | end
10 |
11 | if (not lazyDruid.getLocaleString("BITE_HIT") or not lazyDruid.getLocaleString("BITE_CRIT")) then
12 | lazyDruid.p(DRUID_BITE_NOT_SUPPORTED)
13 | return
14 | end
15 |
16 | lazyDruid.bite = {}
17 |
18 |
19 | function lazyDruid.bite.ResetBiteTracking()
20 | lazyDruid.perPlayerConf.biteTracker = { {0,0}, {0,0}, {0,0}, {0,0}, {0,0} }
21 | lazyDruid.p(DRUID_RESET_BITE_STATS)
22 | end
23 |
24 | function lazyDruid.bite.GetBiteTrackingInfo(cp)
25 | local observedDamage = lazyDruid.perPlayerConf.biteTracker[cp][1]
26 | local observedCt = lazyDruid.perPlayerConf.biteTracker[cp][2]
27 | return observedDamage, observedCt
28 | end
29 |
30 | function lazyDruid.bite.SetBiteTrackingInfo(cp, observedDamage, observedCt)
31 | lazyDruid.perPlayerConf.biteTracker[cp][1] = observedDamage
32 | lazyDruid.perPlayerConf.biteTracker[cp][2] = observedCt
33 | end
34 |
35 | function lazyDruid.bite.TrackBite(arg1)
36 | local biteHit = lazyDruid.getLocaleString("BITE_HIT")
37 | local biteCrit = lazyDruid.getLocaleString("BITE_CRIT")
38 |
39 | if (not biteHit or not biteCrit) then
40 | return
41 | end
42 |
43 | local thisDamage = nil
44 | if (lazyDruid.re(arg1, biteHit)) then
45 | thisDamage = lazyDruid.match2
46 | elseif (lazyDruid.perPlayerConf.trackBiteCrits and lazyDruid.re(arg1, biteCrit)) then
47 | thisDamage = lazyDruid.match2
48 | end
49 |
50 | if (not thisDamage) then
51 | return
52 | end
53 |
54 | if (not lazyDruid.biteComboPoints or lazyDruid.biteComboPoints == 0) then
55 | lazyDruid.d(DRUID_BITE_CANT_RECORD)
56 | return
57 | end
58 |
59 | local observedDamage, observedCt = lazyDruid.bite.GetBiteTrackingInfo(lazyDruid.biteComboPoints)
60 |
61 | observedDamage = observedDamage * observedCt
62 | local newCt = observedCt + 1
63 | observedDamage = observedDamage + thisDamage
64 | observedDamage = observedDamage / newCt
65 | observedCt = math.min(lazyDruid.perPlayerConf.biteSample, newCt)
66 |
67 | lazyDruid.bite.SetBiteTrackingInfo(lazyDruid.biteComboPoints, observedDamage, observedCt)
68 |
69 | local expectedDamage = lazyDruid.masks.CalculateBaseBiteDamage(lazyDruid.biteComboPoints)
70 | local thisRatio = thisDamage / expectedDamage
71 | local avgRatio = observedDamage / expectedDamage
72 | lazyDruid.d(DRUID_BITE_OUTPUT_1..lazyDruid.biteComboPoints..DRUID_BITE_OUTPUT_2..thisDamage..DRUID_BITE_OUTPUT_3..
73 | expectedDamage..") "..string.format("%.2f", thisRatio).."/"..
74 | string.format("%.2f", avgRatio)..DRUID_BITE_OUTPUT_4)
75 |
76 | lazyDruid.biteComboPoints = nil
77 | end
78 |
79 | -- Hook UseAction() so we can record how many combo points the
80 | -- player had when he used ferocious bite.
81 | function lazyDruid.bite.UseActionHook(action, checkCursor, onSelf)
82 | if (action == lazyDruid.actions.bite:GetSlot()) then
83 | lazyDruid.biteComboPoints = GetComboPoints()
84 | --lazyDruid.d("UseActionHook, I see you're using ferocious bite with "..lazyDruid.biteComboPoints.." cps")
85 | end
86 | return lazyDruid.UseActionOrig(action, checkCursor, onSelf)
87 | end
88 |
89 | function lazyDruid.bite.CastSpellHook(spellIndex, spellBookType)
90 | local spellIndexStart, rankCount, maxRank = lazyDruid.actions.bite:FindSpellRanks(false)
91 | if ((spellIndexStart + rankCount - 1) == spellIndex) then
92 | lazyDruid.biteComboPoints = GetComboPoints()
93 | lazyDruid.d(DRUID_BITE_CAST_SPELL_HOOK..lazyDruid.biteComboPoints..DRUID_BITE_CPS)
94 | end
95 | return lazyDruid.CastSpellOrig(spellIndex, spellBookType)
96 | end
97 |
98 |
99 | end -- function lazyDruidLoad.LoadBiteTracking()
--------------------------------------------------------------------------------
/LazyDruid/LazyDruid.lua:
--------------------------------------------------------------------------------
1 | lazyDruid = {}
2 | lazyDruidLoad = {}
3 |
4 | lazyDruidLoad.metadata = lazyScript.Metadata:new("LazyDruid")
5 | lazyDruidLoad.metadata:updateRevisionFromKeyword("$Revision: 524 $")
6 |
7 | function lazyDruidLoad.OnLoad()
8 | -- Check that this player is the correct class
9 | local localeClass, class = UnitClass("player")
10 | if class ~= "DRUID" then
11 | return
12 | end
13 |
14 | -- Check that we're compatible with LazyScript
15 | if not lazyScript.CheckCompatibility(lazyDruidLoad.metadata) then
16 | return
17 | end
18 |
19 | -- I like everything with the same name. It makes S&R so easy
20 | lazyDruid = lazyScript
21 | lazyDruidLocale = lsLocale
22 | -- Unfortunately this overwrites everything that we already had called lazyDruid.
23 | -- Load everything else in class specific files using these loading functions
24 | -- Localization must be loaded first!
25 | lazyDruidLoad.LoadDruidLocalization(GetLocale())
26 | lazyDruidLoad.LoadParseDruid()
27 | -- Action based functions should be loaded at PLAYER_LOGIN to be initialized correctly
28 |
29 | this:RegisterEvent("VARIABLES_LOADED")
30 | this:RegisterEvent("PLAYER_LOGIN")
31 | end
32 |
33 | function lazyDruidLoad.OnEvent()
34 | if (event == "VARIABLES_LOADED") then
35 | -- Nothing yet
36 |
37 | elseif (event == "PLAYER_LOGIN") then
38 |
39 | this:RegisterEvent("UNIT_ENERGY")
40 | this:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE")
41 | this:RegisterEvent("LEARNED_SPELL_IN_TAB")
42 |
43 | lazyDruidLoad.LoadBiteTracking()
44 |
45 | -- Hook for ferocious bite tracking
46 | if (not lazyDruid.UseActionOrig and lazyDruid.bite) then
47 | lazyDruid.UseActionOrig = UseAction
48 | UseAction = lazyDruid.bite.UseActionHook
49 | end
50 |
51 | if (not lazyDruid.CastSpellOrig and lazyDruid.bite) then
52 | lazyDruid.CastSpellOrig = CastSpell
53 | CastSpell = lazyDruid.bite.CastSpellHook
54 | end
55 |
56 | lazyDruid.chat(lazyDruidLoad.metadata:getNameVersionRevisionString()..DRUID_ADDON_LOADED..lazyScript.metadata.name.."!")
57 |
58 | elseif (event == "UNIT_ENERGY") then
59 | if (arg1 == "player") then
60 | local currentEnergy = UnitMana("player")
61 | if (currentEnergy > lazyDruid.latestEnergy) then
62 | -- a tick
63 | lazyDruid.lastTickTime = GetTime()
64 | --lazyDruid.d("ENERGY TICK: "..lazyDruid.lastTickTime)
65 | end
66 | lazyDruid.latestEnergy = currentEnergy
67 | end
68 |
69 | elseif (event == "CHAT_MSG_SPELL_SELF_DAMAGE") then
70 | if lazyDruid.bite then
71 | lazyDruid.bite.TrackBite(arg1)
72 | end
73 |
74 | elseif (event == "LEARNED_SPELL_IN_TAB") then
75 | -- search for ferocious bite
76 | lazyDruidLoad.LoadBiteTracking()
77 | if (not lazyDruid.UseActionOrig and lazyDruid.bite) then
78 | lazyDruid.UseActionOrig = UseAction
79 | UseAction = lazyDruid.bite.UseActionHook
80 | end
81 |
82 | end
83 | end
--------------------------------------------------------------------------------
/LazyDruid/LazyDruid.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11200
2 | ## Title: LazyScript - |cffff770CLazy|r|cffffffffDruid|r
3 | ## Version: 1.0.2
4 | ## X-Revision: $Revision: 747 $
5 | ## X-LazyScriptCompatibility: 3
6 | ## Notes: Programmable Druid Attacks.
7 | ## Notes-ruRU: Программируемые атаки друида.
8 | ## RequiredDeps: LazyScript
9 | ## OptionalDeps: MobInfo-2, Tracer
10 | ## LoadOnDemand: 1
11 | ## X-LazyScriptVersion: 1.0
12 |
13 | LazyDruid.lua
14 | ParseDruid.lua
15 | BiteTracking.lua
16 | Localization.lua
17 | LazyDruid.xml
--------------------------------------------------------------------------------
/LazyDruid/LazyDruid.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | lazyDruidLoad.metadata:updateRevisionFromKeyword("$Revision: 171 $")
10 | lazyDruidLoad.OnLoad()
11 |
12 |
13 | lazyDruidLoad.OnEvent()
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | this:SetOwner(this, "ANCHOR_NONE")
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/LazyHunter/LazyHunter.lua:
--------------------------------------------------------------------------------
1 | lazyHunter = {}
2 | lazyHunterLoad = {}
3 |
4 | lazyHunterLoad.metadata = lazyScript.Metadata:new("LazyHunter")
5 | lazyHunterLoad.metadata:updateRevisionFromKeyword("$Revision: 358 $")
6 |
7 | function lazyHunterLoad.OnLoad()
8 | -- Check that this player is the correct class
9 | local localeClass, class = UnitClass("player")
10 | if class ~= "HUNTER" then
11 | return
12 | end
13 |
14 | -- Check that we're compatible with LazyScript
15 | if not lazyScript.CheckCompatibility(lazyHunterLoad.metadata) then
16 | return
17 | end
18 |
19 | -- I like everything with the same name. It makes S&R so easy
20 | lazyHunter = lazyScript
21 | lazyHunterLocale = lsLocale
22 | -- Unfortunately this overwrites everything that we already had called lazyHunter.
23 | -- Load everything else in class specific files using these loading functions
24 | -- Localization must be loaded first!
25 | lazyHunterLoad.LoadHunterLocalization(GetLocale())
26 | lazyHunterLoad.LoadParseHunter()
27 |
28 | this:RegisterEvent("PLAYER_LOGIN")
29 | this:RegisterEvent("VARIABLES_LOADED")
30 | end
31 |
32 | function lazyHunterLoad.OnEvent()
33 | if (event == "VARIABLES_LOADED") then
34 | -- Nothing yet
35 |
36 | elseif (event == "PLAYER_LOGIN") then
37 | lazyHunter.chat(lazyHunterLoad.metadata:getNameVersionRevisionString()..HUNTER_ADDON_LOADED..lazyScript.metadata.name.."!")
38 |
39 | end
40 | end
--------------------------------------------------------------------------------
/LazyHunter/LazyHunter.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11200
2 | ## Title: LazyScript - |cffff770CLazy|r|cffffffffHunter|r
3 | ## Version: 1.0.2
4 | ## X-Revision: $Revision: 747 $
5 | ## X-LazyScriptCompatibility: 3
6 | ## Notes: Programmable Hunter Attacks.
7 | ## Notes-ruRU: Программируемые атаки охотника.
8 | ## RequiredDeps: LazyScript
9 | ## OptionalDeps: MobInfo-2, Tracer
10 | ## LoadOnDemand: 1
11 | ## X-LazyScriptVersion: 1.0
12 |
13 | LazyHunter.lua
14 | ParseHunter.lua
15 | Localization.lua
16 | LazyHunter.xml
--------------------------------------------------------------------------------
/LazyHunter/LazyHunter.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | lazyHunterLoad.metadata:updateRevisionFromKeyword("$Revision: 171 $")
10 | lazyHunterLoad.OnLoad()
11 |
12 |
13 | lazyHunterLoad.OnEvent()
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | this:SetOwner(this, "ANCHOR_NONE")
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/LazyMage/LazyMage.lua:
--------------------------------------------------------------------------------
1 | lazyMage = {}
2 | lazyMageLoad = {}
3 |
4 | lazyMageLoad.metadata = lazyScript.Metadata:new("LazyMage")
5 | lazyMageLoad.metadata:updateRevisionFromKeyword("$Revision: 571 $")
6 |
7 | function lazyMageLoad.OnLoad()
8 | -- Check that this player is the correct class
9 | local localeClass, class = UnitClass("player")
10 | if class ~= "MAGE" then
11 | return
12 | end
13 |
14 | -- Check that we're compatible with LazyScript
15 | if not lazyScript.CheckCompatibility(lazyMageLoad.metadata) then
16 | return
17 | end
18 |
19 | -- I like everything with the same name. It makes S&R so easy
20 | lazyMage = lazyScript
21 | lazyMageLocale = lsLocale
22 | -- Unfortunately this overwrites everything that we already had called lazyMage.
23 | -- Load everything else in class specific files using these loading functions
24 | -- Localization must be loaded first!
25 | lazyMageLoad.LoadMageLocalization(GetLocale())
26 | lazyMageLoad.LoadParseMage()
27 |
28 | this:RegisterEvent("VARIABLES_LOADED")
29 | this:RegisterEvent("PLAYER_LOGIN")
30 |
31 | this:RegisterEvent("BAG_UPDATE")
32 | end
33 |
34 | function lazyMageLoad.OnEvent()
35 | if (event == "BAG_UPDATE") then
36 | lazyMage.CheckStones()
37 | elseif (event == "VARIABLES_LOADED") then
38 | -- Nothing yet
39 |
40 | elseif (event == "PLAYER_LOGIN") then
41 | lazyMage.chat(lazyMageLoad.metadata:getNameVersionRevisionString()..MAGE_ADDON_LOADED..lazyScript.metadata.name.."!")
42 | end
43 | end
--------------------------------------------------------------------------------
/LazyMage/LazyMage.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11200
2 | ## Title: LazyScript - |cffff770CLazy|r|cffffffffMage|r
3 | ## Version: 1.0-alpha18
4 | ## X-Revision: $Revision: 747 $
5 | ## X-LazyScriptCompatibility: 3
6 | ## Notes: Programmable Mage Attacks.
7 | ## Notes-ruRU: Программируемые атаки мага.
8 | ## RequiredDeps: LazyScript
9 | ## OptionalDeps: MobInfo-2, Tracer
10 | ## LoadOnDemand: 1
11 | ## X-LazyScriptVersion: 1.0
12 |
13 | LazyMage.lua
14 | ParseMage.lua
15 | Localization.lua
16 | LazyMage.xml
--------------------------------------------------------------------------------
/LazyMage/LazyMage.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | lazyMageLoad.metadata:updateRevisionFromKeyword("$Revision: 171 $")
10 | lazyMageLoad.OnLoad()
11 |
12 |
13 | lazyMageLoad.OnEvent()
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | this:SetOwner(this, "ANCHOR_NONE")
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/LazyMage/Localization.lua:
--------------------------------------------------------------------------------
1 | lazyMageLoad.metadata:updateRevisionFromKeyword("$Revision: 689 $")
2 |
3 | function lazyMageLoad.LoadMageLocalization(locale)
4 |
5 | lazyMageLocale.enUS.ACTION_TTS.amplifyMagic = "Amplify Magic"
6 | lazyMageLocale.enUS.ACTION_TTS.arcanePower = "Arcane Power"
7 | lazyMageLocale.enUS.ACTION_TTS.arcaneRupture = "Arcane Rupture" --TWOW
8 | lazyMageLocale.enUS.ACTION_TTS.arcaneSurge = "Arcane Surge" --TWOW
9 | lazyMageLocale.enUS.ACTION_TTS.blastWave = "Blast Wave"
10 | lazyMageLocale.enUS.ACTION_TTS.blink = "Blink"
11 | lazyMageLocale.enUS.ACTION_TTS.blizzard = "Blizzard"
12 | lazyMageLocale.enUS.ACTION_TTS.brilliance = "Arcane Brilliance"
13 | lazyMageLocale.enUS.ACTION_TTS.coldSnap = "Cold Snap"
14 | lazyMageLocale.enUS.ACTION_TTS.combustion = "Combustion"
15 | lazyMageLocale.enUS.ACTION_TTS.coneCold = "Cone of Cold"
16 | lazyMageLocale.enUS.ACTION_TTS.conjureAgate = "Conjure Mana Agate"
17 | lazyMageLocale.enUS.ACTION_TTS.conjureCitrine = "Conjure Mana Citrine"
18 | lazyMageLocale.enUS.ACTION_TTS.conjureFood = "Conjure Food"
19 | lazyMageLocale.enUS.ACTION_TTS.conjureJade = "Conjure Mana Jade"
20 | lazyMageLocale.enUS.ACTION_TTS.conjureRuby = "Conjure Mana Ruby"
21 | lazyMageLocale.enUS.ACTION_TTS.conjureWater = "Conjure Water"
22 | lazyMageLocale.enUS.ACTION_TTS.counter = "Counterspell"
23 | lazyMageLocale.enUS.ACTION_TTS.dampenMagic = "Dampen Magic"
24 | lazyMageLocale.enUS.ACTION_TTS.detectMagic = "Detect Magic"
25 | lazyMageLocale.enUS.ACTION_TTS.evocation = "Evocation"
26 | lazyMageLocale.enUS.ACTION_TTS.explosion = "Arcane Explosion"
27 | lazyMageLocale.enUS.ACTION_TTS.fireball = "Fireball"
28 | lazyMageLocale.enUS.ACTION_TTS.fireBlast = "Fire Blast"
29 | lazyMageLocale.enUS.ACTION_TTS.fireWard = "Fire Ward"
30 | lazyMageLocale.enUS.ACTION_TTS.flamestrike = "Flamestrike"
31 | lazyMageLocale.enUS.ACTION_TTS.frostArmor = "Frost Armor"
32 | lazyMageLocale.enUS.ACTION_TTS.frostbolt = "Frostbolt"
33 | lazyMageLocale.enUS.ACTION_TTS.frostNova = "Frost Nova"
34 | lazyMageLocale.enUS.ACTION_TTS.frostWard = "Frost Ward"
35 | lazyMageLocale.enUS.ACTION_TTS.iceArmor = "Ice Armor"
36 | lazyMageLocale.enUS.ACTION_TTS.iceBarrier = "Ice Barrier"
37 | lazyMageLocale.enUS.ACTION_TTS.iceBlock = "Ice Block"
38 | lazyMageLocale.enUS.ACTION_TTS.intellect = "Arcane Intellect"
39 | lazyMageLocale.enUS.ACTION_TTS.mageArmor = "Mage Armor"
40 | lazyMageLocale.enUS.ACTION_TTS.manaShield = "Mana Shield"
41 | lazyMageLocale.enUS.ACTION_TTS.missiles = "Arcane Missiles"
42 | lazyMageLocale.enUS.ACTION_TTS.pig = "Polymorph: Pig"
43 | lazyMageLocale.enUS.ACTION_TTS.pom = "Presence of Mind"
44 | lazyMageLocale.enUS.ACTION_TTS.pyroblast = "Pyroblast"
45 | lazyMageLocale.enUS.ACTION_TTS.removeCurse = "Remove Curse"
46 | lazyMageLocale.enUS.ACTION_TTS.scorch = "Scorch"
47 | lazyMageLocale.enUS.ACTION_TTS.sheep = "Polymorph"
48 | lazyMageLocale.enUS.ACTION_TTS.slowFall = "Slow Fall"
49 | lazyMageLocale.enUS.ACTION_TTS.teleDarnassus = "Teleport: Darnassus"
50 | lazyMageLocale.enUS.ACTION_TTS.teleIronforge = "Teleport: Ironforge"
51 | lazyMageLocale.enUS.ACTION_TTS.teleOgrimmar = "Teleport: Ogrimmar"
52 | lazyMageLocale.enUS.ACTION_TTS.teleStormwind = "Teleport: Stormwind"
53 | lazyMageLocale.enUS.ACTION_TTS.teleThunderBluff = "Teleport: Thunder Bluff"
54 | lazyMageLocale.enUS.ACTION_TTS.teleUndercity = "Teleport: Undercity"
55 | lazyMageLocale.enUS.ACTION_TTS.turtle = "Polymorph: Turtle"
56 | lazyMageLocale.enUS.ACTION_TTS.portDarnassus = "Portal: Darnassus"
57 | lazyMageLocale.enUS.ACTION_TTS.portIronforge = "Portal: Ironforge"
58 | lazyMageLocale.enUS.ACTION_TTS.portOgrimmar = "Portal: Ogrimmar"
59 | lazyMageLocale.enUS.ACTION_TTS.portStormwind = "Portal: Stormwind"
60 | lazyMageLocale.enUS.ACTION_TTS.portThunderBluff = "Portal: Thunder Bluff"
61 | lazyMageLocale.enUS.ACTION_TTS.portUndercity = "Portal: Undercity"
62 |
63 | -- LazyMage.lua
64 | MAGE_ADDON_LOADED = " loaded. Powered by "
65 |
66 | -- ParseMage.lua
67 | function lazyMage.CustomLocaleHelp() return [[
Mage Criteria:
]] end
68 |
69 | if (locale == "ruRU") then
70 |
71 | lazyMageLocale.ruRU.ACTION_TTS.amplifyMagic = "Усиление магии"
72 | lazyMageLocale.ruRU.ACTION_TTS.arcanePower = "Мощь тайной магии"
73 | lazyMageLocale.ruRU.ACTION_TTS.blastWave = "Взрывная волна"
74 | lazyMageLocale.ruRU.ACTION_TTS.blink = "Скачок"
75 | lazyMageLocale.ruRU.ACTION_TTS.blizzard = "Снежная буря"
76 | lazyMageLocale.ruRU.ACTION_TTS.brilliance = "Чародейская гениальность"
77 | lazyMageLocale.ruRU.ACTION_TTS.coldSnap = "Холодная хватка"
78 | lazyMageLocale.ruRU.ACTION_TTS.combustion = "Возгорание"
79 | lazyMageLocale.ruRU.ACTION_TTS.coneCold = "Конус холода"
80 | lazyMageLocale.ruRU.ACTION_TTS.conjureAgate = "Сотворение агата маны"
81 | lazyMageLocale.ruRU.ACTION_TTS.conjureCitrine = "Сотворение цитрина маны"
82 | lazyMageLocale.ruRU.ACTION_TTS.conjureFood = "Сотворение пищи"
83 | lazyMageLocale.ruRU.ACTION_TTS.conjureJade = "Сотворение нефрита маны"
84 | lazyMageLocale.ruRU.ACTION_TTS.conjureRuby = "Сотворение рубина маны"
85 | lazyMageLocale.ruRU.ACTION_TTS.conjureWater = "Сотворение воды"
86 | lazyMageLocale.ruRU.ACTION_TTS.counter = "Антимагия"
87 | lazyMageLocale.ruRU.ACTION_TTS.dampenMagic = "Ослабление магии"
88 | lazyMageLocale.ruRU.ACTION_TTS.detectMagic = "Распознавание магии"
89 | lazyMageLocale.ruRU.ACTION_TTS.evocation = "Прилив сил"
90 | lazyMageLocale.ruRU.ACTION_TTS.explosion = "Чародейский взрыв"
91 | lazyMageLocale.ruRU.ACTION_TTS.fireball = "Огненный шар"
92 | lazyMageLocale.ruRU.ACTION_TTS.fireBlast = "Огненный взрыв"
93 | lazyMageLocale.ruRU.ACTION_TTS.fireWard = "Защита от огня"
94 | lazyMageLocale.ruRU.ACTION_TTS.flamestrike = "Огненный столб"
95 | lazyMageLocale.ruRU.ACTION_TTS.frostArmor = "Морозный доспех"
96 | lazyMageLocale.ruRU.ACTION_TTS.frostbolt = "Ледяная стрела"
97 | lazyMageLocale.ruRU.ACTION_TTS.frostNova = "Кольцо льда"
98 | lazyMageLocale.ruRU.ACTION_TTS.frostWard = "Защита от магии льда"
99 | lazyMageLocale.ruRU.ACTION_TTS.iceArmor = "Ледяной доспех"
100 | lazyMageLocale.ruRU.ACTION_TTS.iceBarrier = "Ледяная преграда"
101 | lazyMageLocale.ruRU.ACTION_TTS.iceBlock = "Ледяная глыба"
102 | lazyMageLocale.ruRU.ACTION_TTS.intellect = "Чародейский интеллект"
103 | lazyMageLocale.ruRU.ACTION_TTS.mageArmor = "Магический доспех"
104 | lazyMageLocale.ruRU.ACTION_TTS.manaShield = "Щит маны"
105 | lazyMageLocale.ruRU.ACTION_TTS.missiles = "Чародейские стрелы"
106 | lazyMageLocale.ruRU.ACTION_TTS.pig = "Превращение: свинья"
107 | lazyMageLocale.ruRU.ACTION_TTS.pom = "Величие разума"
108 | lazyMageLocale.ruRU.ACTION_TTS.pyroblast = "Огненная глыба"
109 | lazyMageLocale.ruRU.ACTION_TTS.removeCurse = "Снятие проклятия"
110 | lazyMageLocale.ruRU.ACTION_TTS.scorch = "Ожог"
111 | lazyMageLocale.ruRU.ACTION_TTS.sheep = "Превращение"
112 | lazyMageLocale.ruRU.ACTION_TTS.slowFall = "Замедленное падение"
113 | lazyMageLocale.ruRU.ACTION_TTS.teleDarnassus = "Телепортация: Дарнас"
114 | lazyMageLocale.ruRU.ACTION_TTS.teleIronforge = "Телепортация: Стальгорн"
115 | lazyMageLocale.ruRU.ACTION_TTS.teleOgrimmar = "Телепортация: Оргриммар"
116 | lazyMageLocale.ruRU.ACTION_TTS.teleStormwind = "Телепортация: Штормград"
117 | lazyMageLocale.ruRU.ACTION_TTS.teleThunderBluff = "Телепортация: Громовой Утес"
118 | lazyMageLocale.ruRU.ACTION_TTS.teleUndercity = "Телепортация: Подгород"
119 | lazyMageLocale.ruRU.ACTION_TTS.turtle = "Превращение: черепаха"
120 | lazyMageLocale.ruRU.ACTION_TTS.portDarnassus = "Портал: Дарнас"
121 | lazyMageLocale.ruRU.ACTION_TTS.portIronforge = "Портал в Стальгорн"
122 | lazyMageLocale.ruRU.ACTION_TTS.portOgrimmar = "Портал в Оргриммар"
123 | lazyMageLocale.ruRU.ACTION_TTS.portStormwind = "Портал в Штормград"
124 | lazyMageLocale.ruRU.ACTION_TTS.portThunderBluff = "Портал в Громовой Утес"
125 | lazyMageLocale.ruRU.ACTION_TTS.portUndercity = "Портал в Подгород"
126 |
127 | -- LazyMage.lua
128 | MAGE_ADDON_LOADED = " загружен. Работает от "
129 |
130 | -- ParseMage.lua
131 | function lazyMage.CustomLocaleHelp() return [[Критерии Мага:
]] end
132 |
133 | elseif (locale == "deDE") then
134 |
135 | lazyMageLocale.deDE.ACTION_TTS.conjureAgate = "Mana-Achat herbeizaubern"
136 | lazyMageLocale.deDE.ACTION_TTS.conjureCitrine = "Mana-Citrin herbeizaubern"
137 | lazyMageLocale.deDE.ACTION_TTS.conjureJade = "Mana-Jadestein herbeizaubern"
138 | lazyMageLocale.deDE.ACTION_TTS.conjureRuby = "Mana-Rubin herbeizaubern"
139 | lazyMageLocale.deDE.ACTION_TTS.explosion = "Arkane Explosion"
140 | lazyMageLocale.deDE.ACTION_TTS.frostArmor = "Frostr\195\188stung"
141 | lazyMageLocale.deDE.ACTION_TTS.iceArmor = "Eisr\195\188stung"
142 |
143 | elseif (locale == "frFR") then
144 |
145 | lazyMageLocale.frFR.ACTION_TTS.conjureAgate = "Invocation d'une agate de mana"
146 | lazyMageLocale.frFR.ACTION_TTS.conjureCitrine = "Invocation d'une citrine de mana"
147 | lazyMageLocale.frFR.ACTION_TTS.conjureJade = "Invocation d'une jade de mana"
148 | lazyMageLocale.frFR.ACTION_TTS.conjureRuby = "Invocation d'un rubis de mana"
149 | lazyMageLocale.frFR.ACTION_TTS.explosion = "Explosion des arcanes"
150 | lazyMageLocale.frFR.ACTION_TTS.frostArmor = "Armure de givre"
151 | lazyMageLocale.frFR.ACTION_TTS.iceArmor = "Armure de glace"
152 |
153 | end
154 | end
--------------------------------------------------------------------------------
/LazyPaladin/LazyPaladin.lua:
--------------------------------------------------------------------------------
1 | lazyPaladin = {}
2 | lazyPaladinLoad = {}
3 |
4 | lazyPaladinLoad.metadata = lazyScript.Metadata:new("LazyPaladin")
5 | lazyPaladinLoad.metadata:updateRevisionFromKeyword("$Revision: 358 $")
6 |
7 | function lazyPaladinLoad.OnLoad()
8 | -- Check that this player is the correct class
9 | local localeClass, class = UnitClass("player")
10 | if class ~= "PALADIN" then
11 | return
12 | end
13 |
14 | -- Check that we're compatible with LazyScript
15 | if not lazyScript.CheckCompatibility(lazyPaladinLoad.metadata) then
16 | return
17 | end
18 |
19 | -- I like everything with the same name. It makes S&R so easy
20 | lazyPaladin = lazyScript
21 | lazyPaladinLocale = lsLocale
22 | -- Unfortunately this overwrites everything that we already had called lazyPaladin.
23 | -- Load everything else in class specific files using these loading functions
24 | -- Localization must be loaded first!
25 | lazyPaladinLoad.LoadPaladinLocalization(GetLocale())
26 | lazyPaladinLoad.LoadParsePaladin()
27 |
28 | this:RegisterEvent("VARIABLES_LOADED")
29 | this:RegisterEvent("PLAYER_LOGIN")
30 | end
31 |
32 | function lazyPaladinLoad.OnEvent()
33 | if (event == "VARIABLES_LOADED") then
34 | -- Nothing yet
35 |
36 | elseif (event == "PLAYER_LOGIN") then
37 | lazyPaladin.chat(lazyPaladinLoad.metadata:getNameVersionRevisionString()..PALADIN_ADDON_LOADED..lazyScript.metadata.name.."!")
38 | end
39 | end
--------------------------------------------------------------------------------
/LazyPaladin/LazyPaladin.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11200
2 | ## Title: LazyScript - |cffff770CLazy|r|cffffffffPaladin|r
3 | ## Version: 1.0-alpha18
4 | ## X-Revision: $Revision: 747 $
5 | ## X-LazyScriptCompatibility: 3
6 | ## Notes: Programmable Paladin Attacks.
7 | ## Notes-ruRU: Программируемые атаки паладина.
8 | ## RequiredDeps: LazyScript
9 | ## OptionalDeps: MobInfo-2, Tracer
10 | ## LoadOnDemand: 1
11 | ## X-LazyScriptVersion: 1.0
12 |
13 | LazyPaladin.lua
14 | ParsePaladin.lua
15 | Localization.lua
16 | LazyPaladin.xml
--------------------------------------------------------------------------------
/LazyPaladin/LazyPaladin.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | lazyPaladinLoad.metadata:updateRevisionFromKeyword("$Revision: 171 $")
10 | lazyPaladinLoad.OnLoad()
11 |
12 |
13 | lazyPaladinLoad.OnEvent()
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | this:SetOwner(this, "ANCHOR_NONE")
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/LazyPaladin/Localization.lua:
--------------------------------------------------------------------------------
1 | lazyPaladinLoad.metadata:updateRevisionFromKeyword("$Revision: 715 $")
2 |
3 | function lazyPaladinLoad.LoadPaladinLocalization(locale)
4 |
5 | lazyPaladinLocale.enUS.ACTION_TTS.concAura = "Concentration Aura"
6 | lazyPaladinLocale.enUS.ACTION_TTS.devAura = "Devotion Aura"
7 | lazyPaladinLocale.enUS.ACTION_TTS.fireAura = "Fire Resistance Aura"
8 | lazyPaladinLocale.enUS.ACTION_TTS.frostAura = "Frost Resistance Aura"
9 | lazyPaladinLocale.enUS.ACTION_TTS.retAura = "Retribution Aura"
10 | lazyPaladinLocale.enUS.ACTION_TTS.sanctAura = "Sanctity Aura"
11 | lazyPaladinLocale.enUS.ACTION_TTS.shadowAura = "Shadow Resistance Aura"
12 | lazyPaladinLocale.enUS.ACTION_TTS.blessFree = "Blessing of Freedom"
13 | lazyPaladinLocale.enUS.ACTION_TTS.blessKings = "Blessing of Kings"
14 | lazyPaladinLocale.enUS.ACTION_TTS.blessLight = "Blessing of Light"
15 | lazyPaladinLocale.enUS.ACTION_TTS.blessMight = "Blessing of Might"
16 | lazyPaladinLocale.enUS.ACTION_TTS.blessProt = "Blessing of Protection"
17 | lazyPaladinLocale.enUS.ACTION_TTS.blessSac = "Blessing of Sacrifice"
18 | lazyPaladinLocale.enUS.ACTION_TTS.blessSlv = "Blessing of Salvation"
19 | lazyPaladinLocale.enUS.ACTION_TTS.blessSnct = "Blessing of Sanctuary"
20 | lazyPaladinLocale.enUS.ACTION_TTS.blessWisdom = "Blessing of Wisdom"
21 | lazyPaladinLocale.enUS.ACTION_TTS.cleanse = "Cleanse"
22 | lazyPaladinLocale.enUS.ACTION_TTS.consecrate = "Consecration"
23 | lazyPaladinLocale.enUS.ACTION_TTS.crusaderStrike= "Crusader Strike"
24 | lazyPaladinLocale.enUS.ACTION_TTS.divFavor = "Divine Favor"
25 | lazyPaladinLocale.enUS.ACTION_TTS.divIntr = "Divine Intervention"
26 | lazyPaladinLocale.enUS.ACTION_TTS.divProt = "Divine Protection"
27 | lazyPaladinLocale.enUS.ACTION_TTS.divShield = "Divine Shield"
28 | lazyPaladinLocale.enUS.ACTION_TTS.exorcism = "Exorcism"
29 | lazyPaladinLocale.enUS.ACTION_TTS.flashLight = "Flash of Light"
30 | lazyPaladinLocale.enUS.ACTION_TTS.gBlessKings = "Greater Blessing of Kings"
31 | lazyPaladinLocale.enUS.ACTION_TTS.gBlessLight = "Greater Blessing of Light"
32 | lazyPaladinLocale.enUS.ACTION_TTS.gBlessMight = "Greater Blessing of Might"
33 | lazyPaladinLocale.enUS.ACTION_TTS.gBlessSlv = "Greater Blessing of Salvation"
34 | lazyPaladinLocale.enUS.ACTION_TTS.gBlessSnct = "Greater Blessing of Sanctuary"
35 | lazyPaladinLocale.enUS.ACTION_TTS.gBlessWisdom = "Greater Blessing of Wisdom"
36 | lazyPaladinLocale.enUS.ACTION_TTS.handFreedom = "Hand of Freedom"
37 | lazyPaladinLocale.enUS.ACTION_TTS.handProt = "Hand of Protection"
38 | lazyPaladinLocale.enUS.ACTION_TTS.hmrJustice = "Hammer of Justice"
39 | lazyPaladinLocale.enUS.ACTION_TTS.hmrWrath = "Hammer of Wrath"
40 | lazyPaladinLocale.enUS.ACTION_TTS.holyLight = "Holy Light"
41 | lazyPaladinLocale.enUS.ACTION_TTS.holyShield = "Holy Shield"
42 | lazyPaladinLocale.enUS.ACTION_TTS.holyShock = "Holy Shock"
43 | lazyPaladinLocale.enUS.ACTION_TTS.holyStrike = "Holy Strike"
44 | lazyPaladinLocale.enUS.ACTION_TTS.holyWrath = "Holy Wrath"
45 | lazyPaladinLocale.enUS.ACTION_TTS.judge = "Judgement"
46 | lazyPaladinLocale.enUS.ACTION_TTS.layOnHands = "Lay on Hands"
47 | lazyPaladinLocale.enUS.ACTION_TTS.purify = "Purify"
48 | lazyPaladinLocale.enUS.ACTION_TTS.redemption = "Redemption"
49 | lazyPaladinLocale.enUS.ACTION_TTS.repentance = "Repentance"
50 | lazyPaladinLocale.enUS.ACTION_TTS.rightFury = "Righteous Fury"
51 | lazyPaladinLocale.enUS.ACTION_TTS.sealCommand = "Seal of Command"
52 | lazyPaladinLocale.enUS.ACTION_TTS.sealCrusader = "Seal of the Crusader"
53 | lazyPaladinLocale.enUS.ACTION_TTS.sealJustice = "Seal of Justice"
54 | lazyPaladinLocale.enUS.ACTION_TTS.sealLight = "Seal of Light"
55 | lazyPaladinLocale.enUS.ACTION_TTS.sealRight = "Seal of Righteousness"
56 | lazyPaladinLocale.enUS.ACTION_TTS.sealWisdom = "Seal of Wisdom"
57 | lazyPaladinLocale.enUS.ACTION_TTS.senseUndead = "Sense Undead"
58 | lazyPaladinLocale.enUS.ACTION_TTS.smnCharger = "Summon Charger"
59 | lazyPaladinLocale.enUS.ACTION_TTS.smnWarhorse = "Summon Warhorse"
60 | lazyPaladinLocale.enUS.ACTION_TTS.turnUndead = "Turn Undead"
61 |
62 | -- LazyPaladin.lua
63 | PALADIN_ADDON_LOADED = " loaded. Powered by "
64 |
65 | -- ParsePaladin.lua
66 | function lazyPaladin.CustomLocaleHelp() return [[Paladin Criteria:
]] end
67 |
68 | if (locale == "ruRU") then
69 |
70 | lazyPaladinLocale.ruRU.ACTION_TTS.concAura = "Аура сосредоточенности"
71 | lazyPaladinLocale.ruRU.ACTION_TTS.devAura = "Аура благочестия"
72 | lazyPaladinLocale.ruRU.ACTION_TTS.fireAura = "Аура сопротивления огню"
73 | lazyPaladinLocale.ruRU.ACTION_TTS.frostAura = "Аура сопротивления магии льда"
74 | lazyPaladinLocale.ruRU.ACTION_TTS.retAura = "Аура воздаяния"
75 | lazyPaladinLocale.ruRU.ACTION_TTS.sanctAura = "Аура святости"
76 | lazyPaladinLocale.ruRU.ACTION_TTS.shadowAura = "Аура сопротивления темной магии"
77 | lazyPaladinLocale.ruRU.ACTION_TTS.blessFree = "Благословение свободы"
78 | lazyPaladinLocale.ruRU.ACTION_TTS.blessKings = "Благословение королей"
79 | lazyPaladinLocale.ruRU.ACTION_TTS.blessLight = "Благословение Света"
80 | lazyPaladinLocale.ruRU.ACTION_TTS.blessMight = "Благословение могущества"
81 | lazyPaladinLocale.ruRU.ACTION_TTS.blessProt = "Благословение защиты"
82 | lazyPaladinLocale.ruRU.ACTION_TTS.blessSac = "Благословение жертвенности"
83 | lazyPaladinLocale.ruRU.ACTION_TTS.blessSlv = "Благословение спасения"
84 | lazyPaladinLocale.ruRU.ACTION_TTS.blessSnct = "Благословение неприкосновенности"
85 | lazyPaladinLocale.ruRU.ACTION_TTS.blessWisdom = "Благословение мудрости"
86 | lazyPaladinLocale.ruRU.ACTION_TTS.cleanse = "Очищение"
87 | lazyPaladinLocale.ruRU.ACTION_TTS.consecrate = "Освящение"
88 | lazyPaladinLocale.ruRU.ACTION_TTS.divFavor = "Божественное одобрение"
89 | lazyPaladinLocale.ruRU.ACTION_TTS.divIntr = "Божественное вмешательство"
90 | lazyPaladinLocale.ruRU.ACTION_TTS.divProt = "Божественная защита"
91 | lazyPaladinLocale.ruRU.ACTION_TTS.divShield = "Божественный щит"
92 | lazyPaladinLocale.ruRU.ACTION_TTS.exorcism = "Экзорцизм"
93 | lazyPaladinLocale.ruRU.ACTION_TTS.flashLight = "Вспышка Света"
94 | lazyPaladinLocale.ruRU.ACTION_TTS.gBlessKings = "Великое благословение королей"
95 | lazyPaladinLocale.ruRU.ACTION_TTS.gBlessLight = "Великое благословение Света"
96 | lazyPaladinLocale.ruRU.ACTION_TTS.gBlessMight = "Великое благословение могущества"
97 | lazyPaladinLocale.ruRU.ACTION_TTS.gBlessSlv = "Великое благословение спасения"
98 | lazyPaladinLocale.ruRU.ACTION_TTS.gBlessSnct = "Великое благословение неприкосновенности"
99 | lazyPaladinLocale.ruRU.ACTION_TTS.gBlessWisdom = "Великое благословение мудрости"
100 | lazyPaladinLocale.ruRU.ACTION_TTS.hmrJustice = "Молот правосудия"
101 | lazyPaladinLocale.ruRU.ACTION_TTS.hmrWrath = "Молот гнева"
102 | lazyPaladinLocale.ruRU.ACTION_TTS.holyLight = "Свет небес"
103 | lazyPaladinLocale.ruRU.ACTION_TTS.holyShield = "Щит небес"
104 | lazyPaladinLocale.ruRU.ACTION_TTS.holyShock = "Шок небес"
105 | lazyPaladinLocale.ruRU.ACTION_TTS.holyWrath = "Гнев небес"
106 | lazyPaladinLocale.ruRU.ACTION_TTS.judge = "Правосудие"
107 | lazyPaladinLocale.ruRU.ACTION_TTS.layOnHands = "Возложение рук"
108 | lazyPaladinLocale.ruRU.ACTION_TTS.purify = "Омовение"
109 | lazyPaladinLocale.ruRU.ACTION_TTS.redemption = "Искупление"
110 | lazyPaladinLocale.ruRU.ACTION_TTS.repentance = "Покаяние"
111 | lazyPaladinLocale.ruRU.ACTION_TTS.rightFury = "Праведное неистовство"
112 | lazyPaladinLocale.ruRU.ACTION_TTS.sealCommand = "Печать повиновения"
113 | lazyPaladinLocale.ruRU.ACTION_TTS.sealCrusader = "Печать воина Света"
114 | lazyPaladinLocale.ruRU.ACTION_TTS.sealJustice = "Печать справедливости"
115 | lazyPaladinLocale.ruRU.ACTION_TTS.sealLight = "Печать Света"
116 | lazyPaladinLocale.ruRU.ACTION_TTS.sealRight = "Печать праведности"
117 | lazyPaladinLocale.ruRU.ACTION_TTS.sealWisdom = "Печать мудрости"
118 | lazyPaladinLocale.ruRU.ACTION_TTS.senseUndead = "Чутье на нежить"
119 | lazyPaladinLocale.ruRU.ACTION_TTS.smnCharger = "Призыв скакуна"
120 | lazyPaladinLocale.ruRU.ACTION_TTS.smnWarhorse = "Призыв боевого коня"
121 | lazyPaladinLocale.ruRU.ACTION_TTS.turnUndead = "Изгнание нежити"
122 |
123 | -- LazyPaladin.lua
124 | PALADIN_ADDON_LOADED = " загружен. Работает от "
125 |
126 | -- ParsePaladin.lua
127 | function lazyPaladin.CustomLocaleHelp() return [[H2>Критерии Паладина:]] end
128 |
129 | end
130 | end
131 |
--------------------------------------------------------------------------------
/LazyPaladin/ParsePaladin.lua:
--------------------------------------------------------------------------------
1 | lazyPaladinLoad.metadata:updateRevisionFromKeyword("$Revision: 715 $")
2 |
3 | -- The functions and data inside this block will not be defined unless the user is a Paladin.
4 |
5 | function lazyPaladinLoad.LoadParsePaladin()
6 |
7 | -- Paladin actions
8 | -----------------
9 | -- The lazyPaladin.actions. must match the short name so that we only need additional
10 | -- bitParsing functions for special cases.
11 |
12 | lazyPaladin.actions.blessFree = lazyPaladin.Action:New("blessFree", "Spell_Holy_SealOfValor")
13 | lazyPaladin.actions.blessKings = lazyPaladin.Action:New("blessKings", "Spell_Magic_MageArmor")
14 | lazyPaladin.actions.blessLight = lazyPaladin.Action:New("blessLight", "Spell_Holy_PrayerOfHealing02")
15 | lazyPaladin.actions.blessMight = lazyPaladin.Action:New("blessMight", "Spell_Holy_FistOfJustice")
16 | lazyPaladin.actions.blessProt = lazyPaladin.Action:New("blessProt", "Spell_Holy_SealOfProtection")
17 | lazyPaladin.actions.blessSac = lazyPaladin.Action:New("blessSac", "Spell_Holy_SealOfSacrifice")
18 | lazyPaladin.actions.blessSlv = lazyPaladin.Action:New("blessSlv", "Spell_Holy_SealOfSalvation")
19 | lazyPaladin.actions.blessSnct = lazyPaladin.Action:New("blessSnct", "Spell_Nature_LightningShield")
20 | lazyPaladin.actions.blessWisdom = lazyPaladin.Action:New("blessWisdom", "Spell_Holy_SealOfWisdom")
21 | lazyPaladin.actions.cleanse = lazyPaladin.Action:New("cleanse", "Spell_Holy_Renew")
22 | lazyPaladin.actions.crusaderStrike = lazyPaladin.Action:New("crusaderStrike", "Spell_Holy_CrusaderStrike")
23 | lazyPaladin.actions.consecrate = lazyPaladin.Action:New("consecrate", "Spell_Holy_InnerFire")
24 | lazyPaladin.actions.divFavor = lazyPaladin.Action:New("divFavor", "Spell_Holy_Heal")
25 | lazyPaladin.actions.divIntr = lazyPaladin.Action:New("divIntr", "Spell_Nature_TimeStop")
26 | lazyPaladin.actions.divProt = lazyPaladin.Action:New("divProt", "Spell_Holy_Restoration")
27 | lazyPaladin.actions.divShield = lazyPaladin.Action:New("divShield", "Spell_Holy_DivineIntervention") -- yes, this is the right texture
28 | lazyPaladin.actions.exorcism = lazyPaladin.Action:New("exorcism", "Spell_Holy_Excorcism_02")
29 | lazyPaladin.actions.flashLight = lazyPaladin.Action:New("flashLight", "Spell_Holy_FlashHeal")
30 | lazyPaladin.actions.gBlessKings = lazyPaladin.Action:New("gBlessKings", "Spell_Magic_GreaterBlessingofKings")
31 | lazyPaladin.actions.gBlessLight = lazyPaladin.Action:New("gBlessLight", "Spell_Holy_GreaterBlessingofLight")
32 | lazyPaladin.actions.gBlessMight = lazyPaladin.Action:New("gBlessMight", "Spell_Holy_GreaterBlessingofKings")
33 | lazyPaladin.actions.gBlessSlv = lazyPaladin.Action:New("gBlessSlv", "Spell_Holy_GreaterBlessingofSalvation")
34 | lazyPaladin.actions.gBlessSnct = lazyPaladin.Action:New("gBlessSnct", "Spell_Holy_GreaterBlessingofSanctuary")
35 | lazyPaladin.actions.gBlessWisdom = lazyPaladin.Action:New("gBlessWisdom", "Spell_Holy_GreaterBlessingofWisdom")
36 | lazyPaladin.actions.handFreedom = lazyPaladin.Action:New("handFreedom", "Spell_Holy_SealOfValor")
37 | lazyPaladin.actions.handProt = lazyPaladin.Action:New("handProt", "Spell_Holy_SealOfMight")
38 | lazyPaladin.actions.hmrJustice = lazyPaladin.Action:New("hmrJustice", "Spell_Holy_SealOfProtection")
39 | lazyPaladin.actions.hmrWrath = lazyPaladin.Action:New("hmrWrath", "Ability_ThunderClap")
40 | lazyPaladin.actions.holyLight = lazyPaladin.Action:New("holyLight", "Spell_Holy_HolyBolt")
41 | lazyPaladin.actions.holyShield = lazyPaladin.Action:New("holyShield", "Spell_Holy_BlessingOfProtection")
42 | lazyPaladin.actions.holyShock = lazyPaladin.Action:New("holyShock", "Spell_Holy_SearingLight")
43 | lazyPaladin.actions.holyStrike = lazyPaladin.Action:New("holyStrike", "INV_Sword_01")
44 | lazyPaladin.actions.holyWrath = lazyPaladin.Action:New("holyWrath", "Spell_Holy_Excorcism")
45 | lazyPaladin.actions.judge = lazyPaladin.Action:New("judge", "Spell_Holy_RighteousFury", nil, false)
46 | lazyPaladin.actions.layOnHands = lazyPaladin.Action:New("layOnHands", "Spell_Holy_LayOnHands")
47 | lazyPaladin.actions.purify = lazyPaladin.Action:New("purify", "Spell_Holy_Purify")
48 | lazyPaladin.actions.redemption = lazyPaladin.Action:New("redemption", "Spell_Holy_Resurrection")
49 | lazyPaladin.actions.repentance = lazyPaladin.Action:New("repentance", "Spell_Holy_PrayerOfHealing")
50 | lazyPaladin.actions.rightFury = lazyPaladin.Action:New("rightFury", "Spell_Holy_SealOfFury")
51 | lazyPaladin.actions.sealCommand = lazyPaladin.Action:New("sealCommand", "Ability_Warrior_InnerRage")
52 | lazyPaladin.actions.sealCrusader = lazyPaladin.Action:New("sealCrusader", "Spell_Holy_HolySmite")
53 | lazyPaladin.actions.sealJustice = lazyPaladin.Action:New("sealJustice", "Spell_Holy_SealOfWrath")
54 | lazyPaladin.actions.sealLight = lazyPaladin.Action:New("sealLight", "Spell_Holy_HealingAura")
55 | lazyPaladin.actions.sealRight = lazyPaladin.Action:New("sealRight", "Ability_ThunderBolt")
56 | lazyPaladin.actions.sealWisdom = lazyPaladin.Action:New("sealWisdom", "Spell_Holy_RighteousnessAura")
57 | lazyPaladin.actions.senseUndead = lazyPaladin.Action:New("senseUndead", "Spell_Holy_SenseUndead")
58 | lazyPaladin.actions.smnCharger = lazyPaladin.Action:New("smnCharger", "Ability_Mount_Charger")
59 | lazyPaladin.actions.smnWarhorse = lazyPaladin.Action:New("smnWarhorse", "Spell_Nature_Swiftness")
60 | lazyPaladin.actions.turnUndead = lazyPaladin.Action:New("turnUndead", "Spell_Holy_TurnUndead")
61 |
62 | lazyPaladin.shapeshift.concAura = lazyPaladin.ShapeshiftForm:New("concAura", "Spell_Holy_MindSooth")
63 | lazyPaladin.shapeshift.devAura = lazyPaladin.ShapeshiftForm:New("devAura", "Spell_Holy_DevotionAura")
64 | lazyPaladin.shapeshift.fireAura = lazyPaladin.ShapeshiftForm:New("fireAura", "Spell_Fire_SealOfFire")
65 | lazyPaladin.shapeshift.frostAura = lazyPaladin.ShapeshiftForm:New("frostAura", "Spell_Frost_WizardMark")
66 | lazyPaladin.shapeshift.retAura = lazyPaladin.ShapeshiftForm:New("retAura", "Spell_Holy_AuraOfLight")
67 | lazyPaladin.shapeshift.sanctAura = lazyPaladin.ShapeshiftForm:New("sanctAura", "Spell_Holy_MindVision")
68 | lazyPaladin.shapeshift.shadowAura = lazyPaladin.ShapeshiftForm:New("shadowAura", "Spell_Shadow_SealOfKings")
69 |
70 |
71 | -- Special Paladin actions
72 | -------------------------
73 | -- Only include actions that require additional implicit conditions or non-standard action entries
74 | -- e.g. lazyPaladin.comboActions. or lazyPaladin.items., otherwise an entry in
75 | -- the list above should be sufficient.
76 |
77 | function lazyPaladin.bitParsers.concAura(bit, actions, masks)
78 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.concAura.codePattern)) then
79 | return false
80 | end
81 | table.insert(actions, lazyPaladin.shapeshift.concAura)
82 | return true
83 | end
84 |
85 | function lazyPaladin.bitParsers.devAura(bit, actions, masks)
86 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.devAura.codePattern)) then
87 | return false
88 | end
89 | table.insert(actions, lazyPaladin.shapeshift.devAura)
90 | return true
91 | end
92 |
93 | function lazyPaladin.bitParsers.fireAura(bit, actions, masks)
94 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.fireAura.codePattern)) then
95 | return false
96 | end
97 | table.insert(actions, lazyPaladin.shapeshift.fireAura)
98 | return true
99 | end
100 |
101 | function lazyPaladin.bitParsers.frostAura(bit, actions, masks)
102 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.frostAura.codePattern)) then
103 | return false
104 | end
105 | table.insert(actions, lazyPaladin.shapeshift.frostAura)
106 | return true
107 | end
108 |
109 | function lazyPaladin.bitParsers.retAura(bit, actions, masks)
110 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.retAura.codePattern)) then
111 | return false
112 | end
113 | table.insert(actions, lazyPaladin.shapeshift.retAura)
114 | return true
115 | end
116 |
117 | function lazyPaladin.bitParsers.sanctAura(bit, actions, masks)
118 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.sanctAura.codePattern)) then
119 | return false
120 | end
121 | table.insert(actions, lazyPaladin.shapeshift.sanctAura)
122 | return true
123 | end
124 |
125 | function lazyPaladin.bitParsers.shadowAura(bit, actions, masks)
126 | if (not lazyPaladin.rebit(bit, lazyPaladin.shapeshift.shadowAura.codePattern)) then
127 | return false
128 | end
129 | table.insert(actions, lazyPaladin.shapeshift.shadowAura)
130 | return true
131 | end
132 |
133 | -- Simple Paladin specific masks
134 | -------------------------------
135 | -- These masks do not require parameters and return the check directly so we can omit the function
136 | -- call and just refer to the mask by name i.e. lazyPaladin.masks. instead of
137 | -- lazyPaladin.masks.().
138 | -- I try to keep the mask and the bitParser that refers to said mask together for ease
139 | -- of reading.
140 |
141 |
142 |
143 | -- Complex Paladin masks
144 | -----------------------
145 | -- These are masks which require additional parameters or have a structure optimized for run-time
146 | -- efficiency. The mask function must be executed e.g. lazyPaladin.masks.(parameters).
147 | -- The portion of the code that needs to be executed when the button is pressed should appear within
148 | -- "return function() ... end" inside the mask function, everything else will be evaluated at
149 | -- the time that the mask is parsed.
150 |
151 |
152 |
153 | -- Paladin utility functions
154 | ---------------------------
155 | -- These are functions that are never called by a form but are used within other mask functions.
156 | -- Technically, they are not masks, but we'll leave them alone for now.
157 |
158 |
159 | -- Custom AutoAttack
160 | --------------------
161 | -- Include any modifications to the autoAttack function. If this omitted, lazyPaladin
162 | -- will use the default auto-attack behaviour in Parse.lua. The function must be called
163 | -- CustomAutoAttackMode.
164 |
165 |
166 | -- Custom command line arguments
167 | --------------------------------
168 |
169 |
170 |
171 | -- Custom minimap entries
172 | -------------------------
173 |
174 |
175 |
176 | -- Default forms
177 | ----------------
178 | -- Specify any default forms if they exist.
179 |
180 | lazyPaladin.defaultForms = {}
181 |
182 | lazyPaladin.defaultForms.solo = {
183 | "stop-ifCasting",
184 | "devAura-ifNotHasBuff=devAura",
185 | "-- self healing",
186 | "divProt@player-ifPlayer<40%hp-ifNotHasBuff=blessProt",
187 | "hmrJustice-ifPlayer<40%hp-ifTargetOfTarget-ifTargetAlive-ifNotHasBuff=divProt",
188 | "blessProt@player-ifPlayer<40%hp-ifNotHasBuff=divProt",
189 | "holyLight@player-ifPlayer<40%hp",
190 | "blessMight@player-ifNotHasBuff=blessMight,blessProt",
191 | "stop-ifNotTargetAlive",
192 | "-- start with Crusader, judge the mob and swtich to Righteousness",
193 | "sealCrusader-ifNotHasBuff=sealCrusader-ifNotInCombat",
194 | "judge-sealRight-ifHasBuff=sealCrusader-ifNotTargetClass=mage",
195 | "judge-sealRight-ifTargetHasDebuff=judgeCrusader-ifTarget>40%hp-ifPlayer>50%mana",
196 | "-- once in combat, only cast Crusader if no other seal is up",
197 | "sealCrusader-ifNotHasBuff=sealCrusader,sealRight-ifTarget>10%hp-ifNotTargetHasDebuff=judgeCrusader",
198 | }
199 |
200 | -- Custom data
201 | ---------------
202 | -- Place any other tables of data unique to the class here.
203 |
204 |
205 | -- Custom initialization
206 | ------------------------
207 |
208 |
209 | -- Custom help text
210 | -------------------
211 | -- Place any help text that pertains to class specific masks here.
212 | -- Because of formatting restrictions we place this last so that it does not mess up the indentation.
213 | function lazyPaladin.CustomHelp()
214 | return [[
215 | Currently None!
216 | ]]
217 | end
218 |
219 | end -- function lazyPaladinLoad.LoadParsePaladin()
--------------------------------------------------------------------------------
/LazyPriest/LazyPriest.lua:
--------------------------------------------------------------------------------
1 | lazyPriest = {}
2 | lazyPriestLoad = {}
3 |
4 | lazyPriestLoad.metadata = lazyScript.Metadata:new("LazyPriest")
5 | lazyPriestLoad.metadata:updateRevisionFromKeyword("$Revision: 358 $")
6 |
7 | function lazyPriestLoad.OnLoad()
8 | -- Check that this player is the correct class
9 | local localeClass, class = UnitClass("player")
10 | if class ~= "PRIEST" then
11 | return
12 | end
13 |
14 | -- Check that we're compatible with LazyScript
15 | if not lazyScript.CheckCompatibility(lazyPriestLoad.metadata) then
16 | return
17 | end
18 |
19 | -- I like everything with the same name. It makes S&R so easy
20 | lazyPriest = lazyScript
21 | lazyPriestLocale = lsLocale
22 | -- Unfortunately this overwrites everything that we already had called lazyPriest.
23 | -- Load everything else in class specific files using these loading functions
24 | -- Localization must be loaded first!
25 | lazyPriestLoad.LoadPriestLocalization(GetLocale())
26 | lazyPriestLoad.LoadParsePriest()
27 |
28 | this:RegisterEvent("VARIABLES_LOADED")
29 | this:RegisterEvent("PLAYER_LOGIN")
30 | end
31 |
32 | function lazyPriestLoad.OnEvent()
33 | if (event == "VARIABLES_LOADED") then
34 | -- Nothing yet
35 |
36 | elseif (event == "PLAYER_LOGIN") then
37 | lazyPriest.chat(lazyPriestLoad.metadata:getNameVersionRevisionString()..PRIEST_ADDON_LOADED..lazyScript.metadata.name.."!")
38 |
39 | end
40 | end
--------------------------------------------------------------------------------
/LazyPriest/LazyPriest.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11200
2 | ## Title: LazyScript - |cffff770CLazy|r|cffffffffPriest|r
3 | ## Version: 1.0.2
4 | ## X-Revision: $Revision: 747 $
5 | ## X-LazyScriptCompatibility: 3
6 | ## Notes: Programmable Priest Attacks.
7 | ## Notes-ruRU: Программируемые атаки жреца.
8 | ## RequiredDeps: LazyScript
9 | ## OptionalDeps: MobInfo-2, Tracer
10 | ## LoadOnDemand: 1
11 | ## X-LazyScriptVersion: 1.0
12 |
13 | LazyPriest.lua
14 | ParsePriest.lua
15 | Localization.lua
16 | LazyPriest.xml
--------------------------------------------------------------------------------
/LazyPriest/LazyPriest.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | lazyPriestLoad.metadata:updateRevisionFromKeyword("$Revision: 171 $")
10 | lazyPriestLoad.OnLoad()
11 |
12 |
13 | lazyPriestLoad.OnEvent()
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | this:SetOwner(this, "ANCHOR_NONE")
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/LazyPriest/Localization.lua:
--------------------------------------------------------------------------------
1 | lazyPriestLoad.metadata:updateRevisionFromKeyword("$Revision: 308 $")
2 |
3 | function lazyPriestLoad.LoadPriestLocalization(locale)
4 |
5 | lazyPriestLocale.enUS.ACTION_TTS.abolishDisease = "Abolish Disease"
6 | lazyPriestLocale.enUS.ACTION_TTS.cureDisease = "Cure Disease"
7 | lazyPriestLocale.enUS.ACTION_TTS.desperatePrayer = "Desperate Prayer"
8 | lazyPriestLocale.enUS.ACTION_TTS.devouringPlague = "Devouring Plague"
9 | lazyPriestLocale.enUS.ACTION_TTS.dispelMagic = "Dispel Magic"
10 | lazyPriestLocale.enUS.ACTION_TTS.divineSpirit = "Divine Spirit"
11 | lazyPriestLocale.enUS.ACTION_TTS.elunesGrace = "Elune's Grace"
12 | lazyPriestLocale.enUS.ACTION_TTS.fade = "Fade"
13 | lazyPriestLocale.enUS.ACTION_TTS.fearWard = "Fear Ward"
14 | lazyPriestLocale.enUS.ACTION_TTS.feedback = "Feedback"
15 | lazyPriestLocale.enUS.ACTION_TTS.flashHeal = "Flash Heal"
16 | lazyPriestLocale.enUS.ACTION_TTS.greaterHeal = "Greater Heal"
17 | lazyPriestLocale.enUS.ACTION_TTS.heal = "Heal"
18 | lazyPriestLocale.enUS.ACTION_TTS.hexWeakness = "Hex of Weakness"
19 | lazyPriestLocale.enUS.ACTION_TTS.holyFire = "Holy Fire"
20 | lazyPriestLocale.enUS.ACTION_TTS.holyNova = "Holy Nova"
21 | lazyPriestLocale.enUS.ACTION_TTS.innerFire = "Inner Fire"
22 | lazyPriestLocale.enUS.ACTION_TTS.innerFocus = "Inner Focus"
23 | lazyPriestLocale.enUS.ACTION_TTS.lesserHeal = "Lesser Heal"
24 | lazyPriestLocale.enUS.ACTION_TTS.levitate = "Levitate"
25 | lazyPriestLocale.enUS.ACTION_TTS.lightwell = "Lightwell"
26 | lazyPriestLocale.enUS.ACTION_TTS.lightwellRenew = "Lightwell Renew"
27 | lazyPriestLocale.enUS.ACTION_TTS.manaBurn = "Mana Burn"
28 | lazyPriestLocale.enUS.ACTION_TTS.mindBlast = "Mind Blast"
29 | lazyPriestLocale.enUS.ACTION_TTS.mindControl = "Mind Control"
30 | lazyPriestLocale.enUS.ACTION_TTS.mindFlay = "Mind Flay"
31 | lazyPriestLocale.enUS.ACTION_TTS.mindSoothe = "Mind Soothe"
32 | lazyPriestLocale.enUS.ACTION_TTS.mindVision = "Mind Vision"
33 | lazyPriestLocale.enUS.ACTION_TTS.powerInfusion = "Power Infusion"
34 | lazyPriestLocale.enUS.ACTION_TTS.pwf = "Power Word: Fortitude"
35 | lazyPriestLocale.enUS.ACTION_TTS.pws = "Power Word: Shield"
36 | lazyPriestLocale.enUS.ACTION_TTS.prf = "Prayer of Fortitude"
37 | lazyPriestLocale.enUS.ACTION_TTS.prh = "Prayer of Healing"
38 | lazyPriestLocale.enUS.ACTION_TTS.prsp = "Prayer of Shadow Protection"
39 | lazyPriestLocale.enUS.ACTION_TTS.prs = "Prayer of Spirit"
40 | lazyPriestLocale.enUS.ACTION_TTS.psychicScream = "Psychic Scream"
41 | lazyPriestLocale.enUS.ACTION_TTS.renew = "Renew"
42 | lazyPriestLocale.enUS.ACTION_TTS.resurrection = "Resurrection"
43 | lazyPriestLocale.enUS.ACTION_TTS.shackleUndead = "Shackle Undead"
44 | lazyPriestLocale.enUS.ACTION_TTS.shadowProtection = "Shadow Protection"
45 | lazyPriestLocale.enUS.ACTION_TTS.swp = "Shadow Word: Pain"
46 | lazyPriestLocale.enUS.ACTION_TTS.shadowform = "Shadowform"
47 | lazyPriestLocale.enUS.ACTION_TTS.shadowguard = "Shadowguard"
48 | --lazyPriestLocale.enUS.ACTION_TTS.shoot = "Shoot"
49 | lazyPriestLocale.enUS.ACTION_TTS.silence = "Silence"
50 | lazyPriestLocale.enUS.ACTION_TTS.smite = "Smite"
51 | lazyPriestLocale.enUS.ACTION_TTS.starshards = "Starshards"
52 | lazyPriestLocale.enUS.ACTION_TTS.touchWeakness = "Touch of Weakness"
53 | lazyPriestLocale.enUS.ACTION_TTS.vampiricEmbrace = "Vampiric Embrace"
54 |
55 |
56 | -- LazyPriest.lua
57 | PRIEST_ADDON_LOADED = " loaded. Powered by "
58 |
59 | -- ParsePriest.lua
60 | function lazyPriest.CustomLocaleHelp() return [[Priest Criteria:
]] end
61 |
62 | if (locale == "ruRU") then
63 |
64 | lazyPriestLocale.ruRU.ACTION_TTS.abolishDisease = "Устранение болезни"
65 | lazyPriestLocale.ruRU.ACTION_TTS.cureDisease = "Излечение болезни"
66 | lazyPriestLocale.ruRU.ACTION_TTS.desperatePrayer = "Молитва отчаяния"
67 | lazyPriestLocale.ruRU.ACTION_TTS.devouringPlague = "Всепожирающая чума"
68 | lazyPriestLocale.ruRU.ACTION_TTS.dispelMagic = "Рассеивание заклинаний"
69 | lazyPriestLocale.ruRU.ACTION_TTS.divineSpirit = "Божественный дух"
70 | lazyPriestLocale.ruRU.ACTION_TTS.elunesGrace = "Благодать Элуны"
71 | lazyPriestLocale.ruRU.ACTION_TTS.fade = "Уход в тень"
72 | lazyPriestLocale.ruRU.ACTION_TTS.fearWard = "Защита от страха"
73 | lazyPriestLocale.ruRU.ACTION_TTS.feedback = "Ответная реакция"
74 | lazyPriestLocale.ruRU.ACTION_TTS.flashHeal = "Быстрое исцеление"
75 | lazyPriestLocale.ruRU.ACTION_TTS.greaterHeal = "Великое исцеление"
76 | lazyPriestLocale.ruRU.ACTION_TTS.heal = "Исцеление"
77 | lazyPriestLocale.ruRU.ACTION_TTS.hexWeakness = "Обессиливающий сглаз"
78 | lazyPriestLocale.ruRU.ACTION_TTS.holyFire = "Священный огонь"
79 | lazyPriestLocale.ruRU.ACTION_TTS.holyNova = "Кольцо света"
80 | lazyPriestLocale.ruRU.ACTION_TTS.innerFire = "Внутренний огонь"
81 | lazyPriestLocale.ruRU.ACTION_TTS.innerFocus = "Внутреннее сосредоточение"
82 | lazyPriestLocale.ruRU.ACTION_TTS.lesserHeal = "Малое исцеление"
83 | lazyPriestLocale.ruRU.ACTION_TTS.levitate = "Левитация"
84 | lazyPriestLocale.ruRU.ACTION_TTS.lightwell = "Колодец Света"
85 | lazyPriestLocale.ruRU.ACTION_TTS.lightwellRenew = "Обновление колодца Света"
86 | lazyPriestLocale.ruRU.ACTION_TTS.manaBurn = "Сожжение маны"
87 | lazyPriestLocale.ruRU.ACTION_TTS.mindBlast = "Взрыв разума"
88 | lazyPriestLocale.ruRU.ACTION_TTS.mindControl = "Контроль над разумом"
89 | lazyPriestLocale.ruRU.ACTION_TTS.mindFlay = "Пытка разума"
90 | lazyPriestLocale.ruRU.ACTION_TTS.mindSoothe = "Усмирение"
91 | lazyPriestLocale.ruRU.ACTION_TTS.mindVision = "Внутреннее зрение"
92 | lazyPriestLocale.ruRU.ACTION_TTS.powerInfusion = "Придание сил"
93 | lazyPriestLocale.ruRU.ACTION_TTS.pwf = "Слово силы: Стойкость"
94 | lazyPriestLocale.ruRU.ACTION_TTS.pws = "Слово силы: Щит"
95 | lazyPriestLocale.ruRU.ACTION_TTS.prf = "Молитва стойкости"
96 | lazyPriestLocale.ruRU.ACTION_TTS.prh = "Молитва исцеления"
97 | lazyPriestLocale.ruRU.ACTION_TTS.prsp = "Молитва защиты от темной магии"
98 | lazyPriestLocale.ruRU.ACTION_TTS.prs = "Молитва духа"
99 | lazyPriestLocale.ruRU.ACTION_TTS.psychicScream = "Ментальный крик"
100 | lazyPriestLocale.ruRU.ACTION_TTS.renew = "Обновление"
101 | lazyPriestLocale.ruRU.ACTION_TTS.resurrection = "Воскрешение"
102 | lazyPriestLocale.ruRU.ACTION_TTS.shackleUndead = "Сковывание нежити"
103 | lazyPriestLocale.ruRU.ACTION_TTS.shadowProtection = "Защита от темной магии"
104 | lazyPriestLocale.ruRU.ACTION_TTS.swp = "Слово Тьмы: Боль"
105 | lazyPriestLocale.ruRU.ACTION_TTS.shadowform = "Облик Тьмы"
106 | lazyPriestLocale.ruRU.ACTION_TTS.shadowguard = "Страж Тьмы"
107 | --lazyPriestLocale.ruRU.ACTION_TTS.shoot = "Выстрел"
108 | lazyPriestLocale.ruRU.ACTION_TTS.silence = "Безмолвие"
109 | lazyPriestLocale.ruRU.ACTION_TTS.smite = "Кара"
110 | lazyPriestLocale.ruRU.ACTION_TTS.starshards = "Звездные осколки"
111 | lazyPriestLocale.ruRU.ACTION_TTS.touchWeakness = "Прикосновение слабости"
112 | lazyPriestLocale.ruRU.ACTION_TTS.vampiricEmbrace = "Объятия вампира"
113 |
114 | -- LazyPriest.lua
115 | PRIEST_ADDON_LOADED = " загружен. Работает от "
116 |
117 | -- ParsePriest.lua
118 | function lazyPriest.CustomLocaleHelp() return [[Критерии Жреца:
]] end
119 |
120 | elseif (locale == "deDE") then
121 |
122 | lazyPriestLocale.deDE.ACTION_TTS.lightwell = "Brunnen des Lichts"
123 | lazyPriestLocale.deDE.ACTION_TTS.lightwellRenew = "Erneuerung des Lichtbrunnens"
124 |
125 | elseif (locale == "frFR") then
126 |
127 | lazyPriestLocale.frFR.ACTION_TTS.lightwell = "Puits de lumi\195\168re"
128 | lazyPriestLocale.frFR.ACTION_TTS.lightwellRenew = "R\195\169novation du Puits de lumi\195\168re"
129 |
130 | end
131 | end
--------------------------------------------------------------------------------
/LazyPriest/ParsePriest.lua:
--------------------------------------------------------------------------------
1 | lazyPriestLoad.metadata:updateRevisionFromKeyword("$Revision: 729 $")
2 |
3 | -- The functions and data inside this block will not be defined unless the user is a PRIEST.
4 |
5 | function lazyPriestLoad.LoadParsePriest()
6 |
7 | -- Priest actions
8 | -----------------
9 | -- The lazyPriest.actions. must match the short name so that we only need additional
10 | -- bitParsing functions for special cases.
11 |
12 | lazyPriest.actions.abolishDisease = lazyPriest.Action:New("abolishDisease", "Spell_Nature_NullifyDisease")
13 | lazyPriest.actions.cureDisease = lazyPriest.Action:New("cureDisease", "Spell_Holy_NullifyDisease")
14 | lazyPriest.actions.desperatePrayer = lazyPriest.Action:New("desperatePrayer", "Spell_Holy_Restoration")
15 | lazyPriest.actions.devouringPlague = lazyPriest.Action:New("devouringPlague", "Spell_Shadow_BlackPlague")
16 | lazyPriest.actions.dispelMagic = lazyPriest.Action:New("dispelMagic", "Spell_Holy_DispelMagic")
17 | lazyPriest.actions.divineSpirit = lazyPriest.Action:New("divineSpirit", "Spell_Holy_DivineSpirit")
18 | lazyPriest.actions.elunesGrace = lazyPriest.Action:New("elunesGrace", "Spell_Holy_ElunesGrace")
19 | lazyPriest.actions.fade = lazyPriest.Action:New("fade", "Spell_Magic_LesserInvisibilty")
20 | lazyPriest.actions.fearWard = lazyPriest.Action:New("fearWard", "Spell_Holy_Excorcism")
21 | lazyPriest.actions.feedback = lazyPriest.Action:New("feedback", "Spell_Shadow_RitualOfSacrifice")
22 | lazyPriest.actions.flashHeal = lazyPriest.Action:New("flashHeal", "Spell_Holy_FlashHeal")
23 | lazyPriest.actions.greaterHeal = lazyPriest.Action:New("greaterHeal", "Spell_Holy_GreaterHeal")
24 | lazyPriest.actions.heal = lazyPriest.Action:New("heal", { "Spell_Holy_Heal", "Spell_Holy_Heal02" })
25 | lazyPriest.actions.hexWeakness = lazyPriest.Action:New("hexWeakness", "Spell_Shadow_FingerOfDeath")
26 | lazyPriest.actions.holyFire = lazyPriest.Action:New("holyFire", "Spell_Holy_SearingLight")
27 | lazyPriest.actions.holyNova = lazyPriest.Action:New("holyNova", "Spell_Holy_HolyNova")
28 | lazyPriest.actions.innerFire = lazyPriest.Action:New("innerFire", "Spell_Holy_InnerFire")
29 | lazyPriest.actions.innerFocus = lazyPriest.Action:New("innerFocus", "Spell_Frost_WindWalkOn", nil, false)
30 | lazyPriest.actions.lesserHeal = lazyPriest.Action:New("lesserHeal", "Spell_Holy_LesserHeal")
31 | lazyPriest.actions.levitate = lazyPriest.Action:New("levitate", "Spell_Holy_LayOnHands")
32 | lazyPriest.actions.lightwell = lazyPriest.Action:New("lightwell", "Spell_Holy_SummonLightwell", nil, nil, true)
33 | lazyPriest.actions.manaBurn = lazyPriest.Action:New("manaBurn", "Spell_Shadow_ManaBurn")
34 | lazyPriest.actions.mindBlast = lazyPriest.Action:New("mindBlast", "Spell_Shadow_UnholyFrenzy")
35 | lazyPriest.actions.mindControl = lazyPriest.Action:New("mindControl", "Spell_Shadow_ShadowWordDominate")
36 | lazyPriest.actions.mindFlay = lazyPriest.Action:New("mindFlay", "Spell_Shadow_SiphonMana")
37 | lazyPriest.actions.mindSoothe = lazyPriest.Action:New("mindSoothe", "Spell_Holy_MindSooth")
38 | lazyPriest.actions.mindVision = lazyPriest.Action:New("mindVision", "Spell_Holy_MindVision")
39 | lazyPriest.actions.powerInfusion = lazyPriest.Action:New("powerInfusion", "Spell_Holy_PowerInfusion")
40 | lazyPriest.actions.pwf = lazyPriest.Action:New("pwf", "Spell_Holy_WordFortitude")
41 | lazyPriest.actions.pws = lazyPriest.Action:New("pws", "Spell_Holy_PowerWordShield")
42 | lazyPriest.actions.prf = lazyPriest.Action:New("prf", "Spell_Holy_PrayerOfFortitude")
43 | lazyPriest.actions.prh = lazyPriest.Action:New("prh", "Spell_Holy_PrayerOfHealing02")
44 | lazyPriest.actions.prsp = lazyPriest.Action:New("prsp", "Spell_Holy_PrayerofShadowProtection")
45 | lazyPriest.actions.prs = lazyPriest.Action:New("prs", "Spell_Holy_PrayerofSpirit")
46 | lazyPriest.actions.psychicScream = lazyPriest.Action:New("psychicScream", "Spell_Shadow_PsychicScream")
47 | lazyPriest.actions.renew = lazyPriest.Action:New("renew", "Spell_Holy_Renew")
48 | lazyPriest.actions.resurrection = lazyPriest.Action:New("resurrection", "Spell_Holy_Resurrection")
49 | lazyPriest.actions.shackleUndead = lazyPriest.Action:New("shackleUndead", "Spell_Nature_Slow")
50 | lazyPriest.actions.shadowProtection = lazyPriest.Action:New("shadowProtection", "Spell_Shadow_AntiShadow")
51 | lazyPriest.actions.swp = lazyPriest.Action:New("swp", "Spell_Shadow_ShadowWordPain")
52 | lazyPriest.actions.shadowform = lazyPriest.Action:New("shadowform", "Spell_Shadow_Shadowform")
53 | lazyPriest.actions.shadowguard = lazyPriest.Action:New("shadowguard", "Spell_Nature_LightningShield")
54 | lazyPriest.actions.silence = lazyPriest.Action:New("silence", "Spell_Shadow_ImpPhaseShift")
55 | lazyPriest.actions.smite = lazyPriest.Action:New("smite", "Spell_Holy_HolySmite")
56 | lazyPriest.actions.starshards = lazyPriest.Action:New("starshards", "Spell_Arcane_StarFire")
57 | lazyPriest.actions.touchWeakness = lazyPriest.Action:New("touchWeakness", "Spell_Shadow_DeadofNight")
58 | lazyPriest.actions.vampiricEmbrace = lazyPriest.Action:New("vampiricEmbrace", "Spell_Shadow_UnsummonBuilding")
59 |
60 |
61 |
62 | -- Special Priest actions
63 | -------------------------
64 | -- Only include actions that require additional implicit conditions or non-standard action entries
65 | -- e.g. lazyPriest.comboActions. or lazyPriest.items., otherwise an entry in
66 | -- the list above should be sufficient.
67 |
68 | function lazyPriest.bitParsers.shadowform(bit, actions, masks)
69 | if (not lazyPriest.rebit(bit, lazyPriest.actions.shadowform.codePattern)) then
70 | return false
71 | end
72 | local buffObj = lazyPriest.buffTable[lazyPriest.actions.shadowform.code]
73 | table.insert(actions, lazyPriest.actions.shadowform)
74 | table.insert(masks, lazyPriest.negWrapper(lazyPriest.masks.CheckBuffOrDebuff("player", buffObj, "buff", "", nil),true))
75 | return true
76 | end
77 |
78 | -- Simple Priest specific masks
79 | -------------------------------
80 | -- These masks do not require parameters and return the check directly so we can omit the function
81 | -- call and just refer to the mask by name i.e. lazyPriest.masks. instead of
82 | -- lazyPriest.masks.().
83 | -- I try to keep the mask and the bitParser that refers to said mask together for ease
84 | -- of reading.
85 |
86 | -- NONE
87 |
88 | -- Complex Priest masks
89 | -----------------------
90 | -- These are masks which require additional parameters or have a structure optimized for run-time
91 | -- efficiency. The mask function must be executed e.g. lazyPriest.masks.(parameters).
92 | -- The portion of the code that needs to be executed when the button is pressed should appear within
93 | -- "return function() ... end" inside the mask function, everything else will be evaluated at
94 | -- the time that the mask is parsed.
95 |
96 | -- NONE
97 |
98 | -- Priest utility functions
99 | ---------------------------
100 | -- These are functions that are never called by a form but are used within other mask functions.
101 | -- Technically, they are not masks, but we'll leave them alone for now.
102 |
103 | -- NONE
104 |
105 | -- Custom AutoAttack
106 | --------------------
107 | -- Finally, include any modifications to the autoAttack function. If this omitted, lazyPriest
108 | -- will use the default auto-attack behaviour in Parse.lua. The function must be called
109 | -- CustomAutoAttackMode.
110 |
111 |
112 |
113 | -- Custom command line arguments
114 | --------------------------------
115 |
116 |
117 |
118 | -- Custom minimap entries
119 | -------------------------
120 |
121 |
122 |
123 | -- Default forms
124 | ----------------
125 | -- Specify any default forms if they exist.
126 |
127 | lazyPriest.defaultForms = {}
128 |
129 | lazyPriest.defaultForms.lowbie = {
130 | "stop-ifCasting",
131 | "stop-ifChannelling",
132 | "stop-ifNotInCombat-ifHasBuff=spiritTap-if<100%mana",
133 | "sayInMinion=Global cooldown-ifGlobalCooldown-ifNotWanding",
134 | "## Out of combat",
135 | "pws@self-ifNotInCombat-ifNotHasDebuff=weakenedSoul-if>95%mana",
136 | "pwf@self-ifNotHasBuff=pwf-ifNotInCombat",
137 | "innerFire-ifNotHasBuff=innerFire-ifNotInCombat",
138 | "cureDisease@self-ifPlayerIs=Diseased-ifNotInCombat",
139 | "## In combat heal",
140 | "pws@self-ifInCombat-ifNotHasBuff=pws-ifNotHasDebuff=weakenedSoul",
141 | "pws@self-ifPlayer<40%hp-ifInCombat-ifNotHasBuff=pws-ifNotHasDebuff=weakenedSoul",
142 | "flashHeal@self-ifPlayer>245hpDeficit",
143 | "## Open combat",
144 | "holyFire-ifNotInCombat-ifLastUsed>4.0s=holyFire",
145 | "## In combat",
146 | "swp-ifLastUsed>1.5s=swp-ifNotTargetHasDebuff=swp",
147 | "smite-ifTarget>50%hp",
148 | "## Wands",
149 | "stopWand-ifPlayer<40%hp",
150 | "wand-ifTarget<50%hp",
151 | "wand-ifPlayer<40%mana"
152 | }
153 |
154 | -- Custom data
155 | ---------------
156 | -- Place any other tables of data unique to the class here.
157 |
158 |
159 | -- Custom initialization
160 | ------------------------
161 |
162 |
163 | -- Custom help text
164 | -------------------
165 | -- Place any help text that pertains to class specific masks here.
166 | -- Because of formatting restrictions we place this last so that it does not mess up the indentation.
167 | function lazyPriest.CustomHelp()
168 | return [[
169 | Currently None!
170 | ]]
171 | end
172 |
173 | end -- lazyPriestLoad.LoadParsePriest()
--------------------------------------------------------------------------------
/LazyRogue/EviscerateTracking.lua:
--------------------------------------------------------------------------------
1 | lazyRogueLoad.metadata:updateRevisionFromKeyword("$Revision: 521 $")
2 |
3 | -- Eviscerate tracking
4 |
5 | function lazyRogueLoad.LoadEviscTracking()
6 | if (not lazyRogue.getLocaleString("EVISCERATE_HIT") or not lazyRogue.getLocaleString("EVISCERATE_CRIT")) then
7 | lazyRogue.p(ROGUE_EVIRCERATE_NOT_SUPPORTED)
8 | return
9 | end
10 |
11 | lazyRogue.et = {}
12 |
13 |
14 | function lazyRogue.et.ResetEviscTracking()
15 | lazyRogue.perPlayerConf.eviscTracker = { {0,0}, {0,0}, {0,0}, {0,0}, {0,0} }
16 | lazyRogue.p(ROGUE_RESET_EVIRCERATE_STATS)
17 | end
18 |
19 | function lazyRogue.et.GetEviscTrackingInfo(cp)
20 | local observedDamage = lazyRogue.perPlayerConf.eviscTracker[cp][1]
21 | local observedCt = lazyRogue.perPlayerConf.eviscTracker[cp][2]
22 | return observedDamage, observedCt
23 | end
24 |
25 | function lazyRogue.et.SetEviscTrackingInfo(cp, observedDamage, observedCt)
26 | lazyRogue.perPlayerConf.eviscTracker[cp][1] = observedDamage
27 | lazyRogue.perPlayerConf.eviscTracker[cp][2] = observedCt
28 | end
29 |
30 | function lazyRogue.et.TrackEviscerates(arg1)
31 | local eviscerateHit = lazyRogue.getLocaleString("EVISCERATE_HIT")
32 | local eviscerateCrit = lazyRogue.getLocaleString("EVISCERATE_CRIT")
33 |
34 | if (not eviscerateHit or not eviscerateCrit) then
35 | return
36 | end
37 |
38 | local thisDamage = nil
39 | if (lazyRogue.re(arg1, eviscerateHit)) then
40 | thisDamage = lazyRogue.match2
41 | elseif (lazyRogue.perPlayerConf.trackEviscCrits and lazyRogue.re(arg1, eviscerateCrit)) then
42 | thisDamage = lazyRogue.match2
43 | end
44 | if (not thisDamage) then
45 | return
46 | end
47 |
48 | if (not lazyRogue.eviscComboPoints or lazyRogue.eviscComboPoints == 0) then
49 | lazyRogue.d(ROGUE_EVIRCERATE_CANT_RECORD)
50 | return
51 | end
52 |
53 | local observedDamage, observedCt = lazyRogue.et.GetEviscTrackingInfo(lazyRogue.eviscComboPoints)
54 |
55 | observedDamage = observedDamage * observedCt
56 | local newCt = observedCt + 1
57 | observedDamage = observedDamage + thisDamage
58 | observedDamage = observedDamage / newCt
59 | observedCt = math.min(lazyRogue.perPlayerConf.eviscerateSample, newCt)
60 |
61 | lazyRogue.et.SetEviscTrackingInfo(lazyRogue.eviscComboPoints, observedDamage, observedCt)
62 |
63 | local expectedDamage = lazyRogue.masks.CalculateBaseEviscDamage(lazyRogue.eviscComboPoints)
64 | local thisRatio = thisDamage / expectedDamage
65 | local avgRatio = observedDamage / expectedDamage
66 | lazyRogue.d(ROGUE_EVIRCERATE_OUTPUT_1..lazyRogue.eviscComboPoints..ROGUE_EVIRCERATE_OUTPUT_2..thisDamage..ROGUE_EVIRCERATE_OUTPUT_3..
67 | expectedDamage..") "..string.format("%.2f", thisRatio).."/"..
68 | string.format("%.2f", avgRatio)..ROGUE_EVIRCERATE_OUTPUT_4)
69 |
70 | lazyRogue.eviscComboPoints = nil
71 | end
72 |
73 | -- Hook UseAction() so we can record how many combo points the
74 | -- player had when he eviscerated.
75 | function lazyRogue.et.UseActionHook(action, checkCursor, onSelf)
76 | if (action == lazyRogue.actions.evisc:GetSlot()) then
77 | lazyRogue.eviscComboPoints = GetComboPoints()
78 | lazyRogue.d(ROGUE_EVIRCERATE_USE_ACTION_HOOK..lazyRogue.eviscComboPoints..ROGUE_EVIRCERATE_CPS)
79 | end
80 | return lazyRogue.UseActionOrig(action, checkCursor, onSelf)
81 | end
82 |
83 | function lazyRogue.et.CastSpellHook(spellIndex, spellBookType)
84 | local spellIndexStart, rankCount, maxRank = lazyRogue.actions.evisc:FindSpellRanks(false)
85 | if ((spellIndexStart + rankCount - 1) == spellIndex) then
86 | lazyRogue.eviscComboPoints = GetComboPoints()
87 | lazyRogue.d(ROGUE_EVIRCERATE_CAST_SPELL_HOOK..lazyRogue.eviscComboPoints..ROGUE_EVIRCERATE_CPS)
88 | end
89 | return lazyRogue.CastSpellOrig(spellIndex, spellBookType)
90 | end
91 |
92 |
93 | end -- function lazyRogueLoad.LoadEviscTracking()
--------------------------------------------------------------------------------
/LazyRogue/LazyRogue.lua:
--------------------------------------------------------------------------------
1 | lazyRogue = {}
2 | lazyRogueLoad = {}
3 |
4 | lazyRogueLoad.metadata = lazyScript.Metadata:new("LazyRogue")
5 | lazyRogueLoad.metadata:updateRevisionFromKeyword("$Revision: 521 $")
6 |
7 | function lazyRogueLoad.OnLoad()
8 | -- Check that this player is the correct class
9 | local localeClass, class = UnitClass("player")
10 | if class ~= "ROGUE" then
11 | return
12 | end
13 |
14 | -- Check that we're compatible with LazyScript
15 | if not lazyScript.CheckCompatibility(lazyRogueLoad.metadata) then
16 | return
17 | end
18 |
19 | -- I like everything with the same name. It makes S&R so easy
20 | lazyRogue = lazyScript
21 | lazyRogueLocale = lsLocale
22 | -- Unfortunately this overwrites everything that we already had called lazyRogue.
23 | -- Load everything else in class specific files using these loading functions
24 | -- Localization must be loaded first!
25 | lazyRogueLoad.LoadRogueLocalization(GetLocale())
26 | lazyRogueLoad.LoadParseRogue()
27 | lazyRogueLoad.LoadEviscTracking()
28 |
29 | this:RegisterEvent("VARIABLES_LOADED")
30 | this:RegisterEvent("PLAYER_LOGIN")
31 | end
32 |
33 | function lazyRogueLoad.OnEvent()
34 | if (event == "VARIABLES_LOADED") then
35 | if (lrConf and not lazyRogue.perPlayerConf.importedOldLazyRogueSettings) then
36 | lazyRogue.importOldSettings()
37 | lazyRogue.importOldForms()
38 | lazyRogue.perPlayerConf.importedOldLazyRogueSettings = true
39 |
40 | StaticPopupDialogs["LAZYROGUE_IMPORTED"] = {
41 | text = lazyRogue.getLocaleString("IMPORTED", true),
42 | button1 = TEXT(OKAY),
43 | timeout = 0,
44 | whileDead = 1,
45 | exclusive = 1,
46 | hideOnEscape = 1
47 | };
48 | StaticPopup_Show("LAZYROGUE_IMPORTED");
49 | end
50 |
51 | elseif (event == "PLAYER_LOGIN") then
52 |
53 | this:RegisterEvent("UNIT_ENERGY")
54 | this:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE")
55 |
56 | if (not lazyRogue.UseActionOrig) and (lazyRogue.et) then
57 | lazyRogue.UseActionOrig = UseAction
58 | UseAction = lazyRogue.et.UseActionHook
59 | end
60 |
61 | if (not lazyRogue.CastSpellOrig) and (lazyRogue.et) then
62 | lazyRogue.CastSpellOrig = CastSpell
63 | CastSpell = lazyRogue.et.CastSpellHook
64 | end
65 |
66 | lazyRogue.chat(lazyRogueLoad.metadata:getNameVersionRevisionString()..ROGUE_ADDON_LOADED..lazyScript.metadata.name.."!")
67 |
68 | elseif (event == "UNIT_ENERGY") then
69 | if (arg1 == "player") then
70 | local currentEnergy = UnitMana("player")
71 | if (currentEnergy > lazyRogue.latestEnergy) then
72 | -- a tick
73 | lazyRogue.lastTickTime = GetTime()
74 | --lazyRogue.d("ENERGY TICK: "..lazyRogue.lastTickTime)
75 | end
76 | lazyRogue.latestEnergy = currentEnergy
77 | end
78 |
79 | elseif (event == "CHAT_MSG_SPELL_SELF_DAMAGE") then
80 | if lazyRogue.et then
81 | lazyRogue.et.TrackEviscerates(arg1)
82 | end
83 |
84 | end
85 | end
--------------------------------------------------------------------------------
/LazyRogue/LazyRogue.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11200
2 | ## Title: LazyScript - |cffff770CLazy|r|cffffffffRogue|r
3 | ## Version: 4.0.2
4 | ## X-Revision: $Revision: 747 $
5 | ## X-LazyScriptCompatibility: 3
6 | ## Notes: Programmable Rogue Attacks.
7 | ## Notes-ruRU: Программируемые атаки разбойника.
8 | ## RequiredDeps: LazyScript
9 | ## OptionalDeps: MobInfo-2, Tracer
10 | ## SavedVariables: lrConf
11 | ## LoadOnDemand: 1
12 | ## X-LazyScriptVersion: 1.0
13 |
14 | LazyRogue.lua
15 | EviscerateTracking.lua
16 | ParseRogue.lua
17 | Localization.lua
18 | LazyRogue.xml
--------------------------------------------------------------------------------
/LazyRogue/LazyRogue.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | lazyRogueLoad.metadata:updateRevisionFromKeyword("$Revision: 171 $")
10 | lazyRogueLoad.OnLoad()
11 |
12 |
13 | lazyRogueLoad.OnEvent()
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | this:SetOwner(this, "ANCHOR_NONE")
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/LazyScript/About.lua:
--------------------------------------------------------------------------------
1 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 712 $")
2 |
3 | lazyScript.about = {}
4 | lazyScript.about.tabText = {}
5 |
6 | function lazyScript.about.ScrollFrame_OnSizeChanged()
7 | this:GetScrollChild():SetWidth(this:GetWidth()+40)
8 | if this:GetScrollChild().currentText then
9 | this:GetScrollChild():SetText(this:GetScrollChild().currentText)
10 | this:UpdateScrollChildRect()
11 | end
12 | end
13 |
14 | function lazyScript.about.OnLoad()
15 | PanelTemplates_SetNumTabs(LazyScriptAboutFrame, 2)
16 | LazyScriptAboutFrame.selectedTab = 1
17 | PanelTemplates_UpdateTabs(LazyScriptAboutFrame)
18 | end
19 |
20 | function lazyScript.about.OnShow()
21 | PanelTemplates_SetTab(LazyScriptAboutFrame, 1)
22 | lazyScript.about.OnTabButtonClick("LazyScriptAboutFrameTab1", LazyScriptAboutFrameTab1:GetText())
23 | end
24 |
25 | function lazyScript.about.OnTabButtonClick(tabId, tabName)
26 | --lazyScript.p("OnTabButtonClick "..tabId..": "..tabName)
27 |
28 | -- If help text has not been initialized yet, do so.
29 | if not lazyScript.about.tabText[tabName] then
30 | lazyScript.about.SetupTabText()
31 | end
32 |
33 | local text = lazyScript.about.tabText[tabName]
34 | LazyScriptAboutFrameScrollFrameText.currentText = text -- save it for forcing a relayout when resizing
35 | LazyScriptAboutFrameScrollFrameText:SetText(text)
36 | LazyScriptAboutFrameScrollFrameScrollBar:SetValue(0);
37 | LazyScriptAboutFrameScrollFrame:UpdateScrollChildRect()
38 | end
39 |
40 | function lazyScript.about.SetupTabText()
41 | lazyScript.about.SetupAboutText()
42 | lazyScript.about.SetupContributorsText()
43 | end
44 |
45 | function lazyScript.about.SetupAboutText()
46 | local text = ""
47 | text = text.."${title}
"
48 | text = text..""..ABOUT_ALL_ROPE.."
"
49 | text = text..""..ABOUT_BROUGHT.."
"
50 | text = text.."lokyst
dOxxx
Nelar
and Ithilyn
"
51 | text = text..""..ABOUT_SIGNIFICANT_CONTRIBUTIONS.."
"
52 | text = text.."FreeSpeech
"
53 | text = text..""..ABOUT_TO_USE.."
"
54 | text = text.."|cffff8040${slashCmd}|r
"
55 | text = text..""..ABOUT_SEE_WEBSITES.."
"
56 | text = text.."|cff6060ffhttp://www.ithilyn.com/|r
"
57 | text = text.."|cff6060ffhttp://ui.worldofwar.net/ui.php?id=1574|r
"
58 | text = text.."|cff6060ffhttp://code.google.com/p/lazyscript/|r
"
59 | text = text..""
60 |
61 | text = string.gsub(text, "${title}", lazyScript.metadata:getNameVersionRevisionString())
62 | text = string.gsub(text, "${slashCmd}", SLASH_LAZYSCRIPT1)
63 |
64 | lazyScript.about.tabText[About] = text
65 | end
66 |
67 | function lazyScript.about.SetupContributorsText()
68 | local contributors = {
69 | "Tannon",
70 | "Sketchy",
71 | "Karl The Pagan",
72 | "Tragath",
73 | "LunaEclipse",
74 | "Highend",
75 | }
76 | table.sort(contributors)
77 |
78 |
79 | local text = ""
80 | text = text..""..ABOUT_LAZYCONTRIBUTORS.."
"
81 | text = text..""..ABOUT_ALL_TESTING.."
"
82 | text = text..""..ABOUT_MANY_THANKS.."
${contributors}.
"
83 | text = text..""
84 |
85 | text = string.gsub(text, "${contributors}", table.concat(contributors, ", "))
86 | lazyScript.about.tabText[Contributors] = text
87 | end
--------------------------------------------------------------------------------
/LazyScript/About.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | lazyScript.about.ScrollFrame_OnSizeChanged()
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | this:SetWidth(this:GetParent():GetWidth()+40)
86 | this:SetHeight(100)
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
115 |
116 |
125 |
126 |
127 |
128 |
129 |
130 | lazyScript.about.OnShow()
131 |
132 |
133 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 380 $")
134 | this:RegisterForDrag("LeftButton")
135 | tinsert(UISpecialFrames, this:GetName());
136 | lazyScript.about.OnLoad()
137 |
138 |
139 | this:StartMoving()
140 |
141 |
142 | this:StopMovingOrSizing()
143 |
144 |
145 | this:StopMovingOrSizing()
146 |
147 |
148 |
149 |
150 |
--------------------------------------------------------------------------------
/LazyScript/AutoAttack.lua:
--------------------------------------------------------------------------------
1 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 681 $")
2 |
3 | -- Auto-attack support
4 |
5 | -- Thanks to FeralSkills for the idea on how to do this
6 | function lazyScript.IsAutoAttacking()
7 | if (not lazyScript.attackSlot) then
8 | for i = 1, 120 do
9 | if (IsAttackAction(i)) then
10 | lazyScript.attackSlot = i
11 | break
12 | end
13 | end
14 | end
15 | if (not lazyScript.attackSlot) then
16 | lazyScript.p(COULDNT_FIND_ATTACK)
17 | return false
18 | end
19 | return (IsCurrentAction(lazyScript.attackSlot) == 1)
20 | end
21 |
22 | function lazyScript.StartAutoAttack()
23 | if (not lazyScript.IsAutoAttacking()) then
24 | lazyScript.d(INITIATING_AUTO_ATTACK)
25 | AttackTarget()
26 | end
27 | end
28 |
29 | function lazyScript.StopAutoAttack()
30 | if (lazyScript.IsAutoAttacking()) then
31 | AttackTarget()
32 | end
33 | end
34 |
35 |
36 | -- For ranged attacks that change their texture based on equipped weapon
37 | function lazyScript.GetRangedWeaponTexture()
38 | local slotId, _ = GetInventorySlotInfo("RangedSlot")
39 | return GetInventoryItemTexture("player",slotId)
40 | end
41 |
42 |
43 | -- For AutoShoot
44 | function lazyScript.IsAutoShooting(sayNothing)
45 | if lazyScript.GetAutoShotSlot(sayNothing) then
46 | return (IsAutoRepeatAction(lazyScript.autoShotSlot) == 1)
47 | end
48 | return nil
49 | end
50 |
51 | function lazyScript.StartAutoShot()
52 | if (lazyScript.IsAutoShooting() == false) then
53 | UseAction(lazyScript.autoShotSlot)
54 | end
55 | end
56 |
57 | function lazyScript.StopAutoShot()
58 | if (lazyScript.IsAutoShooting() == true) then
59 | UseAction(lazyScript.autoShotSlot)
60 | end
61 | end
62 |
63 | function lazyScript.ClassCanAutoShot()
64 | local _, class = UnitClass("player")
65 | if class == "HUNTER" then
66 | return true
67 | end
68 | end
69 |
70 | function lazyScript.GetAutoShotSlot(sayNothing)
71 | local texture = lazyScript.GetRangedWeaponTexture()
72 | if texture then
73 |
74 | if lazyScript.autoShotSlot then
75 | return lazyScript.autoShotSlot
76 | end
77 |
78 | for i = 1, 120 do
79 | if (not GetActionText(i)) then -- ignore any Player macros :-)
80 | if (not IsEquippedAction(i)) then -- ignore any equip macros :-)
81 | if (GetActionTexture(i) == texture) then
82 | lazyScript.autoShotSlot = i
83 | lazyScript.d(FOUND_AUTO_SHOT..i..".")
84 | break
85 | end
86 | end
87 | end
88 | end
89 |
90 | if (not lazyScript.autoShotSlot) then
91 | if (not sayNothing) then
92 | lazyScript.p(COULDNT_FIND_AUTO_SHOT)
93 | end
94 | end
95 | else
96 | lazyScript.autoShotSlot = nil
97 | end
98 | return lazyScript.autoShotSlot
99 | end
100 |
101 |
102 | -- For AutoWand
103 | function lazyScript.IsAutoWanding(sayNothing)
104 | if lazyScript.GetShootSlot(sayNothing) then
105 | return (IsAutoRepeatAction(lazyScript.autoWandSlot) == 1)
106 | end
107 | return nil
108 | end
109 |
110 | function lazyScript.StartWanding()
111 | if (lazyScript.IsAutoWanding() == false) then
112 | UseAction(lazyScript.autoWandSlot)
113 | end
114 | end
115 |
116 | function lazyScript.StopWanding()
117 | if (lazyScript.IsAutoWanding() == true) then
118 | UseAction(lazyScript.autoWandSlot)
119 | end
120 | end
121 |
122 | function lazyScript.ClassCanAutoWand()
123 | local _, class = UnitClass("player")
124 | if class == "MAGE" or class == "PRIEST" or class == "WARLOCK" then
125 | return true
126 | end
127 | end
128 |
129 | function lazyScript.GetShootSlot(sayNothing)
130 | local texture = lazyScript.GetRangedWeaponTexture()
131 | if texture then
132 |
133 | if lazyScript.autoWandSlot then
134 | return lazyScript.autoWandSlot
135 | end
136 |
137 | for i = 1, 120 do
138 | if (not GetActionText(i)) then -- ignore any Player macros :-)
139 | if (not IsEquippedAction(i)) then -- ignore any equip macros :-)
140 | if (GetActionTexture(i) == texture) then
141 | lazyScript.autoWandSlot = i
142 | lazyScript.d(FOUND_SHOOT_WAND..i..".")
143 | break
144 | end
145 | end
146 | end
147 | end
148 |
149 | if (not lazyScript.autoWandSlot) then
150 | if (not sayNothing) then
151 | lazyScript.p(COULDNT_FIND_SHOOT_WAND)
152 | end
153 | end
154 | else
155 | lazyScript.autoWandSlot = nil
156 | end
157 | return lazyScript.autoWandSlot
158 | end
--------------------------------------------------------------------------------
/LazyScript/Bindings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | lazyScript.SlashCommand()
4 |
5 |
6 | lazyScript.UseBoundForm(1);
7 |
8 |
9 | lazyScript.UseBoundForm(2);
10 |
11 |
12 | lazyScript.UseBoundForm(3);
13 |
14 |
15 | lazyScript.UseBoundForm(4);
16 |
17 |
18 | lazyScript.UseBoundForm(5);
19 |
20 |
21 | lazyScript.UseBoundForm(6);
22 |
23 |
24 | lazyScript.UseBoundForm(7);
25 |
26 |
27 | lazyScript.UseBoundForm(8);
28 |
29 |
30 | lazyScript.UseBoundForm(9);
31 |
32 |
33 | lazyScript.UseBoundForm(10);
34 |
35 |
--------------------------------------------------------------------------------
/LazyScript/Deathstimator.lua:
--------------------------------------------------------------------------------
1 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 746 $")
2 |
3 | -- Deathstimator support
4 |
5 | lazyScript.deathstimator = {}
6 |
7 | function lazyScript.deathstimator.OnUnitHealth(unitId)
8 | if (unitId == "target") then
9 | -- Doesn't matter if it's hp or hpp
10 | local hp = UnitHealth(unitId)
11 | if not hp then
12 | return
13 | end
14 | lazyScript.targetHealthHistory:AddInfo(hp)
15 | end
16 | end
17 |
18 |
19 | -- Target Health History Object
20 | -- Used for computing the best fit line (slope) for the Target's health.
21 | --
22 | -- Compute the best slope using the method of least squares.
23 | -- http://www.acad.sunytccc.edu/instruct/sbrown/stat/leastsq.htm
24 | --
25 | -- Wow, I NEVER thought I'd ever use ANYTHING like this in real life.
26 | -- Haha, and then, it's only for a computer game.
27 | -- Ms. Chen, my high school Calculus teacher, would be so proud. Nah,
28 | -- probably still too pissed at me.
29 | --
30 |
31 | lazyScript.deathstimator.minEntries = 5
32 | lazyScript.deathstimator.HealthHistory = {}
33 |
34 | function lazyScript.deathstimator.HealthHistory:New()
35 | local obj = {}
36 | setmetatable(obj, { __index = self })
37 | lazyScript.deathstimator.HealthHistory.Reset(obj)
38 | return obj
39 | end
40 |
41 | function lazyScript.deathstimator.HealthHistory:Reset()
42 | self.info = {}
43 | self.ctr = 0
44 | self.lastCtrComputed = 0
45 | self.m = 0
46 | end
47 |
48 | function lazyScript.deathstimator.HealthHistory:AddInfo(hp)
49 | self.ctr = self.ctr + 1
50 |
51 | local now = GetTime()
52 | table.insert(self.info, { time = now, hp = hp })
53 |
54 | -- Remove entries which are older than the configured sample window,
55 | -- but retain a minimum number of entries.
56 | --local ct = 0
57 | local cutOffTime = now - lazyScript.perPlayerConf.healthHistorySize
58 | while table.getn(self.info) > lazyScript.deathstimator.minEntries do
59 | if self.info[1].time >= cutOffTime then
60 | break
61 | end
62 | table.remove(self.info, 1)
63 | --ct = ct + 1
64 | end
65 | --lazyScript.d("AddInfo: trimmed "..ct.." expired entries.")
66 | end
67 |
68 | function lazyScript.deathstimator.HealthHistory:GetN()
69 | return table.getn(self.info)
70 | end
71 |
72 | function lazyScript.deathstimator.HealthHistory:ComputeSlope()
73 | local n = self:GetN()
74 | if (n == 0) then
75 | return nil
76 | end
77 | if (self.ctr == self.lastCtrComputed) then
78 | return self.m
79 | end
80 | self.lastCtrComputed = self.ctr
81 |
82 | local xSum = 0
83 | local ySum = 0
84 | local xSquaredSum = 0
85 | local xySum = 0
86 | for idx, healthInfo in ipairs(self.info) do
87 | local time = healthInfo.time
88 | local hp = healthInfo.hp
89 | -- time is the x access, hp is the y access
90 | xSum = xSum + time
91 | ySum = ySum + hp
92 | xSquaredSum = xSquaredSum + (time * time)
93 | xySum = xySum + (time * hp)
94 | end
95 |
96 | if (xSquaredSum == 0 or xSum == 0) then
97 | return nil
98 | end
99 |
100 | self.m = ( (n * xySum) - (xSum * ySum) ) / ( (n * xSquaredSum) - (xSum * xSum) )
101 |
102 | return self.m
103 | end
104 |
105 |
106 |
107 |
108 | -- Deathstimator minion
109 |
110 | lazyScript.deathstimator.minion = {}
111 | lazyScript.deathstimator.minion.lastUpdate = 0
112 | lazyScript.deathstimator.minion.updateInterval = 0.25
113 |
114 |
115 | function lazyScript.deathstimator.minion.OnUpdate()
116 | if (not lazyScript.addOnIsActive) then
117 | return
118 | end
119 | if (not lazyScript.perPlayerConf.deathMinionIsVisible) then
120 | return
121 | end
122 |
123 | local now = GetTime()
124 | if (now >= (lazyScript.deathstimator.minion.lastUpdate + lazyScript.deathstimator.minion.updateInterval)) then
125 | lazyScript.deathstimator.minion.lastUpdate = now
126 |
127 | if (lazyScript.perPlayerConf.deathMinionHidesOutOfCombat) then
128 | if (not lazyScript.isInCombat and LazyScriptDeathstimatorFrame:IsShown()) then
129 | lazyScript.d(YOURE_NOT_IN_COMBAT)
130 | LazyScriptDeathstimatorFrame:Hide()
131 | end
132 | if (lazyScript.isInCombat and not LazyScriptDeathstimatorFrame:IsShown()) then
133 | lazyScript.d(YOURE_IN_COMBAT)
134 | LazyScriptDeathstimatorFrame:Show()
135 | end
136 | end
137 |
138 | if (not UnitName("target")) then
139 | return
140 | end
141 |
142 | if (lazyScript.isInCombat) then
143 | local text
144 | local m, timeToDeath = lazyScript.deathstimator.timeToDeath()
145 | if m == nil then
146 | text = GATHERING
147 | elseif m > 0 then
148 | -- Target is gaining health. Recalibrate.
149 | text = RECALIBRATING
150 | else
151 | text = DEATH_IN..string.format("%.1f", timeToDeath)..S
152 | end
153 | lazyScript.deathstimator.minion.SetText(text)
154 | end
155 | end
156 | end
157 |
158 | function lazyScript.deathstimator.minion.OnEnter(button)
159 | GameTooltip:SetOwner(button, "ANCHOR_RIGHT")
160 | GameTooltip:AddLine(lazyScript.metadata.name.." "..DEATHSTIMATOR)
161 | GameTooltip:AddLine(DEATHSTIMATOR_TOOLTIP)
162 | GameTooltip:Show()
163 | end
164 |
165 | function lazyScript.deathstimator.minion.OnLeave(button)
166 | GameTooltip:Hide()
167 | end
168 |
169 | function lazyScript.deathstimator.minion.SetText(text)
170 | if (not text) then
171 | text = ""
172 | end
173 | LazyScriptDeathstimatorText:SetText(text)
174 | end
175 |
176 | function lazyScript.deathstimator.timeToDeath()
177 | if (not UnitExists("target")) then
178 | return nil
179 | end
180 |
181 | local currentHp = UnitHealth("target")
182 | if (not currentHp or currentHp == 0) then
183 | return nil
184 | end
185 |
186 | local n = lazyScript.targetHealthHistory:GetN()
187 | -- we want at least two data points to make a line
188 | if (n < 2) then
189 | return nil
190 | end
191 |
192 | local m = lazyScript.targetHealthHistory:ComputeSlope()
193 | -- m is the slope, or hp(p) per second
194 | if (not m) then
195 | return nil
196 | end
197 |
198 | return m, math.abs(currentHp / m)
199 | end
--------------------------------------------------------------------------------
/LazyScript/Deathstimator.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
8 |
9 |
10 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 171 $")
11 | this:RegisterForDrag("LeftButton")
12 |
13 |
14 | lazyScript.deathstimator.minion.OnUpdate()
15 |
16 |
17 | if (IsShiftKeyDown()) then
18 | this:StartMoving()
19 | end
20 |
21 |
22 | this:StopMovingOrSizing()
23 |
24 |
25 | this:StopMovingOrSizing()
26 |
27 |
28 | lazyScript.deathstimator.minion.OnEnter(this)
29 |
30 |
31 | lazyScript.deathstimator.minion.OnLeave(this)
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/LazyScript/Immunity.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | HideUIPanel(LazyScriptImmunityExceptionCriteriaEditFrame)
120 | HideUIPanel(LazyScriptFormHelp)
121 |
122 |
123 | HideUIPanel(LazyScriptImmunityExceptionCriteriaEditFrame)
124 | HideUIPanel(LazyScriptFormHelp)
125 |
126 |
127 | this:SetFocus()
128 |
129 |
130 | LAZYSCRIPTHELP_SCROLLBAR_HACK3 = false
131 |
132 |
133 | LAZYSCRIPTHELP_SCROLLBAR_HACK3 = true
134 |
135 |
136 | ScrollingEdit_OnTextChanged(LazyScriptImmunityExceptionCriteriaScrollFrame)
137 |
138 |
139 | ScrollingEdit_OnCursorChanged(arg1, arg2-10, arg3, arg4)
140 |
141 |
142 | if (LAZYSCRIPTHELP_SCROLLBAR_HACK3) then
143 | ScrollingEdit_OnUpdate(LazyScriptImmunityExceptionCriteriaScrollFrame)
144 | end
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 | LazyScriptImmunityExceptionCriteriaEditFrameForm:SetFocus()
158 |
159 |
160 |
161 |
162 |
163 |
178 |
179 |
200 |
201 |
220 |
221 |
239 |
240 |
241 |
242 |
243 |
244 | lazyScript.immunityEditBox.OnShow()
245 |
246 |
247 | lazyScript.immunityEditBox.OnHide()
248 |
249 |
250 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 171 $")
251 | this:RegisterForDrag("LeftButton")
252 |
253 |
254 | this:StartMoving()
255 |
256 |
257 | this:StopMovingOrSizing()
258 |
259 |
260 | this:StopMovingOrSizing()
261 |
262 |
263 |
264 |
265 |
266 |
--------------------------------------------------------------------------------
/LazyScript/ImmunityTypeTracking.lua:
--------------------------------------------------------------------------------
1 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 702 $")
2 |
3 | --Immunity Code - Thanks to Astryl - http://www.curse-gaming.com/en/wow/addons-3321-1-feralskills.html
4 |
5 |
6 | function lazyScript.WatchForImmunes(text)
7 | local immune = lazyScript.getLocaleString("IMMUNE", false, true)
8 | local immuneProblemCreatures = lazyScript.getLocaleString("IMMUNITYPROBLEMCREATURES", false, true)
9 | if (not immune) then
10 | lazyScript.d(IMMUNITY_TRACKING_NOT_SUPPORTED)
11 | return
12 | end
13 | if (not immuneProblemCreatures) then
14 | lazyScript.d(IMMUNITY_TRACKING_NOT_100)
15 | end
16 | for spell, creature in string.gfind(text, immune) do
17 | --Ignore non-targets (or at least, try, based on name), banished targets,
18 | -- or known problematic targets (targets that have temporary immunities)
19 | if (UnitName('target') ~= creature or lazyScript.masks.HasBuffOrDebuff("target", "debuff", nil, "Cripple", nil)) then
20 | return
21 | end
22 | for _, problemCreature in ipairs(immuneProblemCreatures) do
23 | if string.find(creature, problemCreature) then
24 | return
25 | end
26 | end
27 | --ignore players namly pallys
28 | if UnitIsPlayer("target") then
29 | return
30 | end
31 | if lazyScript.perPlayerConf.Immunities[spell] then
32 | if lazyScript.perPlayerConf.Immunities[spell][creature] then
33 | return
34 | end
35 | end
36 |
37 | lazyScript.d(IMMUNITY_DETECTED..spell..IMMUNITY_CREATURE..creature)
38 | if not lazyScript.perPlayerConf.Immunities[spell] then
39 | lazyScript.perPlayerConf.Immunities[spell] = {};
40 | end
41 | lazyScript.perPlayerConf.Immunities[spell][creature] = true;
42 | end
43 | end
44 |
45 |
46 | -- damage type tracking F3 - Saved globally across chars.
47 | function lazyScript.WatchForType(text)
48 | local spellText = lazyScript.getLocaleString("SPELLTEXT", false, true)
49 | local spellTypeStrings = lazyScript.getLocaleString("SPELLTYPE", false, true)
50 | if (not spellText) or (not spellTypeStrings) then
51 | lazyScript.d(IMMUNITY_TYPE_TRACKING_NOT_SUPPORTED)
52 | return
53 | end
54 |
55 | local spell = nil
56 | local spellType = nil
57 | for _, pat in ipairs(spellText) do
58 | for match1, match2 in string.gfind(text, pat) do
59 | for _, localeString in pairs(spellTypeStrings) do
60 | if match1 == localeString then
61 | spell = match2
62 | spellType = match1
63 | break
64 | elseif match2 == localeString then
65 | spell = match1
66 | spellType = match2
67 | break
68 | end
69 | end
70 |
71 | if (not spell) or (not spellType) then
72 | -- Take this out eventually
73 | lazyScript.d(COULD_NOT_DETERMINE_SPELLTYPE..text)
74 | return
75 | end
76 |
77 | if lsConfGlobal.SpellType[spell] then
78 | if lsConfGlobal.SpellType[spell][string.upper(spellType)] then
79 | return
80 | end
81 | else
82 | lazyScript.d(NEW_SPELL_TYPE_DETECTED..spell..TYPE..spellType)
83 | lsConfGlobal.SpellType[spell] = {};
84 | lsConfGlobal.SpellType[spell][string.upper(spellType)] = true
85 | end
86 | end
87 | end
88 | end
89 |
90 |
91 | -- Immunity Criteria Edit Box F3/Ith
92 |
93 | lazyScript.immunityEditBox = {}
94 |
95 | lazyScript.immunityEditBox.cancelEdit = false
96 |
97 | function lazyScript.immunityEditBox.OnShow()
98 | local text = ""
99 | for action, mobs in pairs(lazyScript.perPlayerConf.Immunities) do
100 | for mob in pairs(mobs) do
101 | lazyScript.d(action)
102 | lazyScript.d(mob)
103 | text = text..action.."#ImmuneOn#"..mob.."\r\n"
104 | end
105 | end
106 | if text=="" then
107 | text = "Cheap Shot#ImmuneOn#Example Creature\r\n"
108 | end
109 | LazyScriptImmunityExceptionCriteriaEditFrameForm:SetText(text)
110 | end
111 |
112 | function lazyScript.immunityEditBox.OnHide()
113 | if (lazyScript.immunityEditBox.cancelEdit) then
114 | lazyScript.immunityEditBox.cancelEdit = false
115 | return
116 | end
117 |
118 | local text = LazyScriptImmunityExceptionCriteriaEditFrameForm:GetText()
119 |
120 | lazyScript.perPlayerConf.Immunities = {}
121 |
122 | for arg in string.gfind(text, "[^\r\n]+") do
123 | lazyScript.re(arg, "^(.+)#ImmuneOn#(.+)$")
124 | if lazyScript.match1 and lazyScript.match2 then
125 | if not lazyScript.perPlayerConf.Immunities[lazyScript.match1] then
126 | lazyScript.perPlayerConf.Immunities[lazyScript.match1] = {};
127 | end
128 | lazyScript.perPlayerConf.Immunities[lazyScript.match1][lazyScript.match2] = true
129 | end
130 | end
131 |
132 | lazyScript.p(GLOBAL_IMMUNITY_CRITERIA_UPDATED)
133 | end
--------------------------------------------------------------------------------
/LazyScript/Interrupt.lua:
--------------------------------------------------------------------------------
1 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 622 $")
2 |
3 | -- Interrupt support
4 |
5 | lazyScript.interrupt = {}
6 |
7 | lazyScript.interrupt.targetCasting = nil
8 | lazyScript.interrupt.castingDetectedAt = 0
9 | lazyScript.interrupt.lastSpellInterrupted = nil
10 |
11 |
12 | function lazyScript.interrupt.OnChatMsgSpell(arg1)
13 | local tName = UnitName("target")
14 | local spellCastOtherStart = lazyScript.getLocaleString("SPELLCASTOTHERSTART")
15 | local spellPerformOtherStart = lazyScript.getLocaleString("SPELLPERFORMOTHERSTART")
16 | if (not spellCastOtherStart) or (not spellPerformOtherStart) then
17 | lazyScript.d(INTERRUPTS_NOT_SUPPORTED)
18 | return
19 | end
20 | if (tName) then
21 | for idx, pat in ipairs({ spellCastOtherStart, spellPerformOtherStart }) do
22 | for mob, spell in string.gfind(arg1, pat) do
23 | if (mob == tName) then
24 | lazyScript.d(DETECTED_YOUR_TARGET..spell..SUGGEST_INTERRUPT)
25 | if (lazyScript.perPlayerConf.showTargetCasts) then
26 | lazyScript.p(tName..IS_CASTING..spell..".")
27 | end
28 | lazyScript.interrupt.targetCasting = spell
29 | lazyScript.interrupt.castingDetectedAt = GetTime()
30 | return
31 | end
32 | end
33 | end
34 | end
35 | end
36 |
37 |
38 | -- Interrupt Criteria Edit Box
39 |
40 | lazyScript.interruptEditBox = {}
41 |
42 | lazyScript.interruptEditBox.cancelEdit = false
43 |
44 | function lazyScript.interruptEditBox.OnShow()
45 | local text = table.concat(lsConf.interruptExceptionCriteria, "\n")
46 | LazyScriptInterruptExceptionCriteriaEditFrameForm:SetText(text)
47 | end
48 |
49 | function lazyScript.interruptEditBox.OnHide()
50 | if (lazyScript.interruptEditBox.cancelEdit) then
51 | lazyScript.interruptEditBox.cancelEdit = false
52 | return
53 | end
54 |
55 | local text = LazyScriptInterruptExceptionCriteriaEditFrameForm:GetText()
56 |
57 | local args = {}
58 | for arg in string.gfind(text, "[^\r\n]+") do
59 | table.insert(args, arg)
60 | end
61 | lsConf.interruptExceptionCriteria = args
62 |
63 | lazyScript.p(GLOBAL_INTERRUPT_CRITERIA_UPDATED)
64 | lazyScript.masks.parsingInterruptExceptionCriteria = true
65 | lazyScript.parsedInterruptExceptionCriteriaCache = lazyScript.ParseForm("interruptExceptionCriteria", lsConf.interruptExceptionCriteria)
66 | lazyScript.masks.parsingInterruptExceptionCriteria = false
67 | end
--------------------------------------------------------------------------------
/LazyScript/Interrupt.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | HideUIPanel(LazyScriptInterruptExceptionCriteriaEditFrame)
120 | HideUIPanel(LazyScriptFormHelp)
121 |
122 |
123 | HideUIPanel(LazyScriptInterruptExceptionCriteriaEditFrame)
124 | HideUIPanel(LazyScriptFormHelp)
125 |
126 |
127 | this:SetFocus()
128 |
129 |
130 | LAZYSCRIPTHELP_SCROLLBAR_HACK3 = false
131 |
132 |
133 | LAZYSCRIPTHELP_SCROLLBAR_HACK3 = true
134 |
135 |
136 | ScrollingEdit_OnTextChanged(LazyScriptInterruptExceptionCriteriaScrollFrame)
137 |
138 |
139 | ScrollingEdit_OnCursorChanged(arg1, arg2-10, arg3, arg4)
140 |
141 |
142 | if (LAZYSCRIPTHELP_SCROLLBAR_HACK3) then
143 | ScrollingEdit_OnUpdate(LazyScriptInterruptExceptionCriteriaScrollFrame)
144 | end
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 | LazyScriptInterruptExceptionCriteriaEditFrameForm:SetFocus()
158 |
159 |
160 |
161 |
162 |
163 |
178 |
179 |
200 |
201 |
220 |
221 |
239 |
240 |
241 |
242 |
243 |
244 | lazyScript.interruptEditBox.OnShow()
245 |
246 |
247 | lazyScript.interruptEditBox.OnHide()
248 |
249 |
250 | lazyScript.metadata:updateRevisionFromKeyword("$Revision: 171 $")
251 | this:RegisterForDrag("LeftButton")
252 |
253 |
254 | this:StartMoving()
255 |
256 |
257 | this:StopMovingOrSizing()
258 |
259 |
260 | this:StopMovingOrSizing()
261 |
262 |
263 |
264 |
265 |
266 |
--------------------------------------------------------------------------------
/LazyScript/LSActionsWarrior.md:
--------------------------------------------------------------------------------
1 | List of known Spells/Actions
2 | ============================
3 |
4 | A specific spell rank can be directed at a particular unit using the
5 | syntax:
6 | ```
7 | action[(rankXX)][]
8 | ```
9 | The \ can be any valid UnitId sequence as described in [http://www.wowwiki.com/UnitId](http://web.archive.org/web/20070422180647/http://www.wowwiki.com/UnitId) . For example, \@player, \@pet,
10 | \@target, \@targettarget. Note that the rank of the spell must always
11 | appear before the '@' symbol.
12 |
13 | Actions in green do not trigger the global cooldown. LazyScript is able
14 | to perform multiple of these actions on a single line provided that the
15 | line has at most one action that triggers the global cooldown.
16 |
17 | Full Name = Short Name
18 | ----------------------
19 |
20 | **Aggressive** = *petAggressive*
21 |
22 | **Battle Shout** = battleShout
23 |
24 | **Berserker Rage** = berserkerRage
25 |
26 | **Berserking** = berserking
27 |
28 | **Blood Fury** = bloodFury
29 |
30 | **Bloodrage** = bloodrage
31 |
32 | **Bloodthirst** = bloodthirst
33 |
34 | **Cannibalize** = cannibalize
35 |
36 | **Challenging Shout** = challengingShout
37 |
38 | **Charge** = charge
39 |
40 | **Cleave** = cleave
41 |
42 | **Concussion Blow** = concussionBlow
43 |
44 | **Death Wish** = deathWish
45 |
46 | **Defensive** = petDefensive
47 |
48 | **Demoralizing Shout** = demoShout
49 |
50 | **Disarm** = disarm
51 |
52 | **Escape Artist** = escapeArtist
53 |
54 | **Execute** = execute
55 |
56 | **Find Herbs** = findHerbs
57 |
58 | **Find Minerals** = findMinerals
59 |
60 | **Find Treasure** = findTreasure
61 |
62 | **Follow** = petFollow
63 |
64 | **Hamstring** = hamstring
65 |
66 | **Heroic Strike** = heroicStrike
67 |
68 | **Intercept** = intercept
69 |
70 | **Intimidating Shout** = intimidatingShout
71 |
72 | **Last Stand** = lastStand
73 |
74 | **Mocking Blow** = mockingBlow
75 |
76 | **Mortal Strike** = mortalStrike
77 |
78 | **Overpower** = overpower
79 |
80 | **Passive** = petPassive
81 |
82 | **Perception** = perception
83 |
84 | **Piercing Howl** = piercingHowl
85 |
86 | **Pummel** = pummel
87 |
88 | **Recklessness** = recklessness
89 |
90 | **Rend** = rend
91 |
92 | **Retaliation** = retaliation
93 |
94 | **Revenge** = revenge
95 |
96 | **Shadowmeld** = shadowmeld
97 |
98 | **Shield Bash** = shieldBash
99 |
100 | **Shield Block** = shieldBlock
101 |
102 | **Shield Slam** = shieldSlam
103 |
104 | **Shield Wall** = shieldWall
105 |
106 | **Shoot Bow** = bow
107 |
108 | **Shoot Crossbow** = crossbow
109 |
110 | **Shoot Gun** = gun
111 |
112 | **Slam** = slam
113 |
114 | **Stay** = petStay
115 |
116 | **Stoneform** = stoneForm
117 |
118 | **Sunder Armor** = sunder
119 |
120 | **Sweeping Strikes** = sweepingStrikes
121 |
122 | **Taunt** = taunt
123 |
124 | **Throw** = throw
125 |
126 | **Thunder Clap** = thunderClap
127 |
128 | **War Stomp** = warStomp
129 |
130 | **Whirlwind** = whirlwind
131 |
132 | **Will of the Forsaken** = forsaken
133 |
134 | Other Actions
135 | -------------
136 |
137 | **Battle Stance** = battle
138 |
139 | **Berserker Stance** = berserk
140 |
141 | **Defensive Stance** = defensive
142 |
143 | Special Actions
144 | ---------------
145 |
146 | **Assist Pet** = assistPet
147 |
148 | **Assist** = assist
149 |
150 | **Auto Shot** = autoShot
151 |
152 | **Auto Target/Attack** = autoAttack
153 |
154 | **Clear History** = clearHistory
155 |
156 | **Clear Target** = clearTarget
157 |
158 | **Dismount** = dismount
159 |
160 | **Pet Attack** = petAttack
161 |
162 | **Pet Stop** = petStop
163 |
164 | **Ping** = ping
165 |
166 | **Stop All** = stopAll
167 |
168 | **Stop Auto Shot** = stopShot
169 |
170 | **Stop Auto-Attack** = stopAttack
171 |
172 | **Stop Casting** = stopCasting
173 |
174 | **Stop Wand** = stopWand
175 |
176 | **Stop** = stop
177 |
178 | **Target Last** = targetLast
179 |
180 | **Target Nearest Friend** = targetNearestFriend
181 |
182 | **Target Nearest** = targetNearest
183 |
184 | **Wand** = wand
185 |
186 | Actions that take parameters
187 | ----------------------------
188 |
189 | Use an action:
190 | ```
191 | action=
192 | ```
193 | Use an action that does not trigger the global cooldown:
194 | ```
195 | freeAction=
196 | ```
197 | Use a pet action:
198 | ```
199 | petAction=
200 | ```
201 | Use an item in your equipment or inventory:
202 | ```
203 | use=
204 | ```
205 | Use an item only if it is equipped:
206 | ```
207 | useEquipped=
208 | ```
209 | Use an item in your equipment or inventory that does not trigger the global cooldown:
210 | ```
211 | useFreeItem=
212 | ```
213 | Use an item that does not trigger the global cooldown only if it is equipped:
214 | ```
215 | useFreeEquippedItem=
216 | ```
217 | Apply an item weapon buff:
218 | ```
219 | apply{MainHand,OffHand}Buff=
220 | ```
221 | Equip a weapon in your main hand:
222 | ```
223 | equipMainHand=
224 | ```
225 | Equip a weapon in your off hand:
226 | ```
227 | equipOffHand=
228 | ```
229 | Echo the message to your chat:
230 | ```
231 | echo=
232 | ```
233 | Say the message in the specified channel:
234 | ```
235 | sayIn{Emote, Guild, Minion, Party, Raid, RAID_WARNING, Say, Yell} =
236 | ```
237 | Whisper the message to the specified player or unitId:
238 | ```
239 | whisperTo{playerName, } =
240 | ```
241 | Cancel the specified buff:
242 | ```
243 | cancelBuff=
244 | ```
245 | Cancel the specified buff by title:
246 | ```
247 | cancelBuffTitle=
248 | ```
249 | Set the specified form as the default:
250 | ```
251 | setForm=