Compare commits

...

10 Commits

Author SHA1 Message Date
tabooo
91779d10cc
Merge ca10c7cbe245745719395be58077b8b5bd14dd6e into 835283bf26b02bd3c6e88505b123ad65aa9d0e98 2025-02-24 15:57:48 +04:00
Andrew
835283bf26
feat(Core/Scripting): Implement ScheduleEnrageTimer() helper (#21597) 2025-02-24 09:59:18 +01:00
Andrew
8f6d651471
fix(Scripts/SunwellPlateau): Felmyst should cast Noxious Cloud only a… (#21596) 2025-02-24 02:36:22 -03:00
github-actions[bot]
f6c29614d5 chore(DB): import pending files
Referenced commit(s): 96e7a20bd9325618b7adbd1381aa4e0e50bdba23
2025-02-24 05:19:56 +00:00
Andrew
96e7a20bd9
fix(DB/Creature): Fix Felmyst flying animation in p1 and add despawn on evade (#21396) 2025-02-24 06:18:55 +01:00
Kitzunu
cd8761796f
fix(CI/Codestyle): skip SQL keyword 'NOT' (#21591) 2025-02-24 06:16:20 +01:00
tabooo
ca10c7cbe2 ### TITLE
## Type(Scope/Subscope): Commit ultra short explanation
## |---- Write below the examples with a maximum of 50 characters ----|
## Example 1: fix(DB/SAI): Missing spell to NPC Hogger
## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros
## Example 3: feat(CORE/Commands): New GM command to do something
remove the brackets on one line if statements :)

### DESCRIPTION
## Explain why this change is being made, what does it fix etc...
## |---- Write below the examples with a maximum of 72 characters per lines ----|
## Example: Hogger (id: 492) was not charging player when being engaged.

## Provide links to any issue, commit, pull request or other resource
## Example 1: Closes AzerothCore issue #23
## Example 2: Ported from other project's commit (link)
## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/

### CO-AUTHOR(S)
## If there are more authors they can be mentioned like this
## Co-authored-by: name <name@example.com>

## =======================================================
##                     EXTRA INFOS
## =======================================================
## "Type" can be:
##    feat     (new feature)
##    fix      (bug fix)
##    refactor (refactoring production code)
##    style    (formatting, missing semi colons, etc; no code change)
##    docs     (changes to documentation)
##    test     (adding or refactoring tests; no production code change)
##    chore    (updating bash scripts, git files etc; no production code change)
## --------------------
## Remember to
##    Capitalize the subject line
##    Use the imperative mood in the subject line
##    Do not end the subject line with a period
##    Separate subject from body with a blank line
##    Use the body to explain what and why rather than how
##    Can use multiple lines with "-" for bullet points in body
## --------------------
## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/
## =======================================================
## "Scope" can be:
##    CORE     (core related, c++)
##    DB       (database related, sql)
## =======================================================
## "Subscope" is optional and depends on the nature of the commit.
## =======================================================
2025-02-11 23:14:48 +04:00
tabooo
82a573699b ### TITLE
## Type(Scope/Subscope): Commit ultra short explanation
## |---- Write below the examples with a maximum of 50 characters ----|
## Example 1: fix(DB/SAI): Missing spell to NPC Hogger
## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros
## Example 3: feat(CORE/Commands): New GM command to do something
whitespace remove

### DESCRIPTION
## Explain why this change is being made, what does it fix etc...
## |---- Write below the examples with a maximum of 72 characters per lines ----|
## Example: Hogger (id: 492) was not charging player when being engaged.

## Provide links to any issue, commit, pull request or other resource
## Example 1: Closes AzerothCore issue #23
## Example 2: Ported from other project's commit (link)
## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/

### CO-AUTHOR(S)
## If there are more authors they can be mentioned like this
## Co-authored-by: name <name@example.com>

## =======================================================
##                     EXTRA INFOS
## =======================================================
## "Type" can be:
##    feat     (new feature)
##    fix      (bug fix)
##    refactor (refactoring production code)
##    style    (formatting, missing semi colons, etc; no code change)
##    docs     (changes to documentation)
##    test     (adding or refactoring tests; no production code change)
##    chore    (updating bash scripts, git files etc; no production code change)
## --------------------
## Remember to
##    Capitalize the subject line
##    Use the imperative mood in the subject line
##    Do not end the subject line with a period
##    Separate subject from body with a blank line
##    Use the body to explain what and why rather than how
##    Can use multiple lines with "-" for bullet points in body
## --------------------
## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/
## =======================================================
## "Scope" can be:
##    CORE     (core related, c++)
##    DB       (database related, sql)
## =======================================================
## "Subscope" is optional and depends on the nature of the commit.
## =======================================================
2025-02-11 22:59:48 +04:00
tabooo
8f30a36823 ### TITLE
## Type(Scope/Subscope): Commit ultra short explanation
## |---- Write below the examples with a maximum of 50 characters ----|
## Example 1: fix(DB/SAI): Missing spell to NPC Hogger
## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros
## Example 3: feat(CORE/Commands): New GM command to do something
fix codestyle

### DESCRIPTION
## Explain why this change is being made, what does it fix etc...
## |---- Write below the examples with a maximum of 72 characters per lines ----|
## Example: Hogger (id: 492) was not charging player when being engaged.

## Provide links to any issue, commit, pull request or other resource
## Example 1: Closes AzerothCore issue #23
## Example 2: Ported from other project's commit (link)
## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/

### CO-AUTHOR(S)
## If there are more authors they can be mentioned like this
## Co-authored-by: name <name@example.com>

## =======================================================
##                     EXTRA INFOS
## =======================================================
## "Type" can be:
##    feat     (new feature)
##    fix      (bug fix)
##    refactor (refactoring production code)
##    style    (formatting, missing semi colons, etc; no code change)
##    docs     (changes to documentation)
##    test     (adding or refactoring tests; no production code change)
##    chore    (updating bash scripts, git files etc; no production code change)
## --------------------
## Remember to
##    Capitalize the subject line
##    Use the imperative mood in the subject line
##    Do not end the subject line with a period
##    Separate subject from body with a blank line
##    Use the body to explain what and why rather than how
##    Can use multiple lines with "-" for bullet points in body
## --------------------
## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/
## =======================================================
## "Scope" can be:
##    CORE     (core related, c++)
##    DB       (database related, sql)
## =======================================================
## "Subscope" is optional and depends on the nature of the commit.
## =======================================================
2025-02-11 22:57:15 +04:00
tabooo
4fc4646d73 fix(Core/Spells): Druid Shapeshifting procs Omen of Clatiry
Druid talent Omen of Clatiry is proced by shapeshifting.

https://github.com/azerothcore/azerothcore-wotlk/issues/21401
2025-02-11 22:11:50 +04:00
7 changed files with 65 additions and 15 deletions

View File

@ -234,7 +234,7 @@ def backtick_check(file: io, file_path: str) -> None:
# Skip SQL keywords
if word.upper() in {"SELECT", "FROM", "JOIN", "WHERE", "GROUP", "BY", "ORDER",
"DELETE", "UPDATE", "INSERT", "INTO", "SET", "VALUES", "AND",
"IN", "OR", "REPLACE"}:
"IN", "OR", "REPLACE", "NOT"}:
continue
# Make sure the word is enclosed in backticks

View File

@ -0,0 +1,3 @@
-- DB update 2025_02_22_00 -> 2025_02_24_00
--
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|512|2147483648 WHERE `entry` = 25038;

View File

@ -633,6 +633,7 @@ void BossAI::_Reset()
me->ResetLootMode();
events.Reset();
scheduler.CancelAll();
me->m_Events.KillAllEvents(false);
summons.DespawnAll();
ClearUniqueTimedEventsDone();
_healthCheckEvents.clear();
@ -787,6 +788,20 @@ void BossAI::ScheduleHealthCheckEvent(std::initializer_list<uint8> healthPct, st
_nextHealthCheck = _healthCheckEvents.front();
}
void BossAI::ScheduleEnrageTimer(uint32 spellId, Milliseconds timer, uint8 textId /*= 0*/)
{
me->m_Events.AddEventAtOffset([this, spellId, textId]
{
if (!me->IsAlive())
return;
if (textId)
Talk(textId);
DoCastSelf(spellId, true);
}, timer);
}
// WorldBossAI - for non-instanced bosses
WorldBossAI::WorldBossAI(Creature* creature) :

View File

@ -485,6 +485,12 @@ public:
void ScheduleHealthCheckEvent(uint32 healthPct, std::function<void()> exec);
void ScheduleHealthCheckEvent(std::initializer_list<uint8> healthPct, std::function<void()> exec);
// @brief Casts the spell after the fixed time and says the text id if provided. Timer will run even if the creature is casting or out of combat.
// @param spellId The spell to cast.
// @param timer The time to wait before casting the spell.
// @param textId The text id to say.
void ScheduleEnrageTimer(uint32 spellId, Milliseconds timer, uint8 textId = 0);
// Hook used to execute events scheduled into EventMap without the need
// to override UpdateAI
// note: You must re-schedule the event within this method if the event

View File

@ -83,7 +83,6 @@ struct boss_sacrolash : public BossAI
_isSisterDead = false;
BossAI::Reset();
me->SetLootMode(0);
me->m_Events.KillAllEvents(false);
}
void DoAction(int32 param) override
@ -124,10 +123,7 @@ struct boss_sacrolash : public BossAI
if (alythess->IsAlive() && !alythess->IsInCombat())
alythess->AI()->AttackStart(who);
me->m_Events.AddEventAtOffset([&] {
Talk(YELL_BERSERK);
DoCastSelf(SPELL_ENRAGE, true);
}, 6min);
ScheduleEnrageTimer(SPELL_ENRAGE, 6min, YELL_BERSERK);
ScheduleTimedEvent(10s, [&] {
DoCastSelf(SPELL_SHADOW_BLADES);
@ -195,7 +191,6 @@ struct boss_alythess : public BossAI
_isSisterDead = false;
BossAI::Reset();
me->SetLootMode(0);
me->m_Events.KillAllEvents(false);
}
void DoAction(int32 param) override
@ -236,10 +231,7 @@ struct boss_alythess : public BossAI
if (sacrolash->IsAlive() && !sacrolash->IsInCombat())
sacrolash->AI()->AttackStart(who);
me->m_Events.AddEventAtOffset([&] {
Talk(YELL_BERSERK);
DoCastSelf(SPELL_ENRAGE, true);
}, 6min);
ScheduleEnrageTimer(SPELL_ENRAGE, 6min, YELL_BERSERK);
ScheduleTimedEvent(1s, [&] {
DoCastVictim(SPELL_BLAZE);

View File

@ -134,7 +134,7 @@ struct boss_felmyst : public BossAI
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
me->CastSpell(me, SPELL_NOXIOUS_FUMES, true);
me->m_Events.AddEventAtOffset([&] {
Talk(YELL_BERSERK);
DoCastSelf(SPELL_BERSERK, true);
@ -144,7 +144,7 @@ struct boss_felmyst : public BossAI
Position landPos = who->GetPosition();
me->m_Events.AddEventAtOffset([&, landPos] {
me->GetMotionMaster()->MovePoint(POINT_GROUND, landPos, false, true);
me->GetMotionMaster()->MoveLand(POINT_GROUND, landPos);
}, 2s);
}
@ -168,11 +168,14 @@ struct boss_felmyst : public BossAI
void MovementInform(uint32 type, uint32 point) override
{
if (type != POINT_MOTION_TYPE)
if (type != EFFECT_MOTION_TYPE && type != POINT_MOTION_TYPE)
return;
if (point == POINT_GROUND)
{
if (!me->HasAura(SPELL_NOXIOUS_FUMES))
DoCastSelf(SPELL_NOXIOUS_FUMES, true);
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
me->SetCanFly(false);
me->SetDisableGravity(false);

View File

@ -64,7 +64,14 @@ enum DruidSpells
enum DruidIcons
{
SPELL_ICON_REVITALIZE = 2862
SPELL_ICON_REVITALIZE = 2862,
SPELL_ICON_FUROR = 210,
SPELL_ICON_MOONKINAURA = 46, // SpellId: 24907
SPELL_ICON_MASTER_SHAPESHIFTER = 2851, // SpellId: 48421
SPELL_ICON_NURTURING_INSTINCT = 2254, // SpellId: 47180
SPELL_ICON_FERAL_SWIFTNESS_PASSIVE_2A = 67, // SpellId: 24864
SPELL_ICON_LEADER_OF_THE_PACK = 312, //SpellId: 24932
SPELL_ICON_TREE_OF_LIFE = 2257 //SpellId: 34123
};
// 1178 - Bear Form (Passive)
@ -223,6 +230,24 @@ class spell_dru_omen_of_clarity : public AuraScript
if (spellInfo->SpellFamilyName == SPELLFAMILY_DRUID)
{
// Exclude shapeshifting
if (spellInfo->SpellIconID == SPELL_ICON_MOONKINAURA)
return false;
if (spellInfo->SpellIconID == SPELL_ICON_MASTER_SHAPESHIFTER)
return false;
if (spellInfo->SpellIconID == SPELL_ICON_NURTURING_INSTINCT)
return false;
if (spellInfo->SpellIconID == SPELL_ICON_FERAL_SWIFTNESS_PASSIVE_2A)
return false;
if (spellInfo->SpellIconID == SPELL_ICON_LEADER_OF_THE_PACK)
return false;
if (spellInfo->SpellIconID == SPELL_ICON_TREE_OF_LIFE)
return false;
return !spellInfo->HasAura(SPELL_AURA_MOD_SHAPESHIFT);
}
@ -235,6 +260,12 @@ class spell_dru_omen_of_clarity : public AuraScript
return false;
}
// Furor 210
if (spellInfo->SpellIconID == SPELL_ICON_FUROR)
{
return false;
}
return true;
}