diff --git a/data/sql/updates/pending_db_world/rev_1722817302187444800.sql b/data/sql/updates/pending_db_world/rev_1722817302187444800.sql new file mode 100644 index 000000000..7f3df4a4a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1722817302187444800.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `command` WHERE `name` = 'morph mount'; +INSERT INTO `command` (`name`, `security`, `help`) VALUES +('morph mount', 1, 'Syntax: .morph mount #displayid - Change the selected target\'s mount\'s model ID to #displayid.'); diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index a34e82fe5..91a8706ff 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -77,7 +77,8 @@ public: static ChatCommandTable morphCommandTable = { { "reset", HandleMorphResetCommand, SEC_MODERATOR, Console::No }, - { "target", HandleMorphTargetCommand, SEC_MODERATOR, Console::No } + { "target", HandleMorphTargetCommand, SEC_MODERATOR, Console::No }, + { "mount", HandleMorphMountCommand, SEC_MODERATOR, Console::No } }; static ChatCommandTable commandTable = @@ -868,6 +869,21 @@ public: return true; } + static bool HandleMorphMountCommand(ChatHandler* handler, uint32 displayID) + { + Player* target = handler->getSelectedPlayerOrSelf(); + + if (target->GetTypeId() == TYPEID_PLAYER && handler->HasLowerSecurity(target->ToPlayer())) // check online security + return false; + + if (!target->GetAuraEffectsByType(SPELL_AURA_MOUNTED).empty()) + target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, displayID); + else + return false; + + return true; + } + //set temporary phase mask for player static bool HandleModifyPhaseCommand(ChatHandler* handler, uint32 phaseMask) {