Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Core/Scripting): Implement hook OnAfterCalculateLootGroupAmount() #17456

Merged
merged 1 commit into from
Oct 8, 2023

Conversation

hallgaeuer
Copy link
Contributor

Changes Proposed:

This PR proposes changes to:

  • Core (units, players, creatures, game systems).
  • Scripts (bosses, spell scripts, creature scripts).
  • Database (SAI, creatures, etc).

Adds a hook OnAfterCalculateLootGroupAmount to the loot manager directly after the config option Rate.Drop.Item.GroupAmount is read. This hook allows modules to dynamically modify the drop amount of grouped loot items.

A similar hook already exists for reference loot (OnAfterRefCount).

I'm not to sure about the name OnAfterCalculateLootGroupAmount. If somebody has a better name I'm open to it.

Issues Addressed:

SOURCE:

The changes have been validated through:

  • Live research (checked on live servers, e.g Classic WotLK, Retail, etc.)
  • Sniffs (remember to share them with the open source community!)
  • Video evidence, knowledge databases or other public sources (e.g forums, Wowhead, etc.)
  • The changes promoted by this pull request come partially or entirely from another project (cherry-pick). Cherry-picks must be committed using the proper --author tag in order to be accepted, thus crediting the original authors, unless otherwise unable to be found

Tests Performed:

This PR has been:

  • Tested in-game by the author.
  • Tested in-game by other community members/someone else other than the author/has been live on production servers.
  • This pull request requires further testing and may have edge cases to be tested.

How to Test the Changes:

  • This pull request can be tested by following the reproduction steps provided in the linked issue
  • This pull request requires further testing. Provide steps to test your changes. If it requires any specific setup e.g multiple players please specify it as well.
  1. Create a simple module that implements the hook
  2. Modify the parameter "groupAmount" passed to a higher value
  3. Observe higher drop amounts of grouped loot items

I have implemented a module to allow custom drop amounts in dungeons / raids that use this hook: https://github.com/hallgaeuer/mod-dynamic-loot-rates
The hook seems to work fine in my personal tests.

Known Issues and TODO List:

None

How to Test AzerothCore PRs

When a PR is ready to be tested, it will be marked as [WAITING TO BE TESTED].

You can help by testing PRs and writing your feedback here on the PR's page on GitHub. Follow the instructions here:

http://www.azerothcore.org/wiki/How-to-test-a-PR

REMEMBER: when testing a PR that changes something generic (i.e. a part of code that handles more than one specific thing), the tester should not only check that the PR does its job (e.g. fixing spell XXX) but especially check that the PR does not cause any regression (i.e. introducing new bugs).

For example: if a PR fixes spell X by changing a part of code that handles spells X, Y, and Z, we should not only test X, but we should test Y and Z as well.

…o existing hook 'OnAfterRefCount'. Allows for dynamic modification of the group loot rate
@github-actions github-actions bot added CORE Related to the core file-cpp Used to trigger the matrix build labels Oct 8, 2023
@kjack9
Copy link
Contributor

kjack9 commented Oct 8, 2023

I LOVE this. I have in my backlog to add a "Loot Chance Modifier" to AutoBalance, and this hook would make that super easy.

@Nyeriah Nyeriah merged commit e644dd9 into azerothcore:master Oct 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CORE Related to the core file-cpp Used to trigger the matrix build
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants