aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRochet2 <rochet2@post.com>2017-12-29 22:47:53 +0200
committerShauren <shauren.trinity@gmail.com>2017-12-29 21:47:53 +0100
commit4d9fa4ea5ffc4d1027097aa27b34ceeae1808245 (patch)
treea9d4cc754614419d2dd969fd202fcea317f92003 /src
parent502864e86c0a29ac4e64b20ee0c2e853cecd0401 (diff)
Core/Commands: Fix .modify mount (#21137)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Commands/cs_modify.cpp244
1 files changed, 14 insertions, 230 deletions
diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp
index 99b229f31d2..d181e41cf7d 100644
--- a/src/server/scripts/Commands/cs_modify.cpp
+++ b/src/server/scripts/Commands/cs_modify.cpp
@@ -502,221 +502,15 @@ public:
if (!*args)
return false;
- uint16 mId = 1147;
- float speed = (float)15;
- uint32 num = 0;
+ const char* mount_cstr = strtok(const_cast<char*>(args), " ");
+ const char* speed_cstr = strtok(NULL, " ");
- num = atoi((char*)args);
- switch (num)
+ if (!mount_cstr || !speed_cstr)
+ return false;
+
+ uint32 mount = atoul(args);
+ if (!sCreatureDisplayInfoStore.LookupEntry(mount))
{
- case 1:
- mId=14340;
- break;
- case 2:
- mId=4806;
- break;
- case 3:
- mId=6471;
- break;
- case 4:
- mId=12345;
- break;
- case 5:
- mId=6472;
- break;
- case 6:
- mId=6473;
- break;
- case 7:
- mId=10670;
- break;
- case 8:
- mId=10719;
- break;
- case 9:
- mId=10671;
- break;
- case 10:
- mId=10672;
- break;
- case 11:
- mId=10720;
- break;
- case 12:
- mId=14349;
- break;
- case 13:
- mId=11641;
- break;
- case 14:
- mId=12244;
- break;
- case 15:
- mId=12242;
- break;
- case 16:
- mId=14578;
- break;
- case 17:
- mId=14579;
- break;
- case 18:
- mId=14349;
- break;
- case 19:
- mId=12245;
- break;
- case 20:
- mId=14335;
- break;
- case 21:
- mId=207;
- break;
- case 22:
- mId=2328;
- break;
- case 23:
- mId=2327;
- break;
- case 24:
- mId=2326;
- break;
- case 25:
- mId=14573;
- break;
- case 26:
- mId=14574;
- break;
- case 27:
- mId=14575;
- break;
- case 28:
- mId=604;
- break;
- case 29:
- mId=1166;
- break;
- case 30:
- mId=2402;
- break;
- case 31:
- mId=2410;
- break;
- case 32:
- mId=2409;
- break;
- case 33:
- mId=2408;
- break;
- case 34:
- mId=2405;
- break;
- case 35:
- mId=14337;
- break;
- case 36:
- mId=6569;
- break;
- case 37:
- mId=10661;
- break;
- case 38:
- mId=10666;
- break;
- case 39:
- mId=9473;
- break;
- case 40:
- mId=9476;
- break;
- case 41:
- mId=9474;
- break;
- case 42:
- mId=14374;
- break;
- case 43:
- mId=14376;
- break;
- case 44:
- mId=14377;
- break;
- case 45:
- mId=2404;
- break;
- case 46:
- mId=2784;
- break;
- case 47:
- mId=2787;
- break;
- case 48:
- mId=2785;
- break;
- case 49:
- mId=2736;
- break;
- case 50:
- mId=2786;
- break;
- case 51:
- mId=14347;
- break;
- case 52:
- mId=14346;
- break;
- case 53:
- mId=14576;
- break;
- case 54:
- mId=9695;
- break;
- case 55:
- mId=9991;
- break;
- case 56:
- mId=6448;
- break;
- case 57:
- mId=6444;
- break;
- case 58:
- mId=6080;
- break;
- case 59:
- mId=6447;
- break;
- case 60:
- mId=4805;
- break;
- case 61:
- mId=9714;
- break;
- case 62:
- mId=6448;
- break;
- case 63:
- mId=6442;
- break;
- case 64:
- mId=14632;
- break;
- case 65:
- mId=14332;
- break;
- case 66:
- mId=14331;
- break;
- case 67:
- mId=8469;
- break;
- case 68:
- mId=2830;
- break;
- case 69:
- mId=2346;
- break;
- default:
handler->SendSysMessage(LANG_NO_MOUNT);
handler->SetSentErrorMessage(true);
return false;
@@ -734,24 +528,14 @@ public:
if (handler->HasLowerSecurity(target, ObjectGuid::Empty))
return false;
- NotifyModification(handler, target, LANG_YOU_GIVE_MOUNT, LANG_MOUNT_GIVED);
-
- target->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP);
- target->Mount(mId);
-
- WorldPacket data(SMSG_FORCE_RUN_SPEED_CHANGE, (8+4+1+4));
- data << target->GetPackGUID();
- data << (uint32)0;
- data << (uint8)0; //new 2.1.0
- data << float(speed);
- target->SendMessageToSet(&data, true);
-
- data.Initialize(SMSG_FORCE_SWIM_SPEED_CHANGE, (8+4+4));
- data << target->GetPackGUID();
- data << (uint32)0;
- data << float(speed);
- target->SendMessageToSet(&data, true);
+ float speed;
+ if (!CheckModifySpeed(handler, speed_cstr, target, speed, 0.1f, 50.0f))
+ return false;
+ NotifyModification(handler, target, LANG_YOU_GIVE_MOUNT, LANG_MOUNT_GIVED);
+ target->Mount(mount);
+ target->SetSpeedRate(MOVE_RUN, speed);
+ target->SetSpeedRate(MOVE_FLIGHT, speed);
return true;
}