aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-06-01 18:34:58 +0200
committerShauren <shauren.trinity@gmail.com>2013-06-01 18:34:58 +0200
commit1866c7a038c5a5a11dee9b62abb00a558d381d2d (patch)
tree943591c7f79276b75ea88edbcf247b741ef8050d /src
parent7d64b56db1d109df0d8b99f5913ae5de31ed9e83 (diff)
parentfb718d20aa23409c4ea695950d731d7887e87dc2 (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/game/Movement/Spline/MoveSplineInit.cpp
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/CreatureAI.h2
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp5
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h2
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.h4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp9
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp2
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp11
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp29
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp5
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp5
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp4
11 files changed, 49 insertions, 29 deletions
diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h
index 9d61ec0a214..3d71abb47a9 100644
--- a/src/server/game/AI/CreatureAI.h
+++ b/src/server/game/AI/CreatureAI.h
@@ -169,7 +169,7 @@ class CreatureAI : public UnitAI
virtual void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool /*apply*/) {}
- virtual void OnSpellClick(Unit* /*clicker*/) { }
+ virtual void OnSpellClick(Unit* /*clicker*/, bool& /*result*/) { }
virtual bool CanSeeAlways(WorldObject const* /*obj*/) { return false; }
protected:
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 54cf368b710..f8c99816cdf 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -828,8 +828,11 @@ void SmartAI::sOnGameEvent(bool start, uint16 eventId)
GetScript()->ProcessEventsFor(start ? SMART_EVENT_GAME_EVENT_START : SMART_EVENT_GAME_EVENT_END, NULL, eventId);
}
-void SmartAI::OnSpellClick(Unit* clicker)
+void SmartAI::OnSpellClick(Unit* clicker, bool& result)
{
+ if (!result)
+ return;
+
GetScript()->ProcessEventsFor(SMART_EVENT_ON_SPELLCLICK, clicker);
}
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index dee6bec905c..4b4909e9c6c 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -197,7 +197,7 @@ class SmartAI : public CreatureAI
void RemoveAuras();
- void OnSpellClick(Unit* clicker);
+ void OnSpellClick(Unit* clicker, bool& result);
private:
uint32 mFollowCreditType;
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h
index 409d0e7d324..6801c132331 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.h
+++ b/src/server/game/AI/SmartScripts/SmartScript.h
@@ -117,7 +117,7 @@ class SmartScript
smart = false;
if (!smart)
- TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript: Action target Creature(entry: %u) is not using SmartAI, action skipped to prevent crash.", c ? c->GetEntry() : (me ? me->GetEntry() : 0));
+ TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript: Action target Creature (GUID: %u Entry: %u) is not using SmartAI, action skipped to prevent crash.", c ? c->GetDBTableGUIDLow() : (me ? me->GetDBTableGUIDLow() : 0), c ? c->GetEntry() : (me ? me->GetEntry() : 0));
return smart;
}
@@ -131,7 +131,7 @@ class SmartScript
if (!go || go->GetAIName() != "SmartGameObjectAI")
smart = false;
if (!smart)
- TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript: Action target GameObject(entry: %u) is not using SmartGameObjectAI, action skipped to prevent crash.", g ? g->GetEntry() : (go ? go->GetEntry() : 0));
+ TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript: Action target GameObject (GUID: %u Entry: %u) is not using SmartGameObjectAI, action skipped to prevent crash.", g ? g->GetDBTableGUIDLow() : (go ? go->GetDBTableGUIDLow() : 0), g ? g->GetEntry() : (go ? go->GetEntry() : 0));
return smart;
}
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 4360decca2b..2443d11678e 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -15848,12 +15848,9 @@ bool Unit::HandleSpellClick(Unit* clicker, int8 seatId)
result = true;
}
- if (result)
- {
- Creature* creature = ToCreature();
- if (creature && creature->IsAIEnabled)
- creature->AI()->OnSpellClick(clicker);
- }
+ Creature* creature = ToCreature();
+ if (creature && creature->IsAIEnabled)
+ creature->AI()->OnSpellClick(clicker, result);
return result;
}
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index f140e3147fb..2fb304c52e7 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -5689,7 +5689,7 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveYard(float x, float y, float
MapEntry const* map = sMapStore.LookupEntry(MapId);
// not need to check validity of map object; MapId _MUST_ be valid here
- if (range.first == range.second && !map->IsBattleArena())
+ if (range.first == range.second && !map->IsBattlegroundOrArena())
{
TC_LOG_ERROR(LOG_FILTER_SQL, "Table `game_graveyard_zone` incomplete: Zone %u Team %u does not have a linked graveyard.", zoneId, team);
return GetDefaultGraveYard(team);
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
index ea7a8c4c710..227780daa1f 100755
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
@@ -24,6 +24,7 @@
#include "MoveSplineInit.h"
#include "MoveSpline.h"
#include "Player.h"
+#include "CreatureGroups.h"
//----- Point Movement Generator
template<class T>
@@ -42,6 +43,11 @@ void PointMovementGenerator<T>::DoInitialize(T* unit)
if (speed > 0.0f)
init.SetVelocity(speed);
init.Launch();
+
+ //Call for creature group update
+ if (Creature* creature = unit->ToCreature())
+ if (creature->GetFormation() && creature->GetFormation()->getLeader() == creature)
+ creature->GetFormation()->LeaderMoveTo(i_x, i_y, i_z);
}
template<class T>
@@ -66,6 +72,11 @@ bool PointMovementGenerator<T>::DoUpdate(T* unit, uint32 /*diff*/)
if (speed > 0.0f) // Default value for point motion type is 0.0, if 0.0 spline will use GetSpeed on unit
init.SetVelocity(speed);
init.Launch();
+
+ //Call for creature group update
+ if (Creature* creature = unit->ToCreature())
+ if (creature->GetFormation() && creature->GetFormation()->getLeader() == creature)
+ creature->GetFormation()->LeaderMoveTo(i_x, i_y, i_z);
}
return !unit->movespline->Finalized();
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index 8a60ae05f41..9cc1dbb3f43 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -29,11 +29,7 @@ namespace Movement
{
UnitMoveType SelectSpeedType(uint32 moveFlags)
{
- /*! Not sure about MOVEMENTFLAG_CAN_FLY here - do creatures that can fly
- but are on ground right now also have it? If yes, this needs a more
- dynamic check, such as is flying now
- */
- if (moveFlags & (MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY))
+ if (moveFlags & MOVEMENTFLAG_FLYING)
{
if (moveFlags & MOVEMENTFLAG_BACKWARD /*&& speed_obj.flight >= speed_obj.flight_back*/)
return MOVE_FLIGHT_BACK;
@@ -55,6 +51,8 @@ namespace Movement
else if (moveFlags & MOVEMENTFLAG_BACKWARD /*&& speed_obj.run >= speed_obj.run_back*/)
return MOVE_RUN_BACK;
+ // Flying creatures use MOVEMENTFLAG_CAN_FLY or MOVEMENTFLAG_DISABLE_GRAVITY
+ // Run speed is their default flight speed.
return MOVE_RUN;
}
@@ -88,22 +86,25 @@ namespace Movement
move_spline.onTransport = (unit->GetTransGUID() != 0);
uint32 moveFlags = unit->m_movementInfo.GetMovementFlags();
- if (args.flags.walkmode)
- moveFlags |= MOVEMENTFLAG_WALKING;
- else
- moveFlags &= ~MOVEMENTFLAG_WALKING;
-
moveFlags |= MOVEMENTFLAG_FORWARD;
+ if (moveFlags & MOVEMENTFLAG_ROOT)
+ moveFlags &= ~MOVEMENTFLAG_MASK_MOVING;
+
if (!args.HasVelocity)
- args.velocity = unit->GetSpeed(SelectSpeedType(moveFlags));
+ {
+ // If spline is initialized with SetWalk method it only means we need to select
+ // walk move speed for it but not add walk flag to unit
+ uint32 moveFlagsForSpeed = moveFlags;
+ if (args.flags.walkmode)
+ moveFlagsForSpeed |= MOVEMENTFLAG_WALKING;
+
+ args.velocity = unit->GetSpeed(SelectSpeedType(moveFlagsForSpeed));
+ }
if (!args.Validate(unit))
return 0;
- if (moveFlags & MOVEMENTFLAG_ROOT)
- moveFlags &= ~MOVEMENTFLAG_MASK_MOVING;
-
unit->m_movementInfo.SetMovementFlags(moveFlags);
move_spline.Initialize(args);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index 97a70f43c27..259f2c28300 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -1013,8 +1013,11 @@ class npc_dream_portal : public CreatureScript
{
}
- void OnSpellClick(Unit* /*clicker*/)
+ void OnSpellClick(Unit* /*clicker*/, bool& result)
{
+ if (!result)
+ return;
+
_used = true;
me->DespawnOrUnsummon();
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index f89112e3d67..37ecf7874b8 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -709,8 +709,11 @@ class boss_flame_leviathan_overload_device : public CreatureScript
{
}
- void OnSpellClick(Unit* /*clicker*/)
+ void OnSpellClick(Unit* /*clicker*/, bool& result)
{
+ if (!result)
+ return;
+
if (me->GetVehicle())
{
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 105b4757066..97554a63217 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -1421,8 +1421,10 @@ class npc_descend_into_madness : public CreatureScript
{
npc_descend_into_madnessAI(Creature* creature) : PassiveAI(creature), _instance(creature->GetInstanceScript()) { }
- void OnSpellClick(Unit* clicker)
+ void OnSpellClick(Unit* clicker, bool& result)
{
+ if (!result)
+ return;
clicker->RemoveAurasDueToSpell(SPELL_BRAIN_LINK);
me->DespawnOrUnsummon();
}