Merge branch 'master' into Playerbot

This commit is contained in:
Yunfan Li
2024-12-13 18:51:37 +08:00
48 changed files with 1584 additions and 64 deletions
@@ -28,6 +28,7 @@
enum MountSpells
{
SPELL_LANCE_EQUIPPED = 62853,
SPELL_PLAYER_VEHICLE_DEFEND = 66482,
SPELL_MINIONS_DEFEND = 64100,
SPELL_BOSS_DEFEND = 62719,
@@ -152,16 +153,9 @@ public:
return GetTrialOfTheChampionAI<npc_toc5_player_vehicleAI>(pCreature);
}
struct npc_toc5_player_vehicleAI : public NullCreatureAI
struct npc_toc5_player_vehicleAI : public VehicleAI
{
npc_toc5_player_vehicleAI(Creature* pCreature) : NullCreatureAI(pCreature)
{
conditions = sConditionMgr->GetConditionsForNotGroupedEntry(CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE, me->GetEntry());
m_ConditionsTimer = 1000;
}
ConditionList conditions;
uint16 m_ConditionsTimer;
npc_toc5_player_vehicleAI(Creature* creature) : VehicleAI(creature) { }
void Reset() override
{
@@ -203,23 +197,25 @@ public:
}
}
//void EnterEvadeMode() { CreatureAI::EnterEvadeMode(); }
void MoveInLineOfSight(Unit* /*who*/) override {}
void UpdateAI(uint32 diff) override
bool BeforeSpellClick(Unit* clicker) override
{
if (m_ConditionsTimer <= diff)
{
if (!conditions.empty())
if (Unit* passenger = me->GetVehicleKit()->GetPassenger(0))
if (!sConditionMgr->IsObjectMeetToConditions(passenger, me, conditions))
passenger->ExitVehicle();
m_ConditionsTimer = VEHICLE_CONDITION_CHECK_TIME;
}
else
m_ConditionsTimer -= diff;
if (!clicker->IsPlayer())
return true;
if (clicker->IsInDisallowedMountForm())
clicker->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);
if (clicker->HasAura(SPELL_LANCE_EQUIPPED))
return true;
WorldPacket data(SMSG_CAST_FAILED, 1 + 4 + 1);
data << uint8(0); // single cast or multi 2.3 (0/1)
data << uint32(VEHICLE_SPELL_RIDE_HARDCODED);
data << uint8(SPELL_FAILED_CUSTOM_ERROR);
data << uint32(SPELL_CUSTOM_ERROR_MUST_HAVE_LANCE_EQUIPPED);
clicker->ToPlayer()->GetSession()->SendPacket(&data);
return false;
}
void AttackStart(Unit* /*who*/) override {}
void JustEngagedWith(Unit* /*who*/) override {}
};
};
@@ -912,7 +912,7 @@ public:
npc_vengeful_shadeAI(Creature* creature) : ScriptedAI(creature)
{
me->SetControlled(true, UNIT_STATE_ROOT);
unroot_timer = 500;
unroot_timer = 2000;
targetGUID.Clear();
}