aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat/Commands
diff options
context:
space:
mode:
authorsilinoron <none@none>2010-07-30 21:54:46 -0700
committersilinoron <none@none>2010-07-30 21:54:46 -0700
commit71b1c781e3d05bf208c4b0886a1c8f0f474d6a10 (patch)
treeeb0c5a10bcb60ed83921f23d1f5526484f268595 /src/server/game/Chat/Commands
parentb3bca2743ef2312d443055e9389dc9f999215563 (diff)
Add basic support for NPCs on transports; DB data required.
Currently no support for combat while the transport is in motion. Based on a patch by Socolin. Fixes issue #168 --HG-- branch : trunk
Diffstat (limited to 'src/server/game/Chat/Commands')
-rw-r--r--src/server/game/Chat/Commands/Level2.cpp25
-rw-r--r--src/server/game/Chat/Commands/Level3.cpp5
2 files changed, 29 insertions, 1 deletions
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp
index 26b754e23d2..c66311f1277 100644
--- a/src/server/game/Chat/Commands/Level2.cpp
+++ b/src/server/game/Chat/Commands/Level2.cpp
@@ -42,7 +42,7 @@
#include <map>
#include "GlobalEvents.h"
#include "OutdoorPvPMgr.h"
-
+#include "Transport.h"
#include "TargetedMovementGenerator.h" // for HandleNpcUnFollowCommand
#include "CreatureGroups.h"
@@ -1005,6 +1005,29 @@ bool ChatHandler::HandleNpcAddCommand(const char* args)
float o = chr->GetOrientation();
Map *map = chr->GetMap();
+ if (chr->GetTransport())
+ {
+ uint32 tguid = chr->GetTransport()->AddNPCPassenger(0, id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO());
+ if (tguid > 0)
+ {
+ WorldDatabase.PQuery("INSERT INTO creature_transport (guid, npc_entry, transport_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO) values (%u, %u, %f, %f, %f, %f, %u)", tguid, id, chr->GetTransport()->GetEntry(), chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO());
+
+ TransportCreatureProto *transportCreatureProto = new TransportCreatureProto;
+ transportCreatureProto->guid = tguid;
+ transportCreatureProto->npc_entry = id;
+ uint32 transportEntry = chr->GetTransport()->GetEntry();
+ transportCreatureProto->TransOffsetX = chr->GetTransOffsetX();
+ transportCreatureProto->TransOffsetY = chr->GetTransOffsetY();
+ transportCreatureProto->TransOffsetZ = chr->GetTransOffsetZ();
+ transportCreatureProto->TransOffsetO = chr->GetTransOffsetO();
+ transportCreatureProto->emote = 0;
+
+ sMapMgr.m_TransportNPCMap[transportEntry].insert(transportCreatureProto);
+ sMapMgr.m_TransportNPCs.insert(transportCreatureProto);
+ }
+ return true;
+ }
+
Creature* pCreature = new Creature;
if (!pCreature->Create(objmgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, (uint32)teamval, x, y, z, o))
{
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp
index fb68581ad89..0d54e4f77ae 100644
--- a/src/server/game/Chat/Commands/Level3.cpp
+++ b/src/server/game/Chat/Commands/Level3.cpp
@@ -57,6 +57,7 @@
#include "DBCEnums.h"
#include "ConditionMgr.h"
#include "DisableMgr.h"
+#include "Transport.h"
bool ChatHandler::HandleAHBotOptionsCommand(const char *args)
{
@@ -4801,6 +4802,10 @@ bool ChatHandler::HandleNpcPlayEmoteCommand(const char *args)
return false;
}
+ if (target->GetTransport())
+ if (target->GetGUIDTransport())
+ WorldDatabase.PQuery("UPDATE creature_transport SET emote=%u WHERE transport_entry=%u AND guid=%u", emote, target->GetTransport()->GetEntry(), target->GetGUIDTransport());
+
target->SetUInt32Value(UNIT_NPC_EMOTESTATE,emote);
return true;