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

fix(Scripts/Karazhan) Nightbane take off phase handling #18934

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

sogladev
Copy link
Contributor

@sogladev sogladev commented May 20, 2024

Changes Proposed:

This PR proposes changes to:

  • Core (units, players, creatures, game systems).
  • Scripts (bosses, spell scripts, creature scripts).
  • Database (SAI, creatures, etc).
  1. simplify invincibility until 3 flight phases are completed
  2. if a new hp threshold has been hit while flying, skip ground phase and do air phase again
  3. use intro path from wrath classic
  4. use landing path from wrath classic
  5. use intermediate waypoints to fly around, matches the "nightbane target helper position"
  6. reset boss by flying to spawn position

nightbane

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

pathing, trigger air phase mid-air WCL https://classic.warcraftlogs.com/reports/7nrz98TtXqRkdAj1#view=replay&fight=21, mentioned in chromiecraft/chromiecraft#6919 (comment)

wrath classic, sniffs: https://www.youtube.com/watch?v=vSO2Ik_e69I%0A

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.
Go Nightbane urn
.go ga id 194092

1b damage
.damage 1000000000

 AoE to kill skeleton
.cast 71122

immunity, Nef's barrier
.cast 22663

reset the instance
.tele stormwind
.instance unbind all
  1. Go to Nightbane's Urn
  2. Trigger his fly by triggering hp tresholds at 75%, 50% and 25%
    a. .damage 1000000000 one shot on pull, see if 3 flight phases happen back to back
    b. dmg5 dmg7 gm spells to reduce damage to 75% to trigger phase, deal more damage past 50% and/or 25% to skip next ground phase
    c. deal damage to 75% to trigger phase. do not reduce past 50% and observe Nightbane starts ground phase

Trigger flight phases at different times
a. during ground phase
b. before triggering landing_wp (after take off, during p2 air phase)
c. after triggering landing_wp, after he circles and is about to land

Resets
a. talk to urn then run away
b. talk to urn and .gm on
c. reset during air phase
d. reset during ground phase

Urn
a. interact with urn after reset

Known Issues and TODO List:

  • nightbane walks mid-air when loading waypoint from intro take off to intro_wp
  • nightbane walks mid-air when loading waypoint west to landing_wp
  • nightbane's combat abilities need investigating
  • nightbane takes off vertically from spawn to POINT_INTRO_TAKE_OFF instead of his actual point before doing his intro path. Taking off vertically sets his fly animation properly.

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.

use conditional schedule takeoff instead

invincibility fix and timing

no need to delay ScheduleGround
@github-actions github-actions bot added CORE Related to the core Script file-cpp Used to trigger the matrix build labels May 20, 2024
@heyitsbench
Copy link
Contributor

Not sure how it's implemented in this PR, but looking at the log commented in the linked issue, it does appear that the flight phases get queued when the HP thresholds are hit. Reading the issue implies the current flight phase should be interrupted and a new one started, which (again, to my perspective) contradicts the log.

@PkllonG
Copy link
Contributor

PkllonG commented May 20, 2024

#18935 Language is hard to express my thoughts, so I've created a PR that I'll close later.
Can you take a look at it?
@heyitsbench @sogladev

@sogladev
Copy link
Contributor Author

From my understanding Nightbane cannot be killed until he completed 3 flight phases. Every 25% a flight phase is queue'd.

From the log, for the first <50% Nightbane does not land. I'm not sure why this one skips the landing and the second <25% makes him land.

I think the proper struct should be: once in the air there's a flight queue, once it's empty we do a landing. When an air phase is triggered while in the air, it gets queued. I suspect to do it like this requires more refactoring. Phase are awkward. It uses some bools _flying,_intro and hardcoded phase 1,2 and these are changed by scheduler, waypoints and updateAI

Phases/Groups like in TC make more sense but I wanted to get the logic right first

Struct from TC https://github.com/TrinityCore/TrinityCore/blob/ad97b442938b41d5ae0f61adbf41e57b3723ca84/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp#L94

CMangos https://github.com/cmangos/mangos-wotlk/blob/bd63be95ae8e084c748eb5129366a7533edc02c4/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/karazhan/boss_nightbane.cpp#L54

@sogladev sogladev marked this pull request as draft May 26, 2024 13:23
new inro
lands
attack flag is not removed.. cant attack :)
@github-actions github-actions bot added the DB related to the SQL database label May 27, 2024
-- (172250, 8, -11130.677, -1891.4235, 107.89634, NULL, 0),
-- (172250, 9, -11110.674, -1878.7712, 107.89686, NULL, 0);

-- Intro
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice to see this. 👀

@sogladev sogladev marked this pull request as ready for review May 30, 2024 16:40
@heyitsbench heyitsbench requested a review from Kitzunu June 22, 2024 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CORE Related to the core DB related to the SQL database file-cpp Used to trigger the matrix build Ready to be Reviewed Script
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Kara] Nightbane phase handling
3 participants