mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 06:06:23 +00:00
Merge branch 'azerothcore:master' into Playerbot
This commit is contained in:
4
data/sql/updates/db_world/2023_04_05_04.sql
Normal file
4
data/sql/updates/db_world/2023_04_05_04.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- DB update 2023_04_05_03 -> 2023_04_05_04
|
||||
DELETE FROM `creature` WHERE (`id1` = 37230) AND (`guid` IN (247156));
|
||||
|
||||
DELETE FROM `creature_movement_override` WHERE `SpawnId`=247156;
|
||||
1406
data/sql/updates/db_world/2023_04_06_00.sql
Normal file
1406
data/sql/updates/db_world/2023_04_06_00.sql
Normal file
File diff suppressed because it is too large
Load Diff
3
data/sql/updates/db_world/2023_04_06_01.sql
Normal file
3
data/sql/updates/db_world/2023_04_06_01.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2023_04_06_00 -> 2023_04_06_01
|
||||
DELETE FROM `creature` WHERE (`id1` = 37230) AND (`guid` IN (247157));
|
||||
DELETE FROM `creature_movement_override` WHERE `SpawnId`=247157;
|
||||
@@ -4461,7 +4461,7 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
});
|
||||
|
||||
// Self Visual - Sleep Until Cancelled(DND)
|
||||
ApplySpellFix({ 14915 }, [](SpellInfo* spellInfo)
|
||||
ApplySpellFix({ 6606, 14915 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AuraInterruptFlags &= ~AURA_INTERRUPT_FLAG_NOT_SEATED;
|
||||
});
|
||||
|
||||
@@ -282,6 +282,7 @@ public:
|
||||
_didFirstFlyPhase = false;
|
||||
_isBelow20Pct = false;
|
||||
_isThirdPhase = false;
|
||||
_isLanding = false;
|
||||
_bombCount = 0;
|
||||
_mysticBuffetStack = 0;
|
||||
_Reset();
|
||||
@@ -365,15 +366,16 @@ public:
|
||||
|
||||
void DoAction(int32 action) override
|
||||
{
|
||||
if (action == ACTION_START_FROSTWYRM)
|
||||
if (action == ACTION_START_FROSTWYRM && !_isLanding)
|
||||
{
|
||||
_isLanding = true;
|
||||
|
||||
if (TempSummon* summon = me->ToTempSummon())
|
||||
summon->SetTempSummonType(TEMPSUMMON_DEAD_DESPAWN);
|
||||
|
||||
if (me->isDead())
|
||||
return;
|
||||
|
||||
instance->SetBossState(DATA_SINDRAGOSA, IN_PROGRESS);
|
||||
me->setActive(true);
|
||||
me->SetDisableGravity(true);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -673,6 +675,7 @@ public:
|
||||
bool _isBelow20Pct;
|
||||
bool _isThirdPhase;
|
||||
bool _isInAirPhase;
|
||||
bool _isLanding;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
|
||||
@@ -116,6 +116,11 @@ DoorData const doorData[] =
|
||||
{0, 0, DOOR_TYPE_ROOM }
|
||||
};
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ NPC_SINDRAGOSA, DATA_SINDRAGOSA }
|
||||
};
|
||||
|
||||
// this doesnt have to only store questgivers, also can be used for related quest spawns
|
||||
struct WeeklyQuest
|
||||
{
|
||||
@@ -203,6 +208,7 @@ public:
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
SetPersistentDataCount(MAX_DATA_INDEXES);
|
||||
LoadBossBoundaries(boundaries);
|
||||
LoadObjectData(creatureData, nullptr);
|
||||
LoadDoorData(doorData);
|
||||
TeamIdInInstance = TEAM_NEUTRAL;
|
||||
HeroicAttempts = MaxHeroicAttempts;
|
||||
@@ -257,7 +263,7 @@ public:
|
||||
if (GetBossState(DATA_LADY_DEATHWHISPER) == DONE && GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != DONE)
|
||||
SpawnGunship();
|
||||
|
||||
if (GetBossState(DATA_SINDRAGOSA) != DONE && IsSindragosaIntroDone && SindragosaGUID.IsEmpty() && Events.GetTimeUntilEvent(EVENT_RESPAWN_SINDRAGOSA) == Milliseconds::max())
|
||||
if (GetBossState(DATA_SINDRAGOSA) != DONE && IsSindragosaIntroDone && !GetCreature(DATA_SINDRAGOSA) && Events.GetTimeUntilEvent(EVENT_RESPAWN_SINDRAGOSA) == Milliseconds::max())
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_RESPAWN_SINDRAGOSA, 30s);
|
||||
}
|
||||
@@ -518,12 +524,16 @@ public:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
InstanceScript::OnCreatureCreate(creature);
|
||||
}
|
||||
|
||||
void OnCreatureRemove(Creature* creature) override
|
||||
{
|
||||
if (creature->GetEntry() == NPC_SINDRAGOSA)
|
||||
SindragosaGUID.Clear();
|
||||
|
||||
InstanceScript::OnCreatureRemove(creature);
|
||||
}
|
||||
|
||||
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
|
||||
@@ -1764,15 +1774,18 @@ public:
|
||||
SpawnGunship();
|
||||
break;
|
||||
case EVENT_RESPAWN_SINDRAGOSA:
|
||||
if (Creature* sindragosa = instance->SummonCreature(NPC_SINDRAGOSA, SindragosaSpawnPos))
|
||||
if (!GetCreature(DATA_SINDRAGOSA))
|
||||
{
|
||||
sindragosa->setActive(true);
|
||||
sindragosa->SetDisableGravity(true);
|
||||
sindragosa->GetMotionMaster()->MovePath(NPC_SINDRAGOSA * 10, true);
|
||||
|
||||
if (TempSummon* summon = sindragosa->ToTempSummon())
|
||||
if (Creature* sindragosa = instance->SummonCreature(NPC_SINDRAGOSA, SindragosaSpawnPos))
|
||||
{
|
||||
summon->SetTempSummonType(TEMPSUMMON_DEAD_DESPAWN);
|
||||
sindragosa->setActive(true);
|
||||
sindragosa->SetDisableGravity(true);
|
||||
sindragosa->GetMotionMaster()->MovePath(NPC_SINDRAGOSA * 10, true);
|
||||
|
||||
if (TempSummon* summon = sindragosa->ToTempSummon())
|
||||
{
|
||||
summon->SetTempSummonType(TEMPSUMMON_DEAD_DESPAWN);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Could happen more than once if more than one player enters before she respawns.
|
||||
|
||||
@@ -29,6 +29,7 @@ enum MekgineerSteamrigger
|
||||
SPELL_SUPER_SHRINK_RAY = 31485,
|
||||
SPELL_SAW_BLADE = 31486,
|
||||
SPELL_ELECTRIFIED_NET = 35107,
|
||||
SPELL_ENRAGE = 26662,
|
||||
SPELL_REPAIR_N = 31532,
|
||||
SPELL_REPAIR_H = 37936,
|
||||
|
||||
@@ -39,7 +40,8 @@ enum MekgineerSteamrigger
|
||||
EVENT_CHECK_HP75 = 3,
|
||||
EVENT_SPELL_SHRINK = 4,
|
||||
EVENT_SPELL_SAW = 5,
|
||||
EVENT_SPELL_NET = 6
|
||||
EVENT_SPELL_NET = 6,
|
||||
EVENT_ENRAGE = 7
|
||||
};
|
||||
|
||||
struct boss_mekgineer_steamrigger : public BossAI
|
||||
@@ -62,9 +64,10 @@ struct boss_mekgineer_steamrigger : public BossAI
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
_JustEngagedWith();
|
||||
events.ScheduleEvent(EVENT_SPELL_SHRINK, 20000);
|
||||
events.ScheduleEvent(EVENT_SPELL_SAW, 15000);
|
||||
events.ScheduleEvent(EVENT_SPELL_NET, 10000);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHRINK, 26550);
|
||||
events.ScheduleEvent(EVENT_SPELL_SAW, 6050, 17650);
|
||||
events.ScheduleEvent(EVENT_SPELL_NET, 14400);
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 300000);
|
||||
events.ScheduleEvent(EVENT_CHECK_HP75, 5000);
|
||||
events.ScheduleEvent(EVENT_CHECK_HP50, 5000);
|
||||
events.ScheduleEvent(EVENT_CHECK_HP25, 5000);
|
||||
@@ -96,19 +99,22 @@ struct boss_mekgineer_steamrigger : public BossAI
|
||||
{
|
||||
case EVENT_SPELL_SHRINK:
|
||||
me->CastSpell(me->GetVictim(), SPELL_SUPER_SHRINK_RAY, false);
|
||||
events.RepeatEvent(20000);
|
||||
events.Repeat(35100ms, 54100ms);
|
||||
break;
|
||||
case EVENT_SPELL_SAW:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
|
||||
me->CastSpell(target, SPELL_SAW_BLADE, false);
|
||||
else
|
||||
me->CastSpell(me->GetVictim(), SPELL_SAW_BLADE, false);
|
||||
events.RepeatEvent(15000);
|
||||
events.Repeat(6050ms, 17650ms);
|
||||
break;
|
||||
case EVENT_SPELL_NET:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
me->CastSpell(target, SPELL_ELECTRIFIED_NET, false);
|
||||
events.RepeatEvent(10000);
|
||||
events.Repeat(21800ms, 34200ms);
|
||||
break;
|
||||
case EVENT_ENRAGE:
|
||||
DoCastSelf(SPELL_ENRAGE, true);
|
||||
break;
|
||||
case EVENT_CHECK_HP25:
|
||||
case EVENT_CHECK_HP50:
|
||||
|
||||
@@ -30,6 +30,7 @@ enum NagaDistiller
|
||||
|
||||
SPELL_SPELL_REFLECTION = 31534,
|
||||
SPELL_IMPALE = 39061,
|
||||
SPELL_HEAD_CRACK = 16172,
|
||||
SPELL_WARLORDS_RAGE = 37081,
|
||||
SPELL_WARLORDS_RAGE_NAGA = 31543,
|
||||
SPELL_WARLORDS_RAGE_PROC = 36453,
|
||||
@@ -38,7 +39,8 @@ enum NagaDistiller
|
||||
|
||||
EVENT_SPELL_REFLECTION = 1,
|
||||
EVENT_SPELL_IMPALE = 2,
|
||||
EVENT_SPELL_RAGE = 3
|
||||
EVENT_SPELL_HEAD_CRACK = 3,
|
||||
EVENT_SPELL_RAGE = 4
|
||||
};
|
||||
|
||||
struct boss_warlord_kalithresh : public BossAI
|
||||
@@ -49,8 +51,9 @@ struct boss_warlord_kalithresh : public BossAI
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
_JustEngagedWith();
|
||||
events.ScheduleEvent(EVENT_SPELL_REFLECTION, 10000);
|
||||
events.ScheduleEvent(EVENT_SPELL_IMPALE, urand(7000, 14000));
|
||||
events.ScheduleEvent(EVENT_SPELL_REFLECTION, 20000, 36000);
|
||||
events.ScheduleEvent(EVENT_SPELL_IMPALE, 7000, 14000);
|
||||
events.ScheduleEvent(EVENT_SPELL_HEAD_CRACK, 15000);
|
||||
events.ScheduleEvent(EVENT_SPELL_RAGE, 20000);
|
||||
}
|
||||
|
||||
@@ -78,12 +81,16 @@ struct boss_warlord_kalithresh : public BossAI
|
||||
{
|
||||
case EVENT_SPELL_REFLECTION:
|
||||
me->CastSpell(me, SPELL_SPELL_REFLECTION, false);
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
events.Repeat(20s, 36s);
|
||||
break;
|
||||
case EVENT_SPELL_IMPALE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 10.0f, true))
|
||||
me->CastSpell(target, SPELL_IMPALE, false);
|
||||
events.RepeatEvent(urand(7500, 12500));
|
||||
events.Repeat(7500ms, 12500ms);
|
||||
break;
|
||||
case EVENT_SPELL_HEAD_CRACK:
|
||||
DoCastVictim(SPELL_HEAD_CRACK);
|
||||
events.Repeat(45s, 55s);
|
||||
break;
|
||||
case EVENT_SPELL_RAGE:
|
||||
if (Creature* distiller = me->FindNearestCreature(NPC_NAGA_DISTILLER, 100.0f))
|
||||
|
||||
@@ -61,7 +61,6 @@ struct boss_harbinger_skyriss : public BossAI
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
me->SetImmuneToAll(false);
|
||||
|
||||
ScheduleHealthCheckEvent(66, [&] {
|
||||
Talk(SAY_IMAGE);
|
||||
|
||||
Reference in New Issue
Block a user