Jump to content

Corpse Looting Rewrite


Recommended Posts

Yes, the first one to pick them up gets them.

The same seems to go for above threshold items everyone passed on. Everyone can loot them, but I'm not sure if the person tagged for loot should loot first then or if they become available as soon as everyone passed.

Another question:

what is the message you receive when you try to loot not yours loot? Is it "You do not meet the requirements to loot that item" and the item is colored red?

EDIT: Almost Finished.

What does the patch currently do?

  • * implement round robin looting method as a separate method and as a method for under threshold items in Group Loot/ Need Before Greed
    * seperate Master Looter GUID and last tagged looter GUID
    * Send Master Looter GUID only if loot method is Master Looter.

Known Issues

  • * Instead of "Looter: Player" Currently display "Player's Minion/Pet". This is because I couldn't find how to do the "Looter: Player" :(

PATCH (for revision 8296)

Link to comment
Share on other sites

First off, very good job on trying to get the loot system right. The principles seem very sound. There is still one slight problem with the looting system. You shouldn't even be able to attempt to loot the corpse if it's not assigned to you, unless it has a quest item for you. Regardless, I must say I'm pleased with the work. :D

Link to comment
Share on other sites

To not be able to attempt to loot a cropse not tagged for you unless there are quest items, the loot has to be generated before the actual looting process. Meaning, as I suggested looting generation has to be moved from "on click" to at least "on kill".

If there are no objectins to doing this, I'll happily do it (However previous comments didn't really like the idea, did they?).

BTW, anyone has any idea on what is the right update flag to be used to display "Looter: Player", cause I won't find time to check all of them any soon.

Link to comment
Share on other sites

One more thing I noticed, is Master Looter only is for items above the threshold. Items below the threshold are distributed by round robin in Master Looter. It's currently set to in Master Looter, items are Free for All when under the threshold, which is not correct.

Another thing I noticed, is Pass On Loot is not working. When this option is selected, that person doesn't receive any loot in the Round Robin fashion. Their turn is skipped.

Also, when you switch from Free for All to one of the others, it's a bug that no one can loot the corpses of enemies killed while in Free for All mode.

EDIT - When a creature has no loot, it should not be assigned to someone, nor should it sparkle like it does.

A problem with loot over the threshold, is if your group is not near you and you kill an enemy that drops an item over the threshold, the loot should simply be yours without a rolling box appearing.

Link to comment
Share on other sites

Hm we have contradicting descriptions here somehow...

: even if a mob is tagged for you to loot, other players in your group can see the loot when right clicking and they can even loot things like money (divided over all players as usual) or items to roll for (causes the need/greed to pop up)

vs.

You shouldn't even be able to attempt to loot the corpse if it's not assigned to you, unless it has a quest item for you.

So can other players open the loot window or not?

Anyway, let's talk a bit about code.

First, in existing code LootItem::freeforall seems to refer to party loot (everyone gets a "copy" of the item), is that correct? Someone might want to rename that attribute then..."free for all" means the fastest one will get it, so this is confusing...

About the patch code, i have some troubles following it...

The function "RoundRobin" seems not to do anything round robin related to me. I'd expect it to determine the guid allowed to loot below threshold items. But that already seems to be done in Group::UpdateLooterGuid().

Instead RoundRobin() messes with is_underthreshold attributes, which looks hacky to me. Round Robin defines a distrinution method, the threshold is set by methods "falling back" to Round Robin for below-thresold items, which are 'Group Loot', 'Need before Greed' and 'Master Loot'.

So, to me it seems what was missing is basically just a way to block below-threshold items for players other than the one returned by GetLooterGuid(), and remove restriction when said player has closed the looting window.

Also, these lines look weird from a coding standpoint:

uint8 itemSlot = 0;
   for (i=loot->items.begin(); i != loot->items.end(); ++i, ++itemSlot)
   {
       if (!i->freeforall)
           loot->items[itemSlot].is_underthreshold = true;
   }

Isn't "loot->items[itemSlot]" simply "i"? So why not just write:

    for (i=loot->items.begin(); i != loot->items.end(); ++i)
   {
       if (!i->freeforall)
           i->is_underthreshold = true;
   }

Link to comment
Share on other sites

Hm we have contradicting descriptions here somehow...

vs.

So can other players open the loot window or not?

In my experience, the body only sparkles for the assigned looter. I think the case he is talking about is when there is an item OVER the threshold in addition to regular items. Then if I'm not mistaken (it's been awhile since I've been in a group when an item over the threshold dropped on retail), the body sparkles for the whole party, and everyone can see the item.

Edit: I found something interesting on looting on retail compared with here. On official, when a mob is put into the world it already has its loot table, so mobs with no loot do not sparkle.

Link to comment
Share on other sites

Edit: I found something interesting on looting on retail compared with here. On official, when a mob is put into the world it already has its loot table, so mobs with no loot do not sparkle.

You are wrong m8.

Today i had few times ..death mob without loot with loot animation.

also

few days ago I made avi ... please check post nr#23

Link to comment
Share on other sites

About the patch code, i have some troubles following it...

The function "RoundRobin" seems not to do anything round robin related to me. I'd expect it to determine the guid allowed to loot below threshold items. But that already seems to be done in Group::UpdateLooterGuid().

Instead RoundRobin() messes with is_underthreshold attributes, which looks hacky to me. Round Robin defines a distrinution method, the threshold is set by methods "falling back" to Round Robin for below-thresold items, which are 'Group Loot', 'Need before Greed' and 'Master Loot'.

So, to me it seems what was missing is basically just a way to block below-threshold items for players other than the one returned by GetLooterGuid(), and remove restriction when said player has closed the looting window.

I just wrote it according to the other loot method functions , which basically start rolls on above threshold and mark below threshold items. In round Robin, from my point of view, all items are below threshold - there are no rolls and all items handled exactly as below threshold items in GL/NbG, so I just used the current block and didn't create another one - that's unneccesary.

Now, about GetLooterGuid() - that's a per group variable. And a group doesn't kill -> loot -> kill -> loot, does it? So using it for per monster looter setting is impossible. For that, I added a variable with looter GUID to monster. Group LooterGUID should be used only for ML.

The code you corrected after that - sorry, my stupid mistake :)

One more thing I noticed, is Master Looter only is for items above the threshold. Items below the threshold are distributed by round robin in Master Looter. It's currently set to in Master Looter, items are Free for All when under the threshold, which is not correct.

Didn't know, shouldn't be hard to do.

Another thing I noticed, is Pass On Loot is not working. When this option is selected, that person doesn't receive any loot in the Round Robin fashion. Their turn is skipped.

I didn't touch it yet, because I want everything else working before it.

Also, when you switch from Free for All to one of the others, it's a bug that no one can loot the corpses of enemies killed while in Free for All mode.

I'll look into it. I can already guess what's causing it. A simple question - mobs that were killed in FFA should be still be looted as FFA, right? Cause if after the switch the mobs already killed have to be looted in the new method - It'll be impossible to implement without keeping track of all killed monsters - a good memory hog.

When a creature has no loot, it should not be assigned to someone, nor should it sparkle like it does.

Well, then I'll be moving loot generation to on kill to implement this. But this sounds strange - If creature 100% doesn't have any loot it already doesn't sparkle, and I added the next looter decider function at the same place, so this shouldn't happen. When it is random if it gets loot or not, people already shown that it does sparkle, and if it does sparkle than it should be assigned.

A problem with loot over the threshold, is if your group is not near you and you kill an enemy that drops an item over the threshold, the loot should simply be yours without a rolling box appearing.

Works with Round Robin turns, just need to copy the code to rolls then.

Another question : Only the group sees the tag, or all players? (this may help me to get the "Looter : name" get working)

Link to comment
Share on other sites

Another question:

what is the message you receive when you try to loot not yours loot? Is it "You do not meet the requirements to loot that item" and the item is colored red?

I'm not very sure to be honest, but I've seen/heard two messages:

"That would be stealing!"

"You do not meet the requirements to loot that item"

I think the former is used for "normal loot", while that last is used for above treshold items still on roll, but I'm not too sure. I'll try to keep an eye on the looting system and its various messages more closely when I play on offi ^_^

In my experience, the body only sparkles for the assigned looter. I think the case he is talking about is when there is an item OVER the threshold in addition to regular items. Then if I'm not mistaken (it's been awhile since I've been in a group when an item over the threshold dropped on retail), the body sparkles for the whole party, and everyone can see the item.

You might have a point. I've had a look at loot (without actually trying to loot) plenty of times when I was not the assigned looter and there was an above treshhold item (usually some boss in instances/raids), and in that case I can see the loot etc, as I described earlier.

On the other hand, I'm also pretty sure I've had looks at loot not assigned to me when just questing with a friend or in the case of trash mobs in instances (and we all know greens don't drop like every 2 mobs). But on the other hand I think you are correct that bodies only sparkle for the assigned looter... so I'm in doubt now.

All of the above was with group loot btw.

Time to go check how it's done on offi :lol:

Link to comment
Share on other sites

I'm not very sure to be honest, but I've seen/heard two messages:

"That would be stealing!"

"You do not meet the requirements to loot that item"

I think the former is used for "normal loot", while that last is used for above treshold items still on roll, but I'm not too sure. I'll try to keep an eye on the looting system and its various messages more closely when I play on offi

Above threshold items send the message "That item is still being rolled for", and the message makes sense. I wasn't able to reproduce "That would be stealing!", are you sure it exists?

BTW, could you sniff the packets while playing? That may help me a bit :)

Link to comment
Share on other sites

Above threshold items send the message "That item is still being rolled for", and the message makes sense.

Hmm, indeed. I remember getting that one too!

Ok, second guess then: I got that message when the roll was done, someone else won it but his/her bags were full so he/she didn't receive it automatically and I clicked on it seeing it in the loot window because I just clicked everything without thinking (shift click?) because it was "my" loot mob?

I wasn't able to reproduce "That would be stealing!", are you sure it exists?

Oh yes, very very sure! I remember laughing the first time I heared that one! Note that I'm talking about 3.1 and before here. I haven't played since 3.2 dropped because of work though, but I'd seriously doubt they have removed that one...

BTW, could you sniff the packets while playing? That may help me a bit :)

That might be rather difficult no? Now that 3.1 uses some other/better encryption or so? I don't know any details, so correct me if I'm wrong.

On the other hand, I honestly have to admit I don't really like the chances of loosing my account either... so I'll see about that.

Anyway: I'll be able to play more in the near future, and you can bet I'll keep a close eye on how loot is done at offi! I'll report my finding of course!

Link to comment
Share on other sites

Sorry to say, but I got really confused already about how everything works on retail. Thus, I decided to stop working on that patch, as I have too much questions, but I can't check anything cause I don't have retail account :(. If anyone wants to continue from where I stopped, fell free. (Though, I have a feeling that to complete all that half of group.cpp has to be rewriten xD)

Link to comment
Share on other sites

Sorry to say, but I got really confused already about how everything works on retail.

Don't worry, I'm confused too after this discussion :lol:

But at least it shows that we see so many things without really thinking about them or fully realizing them! So the questions and the discussion have been very valuable! I'm gona check on offi soon and study the loot behaviour to answer the questions I (and we all obviously) still have.

If you want my opinion: finish whatever you were working on, given certain assumptions (sure some might not be offi like but so what?) and document these. You know, something like:

This patch makes loot a bit better but assumes the following:

- a body is sparkling only if...

- you get "<message>" when you try to...

- ...

Then another step in the good direction is made and not lost.

Sure, like I said, some assumptions might be wrong or not offi like. Well, so be it. If anyone finds out he or she can still fix it afterwards, like you say. If that requires some major code changes, then well, so be it :)

Thanks for giving this a real try (regardless of the state you'll leave this in); it is much appreciated! :)

Link to comment
Share on other sites

I'm not very sure to be honest, but I've seen/heard two messages:

"That would be stealing!"

"You do not meet the requirements to loot that item"

Offy servers are offen lagy, you get the "That would be stealing!" when you try to loot a corpse (you are allowed too) and someone else in your group (which was allowed too) did loot everything on the mob at the time server receive your click. The happens also when you try to mine a corpse and someone else already did faster than you.

For "You do not meet the requirements to loot that item", it's in the rolling part. When you have the loot window open and you try to pick an item for which rolls have not completed or you did not win.

This happens mainly because offy has a small bug. Sometime the server does not send loots to the winner. The winner has to go loot the boss again to get the item, and if you auto-loot the boss to get the quest items for example, you get the message telling "You do not meet the requirement" about the other loots still on the boss.

Link to comment
Share on other sites

  • 4 weeks later...
  • 4 months later...
  • 2 weeks later...

Part of the reason Blizzard generates loot at creation may be because (unconfirmed) in the event a creature drops a special staff for example, it will sometimes have it equipped as opposed to the normal item creatures of his/her type use. That would be impossible w/o loading at creation.

Link to comment
Share on other sites

Part of the reason Blizzard generates loot at creation may be because (unconfirmed) in the event a creature drops a special staff for example, it will sometimes have it equipped as opposed to the normal item creatures of his/her type use. That would be impossible w/o loading at creation.

Source? I played Blizz for ~3 years and never noticed this :S

Link to comment
Share on other sites

Part of the reason Blizzard generates loot at creation may be because (unconfirmed) in the event a creature drops a special staff for example, it will sometimes have it equipped as opposed to the normal item creatures of his/her type use. That would be impossible w/o loading at creation.

why impossible? the "equipped" items on mobs are just a values in unit fields, has nothing to do with regular items

about looting, don't forget about chests, they still ignore group loot rules...

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use