fix(scripts/SerpentShrine): #17918 Errors generated (#17939)

* Add files via upload

* Update boss_lurker_below.cpp

* Update instance_serpent_shrine.cpp

* Update SerpentShrine.sql

* Update SerpentShrine.sql

* Update SerpentShrine.sql

* Add files via upload

* Update instance_serpent_shrine.cpp

* Update serpent_shrine.h

* Update instance_serpent_shrine.cpp
This commit is contained in:
天鹿
2023-12-08 04:22:07 +08:00
committed by GitHub
parent 6faa364ad8
commit f2b3e51c11
4 changed files with 40 additions and 6 deletions

View File

@@ -72,18 +72,21 @@ struct boss_the_lurker_below : public BossAI
BossAI::Reset();
me->SetReactState(REACT_PASSIVE);
me->SetStandState(UNIT_STAND_STATE_SUBMERGED);
me->SetVisible(false);
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
void EnterEvadeMode(EvadeReason why) override
{
BossAI::EnterEvadeMode(why);
me->DespawnOrUnsummon(2000);
}
void DoAction(int32 action) override
{
if (action == ACTION_START_EVENT)
{
me->SetReactState(REACT_AGGRESSIVE);
me->setAttackTimer(BASE_ATTACK, 6000);
me->SetVisible(true);
me->UpdateObjectVisibility(true);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetInCombatWithZone();
@@ -213,7 +216,7 @@ public:
if (roll_chance_i(instance->GetBossState(DATA_THE_LURKER_BELOW) != DONE ? 25 : 0) && !instance->IsEncounterInProgress())
{
player->CastSpell(player, SPELL_LURKER_SPAWN_TRIGGER, true);
if (Creature* lurker = ObjectAccessor::GetCreature(*go, instance->GetGuidData(NPC_THE_LURKER_BELOW)))
if (Creature* lurker = go->SummonCreature(NPC_THE_LURKER_BELOW, 40.4058f, -417.108f, -21.5911f, 3.03312f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 604800000))
lurker->AI()->DoAction(ACTION_START_EVENT);
return true;
}

View File

@@ -101,8 +101,8 @@ public:
{
case NPC_COILFANG_SHATTERER:
case NPC_COILFANG_PRIESTESS:
if (creature->GetPositionX() > -110.0f && creature->GetPositionX() < 155.0f && creature->GetPositionY() > -610.0f && creature->GetPositionY() < -280.0f)
AliveKeepersCount += creature->IsAlive() ? 0 : -1; // SmartAI calls JUST_RESPAWNED in AIInit...
if (creature->GetPositionX() > 190.0f)
--AliveKeepersCount;
break;
case NPC_CYCLONE_KARATHRESS:
creature->GetMotionMaster()->MoveRandom(50.0f);
@@ -126,9 +126,17 @@ public:
{
case DATA_PLATFORM_KEEPER_RESPAWNED:
++AliveKeepersCount;
if (AliveKeepersCount > MAX_KEEPER_COUNT)
{
AliveKeepersCount = MAX_KEEPER_COUNT;
}
break;
case DATA_PLATFORM_KEEPER_DIED:
--AliveKeepersCount;
if (AliveKeepersCount < MIN_KEEPER_COUNT)
{
AliveKeepersCount = MIN_KEEPER_COUNT;
}
break;
case DATA_BRIDGE_ACTIVATED:
SetBossState(DATA_BRIDGE_EMERGED, NOT_STARTED);

View File

@@ -88,6 +88,12 @@ enum SSSpells
SPELL_FRENZY_WATER = 37026
};
enum KeeperCount
{
MIN_KEEPER_COUNT = 0,
MAX_KEEPER_COUNT = 24
};
template <class AI, class T>
inline AI* GetSerpentShrineAI(T* obj)
{