mirror of
https://github.com/mangosfour/server.git
synced 2025-12-21 19:37:02 +00:00
[12656m] Updated some enums and structures. Thanks R2/TC
This commit is contained in:
parent
c8194124df
commit
93a3a9214b
10 changed files with 120 additions and 27 deletions
|
|
@ -539,8 +539,8 @@ bool VehicleInfo::IsUsableSeatForPlayer(uint32 seatFlags, uint32 seatFlagsB) con
|
||||||
return seatFlags & SEAT_FLAG_CAN_EXIT ||
|
return seatFlags & SEAT_FLAG_CAN_EXIT ||
|
||||||
seatFlags & SEAT_FLAG_UNCONTROLLED ||
|
seatFlags & SEAT_FLAG_UNCONTROLLED ||
|
||||||
seatFlagsB &
|
seatFlagsB &
|
||||||
(SEAT_FLAG_B_USABLE_FORCED | SEAT_FLAG_B_USABLE_FORCED_2 |
|
(VEHICLE_SEAT_FLAG_B_USABLE_FORCED | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 |
|
||||||
SEAT_FLAG_B_USABLE_FORCED_3 | SEAT_FLAG_B_USABLE_FORCED_4);
|
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Add control and such modifiers to a passenger if required
|
/// Add control and such modifiers to a passenger if required
|
||||||
|
|
|
||||||
|
|
@ -37,11 +37,6 @@
|
||||||
// Server side limitation. Base at used code requirements.
|
// Server side limitation. Base at used code requirements.
|
||||||
// also see MAX_LEVEL and GT_MAX_LEVEL define
|
// also see MAX_LEVEL and GT_MAX_LEVEL define
|
||||||
#define STRONG_MAX_LEVEL 255
|
#define STRONG_MAX_LEVEL 255
|
||||||
enum MountFlags
|
|
||||||
{
|
|
||||||
MOUNT_FLAG_CAN_PITCH = 0x4,
|
|
||||||
MOUNT_FLAG_CAN_SWIM = 0x8
|
|
||||||
};
|
|
||||||
|
|
||||||
enum BattleGroundBracketId // bracketId for level ranges
|
enum BattleGroundBracketId // bracketId for level ranges
|
||||||
{
|
{
|
||||||
|
|
@ -70,7 +65,7 @@ enum AchievementFlags
|
||||||
{
|
{
|
||||||
ACHIEVEMENT_FLAG_NONE = 0x00000000,
|
ACHIEVEMENT_FLAG_NONE = 0x00000000,
|
||||||
ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // ACHIEVEMENT_FLAG_STATISTIC Just count statistic (never stop and complete)
|
ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // ACHIEVEMENT_FLAG_STATISTIC Just count statistic (never stop and complete)
|
||||||
ACHIEVEMENT_FLAG_UNK2 = 0x00000002, // ACHIEVEMENT_FLAG_HIDDEN not used
|
ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // ACHIEVEMENT_FLAG_HIDDEN Not show in client
|
||||||
ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // ACHIEVEMENT_FLAG_HIDDEN_TILL_AWARDED Store only max value? used only in "Reach level xx"
|
ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // ACHIEVEMENT_FLAG_HIDDEN_TILL_AWARDED Store only max value? used only in "Reach level xx"
|
||||||
ACHIEVEMENT_FLAG_SUMM = 0x00000008, // ACHIEVEMENT_FLAG_CUMULATIVE Use summ criteria value from all requirements (and calculate max value)
|
ACHIEVEMENT_FLAG_SUMM = 0x00000008, // ACHIEVEMENT_FLAG_CUMULATIVE Use summ criteria value from all requirements (and calculate max value)
|
||||||
ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // ACHIEVEMENT_FLAG_DISPLAY_HIGHEST Show max criteria (and calculate max value ??)
|
ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // ACHIEVEMENT_FLAG_DISPLAY_HIGHEST Show max criteria (and calculate max value ??)
|
||||||
|
|
@ -325,7 +320,7 @@ enum Difficulty
|
||||||
|
|
||||||
DUNGEON_DIFFICULTY_NORMAL = 0,
|
DUNGEON_DIFFICULTY_NORMAL = 0,
|
||||||
DUNGEON_DIFFICULTY_HEROIC = 1,
|
DUNGEON_DIFFICULTY_HEROIC = 1,
|
||||||
// DUNGEON_DIFFICULTY_EPIC = 2, // not used, but exists
|
DUNGEON_DIFFICULTY_CHALLENGE = 2, // 5.x Challenge mode dungeons
|
||||||
|
|
||||||
RAID_DIFFICULTY_10MAN_NORMAL = 0,
|
RAID_DIFFICULTY_10MAN_NORMAL = 0,
|
||||||
RAID_DIFFICULTY_25MAN_NORMAL = 1,
|
RAID_DIFFICULTY_25MAN_NORMAL = 1,
|
||||||
|
|
@ -333,7 +328,7 @@ enum Difficulty
|
||||||
RAID_DIFFICULTY_25MAN_HEROIC = 3,
|
RAID_DIFFICULTY_25MAN_HEROIC = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_DUNGEON_DIFFICULTY 2
|
#define MAX_DUNGEON_DIFFICULTY 3
|
||||||
#define MAX_RAID_DIFFICULTY 4
|
#define MAX_RAID_DIFFICULTY 4
|
||||||
#define MAX_DIFFICULTY 4
|
#define MAX_DIFFICULTY 4
|
||||||
|
|
||||||
|
|
@ -343,7 +338,8 @@ enum SpawnMask
|
||||||
|
|
||||||
SPAWNMASK_DUNGEON_NORMAL = (1 << DUNGEON_DIFFICULTY_NORMAL),
|
SPAWNMASK_DUNGEON_NORMAL = (1 << DUNGEON_DIFFICULTY_NORMAL),
|
||||||
SPAWNMASK_DUNGEON_HEROIC = (1 << DUNGEON_DIFFICULTY_HEROIC),
|
SPAWNMASK_DUNGEON_HEROIC = (1 << DUNGEON_DIFFICULTY_HEROIC),
|
||||||
SPAWNMASK_DUNGEON_ALL = (SPAWNMASK_DUNGEON_NORMAL | SPAWNMASK_DUNGEON_HEROIC),
|
SPAWNMASK_DUNGEON_CHALLENGE = (1 << DUNGEON_DIFFICULTY_CHALLENGE),
|
||||||
|
SPAWNMASK_DUNGEON_ALL = (SPAWNMASK_DUNGEON_NORMAL | SPAWNMASK_DUNGEON_HEROIC | SPAWNMASK_DUNGEON_CHALLENGE),
|
||||||
|
|
||||||
SPAWNMASK_RAID_10MAN_NORMAL = (1 << RAID_DIFFICULTY_10MAN_NORMAL),
|
SPAWNMASK_RAID_10MAN_NORMAL = (1 << RAID_DIFFICULTY_10MAN_NORMAL),
|
||||||
SPAWNMASK_RAID_25MAN_NORMAL = (1 << RAID_DIFFICULTY_25MAN_NORMAL),
|
SPAWNMASK_RAID_25MAN_NORMAL = (1 << RAID_DIFFICULTY_25MAN_NORMAL),
|
||||||
|
|
@ -377,7 +373,22 @@ enum MapTypes // Lua_IsInInstance
|
||||||
MAP_INSTANCE = 1, // party
|
MAP_INSTANCE = 1, // party
|
||||||
MAP_RAID = 2, // raid
|
MAP_RAID = 2, // raid
|
||||||
MAP_BATTLEGROUND = 3, // pvp
|
MAP_BATTLEGROUND = 3, // pvp
|
||||||
MAP_ARENA = 4 // arena
|
MAP_ARENA = 4, // arena
|
||||||
|
MAP_SCENARIO = 5 // scenario
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MapFlags // Map flags (need more research)
|
||||||
|
{
|
||||||
|
MAP_FLAG_NONE = 0x00000000, // none specific
|
||||||
|
MAP_FLAG_INSTANCEABLE = 0x00000001, // or possible splittable for continent maps
|
||||||
|
MAP_FLAG_DEVELOPMENT = 0x00000002, // testing or development maps only
|
||||||
|
MAP_FLAG_UNK3 = 0x00000004, //
|
||||||
|
MAP_FLAG_UNK4 = 0x00000008, //
|
||||||
|
MAP_FLAG_UNK5 = 0x00000010, //
|
||||||
|
MAP_FLAG_UNK6 = 0x00000020, //
|
||||||
|
MAP_FLAG_UNK7 = 0x00000040, //
|
||||||
|
MAP_FLAG_UNK8 = 0x00000080, //
|
||||||
|
MAP_FLAG_VARIABLE_DIFFICULTY = 0x00000100, // maps, where has changeable difficulty
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AbilytyLearnType
|
enum AbilytyLearnType
|
||||||
|
|
@ -441,6 +452,12 @@ enum ItemLimitCategory
|
||||||
ITEM_LIMIT_CATEGORY_MANA_GEM = 4,
|
ITEM_LIMIT_CATEGORY_MANA_GEM = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum MountFlags
|
||||||
|
{
|
||||||
|
MOUNT_FLAG_CAN_PITCH = 0x4, // client checks MOVEMENTFLAG2_FULL_SPEED_PITCHING
|
||||||
|
MOUNT_FLAG_CAN_SWIM = 0x8, // client checks MOVEMENTFLAG_SWIMMING
|
||||||
|
};
|
||||||
|
|
||||||
enum TalentTreeRole
|
enum TalentTreeRole
|
||||||
{
|
{
|
||||||
TALENT_ROLE_TANK = 0x2,
|
TALENT_ROLE_TANK = 0x2,
|
||||||
|
|
@ -616,6 +633,7 @@ enum VehicleFlags
|
||||||
|
|
||||||
enum VehicleSeatFlags
|
enum VehicleSeatFlags
|
||||||
{
|
{
|
||||||
|
SEAT_FLAG_NONE = 0x00000000, //
|
||||||
SEAT_FLAG_UNK1 = 0x00000001, // "HasLowerAnimForEnter"
|
SEAT_FLAG_UNK1 = 0x00000001, // "HasLowerAnimForEnter"
|
||||||
SEAT_FLAG_UNK2 = 0x00000002, // "HasLowerAnimForRide"
|
SEAT_FLAG_UNK2 = 0x00000002, // "HasLowerAnimForRide"
|
||||||
SEAT_FLAG_UNK3 = 0x00000004,
|
SEAT_FLAG_UNK3 = 0x00000004,
|
||||||
|
|
@ -626,12 +644,12 @@ enum VehicleSeatFlags
|
||||||
SEAT_FLAG_UNK8 = 0x00000080,
|
SEAT_FLAG_UNK8 = 0x00000080,
|
||||||
SEAT_FLAG_UNK9 = 0x00000100,
|
SEAT_FLAG_UNK9 = 0x00000100,
|
||||||
SEAT_FLAG_HIDE_PASSENGER = 0x00000200, // Passenger is hidden
|
SEAT_FLAG_HIDE_PASSENGER = 0x00000200, // Passenger is hidden
|
||||||
SEAT_FLAG_UNK10 = 0x00000400, // "AllowsTurning"
|
SEAT_FLAG_FREE_ACTION = 0x00000400, // "AllowsTurning"
|
||||||
SEAT_FLAG_CAN_CONTROL = 0x00000800, // Lua_UnitInVehicleControlSeat
|
SEAT_FLAG_CAN_CONTROL = 0x00000800, // Lua_UnitInVehicleControlSeat
|
||||||
SEAT_FLAG_UNK11 = 0x00001000, // "Can Cast Mount Spell"
|
SEAT_FLAG_UNK11 = 0x00001000, // "Can Cast Mount Spell"
|
||||||
SEAT_FLAG_UNCONTROLLED = 0x00002000, // "Uncontrolled"
|
SEAT_FLAG_UNCONTROLLED = 0x00002000, // "Uncontrolled"
|
||||||
SEAT_FLAG_CAN_ATTACK = 0x00004000, // Can attack, cast spells and use items from vehicle?
|
SEAT_FLAG_CAN_ATTACK = 0x00004000, // Can attack, cast spells and use items from vehicle?
|
||||||
SEAT_FLAG_UNK13 = 0x00008000, // "ShouldUseVehicleSeatExitAnimationOnForcedExit"
|
SEAT_FLAG_UNATTACKABLE = 0x00008000, // "ShouldUseVehicleSeatExitAnimationOnForcedExit"
|
||||||
SEAT_FLAG_UNK14 = 0x00010000,
|
SEAT_FLAG_UNK14 = 0x00010000,
|
||||||
SEAT_FLAG_UNK15 = 0x00020000,
|
SEAT_FLAG_UNK15 = 0x00020000,
|
||||||
SEAT_FLAG_UNK16 = 0x00040000, // "HasVehicleExitAnimForVoluntaryExit"
|
SEAT_FLAG_UNK16 = 0x00040000, // "HasVehicleExitAnimForVoluntaryExit"
|
||||||
|
|
@ -652,14 +670,26 @@ enum VehicleSeatFlags
|
||||||
|
|
||||||
enum VehicleSeatFlagsB
|
enum VehicleSeatFlagsB
|
||||||
{
|
{
|
||||||
SEAT_FLAG_B_USABLE_FORCED = 0x00000002,
|
VEHICLE_SEAT_FLAG_B_NONE = 0x00000000,
|
||||||
SEAT_FLAG_B_TARGETS_IN_RAIDUI = 0x00000008, // Lua_UnitTargetsVehicleInRaidUI
|
VEHICLE_SEAT_FLAG_B_UNK1 = 0x00000001,
|
||||||
SEAT_FLAG_B_EJECTABLE = 0x00000020, // Ejectable
|
VEHICLE_SEAT_FLAG_B_USABLE_FORCED = 0x00000002,
|
||||||
SEAT_FLAG_B_USABLE_FORCED_2 = 0x00000040,
|
VEHICLE_SEAT_FLAG_B_UNK2 = 0x00000004,
|
||||||
SEAT_FLAG_B_USABLE_FORCED_3 = 0x00000100,
|
VEHICLE_SEAT_FLAG_B_TARGETS_IN_RAIDUI = 0x00000008, // Lua_UnitTargetsVehicleInRaidUI
|
||||||
SEAT_FLAG_B_USABLE_FORCED_4 = 0x02000000,
|
VEHICLE_SEAT_FLAG_B_UNK3 = 0x00000010,
|
||||||
SEAT_FLAG_B_CAN_SWITCH = 0x04000000,
|
VEHICLE_SEAT_FLAG_B_EJECTABLE = 0x00000020, // ejectable
|
||||||
SEAT_FLAG_B_PLAYERFRAME_UI = 0x80000000 // Lua_UnitHasVehiclePlayerFrameUI
|
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 = 0x00000040,
|
||||||
|
VEHICLE_SEAT_FLAG_B_UNK6 = 0x00000080,
|
||||||
|
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 = 0x00000100,
|
||||||
|
VEHICLE_SEAT_FLAG_B_EJECTABLE_FORCED = 0x00200000, // seats for forced eject? 27 seats at 3.3.5a
|
||||||
|
VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4 = 0x02000000,
|
||||||
|
VEHICLE_SEAT_FLAG_B_CANSWITCH = 0x04000000, // can switch seats
|
||||||
|
VEHICLE_SEAT_FLAG_B_VEHICLE_PLAYERFRAME_UI = 0x80000000, // Lua_UnitHasVehiclePlayerFrameUI - actually checked for flagsb &~ 0x80000000
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MapDifficultyFlags
|
||||||
|
{
|
||||||
|
MAP_DIFFICULTY_FLAG_NONE = 0x00000001, // Not used in 3.3.5
|
||||||
|
MAP_DIFFICULTY_FLAG_CONDITION = 0x00000002, // This map difficulty has condition
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,13 @@ struct AchievementCriteriaEntry
|
||||||
uint32 castCount; // 4
|
uint32 castCount; // 4
|
||||||
} cast_spell;
|
} cast_spell;
|
||||||
|
|
||||||
|
// ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint32 captureID; // 3
|
||||||
|
uint32 captureCount; // 4
|
||||||
|
} objective_capture;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
|
// ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|
@ -230,6 +237,7 @@ struct AchievementCriteriaEntry
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 mapID; // 3 Reference to Map.dbc
|
uint32 mapID; // 3 Reference to Map.dbc
|
||||||
|
uint32 count; // 4
|
||||||
} win_arena;
|
} win_arena;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33
|
// ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33
|
||||||
|
|
@ -1399,9 +1407,10 @@ struct MapEntry
|
||||||
// Helpers
|
// Helpers
|
||||||
uint32 Expansion() const { return addon; }
|
uint32 Expansion() const { return addon; }
|
||||||
|
|
||||||
bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID; }
|
bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_SCENARIO; }
|
||||||
bool IsNonRaidDungeon() const { return map_type == MAP_INSTANCE; }
|
bool IsNonRaidDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_SCENARIO; }
|
||||||
bool Instanceable() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA; }
|
bool Instanceable() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA || map_type == MAP_SCENARIO; }
|
||||||
|
bool IsScenario() const { return map_type == MAP_SCENARIO; }
|
||||||
bool IsRaid() const { return map_type == MAP_RAID; }
|
bool IsRaid() const { return map_type == MAP_RAID; }
|
||||||
bool IsBattleGround() const { return map_type == MAP_BATTLEGROUND; }
|
bool IsBattleGround() const { return map_type == MAP_BATTLEGROUND; }
|
||||||
bool IsBattleArena() const { return map_type == MAP_ARENA; }
|
bool IsBattleArena() const { return map_type == MAP_ARENA; }
|
||||||
|
|
@ -1428,6 +1437,13 @@ struct MapEntry
|
||||||
{
|
{
|
||||||
return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571 || MapID == 870;
|
return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571 || MapID == 870;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsTransport() const
|
||||||
|
{
|
||||||
|
if (IsContinent())
|
||||||
|
return false;
|
||||||
|
return map_type == MAP_COMMON && mapFlags == MAP_FLAG_INSTANCEABLE;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MapDifficultyEntry
|
struct MapDifficultyEntry
|
||||||
|
|
@ -2478,6 +2494,15 @@ struct VehicleSeatEntry
|
||||||
//uint32 unk[6]; // 58-63
|
//uint32 unk[6]; // 58-63
|
||||||
//uint32 unk2; // 64 4.0.0
|
//uint32 unk2; // 64 4.0.0
|
||||||
//uint32 unk3; // 65 4.0.1
|
//uint32 unk3; // 65 4.0.1
|
||||||
|
|
||||||
|
bool IsUsable() const { return
|
||||||
|
(m_flags & SEAT_FLAG_CAN_EXIT) ||
|
||||||
|
(m_flags & SEAT_FLAG_CAN_CONTROL) ||
|
||||||
|
(m_flags & SEAT_FLAG_UNCONTROLLED) ||
|
||||||
|
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED) ||
|
||||||
|
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2) ||
|
||||||
|
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3) ||
|
||||||
|
(m_flagsB & VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4); }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct WMOAreaTableEntry
|
struct WMOAreaTableEntry
|
||||||
|
|
|
||||||
|
|
@ -1122,7 +1122,9 @@ void WorldSession::ReadAddonsInfo(ByteBuffer &data)
|
||||||
addonInfo >> unk2;
|
addonInfo >> unk2;
|
||||||
|
|
||||||
if (addonInfo.rpos() != addonInfo.size())
|
if (addonInfo.rpos() != addonInfo.size())
|
||||||
|
{
|
||||||
DEBUG_LOG("packet under read!");
|
DEBUG_LOG("packet under read!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sLog.outError("Addon packet uncompress error!");
|
sLog.outError("Addon packet uncompress error!");
|
||||||
|
|
|
||||||
|
|
@ -610,6 +610,15 @@ void AchievementMgr::LoadFromDB(QueryResult* achievementResult, QueryResult* cri
|
||||||
progress.timedCriteriaFailed = false;
|
progress.timedCriteriaFailed = false;
|
||||||
|
|
||||||
AchievementEntry const* achievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
|
AchievementEntry const* achievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
|
||||||
|
|
||||||
|
if (!achievement)
|
||||||
|
{
|
||||||
|
// we will remove nonexistent referred achievement for all characters
|
||||||
|
sLog.outError("Nonexistent achievement criteria %u (referred achievement %u) data removed from table `character_achievement_progress`.",id, criteria->referredAchievement);
|
||||||
|
CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE criteria = %u",id);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Checked in LoadAchievementCriteriaList
|
// Checked in LoadAchievementCriteriaList
|
||||||
|
|
||||||
// A failed achievement will be removed on next tick - TODO: Possible that timer 2 is reseted
|
// A failed achievement will be removed on next tick - TODO: Possible that timer 2 is reseted
|
||||||
|
|
@ -650,6 +659,10 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
|
||||||
|
|
||||||
DEBUG_FILTER_LOG(LOG_FILTER_ACHIEVEMENT_UPDATES, "AchievementMgr::SendAchievementEarned(%u)", achievement->ID);
|
DEBUG_FILTER_LOG(LOG_FILTER_ACHIEVEMENT_UPDATES, "AchievementMgr::SendAchievementEarned(%u)", achievement->ID);
|
||||||
|
|
||||||
|
// Not broadcast a hidden achievement
|
||||||
|
if(achievement->flags & ACHIEVEMENT_FLAG_HIDDEN)
|
||||||
|
return;
|
||||||
|
|
||||||
if (Guild* guild = sGuildMgr.GetGuildById(GetPlayer()->GetGuildId()))
|
if (Guild* guild = sGuildMgr.GetGuildById(GetPlayer()->GetGuildId()))
|
||||||
{
|
{
|
||||||
MaNGOS::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
MaNGOS::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
||||||
|
|
@ -2680,6 +2693,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaRequirements()
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
||||||
break; // any cases
|
break; // any cases
|
||||||
|
|
|
||||||
|
|
@ -2197,7 +2197,9 @@ bool ChatHandler::isValidChatMessage(const char* message)
|
||||||
|
|
||||||
// check if every opened sequence was also closed properly
|
// check if every opened sequence was also closed properly
|
||||||
if (validSequence != validSequenceIterator)
|
if (validSequence != validSequenceIterator)
|
||||||
|
{
|
||||||
DEBUG_LOG("ChatHandler::isValidChatMessage EOF in active sequence");
|
DEBUG_LOG("ChatHandler::isValidChatMessage EOF in active sequence");
|
||||||
|
}
|
||||||
|
|
||||||
return validSequence == validSequenceIterator;
|
return validSequence == validSequenceIterator;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2014,8 +2014,10 @@ InstanceGroupBind* Group::BindToInstance(DungeonPersistentState* state, bool per
|
||||||
bind.state = state;
|
bind.state = state;
|
||||||
bind.perm = permanent;
|
bind.perm = permanent;
|
||||||
if (!load)
|
if (!load)
|
||||||
|
{
|
||||||
DEBUG_LOG("Group::BindToInstance: Group (Id: %d) is now bound to map %d, instance %d, difficulty %d",
|
DEBUG_LOG("Group::BindToInstance: Group (Id: %d) is now bound to map %d, instance %d, difficulty %d",
|
||||||
GetId(), state->GetMapId(), state->GetInstanceId(), state->GetDifficulty());
|
GetId(), state->GetMapId(), state->GetInstanceId(), state->GetDifficulty());
|
||||||
|
}
|
||||||
return &bind;
|
return &bind;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1437,7 +1437,9 @@ void WorldSession::HandleTimeSyncResp(WorldPacket& recv_data)
|
||||||
DEBUG_LOG("WORLD: Received opcode CMSG_TIME_SYNC_RESP: counter %u, client ticks %u, time since last sync %u", counter, clientTicks, clientTicks - _player->m_timeSyncClient);
|
DEBUG_LOG("WORLD: Received opcode CMSG_TIME_SYNC_RESP: counter %u, client ticks %u, time since last sync %u", counter, clientTicks, clientTicks - _player->m_timeSyncClient);
|
||||||
|
|
||||||
if (counter != _player->m_timeSyncCounter - 1)
|
if (counter != _player->m_timeSyncCounter - 1)
|
||||||
|
{
|
||||||
DEBUG_LOG(" WORLD: Opcode CMSG_TIME_SYNC_RESP -- Wrong time sync counter from %s (cheater?)", _player->GetGuidStr().c_str());
|
DEBUG_LOG(" WORLD: Opcode CMSG_TIME_SYNC_RESP -- Wrong time sync counter from %s (cheater?)", _player->GetGuidStr().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
uint32 ourTicks = clientTicks + (WorldTimer::getMSTime() - _player->m_timeSyncServer);
|
uint32 ourTicks = clientTicks + (WorldTimer::getMSTime() - _player->m_timeSyncServer);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4697,18 +4697,26 @@ void Spell::EffectTriggerMissileSpell(SpellEffectEntry const* effect)
|
||||||
m_caster->GetMap()->ScriptsStart(DBS_ON_SPELL, m_spellInfo->Id, m_caster, unitTarget);
|
m_caster->GetMap()->ScriptsStart(DBS_ON_SPELL, m_spellInfo->Id, m_caster, unitTarget);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
sLog.outError("EffectTriggerMissileSpell of spell %u (eff: %u): triggering unknown spell id %u",
|
sLog.outError("EffectTriggerMissileSpell of spell %u (eff: %u): triggering unknown spell id %u",
|
||||||
m_spellInfo->Id, effect->EffectIndex, triggered_spell_id);
|
m_spellInfo->Id, effect->EffectIndex, triggered_spell_id);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_CastItem)
|
if (m_CastItem)
|
||||||
|
{
|
||||||
DEBUG_FILTER_LOG(LOG_FILTER_SPELL_CAST, "WORLD: cast Item spellId - %i", spellInfo->Id);
|
DEBUG_FILTER_LOG(LOG_FILTER_SPELL_CAST, "WORLD: cast Item spellId - %i", spellInfo->Id);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
||||||
|
{
|
||||||
m_caster->CastSpell(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ, spellInfo, true, m_CastItem, NULL, m_originalCasterGUID, m_spellInfo);
|
m_caster->CastSpell(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ, spellInfo, true, m_CastItem, NULL, m_originalCasterGUID, m_spellInfo);
|
||||||
else if (unitTarget)
|
}
|
||||||
|
else if (unitTarget)
|
||||||
|
{
|
||||||
m_caster->CastSpell(unitTarget, spellInfo, true, m_CastItem, NULL, m_originalCasterGUID, m_spellInfo);
|
m_caster->CastSpell(unitTarget, spellInfo, true, m_CastItem, NULL, m_originalCasterGUID, m_spellInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectJump(SpellEffectEntry const* effect)
|
void Spell::EffectJump(SpellEffectEntry const* effect)
|
||||||
|
|
@ -5024,7 +5032,9 @@ void Spell::EffectUnlearnSpecialization(SpellEffectEntry const* effect)
|
||||||
_player->removeSpell(spellToUnlearn);
|
_player->removeSpell(spellToUnlearn);
|
||||||
|
|
||||||
if (WorldObject const* caster = GetCastingObject())
|
if (WorldObject const* caster = GetCastingObject())
|
||||||
|
{
|
||||||
DEBUG_LOG("Spell: %s has unlearned spell %u at %s", _player->GetGuidStr().c_str(), spellToUnlearn, caster->GetGuidStr().c_str());
|
DEBUG_LOG("Spell: %s has unlearned spell %u at %s", _player->GetGuidStr().c_str(), spellToUnlearn, caster->GetGuidStr().c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectPowerDrain(SpellEffectEntry const* effect)
|
void Spell::EffectPowerDrain(SpellEffectEntry const* effect)
|
||||||
|
|
@ -6583,7 +6593,9 @@ void Spell::EffectLearnSpell(SpellEffectEntry const* effect)
|
||||||
player->learnSpell(spellToLearn, false);
|
player->learnSpell(spellToLearn, false);
|
||||||
|
|
||||||
if (WorldObject const* caster = GetCastingObject())
|
if (WorldObject const* caster = GetCastingObject())
|
||||||
|
{
|
||||||
DEBUG_LOG("Spell: %s has learned spell %u from %s", player->GetGuidStr().c_str(), spellToLearn, caster->GetGuidStr().c_str());
|
DEBUG_LOG("Spell: %s has learned spell %u from %s", player->GetGuidStr().c_str(), spellToLearn, caster->GetGuidStr().c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectDispel(SpellEffectEntry const* effect)
|
void Spell::EffectDispel(SpellEffectEntry const* effect)
|
||||||
|
|
@ -6852,7 +6864,9 @@ void Spell::EffectLearnSkill(SpellEffectEntry const* effect)
|
||||||
((Player*)unitTarget)->SetSkill(skillid, skillval ? skillval : 1, damage * 75, damage);
|
((Player*)unitTarget)->SetSkill(skillid, skillval ? skillval : 1, damage * 75, damage);
|
||||||
|
|
||||||
if (WorldObject const* caster = GetCastingObject())
|
if (WorldObject const* caster = GetCastingObject())
|
||||||
|
{
|
||||||
DEBUG_LOG("Spell: %s has learned skill %u (to maxlevel %u) from %s", unitTarget->GetGuidStr().c_str(), skillid, damage * 75, caster->GetGuidStr().c_str());
|
DEBUG_LOG("Spell: %s has learned skill %u (to maxlevel %u) from %s", unitTarget->GetGuidStr().c_str(), skillid, damage * 75, caster->GetGuidStr().c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectTradeSkill(SpellEffectEntry const* /*effect*/)
|
void Spell::EffectTradeSkill(SpellEffectEntry const* /*effect*/)
|
||||||
|
|
@ -7346,7 +7360,9 @@ void Spell::EffectLearnPetSpell(SpellEffectEntry const* effect)
|
||||||
_player->PetSpellInitialize();
|
_player->PetSpellInitialize();
|
||||||
|
|
||||||
if (WorldObject const* caster = GetCastingObject())
|
if (WorldObject const* caster = GetCastingObject())
|
||||||
|
{
|
||||||
DEBUG_LOG("Spell: %s has learned spell %u from %s", pet->GetGuidStr().c_str(), learn_spellproto->Id, caster->GetGuidStr().c_str());
|
DEBUG_LOG("Spell: %s has learned spell %u from %s", pet->GetGuidStr().c_str(), learn_spellproto->Id, caster->GetGuidStr().c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectTaunt(SpellEffectEntry const* /*effect*/)
|
void Spell::EffectTaunt(SpellEffectEntry const* /*effect*/)
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,7 @@ void WorldSession::HandleEjectPassenger(WorldPacket& recvPacket)
|
||||||
|
|
||||||
// Check for eject flag
|
// Check for eject flag
|
||||||
if (VehicleSeatEntry const* seatEntry = vehicleInfo->GetSeatEntry(passenger->GetTransportInfo()->GetTransportSeat()))
|
if (VehicleSeatEntry const* seatEntry = vehicleInfo->GetSeatEntry(passenger->GetTransportInfo()->GetTransportSeat()))
|
||||||
if (seatEntry->m_flagsB & SEAT_FLAG_B_EJECTABLE)
|
if (seatEntry->m_flagsB & VEHICLE_SEAT_FLAG_B_EJECTABLE)
|
||||||
_player->RemoveSpellsCausingAura(SPELL_AURA_CONTROL_VEHICLE, passengerGuid);
|
_player->RemoveSpellsCausingAura(SPELL_AURA_CONTROL_VEHICLE, passengerGuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue