jp-ganis / jps Goto Github PK
View Code? Open in Web Editor NEWProtected LUA DPS Addon
Protected LUA DPS Addon
Should mainly affect destruction locks - since Rain of Fire is cast every ~7 seconds, priests and death knights might notice this too:
[ADDON_ACTION_FORBIDDEN] AddOn "JPS" tried to call the protected function "CameraOrSelectOrMoveStop()".
!BugGrabber-r193-release\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
<in C code>
JPS\jpdata.lua:1014: in function "groundClick"
JPS\jpparse.lua:234: in function "Cast"
JPS\Rotations\warlock_destro.lua:196: in function "Rotation"
JPS\jps-1.2.0.r543.lua:769: in function "jps_Combat"
JPS\jps-1.2.0.r543.lua:726: in function <JPS\jps.lua:719>
I get this every time I cast an AoE Spell while moving / turning the camera ~30-40 times per boss fight.
Tried everything to get rid of it - it you have any smart ideas...else just close this issue ;)
stumbled across this via pg whole back, great work! I have at least 2 85s of every class let me know if you need help with testing out a class/spec.
Here is error given : WW monks do not function. Not a single spell.
Date: 2013-06-20 00:53:24
ID: 1
Error occured in: Global
Count: ∞
Message: ..\AddOns\JPS\Rotations\monk_windwalker.lua line 20:
attempt to call field 'buffID' (a nil value)
Debug:
JPS\Rotations\monk_windwalker.lua:20: Rotation()
JPS\jps.lua:769: jps_Combat()
JPS\jps.lua:726:
JPS\jps.lua:719
Locals:
self = nil
energy = 100
energyPerSec = 13
energyTimeToMax = 0
chi = 0
defensiveCDActive = false
tigerPowerDuration = 0
(_temporary) = nil
(_temporary) = 116740
(*temporary) = "attempt to call field 'buffID' (a nil value)"
AddOns:
Swatter, v5.17.5413 (NeedyNoddy)
AtlasLootLoader, vv7.06.00
AucAdvanced, v5.17.5413 (NeedyNoddy)
AucFilterBasic, v5.17.5413 (NeedyNoddy)
AucFilterOutlier, v5.17.5413.5347(5.17/embedded)
AucMatchUndercut, v5.17.5413.5364(5.17/embedded)
AucStatHistogram, v5.17.5413 (NeedyNoddy)
AucStatiLevel, v5.17.5413 (NeedyNoddy)
AucStatPurchased, v5.17.5413 (NeedyNoddy)
AucStatSales, v5.17.5413.5376(5.17/embedded)
AucStatSimple, v5.17.5413 (NeedyNoddy)
AucStatStdDev, v5.17.5413 (NeedyNoddy)
AucStatWOWEcon, v5.17.5413.5323(5.17/embedded)
AucUtilAHWindowControl, v5.17.5413.5347(5.17/embedded)
AucUtilAppraiser, v5.17.5413.5393(5.17/embedded)
AucUtilAskPrice, v5.17.5413.5347(5.17/embedded)
AucUtilAutoMagic, v5.17.5413.5392(5.17/embedded)
AucUtilCompactUI, v5.17.5413.5400(5.17/embedded)
AucUtilEasyBuyout, v5.17.5413.5347(5.17/embedded)
AucUtilFixAH, v5.17.5413 (NeedyNoddy)
AucUtilItemSuggest, v5.17.5413.5365(5.17/embedded)
AucUtilPriceLevel, v5.17.5413.5365(5.17/embedded)
AucUtilScanButton, v5.17.5413.5403(5.17/embedded)
AucUtilScanFinish, v5.17.5413.5347(5.17/embedded)
AucUtilScanProgress, v5.17.5413.4979(5.17/embedded)
AucUtilScanStart, v5.17.5413.5347(5.17/embedded)
AucUtilSearchUI, v5.17.5413.5373(5.17/embedded)
AucUtilSimpleAuction, v5.17.5413.5388(5.17/embedded)
AucUtilVendMarkup, v5.17.5413.4828(5.17/embedded)
Babylonian, v5.1.DEV.332(/embedded)
BagBrother, v
Bagnon, v5.3
BeanCounter, v5.17.5413 (NeedyNoddy)
Configator, v5.1.DEV.344(/embedded)
DBMCore, v
DBMMogushanVaults, v
DebugLib, v5.1.DEV.337(/embedded)
Enchantrix, v5.17.5413 (NeedyNoddy)
EnchantrixBarker, v5.17.5413 (NeedyNoddy)
Informant, v5.17.5413 (NeedyNoddy)
JPS, v
LibExtraTip, v5.12.DEV.350(/embedded)
MikScrollingBattleText, v5.7.129
Recount, v
SlideBar, v5.17.5413 (NeedyNoddy)
Stubby, v5.17.5413 (NeedyNoddy)
TidyPlates, v6.11.3
TidyPlatesGraphite, v
TidyPlatesGrey, v
TidyPlatesNeon, v
TidyPlatesQuatre, v
TidyPlatesHub, v
TidyPlatesWidgets, v
TipHelper, v5.12.DEV.351(/embedded)
BlizRuntimeLib_enUS v5.3.0.50300
(ck=83d)
I see what you mean Kirk with the Fire and Brimstone issue. Kinda weird you can have the buff but no embers.
I would suggest though instead of you current code to cancel the effect, instead make it as a macro and cancel the effect buff instead with
/cancelaura Fire and Brimstone
like so
{"fire and brimstone", burningEmbers > 0 and not jps.buff("Fire and Brimstone") and jps.MultiTarget },
{ {"macro","/cancelaura Fire and Brimstone"}, jps.buff("Fire and Brimstone") and not jps.MultiTarget },
Hey great job, was wondering if you're taking donations as i would like to contribute to the project.
Cheers
I thought at some point the issue was addressed (perhaps it was in CDO, I digress). If you are running through an area mounted and you get into combat, JPS will dismount you. It's annoying and a mount check should be all that is required.
I can't put my finger on this exactly, but it's happening only sometimes. (The worst of bugs, I know.)
It doesn't seem to matter if Outbreak or Plague Strike are up or down, in all cases it happens that the rotation continues without applying the disease. I've noticed it more on bosses, but that could just be how many times I have to apply diseases per fight.
TimeToDie could use a second parameter which sets the desired percentage - e.g you might to know how much time is left till 20% so you can prepare for the burst phase.
may or may not be a problem but when i use jps to heal (holy spec) on my pally i get this error...
(updateded files as of 2:25pm CST 6/20)
The ret spec i get no errors>
LUA error
Message: Interface\AddOns\JPS\Lib\jpconfig.lua:311: bad argument #1 to 'lower' (string expected, got nil)
Time: Thu Jun 20 14:23:30 2013
Count: 3
Stack: [C]: in function lower' Interface\AddOns\JPS\Lib\jpconfig.lua:311: in function
notifySettingChanged'
Interface\AddOns\JPS\Lib\jpconfig.lua:337: in function <Interface\AddOns\JPS\Lib\jpconfig.lua:330>
Locals: (_temporary) = nil
(_temporary) = "string expected, got nil"
Message: Interface\AddOns\JPS\Lib\jpconfig.lua:311: bad argument #1 to 'lower' (string expected, got nil)
Time: Thu Jun 20 14:27:18 2013
Count: 7
Stack: [C]: in function lower' Interface\AddOns\JPS\Lib\jpconfig.lua:311: in function
notifySettingChanged'
Interface\AddOns\JPS\Lib\jpconfig.lua:337: in function <Interface\AddOns\JPS\Lib\jpconfig.lua:330>
Locals: (_temporary) = nil
(_temporary) = "string expected, got nil"
:: not sure if I am missing the multi-target aoe rotation ::
but in Ret spec there is no difference in dps from normal and multi and no casting of the spell "Divine Storm"
----------------RET--------------------
AoE Rotation
Seal: Seal of Truth and Seal of Righteousness
Hammer of the Righteous
Divine Storm
When dealing with multiple mobs, you will want to continue the single target rotation except use Hammer of the Righteous to replace Crusader Strike as a way to build Holy Power. Also, use Divine Storm instead of Templar's Verdict to consume your Holy Power. Seal of Righteousness should be used if > 7 targets are present.
::: CoolDowns ADD :::
Execution Sentence Use on cooldown. Try to stack with Avenging Wrath.
Currently only used in jpdata and the new warlock affli rotation...
@kirk
Just opened this issue to continue some of the ideas about Curse of the Elements, since the other issue got merged and then closed :)
Quote:
"One suggestion, set Curse of the Elements only to be cast on bosses or mobs with a certain % hp. Often it is just a waste of time to cast it.
Also, perhaps make an ignore table, where you can put in mobs you do not want to put it on (or test for immunity event), e.g. the pylons on Elegon, I think it was those that were immune to it, so it would cast it over and over again (I think it was that fight, but in any case it can be a problem on some raid fights.)"
Actually I meant for the Destro profile, but of course it should perhaps be the same for alle warlock profiles.
i understand it's probably one of the harder codes to script, but during raids mw monks just do not uplift enough. are there certain talents and glyphs that your builds base off of? ty
The new version does not load at all in game it shows in the list of addons but doesnt load in game
Hey, casting holy prism on yourself helps greatly with aoe threat right now, is there any easy way to cast a spell on yourself ? (different results if you cast it on the mob).
To clarify this spell can be cast on yoruself or on mobs, but for best results while tanking you want to cast it on yourself.
Thanks
Figured it, { {"macro","/cast [@player] Holy Prism"}},
The 'Rotation Dropdown Visible' checkbox is always visible (at least with multiple rotations).
Also jpconfig throws an error: (line numbers might be 1 line off - made a quick hack to remove the checkbox)
1x JPS\Lib\jpconfig.lua:253: bad argument #1 to "pairs" (table expected, got nil)
<in C code>
JPS\Lib\jpconfig.lua:253: in function "addSettingsFrame"
Hmm....this rotation is wrong....
I've seen this on a HonorBuddy Plugin - One of those raid helperes has a specific rotation for the final warlock green fire quest.
I already have it on two locks with green...but since I'm currently leveling warlock number 3 it might come in handy...he shouldn't take longer than 2-3 weeks till he can make the quest.
Paladin Holy: lua error line 10 + move divine plea to the bottom or adda key modifier
This requires a couple of changes to work properly but the general rotation. First you have to add shaman_resto.lua to toc.
Just a quick version but so far it seems decent in 85 dungeons. Not all spells are in the list.
function shaman_resto(self)
local spell = nil
local lsStacks = jps.buffStacks("lightning shield")
local focus = "focus"
local me = "player"
local mh, _, _, oh, _, _, _, _, _ =GetWeaponEnchantInfo()
local engineering ="/use 10"
local r = RunMacroText
local tank = nil
-- Totems
local _, fireName, _, _, _ = GetTotemInfo(1)
local _, earthName, _, _, _ = GetTotemInfo(2)
local _, waterName, _, _, _ = GetTotemInfo(3)
local _, airName, _, _, _ = GetTotemInfo(4)
local haveFireTotem = fireName ~= ""
local haveEarthTotem = earthName ~= ""
local haveWaterTotem = waterName ~= ""
local haveAirTotem = airName ~= ""
tank = jps.findMeATank()
-- Check if we should Purify
local cleanseTarget = nil
cleanseTarget = jps.FindMeADispelTarget({"Curse"},{"Magic"})
-- lowest friendly
local defaultTarget = jps.lowestInRaidStatus()
local defaultHP = jps.hpInc(defaultTarget)
-- Priority Table
local spellTable = {
{ "fire elemental totem", jps.UseCDs },
{ "spiritwalker's grace", jps.Moving and defaultHP < 0.75 },
{ "water shield", not jps.buff("water shield"), me },
{ "Earthliving Weapon", not mh, me},
{ "earth shield", tank ~= me and not jps.buff("earth shield",tank), tank },
-- Heals
{ "riptide", defaultHP < 0.95 and not jps.buff("RipTide"), defaultTarget },
{ "greater healing wave", defaultHP < 0.4, defaultTarget },
{ "healing wave", defaultHP < 0.8, defaultTarget },
{ "Purify spirit", cleanseTarget~=nil, cleanseTarget },
}
return parseSpellTable( spellTable )
end
This rotation is a mess...I tried to get a single rotation working yesterday, seemed nice...
but i still need to fiddle around a little until I find the right time in which to abort the channelings spells.
This might take some time...
In earlier versions of JPS there was a Table with Instant Spells which should be ignored if cast by the user.
Instant Spells seem to work without it now (haven't take a look why and how) but Burning Rush seems to make still problems - maybe because it's off the global cooldown?
Does not heal at all testing in LFR does not cast any thing at all. Rotation needs to be updated.
Hmm....just tried my rogue an hour ago...and it seems all specs have an old "bug".
They use vanish, even when not in a group/raid...
GetNumGroupMembers()>0
should at least prevent venish from being cast while farming mobs...maybe >2
is even better...
i guess best would be a range check for all units in the raid/group and check if your alone - after all you still might be in a raid but fighting something on your way to the instance...but maybe thats too dedicated
Warlock Affliction doesn’t apply Agony, looking through the rotation lua file there is a reference to Bane Of Agony/Bane of Doom which we haven't had in a while. Its also not applying curses.
Warlock Destro only does 1 spell and just stands there, I am not sure what is needed here? JPS debug?
DK Blood, there is actually very little wrong with this one as it mostly does everything except that it needs to prioritize Death Strike to keep up the shield and then blood boil to keep spreading diseases to new mobs. I also notice that it is using heart strike with 1 mob when it should only be using this for multiple mobs.
function shaman_enhancement(self)
--jpganis +simcraft
local maelstromStacks = jps.buffStacks("maelstrom weapon")
local shockCD = jps.cd("earth shock")
local chainCD = jps.cd("chain lightning")
-- Totems
local _, fireName, _, _, _ = GetTotemInfo(1)
local _, earthName, _, _, _ = GetTotemInfo(2)
local _, waterName, _, _, _ = GetTotemInfo(3)
local _, airName, _, _, _ = GetTotemInfo(4)
local mh, _, _, oh, _, _, _, _, _ =GetWeaponEnchantInfo()
local haveFireTotem = fireName ~= ""
local haveEarthTotem = earthName ~= ""
local haveWaterTotem = waterName ~= ""
local haveAirTotem = airName ~= ""
local spellTable =
{
{ "fire elemental totem", jps.UseCDs },
{ "wind shear", jps.shouldKick("target") },
{ "wind shear", jps.shouldKick("focus"), "focus" },
{ "Windfury Weapon", not mh},
{ "Flametongue Weapon", not oh and mh},
{ "searing totem", GetTotemTimeLeft(1) < 2 },
{ "lightning shield", not jps.buff("lightning shield") },
{ "Stormstrike", "onCD"},
{ "lava lash", "onCD"},
{ "unleash elements", "onCD"},
{ "flame shock", not jps.myDebuff("flame shock") or jps.buff("unleash flame") },
{ "lightning bolt", maelstromStacks > 4 and (not jps.MultiTarget or chainCD > 0)},
{ "chain lightning", maelstromStacks > 4 and jps.MultiTarget and chainCD == 0},
{ "earth shock" },
{ "feral spirit" },
--{ "earth elemental totem" },
{ "spiritwalker's grace", jps.Moving },
{ "lightning bolt", maelstromStacks > 4 and "onCD"},
}
return parseSpellTable( spellTable )
end
As a whole the new update is great. But it seems that Heroic Strike isn't being used.
My Jps is working find but it seems to be sat waiting a good 2/3 seconds for Mortal Strike to reset and not dumping Heroic Strike or an Over Power Proc.
This is effecting the dps of the arms warrior.
I had a quick look at the coding but its above my knowledge an wasn't able to spot any errors.
Regards
Conteo
Maybe it's something I'm doing wrong. Interrupts turned on. Levelling in subtlety and he just wont interrupt
Golden Carp Setting reverts back to 1 even if I changed it to 0.
For example:
elseif msg == "enmulti" then
jps.gui_toggleMulti(true)
elseif msg == "dismulti" then
jps.gui_toggleMulti(false)
This will allow us to enable / disable multi-target using combat rules in PG (combat count).
Toc file needs to be updated with the combat rogue lines
Rotations\rogue_combat.lua
Rotations\rogue_combat_pve.lua
Rotations\rogue_combat_pvp.lua
I was looking for were the ground click code was to add the following:
Lightwell
Holy Word: Sanctuary
Since I merged to the current version of JPS it seems rather sluggish.
I don't know exactly what changed, but it waits too long before casting the next spell...which is a rather big loss of dps.
A change in jps_Combat:
if (not jps.Casting and jps.ThisCast ~= nil) then
to
if not jps.Casting and jps.ThisCast ~= nil or jps.castTimeLeft("player") <= jps.Lag then
does work for me.
But jps.Lag is rather constant...other cast bar addons have much more dedicated ways of detecting the spell lag.
I'll take a look into Quartz and check it out, but the change above works pretty good for a start.
TimeToLive fails miserable at Iron Qon - since you see him first after the first Quilen is down but only start making real damge to him after the third Quilen is down.
I can't think of similar encounters...maybe Lei Shen (didn't have time to test the new TTL on him).
A fix might be resetting the TTL if time0 is way older than time...
Message: Interface\AddOns\JPS\jphealing.lua:335: attempt to call global 'GetNumRaidMembers' (a nil value)
Time: 09/08/12 20:28:55
Count: 1
Stack: Interface\AddOns\JPS\jphealing.lua:335: in function `SortRaidStatus'
Interface\AddOns\JPS\jps.lua:109: in function <Interface\AddOns\JPS\jps.lua:102>
Locals: group_type = "raid"
unit = nil
subgroup = nil
(_temporary) = nil
(_temporary) = "attempt to call global 'GetNumRaidMembers' (a nil value)"
#2
Message: Interface\AddOns\JPS\jps.lua:213: attempt to call global 'GetPrimaryTalentTree' (a nil value)
Time: 09/08/12 20:28:55
Count: 1
Stack: Interface\AddOns\JPS\jps.lua:213: in function `detectSpec'
Interface\AddOns\JPS\jps.lua:114: in function <Interface\AddOns\JPS\jps.lua:102>
Locals: (_temporary) = nil
(_temporary) = "attempt to call global 'GetPrimaryTalentTree' (a nil value)"
Used the last version.
If my death knight gets to about 30% health it'll try using Rune tap or Vampiric Blood and get stuck trying to cast it over and over again while its on CD.
Not sure what is happening but after I kill mobs My frame rate goes to 10-11 fps. By process of elimination after I took out jps all was good no lag. I installed the older jps no problem either. As soon as I install the new jps the lag comes back. any help would be great.
function shaman_elemental(self)
-- jpganis basics, thorshammer for all the good stuff :D
-- thanks to thorshammer no need for simcraft!
local spell = nil
local lsStacks = jps.buffStacks("lightning shield")
local focus = "focus"
local me = "player"
local mh, _, _, oh, _, _, _, _, _ =GetWeaponEnchantInfo()
local engineering ="/use 10"
local r = RunMacroText
-- Totems
local _, fireName, _, _, _ = GetTotemInfo(1)
local _, earthName, _, _, _ = GetTotemInfo(2)
local _, waterName, _, _, _ = GetTotemInfo(3)
local _, airName, _, _, _ = GetTotemInfo(4)
local haveFireTotem = fireName ~= ""
local haveEarthTotem = earthName ~= ""
local haveWaterTotem = waterName ~= ""
local haveAirTotem = airName ~= ""
-- Miscellaneous
local feared = jps.debuff("fear","player") or jps.debuff("intimidating shout","player") or jps.debuff("howl of terror","player") or jps.debuff("psychic scream","player")
local spellTable =
{
-- Set Me Up.
{ "lightning shield", not jps.buff("lightning shield") },
{ "Flametongue Weapon", not mh},
-- Totems.
{ "searing totem", not haveFireTotem },
{ "fire elemental totem", jps.UseCDs },
-- Kick.
{ "wind shear", jps.shouldKick() },
-- Basic Priority Spells
{ "flame shock", jps.debuffDuration("flame shock") < 2 },
{ "lava burst" },
{ "earth shock", lsStacks > 5 and jps.debuffDuration("flame shock") > 5 },
{ "spiritwalker's grace", jps.Moving },
{ "chain lightning", jps.MultiTarget },
{ "thunderstorm", jps.mana() < .6 and jps.UseCDs },
{ "lightning bolt" },
}
return parseSpellTable( spellTable )
end
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.