diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 6 | ||||
-rw-r--r-- | src/server/game/Events/GameEventMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 10 |
4 files changed, 13 insertions, 10 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 9b991393c6e..d2bc7c624b5 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -145,7 +145,7 @@ Creature::Creature(bool isWorldObject): Unit(isWorldObject), MapCreature(), lootForPickPocketed(false), lootForBody(false), m_groupLootTimer(0), lootingGroupLowGUID(0), m_PlayerDamageReq(0), m_lootRecipient(0), m_lootRecipientGroup(0), m_corpseRemoveTime(0), m_respawnTime(0), m_respawnDelay(300), m_corpseDelay(60), m_respawnradius(0.0f), m_reactState(REACT_AGGRESSIVE), -m_defaultMovementType(IDLE_MOTION_TYPE), m_DBTableGuid(0), m_equipmentId(1), m_originalEquipmentId(1), m_AlreadyCallAssistance(false), +m_defaultMovementType(IDLE_MOTION_TYPE), m_DBTableGuid(0), m_equipmentId(0), m_originalEquipmentId(0), m_AlreadyCallAssistance(false), m_AlreadySearchedAssistance(false), m_regenHealth(true), m_AI_locked(false), m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_creatureInfo(NULL), m_creatureData(NULL), m_path_id(0), m_formation(NULL) { @@ -325,7 +325,10 @@ bool Creature::InitEntry(uint32 Entry, uint32 /*team*/, const CreatureData* data if (!data || data->equipmentId == 0) // use default from the template LoadEquipment(GetOriginalEquipmentId()); else if (data && data->equipmentId != 0) // override, 0 means no equipment + { + m_originalEquipmentId = data->equipmentId; LoadEquipment(data->equipmentId); + } SetName(normalInfo->Name); // at normal entry always diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 827de8bfcef..e8996db608f 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -558,8 +558,8 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature void UpdateAttackPowerAndDamage(bool ranged = false); void UpdateDamagePhysical(WeaponAttackType attType); - uint8 GetOriginalEquipmentId() const { return m_originalEquipmentId; } - uint32 GetCurrentEquipmentId() { return m_equipmentId; } + int8 GetOriginalEquipmentId() const { return m_originalEquipmentId; } + uint8 GetCurrentEquipmentId() { return m_equipmentId; } void SetCurrentEquipmentId(uint8 id) { m_equipmentId = id; } float GetSpellDamageMod(int32 Rank); @@ -757,7 +757,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature MovementGeneratorType m_defaultMovementType; uint32 m_DBTableGuid; ///< For new or temporary creatures is 0 for saved it is lowguid uint8 m_equipmentId; - uint8 m_originalEquipmentId; + int8 m_originalEquipmentId; // can be -1 bool m_AlreadyCallAssistance; bool m_AlreadySearchedAssistance; diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 3fc1345f444..89ce8108b6e 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -1365,7 +1365,7 @@ void GameEventMgr::ChangeEquipOrModel(int16 event_id, bool activate) sObjectMgr->GetCreatureModelRandomGender(&displayID); if (data2->equipmentId == 0) - itr->second.equipement_id_prev = 1; + itr->second.equipement_id_prev = 0; ///@todo: verify this line else if (data2->equipmentId != -1) itr->second.equipement_id_prev = data->equipmentId; itr->second.modelid_prev = displayID; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 92424ec5c33..0e657c5ea9e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1467,7 +1467,7 @@ void ObjectMgr::LoadCreatures() data.id = entry; data.mapid = fields[2].GetUInt16(); data.displayid = fields[3].GetUInt32(); - data.equipmentId = fields[4].GetInt32(); + data.equipmentId = fields[4].GetInt8(); data.posX = fields[5].GetFloat(); data.posY = fields[6].GetFloat(); data.posZ = fields[7].GetFloat(); @@ -1509,13 +1509,13 @@ void ObjectMgr::LoadCreatures() if (!ok) continue; - // -1 random, 0 no equipment, 1 is default (may or may not have equipment) + // -1 random, 0 no equipment, if (data.equipmentId != 0) { - if (!GetEquipmentInfo(data.id, data.equipmentId) && data.equipmentId != 1) + if (!GetEquipmentInfo(data.id, data.equipmentId)) { sLog->outError(LOG_FILTER_SQL, "Table `creature` have creature (Entry: %u) with equipment_id %u not found in table `creature_equip_template`, set to no equipment.", data.id, data.equipmentId); - data.equipmentId = 1; + data.equipmentId = 0; } } @@ -1689,7 +1689,7 @@ uint32 ObjectMgr::AddCreData(uint32 entry, uint32 /*team*/, uint32 mapId, float data.id = entry; data.mapid = mapId; data.displayid = 0; - data.equipmentId = 1; + data.equipmentId = 0; data.posX = x; data.posY = y; data.posZ = z; |