diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 6 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 4 | ||||
| -rw-r--r-- | src/tools/vmap4_extractor/mpq_libmpq04.h | 5 | 
5 files changed, 17 insertions, 8 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index e76ba18f1e2..c3ef88fef05 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1994,7 +1994,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)          }          case CONDITION_UNIT_STATE:          { -            if (cond->ConditionValue1 > uint32(UNIT_STATE_ALL_STATE)) +            if (!(cond->ConditionValue1 & UNIT_STATE_ALL_STATE_SUPPORTED))              {                  TC_LOG_ERROR("sql.sql", "UnitState condition has non existing UnitState in value1 (%u), skipped", cond->ConditionValue1);                  return false; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 822ea049252..4993f0f500a 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -739,7 +739,7 @@ void Object::SetByteValue(uint16 index, uint8 offset, uint8 value)  {      ASSERT(index < m_valuesCount || PrintIndexError(index, true)); -    if (offset > 4) +    if (offset > 3)      {          TC_LOG_ERROR("misc", "Object::SetByteValue: wrong offset %u", offset);          return; @@ -763,7 +763,7 @@ void Object::SetUInt16Value(uint16 index, uint8 offset, uint16 value)  {      ASSERT(index < m_valuesCount || PrintIndexError(index, true)); -    if (offset > 2) +    if (offset > 1)      {          TC_LOG_ERROR("misc", "Object::SetUInt16Value: wrong offset %u", offset);          return; @@ -903,7 +903,7 @@ void Object::SetByteFlag(uint16 index, uint8 offset, uint8 newFlag)  {      ASSERT(index < m_valuesCount || PrintIndexError(index, true)); -    if (offset > 4) +    if (offset > 3)      {          TC_LOG_ERROR("misc", "Object::SetByteFlag: wrong offset %u", offset);          return; @@ -926,7 +926,7 @@ void Object::RemoveByteFlag(uint16 index, uint8 offset, uint8 oldFlag)  {      ASSERT(index < m_valuesCount || PrintIndexError(index, true)); -    if (offset > 4) +    if (offset > 3)      {          TC_LOG_ERROR("misc", "Object::RemoveByteFlag: wrong offset %u", offset);          return; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 751bfcb8126..6b6d844472a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -513,6 +513,12 @@ enum UnitState      UNIT_STATE_CHASE_MOVE      = 0x04000000,      UNIT_STATE_FOLLOW_MOVE     = 0x08000000,      UNIT_STATE_IGNORE_PATHFINDING = 0x10000000,                 // do not use pathfinding in any MovementGenerator +    UNIT_STATE_ALL_STATE_SUPPORTED = UNIT_STATE_DIED | UNIT_STATE_MELEE_ATTACKING | UNIT_STATE_STUNNED | UNIT_STATE_ROAMING | UNIT_STATE_CHASE +                                   | UNIT_STATE_FLEEING | UNIT_STATE_IN_FLIGHT | UNIT_STATE_FOLLOW | UNIT_STATE_ROOT | UNIT_STATE_CONFUSED +                                   | UNIT_STATE_DISTRACTED | UNIT_STATE_ISOLATED | UNIT_STATE_ATTACK_PLAYER | UNIT_STATE_CASTING +                                   | UNIT_STATE_POSSESSED | UNIT_STATE_CHARGING | UNIT_STATE_JUMPING | UNIT_STATE_MOVE | UNIT_STATE_ROTATING +                                   | UNIT_STATE_EVADE | UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE +                                   | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE | UNIT_STATE_IGNORE_PATHFINDING,      UNIT_STATE_UNATTACKABLE    = UNIT_STATE_IN_FLIGHT,      // for real move using movegen check and stop (except unstoppable flight)      UNIT_STATE_MOVING          = UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE, diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index d0c21168c80..cae2f5e511d 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1018,7 +1018,6 @@ public:          int32 area = GetAreaFlagByAreaID(atoi((char*)args));          int32 offset = area / 32; -        uint32 val = uint32((1 << (area % 32)));          if (area<0 || offset >= PLAYER_EXPLORED_ZONES_SIZE)          { @@ -1027,6 +1026,7 @@ public:              return false;          } +        uint32 val = uint32((1 << (area % 32)));          uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);          playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val))); @@ -1049,7 +1049,6 @@ public:          int32 area = GetAreaFlagByAreaID(atoi((char*)args));          int32 offset = area / 32; -        uint32 val = uint32((1 << (area % 32)));          if (area < 0 || offset >= PLAYER_EXPLORED_ZONES_SIZE)          { @@ -1058,6 +1057,7 @@ public:              return false;          } +        uint32 val = uint32((1 << (area % 32)));          uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);          playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val))); diff --git a/src/tools/vmap4_extractor/mpq_libmpq04.h b/src/tools/vmap4_extractor/mpq_libmpq04.h index d045abe307a..46cb50fb003 100644 --- a/src/tools/vmap4_extractor/mpq_libmpq04.h +++ b/src/tools/vmap4_extractor/mpq_libmpq04.h @@ -36,7 +36,7 @@ public:      mpq_archive_s *mpq_a;      MPQArchive(const char* filename); -    void close(); +    ~MPQArchive() { close(); }      void GetFileListTo(vector<string>& filelist) {          uint32_t filenum; @@ -65,6 +65,9 @@ public:          delete[] buffer;      } + +private: +    void close();  };  typedef std::deque<MPQArchive*> ArchiveSet;  | 
