Painsmith Raznal: Spiked Ball Marker

Recently our guild has been progressing on Heroic Painsmith Raznal; which is fine and well. But this isn’t a post on the specifics of that fight.

There is a specific ability in the fight called Spiked Balls, where Raznal will summon a wall of Spiked Balls. The goal of this mechanic is to have the DPS focus down a single ball to break a “hole” in the wall for everyone to go through. it’s a fairly straight forward mechanic.

TL;DR (Updated)

I’ve created a Weak Aura that highlights the center Spiked Ball in the Painsmith Raznal fight. It also gives you the option to apply a mark to the ball as well, if you have raid assist. I documented the process for how I came to this solution and am sharing it with the community, because I was tilted by a response from a moderator in a stream channel for high-end raiding guild.

If you have any questions or suggestions on this solution, or if you would just like to say thanks and hello … please get in touch with me on Discord @ virtual#8494.

Here is the working Weak Aura string! Thanks so much to everyone for for testing this out. And for those who caught the debug code I left in place. 😬

Weak Aura Import String

!WA:2!1QZsVXXr6zU0cszSnJS8AL1RdskZn2EM1Jgro0sYR8sTlhYHI0HIKzgsl7iPq2Z01mDf2t3TQQh(W2kiIhcmYPaga78abiGhYPCiG)bsGcqo3qiihta8XCiheYpG899vv3t39mKwXgMqIS76X3R67D1JT4L6Dj7lz)LV7XI2(En97lBZh7Pw9dD8LRfek89u)9)0fRfEqaVLd3YMlRfY3pSrnlLOTSVIVQvp(2n2tyh6m(UrJ3k0VBxxE1D4hCCxx)9Q7z1YLxZMRAh87OFrXUnmbZ3Jf6WzEW(dCTc5kPnVJvF3WTrWUaSHTRHtEIEx0MIUW5aCe9BevGix9mrVCWhfd5LBJG1N1IZuo(75fJfvBjN7X2te6qV32VVxiZVd9sO0Q9oCBwFprOkAITJ(n3o6IXOfH4a0EcNg9owYDuaE)TOhgfqCiG8edq0R)cN7pd2ZTBYD5Tdz75yfY2r4zJKHcOhBKK77AJepiroaa2EoarJqK4gfRFaYqAMbK1kcsrtmE0fpEDyhAW0Axl3(C1FETv994nA67zjLZjKl5l9oSMyho(G8UcxhUBVgR7alQwnriVAnREirxObbLOlmosTV7DDeTDyTDS884UXuOMChqNcGAIEdIqEAtAU51Bi6n)dBDhlvix2GgVXD6d6nhoxVwcUxBERfewU(Dj0(ecOX77cJViaYxm6C1OZ9ZVTHEU68o((kUwKdkLXNHOUg7a)(S9SGdwTgaOgzNqxhrkDBaBj6nVPCbTQwJ1f7ZDB00r4XjI4qeo0IOJ8gT9D9LrfochEE65xo43ofjqZNMgIM4Jgh(Ho9pMqPEBxy8)baCslVUiIQ2ZA)xQgiwcw)fNQYuxdWw1EcVXIk8ueilk5pSpiFoaW21wcGrhqeQzXalzOOnQQBj5mPFOvOWRl8cj1rQOJemAa(DaqMy9XNQsvqEEcAgkfKzD05c(ffAYdXTRaPL2K09aMvqa8BqcgGYgMfPxcYhn(rzUQWHD89cBk(mEdvplx406Ca3f9bix)l4r3CCyGOpCmGiwpMCboPoYj9S8oiftuKe9LI1Ra6h4k4OdeQE971ItYwxyjWsPZQsgr0aapXRMb3iVcYZXj8F4NWwRthfpeq)Bf)mtYb)nID5itsslwlFW5dCoFcc6pXSLjg7ubSEHF6ay)PFRW(IhgVMrb4PJbm50CfUx3qNOx(z6hsKbrxm41mdPLgS1GtSsrt86da4RNfGxm4YBawW7a7wLDtVCWBGhiH4SgrCI)hJqozNrtK43fhVMMLaVdn17GunCS2nMBbFw4Vr1rnHB8hg8A6TMLssR9GKVXKqlqitVMTTi)8xMEi2Elrnca8L0ZO1NIflX(qoCo7DTa3n2A)iX(YLwcVw(7DhFBe2YgZT8Q1w7Unz1)46n(07Uu9g1Fl2x0Ud8ZuWp31s6b2kVfdKkkGzblqwGVs0s4kcjdgRoDqh7GxijRtamVIjcFxft23d3j66MVlxEGwXOYxitct0qtjmIuixfgXX5mIJe9JGlAO60(ikHhKpSpCybwUqWcG(uqOU2oiwbcZdIyRDvbsQxngzPDqG4O6a0(s5vIUuYM676YAUhNha49NJ411hqcenv4scLUq8e40b8h11Hb(g04vfv4zgcFH(slYb0eP4ZZNdHFJokYcqghFgaqaxpErWNGtShefhclBdI4oqOft4ie7TWO8XbLqzVNpenqk62fCSyZS6c0qf2sC3Go9D1Hx7bXbebGUdf5MCRQtDacptPoGgXHIEOrbHOeIIyGgcVG(HitaK(lhSPj6oPeGqbH6Ylug9OzzBJ)xGCVfelLdkWqIpGb3bGuQxplwXYLy3KvDMQtptz4)txT80vHFptuHwA4CerTOnLt0fLBIzgS8cqggOpHxpAIwtFJRFTpy6JGiFA)eoaf2s7jLKZ)UKZzsgpXRaK7TiLzHofgixe((mk7HytSE(TG)AfMj0QJORJl8)WkG)avG1EElJ7eYzQj(cJEZyKDiKyxOXcljlT7YT2XcudqGr5nrkk7kaJPbNdWjQjueEiehOsNpxVylNJ2aaVXS5CYd0oyx6FP9F6p6fEHx4F6eWOhYJDDFHxyR5RV6g1B802((U2WbtZ9eb8TR2x6gWCcddu38QxDpRU(ve(xLVFGlyzVl3x2sD1Q3OgMS52hA0Jut8osZJ)hG0TDFvOFVVr1VfyCdrf73PJy)t2A(5AUXwn3yUgBCIEfB5iaQ8rnOv1AjULBOtYUwxYHD1O561xzLAOaOfPel1ZQcUYQZDN6BT(kZTr9T2C1L3yR5wyH6lWYpAJ63zTpU(chQc4UUlBRk8enUBgcczvWn603RnQ9vSubg8JKh2x6X(z4zXwCVDRqIEAkUNn9x6xrpA)X(Vt2lrsLXLQHIOdzLrPPgIwugWgdcxFW1mRBFHnBwgQYE7nxEHId2Fmqi4YMDw2KJKzNKaoTy8NRCfWT2EdkFizcasj8dOllSHjrSQXywGyauxG8TahlGhZmtLah((829d5GlOeivg0C7ZlLS(yUL7Q4NjZyoJgMDK8E(7IEShMNoBcPJfGZszo2mhbj7d0F7i6wzqrtK9vUdE2TytvaGqSclMRx0JBGKJQWX28wGQnMBSCP6RS(IBUYrGxFTDqHGx1QnM2Zg63rdY)Xx4zGzhxcU6(yWOb0CU3Z2bIBmhOC2oSbgdy7JS8e9OObxVHkecNdbSR5b(wFQTjkbresJ7(NWTu8MHsY125peFJYv)RR1d8RJb7)6O)QO)6O)MZh93g91T6i8ekN8ddmIYkebp3rURMYUXXGHydExSC3F6x(JdUewJ7wkhl7K0bhl4nObPF1XxcK9wkZdrF9rjZn5BRcUyQTtP))rJn2yJ)n6r5UDihs1MBZnwl41ObH6T9r5q77I1rxBo41NPreKMKnn4JFQ2zMjPZXEcn)FmCsj6Cq0UhtLcW3agS2QRTA9OXLalHR5yAHuuyQ0KJmCGx4X13pqcz3TN1bz44yu8uAS9Gm2UR0k4W7AEqJzJ36TnmBkpTr7(0euG1i00q5FsgWIZsktRT5gRS8Q1B5WXqkpUMRVL9xjTqVOC170sbweU83Sbf47YV52TcH888cVC0)CHgTDTuk8PNbb8a9yQQEUuyVDnfGyCgmu4wEyAxoNKAb1Q((ZmvnutexKedNdUl)rhljDasP6ZK7BcN8R)I)IxecN8chgh7W5eBHcDqJnhqoZ1N56x7gt9K4zRB3L7CuY5C0UvbxFN8z7TyX7S(D7O8)OA4XTtWpoEd4H2ccfAwA7af13dO2gvRaPKDCOFBJk6pzST(FNuyh8Z2O6hCt26G(UQh2nJRWAgiWgpudJHInAGlFMwGViMMjYlTAoFJ61x9ekVtW(Xk0cYc4XnSCdCSGiyKZHV8Yr)sQqXOlTD0mNlALxj6Hor2Jh97DUOLoF0lTD0MJh9hC(iRZh5)krlF(OR9rJV0V6)5)e)5)APF1)6Fj(ZxnE0R7e9Por3xNszu3No9nEFq6uwNzsu9srLhpQX2sHhYyqAmVpPvw7Z897HOFMJrtDkhjvHteEAlm4Tlh8teD98LCtBPQJEyRlLqYLBlTOqtQRh9vfQbw9HVdeYI9VLZ92SSp)rf0rJMhEjNZrZmy5g)(8dG5NurcwuUQQo1KM5df2hO7x1sKclSWpWm1TVZCRJiH8aR7mWSS5RK07GY0euxlIhhpD0dpOM445skXvVGoXPRNSGKe41lWOUMmTXEtp5b5M8ttpPo)XK50PoAO2KIhti54r0lWuWx8S6670tPOsYINHkqRq8bqZ12C1fAMiTE33vVL7DVLrd0owT53FoB718u3htwCo4OsD)193JlPhVd3wyDFQgb19PoCvXVB3h8GNdGKzRM2I9DBZX9s75E3Nc9VNUvCFFbta2jVVVaP2YBu)7lmAzLWlpQG54oo5rwxEi5wkv(F6vKK0dQWSf2v51X3QCBEyYlPt7jtUNd28Osafxu8cixbefqzanIXROtnVMLCOm04U72xKmGblNjisNs4iwiXvdJhAvYNdeP3FfNZgD70xmek25SyeyYVnwaczbIxU9qaEG)XKrhExvGSh6B5Ai8wwYB2eIZs(tlM3bBPtNopvWnAAEJ11h8NojFtSZfCOC3CCWqy2aQNte73VZqiTL9Qj38XPJhyNMtIrd5nt0MZdFZLPC6GozRJq95u3vsrg4)JnUxz(BdgTRiA1mSFRItcpmpvab2(7RmDLPMSuHcx5k37Ef(1ydp6zUqdO0bQXryBnINbB8cerXhIpGpHaiEkDnjuCuflKkHHEX8COp2UFgKTaRdURh8GH88adBkycrt5mqmJ3eD8ktDsyNO)2RUv3Q3zhL7ndq7KCkLhcPls2KsaajmzIkyUcPMooNImYcyeAT0KXyKeK5vjgittvR8auolB6rwD8c50KWFGJ8k16hg67HWBRMyTBfjwSSMklRjQKKwsvOSwhonERos8sTiEiSsJE2injvQ8eH5DD6oMxssWX8UjlkZBhK5nDUoLJZr8m5PzgjprTNEiEcR3BElv43p2Is36S5IHj8uDTiTQYscB(puQk(bAU7hevIyG)d(H0zHOyHAAdCThtTDmu2AOUb3ZYMkVFkSUsAYIPtpcCSSHGCXCB9tft8UuC(k6gG)NaqJYQjEXxjfMUfZSS42xNRvyPPjZ(tMB9ysArHlVOo197za3dqhqtoz5yWBUa3szJuOzcRDTeUj3FoM8p2dTYF7)6rMaimK7bp(sGcz9OADP2tBA0FlofsrbPLGbcSfD6WLyF4qVXJiKaaS5stsgzkUxe4lBxMOyMWJjcSesvXSCqjMTFM(osREivQSB6EAq)aG9Pg3LzPMqd6LmsfksCAegn13hckgOoJJDaibz6(OpcUgJnqusXCr9s9TnCgH6eE27d0(00q75aAe6H(LqHW5KhfZwa(9W19aDE3yhxhXKviUXEeTPvJCTGrBfmQJU4FG0jByjS3G0ugjzqpxwdVsJURVdtxaIZF0yYi7u4NH5Jwq(L7m0jljW0cw6pVNr(MZak5m0Y2oxLquAqveEkUmpdxM95u6lZsQepQ0iHi19zEoGIwci9qD7FzVo(PnfYGJ8McXBOIgZZoibQmsJ0R0iIhAnJWek3EqBj0nrMTLw0oqaPzZ8ciKhl9CCmL3am(kJrRS8cuh1UB43OBRIqMgWrWUP9MJ5quM1kF6Fcs)k0PcKcRVSOd7NZUEPpmDAMWcOrbx7I0teatSlmrXPHzuz2Zdtpvh4HSthMEA9AkLArApeOAj7TzxpZ91iWJ1PmEk0mecRYmirJG0LRigKWqQf(WY4AhEHvZVWaAHHdTWzgXcrGo0cF)8lejWrTWRncMbb6OUAL4JWu2suYA1DTcuKNIP(W0JVah)aTWMHL)c8ZSkZ1EKEHXJfhe1O6MQdMfYOvvMzrM6bwT3P4GsdkzwLtFoL2rE9vZn8Vi8ErS51L5iNuAqZmhWzzE99y0c)qJArXmtERumFoN6NfmVsQT9Hj7qt54VVfQpHXrMcZ(ahbCyYUkRywH4vtJ9b10MC8oWefYZy6YtN9o0qNFKxlWNN2LhkwQqz9L1FxQslPuwyF(GJIhnYmHKP7)S(shkOtLl1hLssKsz6rtjgZmEAFGYbkz66sNh7QbxxA6K0FMS0iwPH50DkNKbjHhYSUBI3vg(v9L0dJubnOw)oqsroRFGj4twb8Pa8n9KFhaVNW95c6Z7YTgayvQehOODF7N25jarASpQ8)ZraqUjnPVcVItUM3Mb49tdPpNY8dcqRDknS2q2t8HveE(XqQOy3bMGPVzzuEfl4WGAds44mVbAmLYSxMFruVLgoRv)itZyqHmJwppzZ))vpzKL3oCUt09VKRSl6uoxMYFhPZgpVuz66fZ1UQsdve5GcgTKkEt9NHtYTLve)ElsNYbck62MyBL9F0hWZMlVaOeRcLQaxq0m5va9LbqifyOvxpWVTJoj8MC8o01fKIjqKFO3Mv9pQ6mLgjesUsQwIWkTa17IH(6VvPI6Udwr1VvXy6Rm7ALkZM(6WVMA)BGFvEDgcS0xEKbGsLJOtyXNtypDgWJa)dGNgMWnfHNsm8EdXrzmegSRBnK8kFd6Opgl6JW1VD7(qnDc9xHfNqe(9Tj9DDH4JGjKKPeETbVc6yu4KeQ42vgO)MNInDfOyr6qbEkxiV0j4KSHYPKTPva7JHjgOYuM6bGUFULIVMp9RMakO)vqHtpwQkj6N4E1SCD(9lKKwpI0H9en8h3ZZ1NBKE(CgbEbTPYkZybC6ga5flyYNNHvyItXy(JqNUs40abt6BW7d55KowsIXNlF05Re)L2f7BNHFWzX3dG(t0feF(6Bph(l)SYOm2fEUKuQ447NT(CCafesqYXtOIj3oyz2KRbOWCz9GUrUV9SmbDND6YV)u5JXM13fEH8jxdXKvQigATP8yM6lI60khm9NjMH3YKZ0Old9m2XzKyXOW)OfSPtId2bfN(iB)T0D8F7O)Ucxs1yMkxRYuxA3)9p5)7

Overview

Our guild, and I believe most others, have chosen to focus down the “center” ball to break through. Which is great. The “difficult” part of this as a DPS is sometimes trying to locate the ball that is in the center. When 13 name plates pop up on your screen and your goal is to focus the center one. It can take a second or two to find that center ball and swap to it.

I can hear some of the grumbles already … “It’s not that hard.” 100% agreed. It’s not. But being able to “mark” the specific ball automatically is one of those quality of life things that comes along with DBM and Big Wigs. It’s just useful to not have to think about it. On top of the fact that as a developer … I find it relaxing to code these things up.

My initial thought on this was, “Hm, this should definitely be doable.” A guildie of mine, Pigcow, happened to come across a streamer who definitely had something that would automatically “highlight” the nameplate of the center ball; which just proved that it could be done.

Little naive me decided I would just stumble into the players stream and politely ask about that specific Weak Aura. One of the moderators responded back with this …

image-20210712172603443

I’ve blurred out the name of the specific person, because the point here isn’t to call people or an entire guild out. Others might disagree with me here and that guilds should keep their Weak Aura’s secret. Hell, I get it … it’s probably just the guilds policy not to share things.

But this response immediately triggered me. It ultimately drove me to find a solution and to make an entire post about it. That’s how tilted I was. As a developer who has contributed addons to the Warcraft community, it is a bit frustrating when you see people like this who think that a Weak Aura or an add-on is the secret sauce to your progression.

Could you imagine if every add-on developer out there had the mindset of, “if I just built this addon for myself and didn’t share it … I could be so much better than everyone else.” Luckily, this isn’t the general mindset that I have seen in the community. And for that I’m grateful. The community tends to fall on the “sharing is caring” side. And I find it inspiring.

Anyways … on to the point. I’m about to drop some sharing and some caring on you all now. Because that’s how we do!

Coming up with a solution

A few guildies had some suggestions that revolved around calculating the distance and finding the “center” one via complex mathematic algorithms. That might be how this guild was doing it? And maybe that is the solution? But that just seemed extremely complicated. And I thought there had to be an easier way. This sent me over to my night fae covenant where I found 3 target dummies all called the Swarm Training Dummy.

Great … now the goal was to highlight the center one.

My first thought for solving this problem was … “there has to be something in this game that has a similar concept.” That lead me to this Explosive Orbs Weak Aura. It seemed to be a good starting point for what I was looking to accomplish. In general, i just wanted to highlight mobs. But I had another specific requirement … I didn’t want to highlight all of the mobs simply by an npc id or a name. I just wanted to highlight one specific mob that had the same name and npc id.

Using the unit’s nameplate#

I remembered that every nameplate that is visible on the screen gets assigned a “unit” that is in the form of nameplateN. Where N is a numeric value representing the number of the nameplate that is on the screen.

I had to code up a Plater Mod that allowed me to see the name of the specific “unit”. Sure enough, when I looked at the three Swarm Training Dummy mobs, I saw nameplate1, nameplate2, and nameplate3 … which was a great start. This seemed like a step in the right direction.

Problem solved, right? Well, not quite ….

Problems with this heuristic

Unfortunately, there was a problem with this heuristic. While it would pretty consistently give the unit the same nameplate3 – it wasn’t consistent enough. In practice … it meant that every once in a while the “unit” value would be something other than what I expected it to be. It shifted from nameplate3 to nameplate2 or even nameplate1.

This solution was very dependent on when the nameplate appeared on the screen. Which could be different depending on the angle of the players camera at the time that the mobs spawn or come into view. Or how many of the specific nameplates were on the screen at the time. As shown here …

This is the same “middle” training dummy as above, but this time it has a value of nameplate2, because I only have two of the dummies nameplates in view of my camera.

That being said … the likelyhood of someone not having all of the spiked balls within’ their camera view, was pretty minimal due to how most raiders keep their cameras zoomed out. But I still wasn’t happy with it. It proved to be too unreliable during the fight.

This lead me to digging in to some of the details on the GUID value for a World of Warcraft mobs.

Using the unit’s GUID

When you break down a GUID value for creatures inside World of Warcraft. You come up with this:

[unitType]-0-[serverID]-[instanceID]-[zoneUID]-[ID]-[spawnUID]

Perhaps there was somethig in this GUID that I could use to identify a specific mob? I added in some more debugging information so that I could see the GUID value for all creatures that I can see on their nameplates. Which looks like this…

Okay … this might be useful? My initial thought was that maybe all of these center balls always have the same GUID? Then the highlight would be relatively simple. I could just give my weak aura an array of GUID values to keep an eye on and highlight those specific ones.

However, this wasn’t really an option. It meant that in order for me to get a list of every GUID I needed to monitor … I would need to see the entire fight and take note of the GUID value for every center ball. That wasn’t going to work. So back to the drawing board.

This led me to dig into the [spawnUID] portion of the GUID; which led me to this documentation I found on wowpedia:

For Creature and Vehicle GUIDs the spawnUID component encodes a wrapping spawn time offset of the entity in the low 23 bits of the field, measured in seconds since the UNIX epoch as returned by GetServerTime() modulo 2^23. Higher bits appear to be a unique counter for individual spawns within the same time unit.

Perhaps I could use this value to be more consistent? I added a little more debugging information to my Plater Mod so I could see the break down of the SpawnUID value on my nameplate. Parsing out the SpawnUID you can get access to two values. The spawn time of the creature as well as the spawn index of the creature. I was specifically interested in the spawn index, rather than the spawn time.

This is what I came out with:

Okay great … I can see that these three mobs were spawned at the same time. And the index of those spawn times seem to be correct. This meant that I could use that index value in combination with the NPC ID to consistently add a highlight to a nameplate.

This is very consistent on the training dummies. No matter how many times I leave and come back, I can consistently highlight the center mob on these three dummies.

Preparing the Weak Aura for customizations

Now I needed a way to quickly adjust my Weak Aura for the next time I go into Sanctum. I didn’t want to bring up the code and adjust it while I was in between pulls. So I created some custom options that would allow me to give it an array of NPC ID values that I wanted to watch for.

And I also needed a field to enter in the Spawn Index of the mob that I wanted to highlight. In this instance it is 2, but with the Spiked Balls it was probably going to be something like 6 (Thank you to Chrisnba24 for confirming this.)

You can see these settings under the “Custom Options” tab for the Weak Aura.

Enable Raid Marker

You also have the option to “Enable Marks” in the “Custom Options” tab. This means that if you have raid assist, the Weak Aura will apply a raid marker to the specific ball so that other members of your raid don’t have to have the Weak Aura installed. This option can be set here …

A sad, but hopefully happy, ending …

Not entirely sad, but sad enough. Unfortunately, my guild is not going back in to work on Raznal the rest of the week, so I won’t be able to test this out until Tuesday (7/13/2021).

However, I’m fairly confident in this solution. Because all of the Spiked Balls do spawn at the same time and the should, theoretically, be assigned a spawn index. I just need to figure out what the index of the center ball will be and use that inside the Weak Aura custom option.

Before I post this up on wago.io … I want to verify that it is consistently working for the community at large to benefit from. However, for anyone who is interested in testing this out during the week … please feel free to shoot me a message on Discord (virtual#8494). I’ll be happy to share!

A Happy Ending

A huge thank you to my testers for confirming that the Weak Aura is working. We’ve been able to validate that it is highlighting the correct mob. And also confirming that the “Enable Marks” option is working as well.

Also, huge thanks to everyone who reached out and offered to test things out. There has been a lot of great feedback on this specific article as well as the community offering to test things out.

I’ll see you in the next post! 👋