WowLegacyCore/HermesProxy

Incorrect NPC IDs being sent from server to client in AQ40

Closed this issue · 5 comments

Describe the bug
On 1.14, we use WeakAuras to identify certain NPCs (Slayers and Mindslayers within AQ40. This was very popular during the Classic days to fish for certain IDs. Based on the NPC ID, it would count what it is.

What we see however is that incorrect NPC IDs are being read by the client (or sent from the server to the client). When we see, for instance, a Mindslayer (NPC ID 15246) visually, we get back the NPC ID 15250 (a Qiraji Slayer).

This makes WeakAuras and other LUA based modules that specifically use NPC IDs unreliable.

Below is the output we get from one Instance ID, a pack containing 1 Qiraji Champion (15252), 1 Qiraji Slayer (15250) and 3 Qiraji Mindslayers (15246):

[22:30:46] Champion-Creature-0-1-0-0-15252-00000157DE
[22:30:47] Slayer-Creature-0-1-0-0-15250-0000016E7C
[22:30:49] Mindslayer-Creature-0-1-0-0-15246-0000016E7E
[22:30:54] Slayer-Creature-0-1-0-0-15250-0000016E7D
[22:31:00] Mindslayer-Creature-0-1-0-0-15246-0000016E7F

This is the WeakAura we used to test it out:

!WA:2!DRZsSXrY1jkURvC7Fsu2Y7UA962JS4hTJgsoKuwRsKxpd5qrgZFQNzK2pEXWQ7UMPBXE6U3Q6MCOc2aSeggcbiojegW3jcc8bFiGNYPehDWlwFQarGpKBrh9rDihJYRQ(Z09m9WpY2xwEGt11N3V6vVFvn0dgHQmBHPkuCK2JOpI(tY9mvhIoMugPTLoXX19ILTmF8JreD5AoowEMUhH89mCiR76z6ytLi7UEZMuS3qhIS1G(3WX02tD(kRvRIYHbWAEhlhYF9qdn0Wf9jwUx1WZZLENjNChulNcMotwRv1ADmvVFXjNHG0eG9wkupeXtsTPPTj1qQm8JN0EEeZwTWe6BmkjS5p7aDSQFZM121ftwQYkBSy9vk7bFOG8jOI7rDXwwlRtLEg1xfVn22RkmBZoh2y(svR1OATsk1IhAdcggsP6gvwzLY(agvDTq7IjkIrvxcJS8muSrTXuP99TdjbPNdCmMyJSEaqAa1V1(iBZ2ioJCl2xDXNIruCvpc2ULNXfyxUSTJn(iDG84ZObNyjuSMJToDp(u5Sc7ALBJmTxKLdwa7ASVp76SrHF)A92tzDmvZLUOPTUSJVNSHZoYTr27kFFtc6rMYRcdqfmXKvf)i7c7SYgOTXYux0o2yDztB5s3F2PK3X0ZaAJKBI3roKIKDAkJ5SNPDlzpdmmzyNXwdxGSDa3EHdaXNcULqBOSLds)bQEilyrxrPTpOXirEmWWWEW5ld7gAxHvqsrZcrP8wLPMpgZBCKAOgxG2YWdp8gdpvH5uPo(enSQzBxhINcvdG8WQb6vghe8Bf9wy3lv9J9reS8I(wwYp0W0dFarquCXPslIJVB40Rcy8vFAq7aD3VSkf3gyhLPlmDHPoWZrlK3(lY)3LZu39QRUR)y0ir6IGcjxASe2c25oSjb0hGTxKhA4NhCgyrExC8QwDELkvwROVP(Hwko1x8JNVS54BfEUyzBa3dRcY5MMTK2NITAko9Cq51RvB9vxPYI1oGVjygCs7qt7MoKa9QrDFnZw2oeC4XWkCf0keIdHU5HcMnGZ2K0j845iA34j34ataEvfs0Hu0Ie0dFGMp1ZPDnChVod9IM(2IdHJpHKm8NLdiZL1mqTD5ys(UYtLO)2X6x9osV9c0UCdUUMlYKqhNF8Sb2E7cXqEczDNu4PB73wEAqlu)yHtckraP0uwYVonqljK6cLSGab75tSLfTJP48bFNaRH9K(R0uv6XYGXAO54Zpl27m6z0tA5aQgWsLaMI9Ql9J26FU97(Ix8hyFj2fosdm7R7SJD1DmDXBY(Ymj2xbmRnQAGsZ53x3Prqtd2xtI91hLvVZ5FLQEGEQ2goU(UlyISCAr)WCR((1BOuPALAnwz5Q1Y9rGa9VrqREGIh8rUfCK31XxEhKTNSNdizbf3ugDOVBUaUt13ZZXEA(IEFmnvNf5DUMtyFRBxstd7YbFp618)u4yy5iGhoaidcwRNzBm3MkObh0XogMw4fWiDOlpIpoOxdtD862vattU4ud4cUtWecwFzBDChyOzYl9jsbNoAcFgVjeyOssYSPSTJNCZcbCcN1Td0sJ65UYZtWipSWcZ45kl6nxEzBtR8YnNi1KVtvSxjllHjLiEl5yv1iMUEJNBD75Tm12cGsSeIBkAc5yXe)VhIrBvciyAHQAiBH9g649ULglaNqOj9GnzFJF(OSl(KrocmBPzGPvb)tRBFaf(PK1oODPS3sIDj2iGlT6S3GDvIVTWxBziidNdduRAWfWk8nd998P4gChZBYEt23HDf23oAoCVOQW(ONpDVixRJmn7BjXEn2RRaOwBlyj1DhlMhX5LluOWejpdZ364eUKKuqabu3RVXkLE)kkneXZS8A3RXdxxzLfYlNMXpGhcsaV9uQ4Nsas2gZ(UxbW516IZuORjYIgHVd1nPpsmTTXfb)3UJeAtoigJvCAzQ5(w9Oc3dz7EjKy9HRzvhD8V(Cm5TE(wySBjUVxpfUGXG994XL0BSfJDYrBabBrbrmiEXgSBCb2BFJRWU8rG)FUZBUBhB9N8nDhHFEUb1abMnEVq3pUVUOtX)c8I1Gg2GDT9Jhl31PUxmXY7g64Zc6nYhz5s1RTU7LfDY1v4Uf1EOPUNr5sWNpparMDW6Io)0Jc8m)(HKZtfJ)iqeB2Cx2foG4aQoyUdWYRT(AvyxMamfFohiMyxxL7hYb2EUxCrI5JLVVpsN77xUwTumEeMos03oGd)hsqU79WWghfdhrKRRxV2klVwLqEprK0UxA51wd0)ccjqz57TuTUlLhjZRhYzVxkoBBtQPQfEtvdSzldVpLLF795NDeXDTPOj)GgXGDtEWxSjppBkrJPhvLcb3yHvxQoxLN3xrXiZYMJTm7cS7uMhebBLRWwDt2pwsbz5AGgU8JDCApeBjjLDeYB3raCmFORdqteu8WB6(nJCMWL0lysranQBW(qd2pkiuRNkSilhyxJ9pTjR8xHnpBb2pK9USkho1knlV2kTR)Ov7aXJYJrdudFfj26l9B2(TF1V7lEXNZpgXJzFzGeFTZF5)V9IqOXtJAXJw04jL4l6r0BCUZDU)v33mCv1sODQnBS6j3JOos(fV4f)kUhrx5mMUBdUbQWVgk2lPuSlrP)3(J4H7a8tKYkcMEgj7EH9sJmMRhS)1F3rinoiaECzhxqcW4r2(Lgq4cPHra5K9yrevQrLImNf7j8oCpHupUTl1Y7EpiS5XBb)lzGOCd95LFmM4KhYrHNesdt98Xrii(GNVrdFElBxnrpIuD4DXdIZJaBFMGNVBMlFxWh68T7m5EFJmXgfSN4F38MY3ZhtbEc2RXIauA7Okd5Fy7z6TRS6UY(8drqMuUipEQHqyMGPrEyMMEqIe3R(YlKmszbk7kzaOAuOPLJdzC4uGFBvmz8yY6oGHPXNo)CtKxE6BnXK3EcEWODPTywrW4Y3fIfA65koxXCYiGa4my)QHFixi8rDJ2igoPIJS3PhePtQyeI(ZfoDcI35dxXnZvOqx5CiboyfZ)QEeiPORmjPeYUulnEvrBFXCgg882NuA2BLHukXHYSKthZ8gOaku80n18JxaLXzZtVikZd2hVqktzZCtLHSjn)oabZPsOeksQEkehV0II)uigM9DYqmeAh(yvpspNEKcGbLZUCOhZTNE5qF2PFjKdZmxwQdHg5pwbrpt6pfsI(CUCg0j63V0jinGFfrSNLVli0LWiZhKV(bzYiJrh8iP87Nj7KXqz6))KnvmvkZMhxCahVo2usNKCFkP(8mikmwHGYaakEtNEJm7K3d0whimMjnmsuMIg883gCgTdAxhs3Z3sNNZHsI9)KffQxAbfn3cyBraWItsIPoEmHn(Ge1)T89e(cgObX7cREMIY38yqSyUtKidFhICgOodnIF4DprWka0eH51kXEWMzhF9T7gF9YQbP34(9ZAIt3aPQsWBBcbB1OnQZLYgEZfdVY8CJy8CEy)9BY(5zKJd7FG9pgNzt2G7DIb3rPYKDy3RMnrkYrCtrImUxpZPuSxgbsP52FW8p8w03P1IR)bh0nD1F6xfYL2ZY0gZ(zS7ls8KP05v(j)zQ0Sb921SsQ521KsYUJ30H(hBSbD0TFv9uN(sSI(phLLv7e4Cfm)kmiiEG6HLkCSUwRbRajdIT3vFcQWYfkipwIRoHo2XhjPuMuyu(TJjLCHFHUw4dccHQwci0vnlQ1PIgcvddiIU6KXn)IAj5dwAOOk)X5LnyWibs(mD42lbfQUYnwFuQ6w9MNlZYCKYySH7f7EXr1D1HUyV5Zsxnowh234Rpk7I)ErfEVc7BZ(jWV8I3(gSR(SGLVqy9A7m0VmBdC(ec227eVjPE167UUOwNvT9xoiKuB)LKgsQT)YbIEmLCSWi88s4q5LNEQPYNSy4s86OR7(Xzxl8WERvs5EqutZVuP1UxLfYxFJfkvRsJvxVE1kR)ay86RTCTu1nVu1WV3aawq4w9wxDwdqv5TKy178L(Vtu4(462doqWIusYeBbPOu320Rshtk)6kA74tXoBJj5MiES5r2L88qABnEUGB7px(uZlLBOafYwbfsIVAEPCsb3Ko3AfvgPmt(4yl21Xv1IawotXE)SShI0c7D88RC3zDA42Oj)NbwnlomT6wU(cHiDrToUapsDXlPeVbCQV5Qi3LxGFlBnGwfUh2RmM6bnx0HW5)yrwkEpEzqkkZo9SDdNxenD6YPD6ITVV6J8hFW(Pazp3TxYO)pjhvNCcaszGfH0xkJk(iwh3Ax374n3edshQB(vN8XJEYJl7Qr0hmtDZCzcZUgR6bMHmuSD3eSb3g9w53(KSsNH8zRSz3qCLWH3PcB94G8mJVZcU(JbpHoqpv4jHZ2Zo)e6M90Xqj8jF6Xu)X(3)DnZVIAXLGZVT4odTspbbDgCZNP9TtB4sNPf)sVWKbhD2WyYyIYCLzjEzT)1NlZm2DJYV)JyYB9sFH4zx7GIHTuxtC5nIBk)nUcSox3VZaQmquXgC)ENyPdm2l(UF5xk7GItNGrwTBWFSIkIR6LT0O7hBPEusOFXnve2SVKIWs4fyVYn2MDzvk2cR5PUnYYhtVtr(tSznNILOBr0Xnr(wExOmhWppix3yl3eikOfWunJIBH3L9FY(fINW3VN)abdFNAcO750QLfM9Bny)IHzFgPsaLW(8nz)o2)bBC3z5vbqo81vkUETGY3Td3jYJDS5El4VlhNMYLmSht8S8k8VWUScbbAiaCk2g1PuziEd3Hbuueu0hca9VH9BVe7ZCFTvrDmB7BNi)E555YaaZQBqeV7dbsrjPIeuaFSGYeaeqY0fnPY4p2NFhLoCxQwykfMmIVcyiuB(AkCO41SGfpaWnzFUXbCbz4tYdi2dfxBULfYLI3K9zhiefcX8EAHDBaks)L7Bz220l4PIUV4b)jEVHuZ2UGO93X(3zf)whMqXOZqJ0fu3r(6GkLK0kHjGpUi(1j5HKDZWOfUzw)fVGRRD7jVU27ivn4mP4nLY7D6PM8wssRgfnCGCDaWcM9K3wo6ocPW3ftwYfzOJzKdk)pvsQMJhiyVU2Stodq48iiheWH1nxsabFFR(HZpGdNd79rMK9zPIneVSfXBmsrCVSd4y8uDpg)2d(ncOVlSLBQ1WZauQmCS03DGhHJrl7)X9AdgIUeSMj)9QoS7yzbPzAOdtOnYQ7mhkBlxthXb)BSYdtcFFmL5Ve1SN)mXZpNP(ZcFGSZheQ4Erp6f2pnBYA6mil(R9iBu9d6wVy(Rb5oL5p0LSbCXtn)ERUa9hlf8MwYEZyMuBgJS9)179)d

Game Server
Everlook Europe

Hermes Proxy Version
02:27:42 | Server | Server | Version 2023-10-19 official 3.10.0
02:27:42 | Server | Server | Modern (Client) Build: V1_14_2_42597
02:27:42 | Server | Server | Legacy (Server) Build: V1_12_1_5875

0blu commented

Might actually be a vMangos issue.
@ratkosrb

We use guids differently than Blizzard. We don't have dynamic guids. The entry in the guid is always the first entry set for this spawn, we don't change the creature's guid depending on which entry is selected.

So no matter what, it will always return 2 mindslayers and 2 slayers. How is the server able to determine which one it spawns then? Or is there a subcall to randomize it?

But even then, it should still show the correct NPC ID, right? Otherwise, the client would not be able to understand it.

The actual entry that has been selected is set in the update fields, in OBJECT_FIELD_ENTRY. The client does not care what entry is set in the guid, that is not read by it. It only uses the guid as an unique identifier to tell objects apart, it does not break down and parse its contents. You are using some kind of addon to read the entry from the guid, the client doesn't use that by itself. The server needs the guid to be always the same for a given spawn position, many parts of the code make the assumption the guid is static, in order to fetch a given spawn by its low guid. If it were changed it would break many things.

You should update your addon to check the Unit's name and tell the entry based on that.

alright, this is a very clear answer to me. Thank you!