-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
fix(Scripts/BossAI): add optional variable to BossAI class to make sure the boss calls for help #18630
Conversation
this kind of "making sure groups arent split by buguse" should be implemented also for trash groups in raids and selectively applied to the group (so not calling the room but calling the npcs that belong together). e.g. the 4 initial mobs in AQ40, literally ALL groups formations in raids |
Yes but that is not a trivial fix. So this comes first |
of course its not trivial, thats also why this issue reappears every raid again. bwl AQ |
Well, is there some consensus on how it should actually work? As far as I can tell, there a several issues, that are similar but not the same.
|
tldr:
typical scenarios are:
and in 2) is the issue. I guess, the easiest solution would be as following: IF a mob is part of a group, engaging with that pack (e.g. by attacking a single mob, healing, buffing etc.) should add the player to the threat table of all mobs of that group or formation. It should not cause them to change their current aggro target, but they should be on the aggro table. that way, if hunter pulls a group and someone attacks 1 target, a feign death will cause all mobs to go for that 2nd player after feign death. alternatively, 1 approach would be that mobs "resetting", re-engage on the current target of a mob that is part of a formation and already attacking a target. so either the mobs check - or an mob infight calls their formation for assistance every second. |
that way, you would be closer to blizzlike from what I would say, and remove a lot of exploit behavior - given mobs are "grouped" coherently across all raids |
Well, it is exactly that "alternatively, 1 approach would be that [...]" part that I'm curious about. Does anyone know if attacking a mob of a group actually adds threat for all mobs of that group of official servers? Or if its the latter, mobs automatically assisting their group members if their own threat table is empty for example. Because both solutions don't really sound that complicated to implement but it's usually nice to know the correct approach before starting to code. |
i understand that approach. its the decision between a temporarily solution or the correct solution. |
It's not so much about temporary solution vs permanent solution but about correct vs incorrect solution. (Although a temporary fix is usually bad as "Nothing is more permanent than a temporary solution." When something is fixed 90% people tend to care much less about the remaining 10% and it will never be fixed completely.) E.g., a temporary solution might be added to the current threat system. A permanent solution could probably be part of a complete threat rewrite ( #5985 ). Even a permanent solution would probably not be accepted if it was incorrect and lead to regressions. From my experience, people can live with long-time bugs but will scream loudly as soon as something that worked before, suddenly doesn't. But, for example, can you tell me what should happen in this case: Currently, mob A would reset. Instead, which player should mob A attack now? P2 or P3? |
Definite answer I cannot give cause I cannot test it on retail, but: in case both have been out of range / distance to generate threat on mob A, imo mob A should start attacking the next closest target that is also on the threat table of mob B (or in cause of a group, on the next closest target that is on the combined threat table of the mobs forming a group) an approach ala "the next best/closest target" if otherwise would force a reset - although that could have other issues. regarding breaking: there is also an approach to reverse this matter, that has other advantages and disadvantages: would be a different approach - not be to blizzlike - but to reduce exploiting |
…re the boss calls for help (azerothcore#18630) init
Some bosses make sure all nearby friendly creatures assist the boss when engaged. The problem here can be that this is only called on being engaged, which means that if a hunter uses FD right after pull, the boss will move to other targets (due to SetInCombatWithZone) but all the aggroed creatures will reset. This PR makes sure this call for help is called every 2 seconds during combat.
Problems may arise when we implement this on bosses that can move around a lot, as they would start calling every creature in the vicinity as they move around, which wouldn't be intentional. For the current 2 bosses I added this to in the PR, however, this is not an issue, as they have a boundary. And even at the max range of that boundary the range for call to help does not reach creatures it shouldn't.
Changes Proposed:
This PR proposes changes to:
Issues Addressed:
SOURCE:
The changes have been validated through:
Tests Performed:
This PR has been:
How to Test the Changes:
Known Issues and TODO List:
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.