mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +00:00
fix(Scripts/Vehicles): The next player entering Salvaged Siege Engine… (#10987)
… should control turret if it's not occupied.
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1647104625347732100');
|
||||||
|
|
||||||
|
UPDATE `creature_template` SET `ScriptName`='npc_salvaged_siege_engine' WHERE `entry`=33060;
|
||||||
@@ -177,6 +177,8 @@ public:
|
|||||||
/// == Fields =======================================
|
/// == Fields =======================================
|
||||||
virtual void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool /*apply*/) {}
|
virtual void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool /*apply*/) {}
|
||||||
|
|
||||||
|
virtual bool BeforeSpellClick(Unit* /*clicker*/) { return true; }
|
||||||
|
|
||||||
virtual void OnSpellClick(Unit* /*clicker*/, bool& /*result*/) { }
|
virtual void OnSpellClick(Unit* /*clicker*/, bool& /*result*/) { }
|
||||||
|
|
||||||
virtual bool CanSeeAlways(WorldObject const* /*obj*/) { return false; }
|
virtual bool CanSeeAlways(WorldObject const* /*obj*/) { return false; }
|
||||||
|
|||||||
@@ -18899,6 +18899,15 @@ void Unit::JumpTo(WorldObject* obj, float speedZ)
|
|||||||
|
|
||||||
bool Unit::HandleSpellClick(Unit* clicker, int8 seatId)
|
bool Unit::HandleSpellClick(Unit* clicker, int8 seatId)
|
||||||
{
|
{
|
||||||
|
Creature* creature = ToCreature();
|
||||||
|
if (creature && creature->IsAIEnabled)
|
||||||
|
{
|
||||||
|
if (!creature->AI()->BeforeSpellClick(clicker))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
uint32 spellClickEntry = GetVehicleKit() ? GetVehicleKit()->GetCreatureEntry() : GetEntry();
|
uint32 spellClickEntry = GetVehicleKit() ? GetVehicleKit()->GetCreatureEntry() : GetEntry();
|
||||||
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(spellClickEntry);
|
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(spellClickEntry);
|
||||||
@@ -18967,7 +18976,6 @@ bool Unit::HandleSpellClick(Unit* clicker, int8 seatId)
|
|||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Creature* creature = ToCreature();
|
|
||||||
if (creature && creature->IsAIEnabled)
|
if (creature && creature->IsAIEnabled)
|
||||||
creature->AI()->OnSpellClick(clicker, result);
|
creature->AI()->OnSpellClick(clicker, result);
|
||||||
|
|
||||||
|
|||||||
@@ -16,12 +16,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ulduar.h"
|
#include "ulduar.h"
|
||||||
|
#include "CombatAI.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "ScriptMgr.h"
|
#include "ScriptMgr.h"
|
||||||
#include "ScriptedCreature.h"
|
#include "ScriptedCreature.h"
|
||||||
#include "ScriptedGossip.h"
|
#include "ScriptedGossip.h"
|
||||||
#include "SpellAuraEffects.h"
|
#include "SpellAuraEffects.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
#include "Vehicle.h"
|
||||||
|
|
||||||
class npc_ulduar_keeper : public CreatureScript
|
class npc_ulduar_keeper : public CreatureScript
|
||||||
{
|
{
|
||||||
@@ -423,6 +425,31 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct npc_salvaged_siege_engine : public VehicleAI
|
||||||
|
{
|
||||||
|
npc_salvaged_siege_engine(Creature* creature) : VehicleAI(creature) { }
|
||||||
|
|
||||||
|
bool BeforeSpellClick(Unit* clicker) override
|
||||||
|
{
|
||||||
|
if (Vehicle* vehicle = me->GetVehicleKit())
|
||||||
|
{
|
||||||
|
if (vehicle->IsVehicleInUse())
|
||||||
|
{
|
||||||
|
if (Unit* turret = vehicle->GetPassenger(7))
|
||||||
|
{
|
||||||
|
if (!turret->GetVehicleKit()->IsVehicleInUse())
|
||||||
|
{
|
||||||
|
turret->HandleSpellClick(clicker);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_ulduar()
|
void AddSC_ulduar()
|
||||||
{
|
{
|
||||||
new npc_ulduar_keeper();
|
new npc_ulduar_keeper();
|
||||||
@@ -435,4 +462,6 @@ void AddSC_ulduar()
|
|||||||
|
|
||||||
new AreaTrigger_at_celestial_planetarium_enterance();
|
new AreaTrigger_at_celestial_planetarium_enterance();
|
||||||
new go_call_tram();
|
new go_call_tram();
|
||||||
|
|
||||||
|
RegisterCreatureAI(npc_salvaged_siege_engine);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user