diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedCreature.h | 2 | ||||
| -rwxr-xr-x | src/server/game/Achievements/AchievementMgr.cpp | 5 | ||||
| -rwxr-xr-x | src/server/game/DataStores/DBCEnums.h | 2 | ||||
| -rwxr-xr-x | src/server/game/Maps/Map.h | 1 | ||||
| -rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 4 | 
5 files changed, 10 insertions, 4 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index e1de1fe091b..277edb7a337 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -182,7 +182,7 @@ struct ScriptedAI : public CreatureAI      Difficulty GetDifficulty() { return _difficulty; }      // return true for 25 man or 25 man heroic mode -    bool Is25ManRaid() { return _difficulty & 1; } +    bool Is25ManRaid() { return _difficulty & RAID_DIFFICULTY_MASK_25MAN; }      template<class T> inline      const T& DUNGEON_MODE(const T& normal5, const T& heroic10) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 4252176941d..3262af05f5f 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -334,7 +334,10 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Un          case ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT:              return sScriptMgr->OnCriteriaCheck(this, const_cast<Player*>(source), const_cast<Unit*>(target));          case ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY: -            return source->GetMap()->GetSpawnMode() == difficulty.difficulty; +            if (source->GetMap()->IsRaid()) +                if (source->GetMap()->Is25ManRaid() != (difficulty.difficulty & RAID_DIFFICULTY_MASK_25MAN)) +                    return false; +            return source->GetMap()->GetSpawnMode() >= difficulty.difficulty;          case ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT:              return source->GetMap()->GetPlayersCountExceptGMs() <= map_players.maxcount;          case ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM: diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index ac47b4a28f3..0a4c6b70b9f 100755 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -278,6 +278,8 @@ enum Difficulty      RAID_DIFFICULTY_25MAN_HEROIC = 3,  }; +#define RAID_DIFFICULTY_MASK_25MAN 1    // since 25man difficulties are 1 and 3, we can check them like that +  #define MAX_DUNGEON_DIFFICULTY     3  #define MAX_RAID_DIFFICULTY        4  #define MAX_DIFFICULTY             4 diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index f430002fca6..c778fe6ea5c 100755 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -365,6 +365,7 @@ class Map : public GridRefManager<NGridType>          bool IsRaid() const { return i_mapEntry && i_mapEntry->IsRaid(); }          bool IsRaidOrHeroicDungeon() const { return IsRaid() || i_spawnMode > DUNGEON_DIFFICULTY_NORMAL; }          bool IsHeroic() const { return IsRaid() ? i_spawnMode >= RAID_DIFFICULTY_10MAN_HEROIC : i_spawnMode >= DUNGEON_DIFFICULTY_HEROIC; } +        bool Is25ManRaid() const { return IsRaid() && i_spawnMode & RAID_DIFFICULTY_MASK_25MAN; }   // since 25man difficulties are 1 and 3, we can check them like that          bool IsBattleground() const { return i_mapEntry && i_mapEntry->IsBattleground(); }          bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); }          bool IsBattlegroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattlegroundOrArena(); } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 986c1667f62..d1aee5b884e 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5856,7 +5856,7 @@ void Spell::EffectReputation(SpellEffIndex effIndex)      {          rep_change = int32((float)rep_change * repData->spell_rate);      } -     +      // Bonus from spells that increase reputation gain      float bonus = rep_change * _player->GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN) / 100.0f; // 10%      rep_change += (int32)bonus; @@ -6952,7 +6952,7 @@ void Spell::EffectCastButtons(SpellEffIndex effIndex)          if (!ab || ab->GetType() != ACTION_BUTTON_SPELL)              continue; -        //! Action button data is unverified when it's set so it can be "hacked"  +        //! Action button data is unverified when it's set so it can be "hacked"          //! to contain invalid spells, so filter here.          uint32 spell_id = ab->GetAction();          if (!spell_id)  | 
