diff --git a/src/mod_swift_travel_form.cpp b/src/mod_swift_travel_form.cpp index c4ef93a..cd7210d 100644 --- a/src/mod_swift_travel_form.cpp +++ b/src/mod_swift_travel_form.cpp @@ -1,67 +1,8 @@ #include "ScriptMgr.h" -#include "Config.h" #include "Player.h" #include "Unit.h" -#include "Item.h" #include "SharedDefines.h" -namespace -{ - bool sEnabled = true; - uint32 sRequiredItemId = 0; - uint32 sRequiredEquipId = 0; - uint32 sRequiredSpellId = 0; - uint32 sMinLevel = 60; - - bool HasEquippedItem(Player* player, uint32 entry) - { - if (!player) - return false; - if (!entry) - return true; - - for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot) - { - if (Item* it = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) - if (it->GetEntry() == entry) - return true; - } - return false; - } - - bool RequirementsMet(Player* player) - { - if (!player) - return false; - if (!sEnabled) - return false; - if (player->GetLevel() < sMinLevel) - return false; - if (sRequiredItemId && !player->HasItemCount(sRequiredItemId, 1, false)) - return false; - if (sRequiredEquipId && !HasEquippedItem(player, sRequiredEquipId)) - return false; - if (sRequiredSpellId && !player->HasSpell(sRequiredSpellId)) - return false; - return true; - } -} - -class SwiftTravelForm_WorldScript : public WorldScript -{ -public: - SwiftTravelForm_WorldScript() : WorldScript("SwiftTravelForm_WorldScript") {} - - void OnAfterConfigLoad(bool) override - { - sEnabled = sConfigMgr->GetOption("SwiftTravelForm.Enable", true); - sRequiredItemId = sConfigMgr->GetOption("SwiftTravelForm.RequiredItem", 0u); - sRequiredEquipId = sConfigMgr->GetOption("SwiftTravelForm.RequiredEquipment", 0u); - sRequiredSpellId = sConfigMgr->GetOption("SwiftTravelForm.RequiredSpell", 0u); - sMinLevel = sConfigMgr->GetOption("SwiftTravelForm.MinLevel", 60u); - } -}; - class SwiftTravelForm_UnitScript : public UnitScript { public: @@ -72,22 +13,19 @@ public: void OnUnitSetShapeshiftForm(Unit* unit, uint8 form) override { - if (!sEnabled) - return; if (!unit || unit->GetTypeId() != TYPEID_PLAYER) return; Player* player = unit->ToPlayer(); - if (!RequirementsMet(player)) + if (!player) return; - if (form == FORM_TRAVEL) - player->SetSpeed(MOVE_RUN, 2.0f, true); + std::string msg = "Shapeshift form changed: " + std::to_string(form); + player->SendBroadcastMessage(msg.c_str()); } }; void AddSC_swift_travel_form() { - new SwiftTravelForm_WorldScript(); new SwiftTravelForm_UnitScript(); }