classicdb / database

Classic DB is a content database for CMaNGOS Classic: world, NPCs, objects, quests and so on.
https://github.com/cmangos/mangos-classic
Other
87 stars 59 forks source link

Warpwood Pod #711

Open TheTrueAnimal opened 9 years ago

TheTrueAnimal commented 9 years ago

When you get near the GOB or open it one of the following things should happen:

GOB: http://www.wowhead.com/object=179526 http://wowdata.buffed.de/object/Wucherborkenkapsel-179526 http://www.wowwiki.com/Warpwood_Pod

Rushor commented 9 years ago

just clicked these things on retail, never saw anything of these event. i think blizz reduced the chance of these event :(

Rushor commented 9 years ago

okay well, some of theme server as areatrigger like the eggs in front of onyxia, these areatriggerthings sometimes give you the debuff: http://www.wowhead.com/spell=22802/choking-spores

Rushor commented 9 years ago

going to sniff this soon :)

cala commented 8 years ago

I hereby summon forth the Mighty, Terrible and Ever Over Busy Warlock @evil-at-wow .

Summon succeed.

You made a very nice rework of DM:East and the warpwood pods are part of this, so you might have sniffs to help me here.

There are 4 "warpwood pods" GO in the DB currently: 179526, 179528, 179532, 179533. All are chests and the second one is the "true" warpwood pod, cointaining loot and working, while the other three are the trapped ones, not working.

I would like to know if by any chance you could tell me, please :

Thanks! :smile:

evil-at-wow commented 8 years ago

You rang?

Ah, DM. When I started respawning DM I only cared about the creature spawns, not the GOs or creature stats etc. But I remember those pesky GOs, and what they do. And no doubt I have data for those too. I'll have a look and see if I can answer your questions.

evil-at-wow commented 8 years ago

Well, that was an interesting one. First, the easy stuff.

I started by searching for the SMSG_GAMEOBJECT_QUERY_RESPONSE packets for the four normal GOs, because they contain the 24 data fields. Here's the raw data taken from version 3.0.3, build 9183 (the left column is an offset in hex, the column in the middle contains the raw data in hex, and the right column shows the printable ASCII characters where available):

0000:0000 | 46 bd 02 00 03 00 00 00 87 01 00 00 57 61 72 70 | F...........Warp | 
0000:0010 | 77 6f 6f 64 20 50 6f 64 00 00 00 00 00 00 00 00 | wood Pod........ | 
0000:0020 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 | ................ | 
0000:0030 | 00 00 00 00 00 00 00 00 00 00 00 47 bd 02 00 00 | ...........G.... | 
0000:0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0080 | 00 80 3f                                        | ..?              | 

0000:0000 | 48 bd 02 00 03 00 00 00 87 01 00 00 57 61 72 70 | H...........Warp | 
0000:0010 | 77 6f 6f 64 20 50 6f 64 00 00 00 00 00 00 00 39 | wood Pod.......9 | 
0000:0020 | 00 00 00 a4 40 00 00 00 00 00 00 01 00 00 00 00 | ....@........... | 
0000:0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0080 | 00 80 3f                                        | ..?              | 

0000:0000 | 4c bd 02 00 03 00 00 00 87 01 00 00 57 61 72 70 | L...........Warp | 
0000:0010 | 77 6f 6f 64 20 50 6f 64 00 00 00 00 00 00 00 00 | wood Pod........ | 
0000:0020 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 | ................ | 
0000:0030 | 00 00 00 00 00 00 00 00 00 00 00 4a bd 02 00 00 | ...........J.... | 
0000:0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0080 | 00 80 3f                                        | ..?              | 

0000:0000 | 4d bd 02 00 03 00 00 00 87 01 00 00 57 61 72 70 | M...........Warp | 
0000:0010 | 77 6f 6f 64 20 50 6f 64 00 00 00 00 00 00 00 00 | wood Pod........ | 
0000:0020 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 | ................ | 
0000:0030 | 00 00 00 00 00 00 00 00 00 00 00 4b bd 02 00 00 | ...........K.... | 
0000:0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | 
0000:0080 | 00 80 3f                                        | ..?              | 

So indeed, the four GOs are all type 3 (GAMEOBJECT_TYPE_CHEST), they all have display ID 0x00000187 = 391 and they all have the name "Warpwood Pod" and size 0x3f800000 = 1.0.

The data fields extracted from this are as follows: Entry 179526: 0 0 0 1 0 0 0 179527 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Entry 179528: 57 16458 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Entry 179532: 0 0 0 1 0 0 0 179530 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Entry 179533: 0 0 0 1 0 0 0 179531 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

This matches the data in TBC-DB and answers your first question: The GOs have no value set for data0, except for the ones with loot.

Your second question was also easy to answer by doing a search: The trap GOs are not spawned with their normal counterparts.

This is where things started to get interesting, because this data set was supposed to be a full DM:East clear. The 'Felvine Shard' spawns kind of confirmed that. My conclusion was that, in the entire run, not a single trap GO was spawned! Which was is rather unexpected, because the GOs have a not so small radius that triggers them. Also, I quickly found some Whip Lasher spawns in positions where they don't spawn initially, which is again proof that I triggered some traps in the run. After an interesting search for any trap GO entries, I came to the following conclusions.

The fact that I don't find any spawns could be a bug in my parser, as I initially believed. But then I found proof for my theory in the form of a single pair of packets:

Packet with opcode 0x005E (CMSG_GAMEOBJECT_QUERY)
0000:0000 | 47 bd 02 00 6f 02 00 47 bd 02 10 f1             | G...o..G....     | 

Packet with opcode 0x005F (SMSG_GAMEOBJECT_QUERY_RESPONSE)
0000:0000 | 47 bd 02 80                                     | G...             |

Basically, you see the client asking the server to send the GO data for the GO with entry 0x0002bd47 = 179527, which is one of the three trap GOs. And the server responds with a packet containing (entry | 0x80000000). This means something like "there is no such GO"! The core does the same, see WorldSession::HandleGameObjectQueryOpcode in QueryHandler.cpp. So even when asked by the client, the server doesn't send the data, leading to the following conclusion.

This brings up the question if there is something we can find out without having the trap GO data? As it turns out, the answer is yes, because one gives away its cover anyway - trap GO 179527. I found the first reference to it in this packet:

Packet with opcode 0x024E (SMSG_PERIODICAURALOG)
0000:0000 | f9 XX XX XX XX XX XX fb 6f 02 47 bd 02 10 f1 10 | ...3k@..o.G..... | 
0000:0010 | 59 00 00 01 00 00 00 03 00 00 00 be 00 00 00 00 | Y............... | 
0000:0020 | 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00    | ...............  | 

The packet starts with two packed GUIDs for the target, which is masked above but was my Felguard, and the caster. Note that the caster GUID is a GUID for a GO with entry 179527. That's our trap GO! And the very next packet after this one was the CMSG_GAMEOBJECT_QUERY packet I mentioned earlier, sent by the client to query information for this unknown GO.

The good news is that this packet also contains the aura's spell ID, in our case that's spell 0x00005910 = 22800 = "Entangling Roots". Note that this is a different spell than the one mentioned in the first post here!

Digging even further, I found out how the other trap GOs work, even though they remain below the radar themselves, at least as far as I could see.

Trap GO 179530 is spawning a single 'creature' when activated, which is sent to the client as any other spawn: creature entry 14366 (Warpwood Spores). I believe this is what is shown as the green cloud ingame. It casts an AoE spell on itself affecting players (SMSG_SPELL_GO and SMSG_AURA_UPDATE packets follow later for the spell, but they are not relevant here):

Packet 0x0131 (SMSG_SPELL_START)
0000:0000 | db fe 0f 1e 38 30 f1 db fe 0f 1e 38 30 f1 00 12 | ....80.....80... | 
0000:0010 | 59 00 00 0a 00 00 00 00 00 00 00 00 00 00 00    | Y..............  | 

As you can see, both the target GUID and caster GUID are the same (casting on self), and the spell ID = 0x00005912 = 22802 = "Choking Spores".

Finally, there is trap GO 179531, spawning four NPCs: creature entry 13022 (Whip Lasher). They are all four spawned on the exact same position and with the same orientation, so unless you aggro them it is hard to see there are four of them.

Sadly, the positions of the NPCs spawned by the trap GOs are not matching the positions of the normal GOs. The Warpwood Spores are very close, so I could match them with their trap GO. The Whip Lashers are typically spawned a little bit futher away, but at first sight they seem to have a fixed location for a given Warpwood Pod location (meaning they are not spawned in some random direction from the GO). I'll collect all spawn data I have for these later.

A few final general observations: it looks like the Warpwood Pod locations are fixed, but the type that spawns in each location is certainly not fixed. It looks like any of the four GOs can spawn in any location, with roughly the same chance. For example, in my first full run, I saw 54 GO spawns, divided over the possible GOs in increasing GO entry as 12/18/12/12.

cala commented 8 years ago

You are truly amazing! :+1:

The locations and pools for the GOs are already in the DB and seem quite good from what I can tell from memory. What is not working are the three traps. So, from what you are telling me, they are activated server side, this means we could go here for a SD2 solution I believe, assigning a script to the three trapped GOs, triggering when player comes in range.

cala commented 8 years ago

I did not forget that issue, but I'm committed on other ones before. Nonetheless, I take the opportunity to poke our little warlock gnome to see if he can release some stuff about DM West or East. I finished the rework of Stratholme and now I'm thinking to look at Dire Maul now, so if I could outsource the work to Belgium, it would be nice! :tongue:

evil-at-wow commented 8 years ago

Did you have any data in particular in mind for DM East? I'm assuming you're not looking for spawn data because, as you know, all creature spawns and associated waypoints were redone by me a while ago. And you've mentioned here that the GO spawns and locations seem quite good (which is probably true; I didn't check lately).

For DM West, I can share some spawn data with you, and some conclusions from my research. I've probably mentioned before that I believe there is currently no way to spawn it perfectly, but maybe we should go for an acceptable state after all, as it's not looking like my grand plan to fix that will be finished anytime soon.

I should warn you though: the prices for highly skilled cough labor here are much, much higher than those of the well known other places for outsourcing work! :wink:

dagochen commented 8 years ago

Option a) Make every gameobject do its own job, like trap/loot/poison/spawn creatures.... and place them at same position and pool them, so only one of them is active any time.

Option b) Remove all except a single one at each spawnpoint and write a SD-Script which randomly triggers one of the spells or rolls the loot.

cala commented 8 years ago

@evil-at-wow my apologies: I wrote "east", but was thinking "north". Though @Tobschinski already cleaned many things there, so my concern is really about the West Wing. I know you are busy and that the core does not allow to have the proper spawns (I remember something about the flawed pool system, if my memory serves). But any data about the correct spawns and patrols would already be a welcome improvement as it seems that many things in the current state of the DB were added manually.

As for your reward, you'll still get my eternal admiration but I assume that would not be enough for you and you would even want something more valuable than basmati rice (typical outsourced currency). So, you should ask for @Tobschinski , he is in charge of the Classic DB treasure. Well, he keeps it in some deep and dark place, but nothing that should afraid a dread, mighty and dark warlock like yourself.

evil-at-wow commented 8 years ago

I was already wondering why you didn't mention DM North yet, and I think I have the explanation now :wink:

I'll try to bring some minimal order in the raw data chaos, then send it your way. I'll try to get it done this weekend but it could be the week after though.

evil-at-wow commented 7 years ago

@cala Just in case you've missed it: I've sent a bunch of DM data your way some time ago, so you might want to check your forum's inbox.