chore(Core/Misc): Change all TODO to doxygen comment (#14966)
This commit is contained in:
@@ -339,7 +339,7 @@ void Log::Close()
|
|||||||
|
|
||||||
bool Log::ShouldLog(std::string const& type, LogLevel level) const
|
bool Log::ShouldLog(std::string const& type, LogLevel level) const
|
||||||
{
|
{
|
||||||
// TODO: Use cache to store "Type.sub1.sub2": "Type" equivalence, should
|
/// @todo: Use cache to store "Type.sub1.sub2": "Type" equivalence, should
|
||||||
// Speed up in cases where requesting "Type.sub1.sub2" but only configured
|
// Speed up in cases where requesting "Type.sub1.sub2" but only configured
|
||||||
// Logger "Type"
|
// Logger "Type"
|
||||||
|
|
||||||
|
|||||||
@@ -322,7 +322,7 @@ std::string Metric::FormatInfluxDBValue(float value)
|
|||||||
|
|
||||||
std::string Metric::FormatInfluxDBTagValue(std::string const& value)
|
std::string Metric::FormatInfluxDBTagValue(std::string const& value)
|
||||||
{
|
{
|
||||||
// ToDo: should handle '=' and ',' characters too
|
/// @todo: should handle '=' and ',' characters too
|
||||||
return boost::replace_all_copy(value, " ", "\\ ");
|
return boost::replace_all_copy(value, " ", "\\ ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ private:
|
|||||||
|
|
||||||
static std::string FormatInfluxDBTagValue(std::string const& value);
|
static std::string FormatInfluxDBTagValue(std::string const& value);
|
||||||
|
|
||||||
// ToDo: should format TagKey and FieldKey too in the same way as TagValue
|
/// @todo: should format TagKey and FieldKey too in the same way as TagValue
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Metric();
|
Metric();
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ namespace Acore::Impl::StringConvertImpl
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
// @todo replace this once libc++ supports double args to from_chars
|
/// @todo replace this once libc++ supports double args to from_chars
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct For<T, std::enable_if_t<std::is_floating_point_v<T>>>
|
struct For<T, std::enable_if_t<std::is_floating_point_v<T>>>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
namespace advstd
|
namespace advstd
|
||||||
{
|
{
|
||||||
// This workaround for std::remove_cvref_t, std::type_identify is needed for GCC 8...
|
// This workaround for std::remove_cvref_t, std::type_identify is needed for GCC 8...
|
||||||
// TODO: remove when we drop GCC 8 support. https://en.cppreference.com/w/cpp/compiler_support/20
|
/// @todo: remove when we drop GCC 8 support. https://en.cppreference.com/w/cpp/compiler_support/20
|
||||||
// C++20 advstd::remove_cvref_t
|
// C++20 advstd::remove_cvref_t
|
||||||
template <class T>
|
template <class T>
|
||||||
using remove_cvref_t = std::remove_cv_t<std::remove_reference_t<T>>;
|
using remove_cvref_t = std::remove_cv_t<std::remove_reference_t<T>>;
|
||||||
|
|||||||
@@ -349,7 +349,7 @@ PreparedResultSet::PreparedResultSet(MySQLStmt* stmt, MySQLResult* result, uint6
|
|||||||
// when mysql_stmt_fetch returned MYSQL_DATA_TRUNCATED
|
// when mysql_stmt_fetch returned MYSQL_DATA_TRUNCATED
|
||||||
// we cannot blindly null-terminate the data either as it may be retrieved as binary blob and not specifically a string
|
// we cannot blindly null-terminate the data either as it may be retrieved as binary blob and not specifically a string
|
||||||
// in this case using Field::GetCString will result in garbage
|
// in this case using Field::GetCString will result in garbage
|
||||||
// TODO: remove Field::GetCString and use std::string_view in C++17
|
/// @todo: remove Field::GetCString and use std::string_view in C++17
|
||||||
if (fetched_length < buffer_length)
|
if (fetched_length < buffer_length)
|
||||||
*((char*)buffer + fetched_length) = '\0';
|
*((char*)buffer + fetched_length) = '\0';
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ TurretAI::TurretAI(Creature* c) : CreatureAI(c)
|
|||||||
|
|
||||||
bool TurretAI::CanAIAttack(Unit const* /*who*/) const
|
bool TurretAI::CanAIAttack(Unit const* /*who*/) const
|
||||||
{
|
{
|
||||||
// TODO: use one function to replace it
|
/// @todo: use one function to replace it
|
||||||
if (!me->IsWithinCombatRange(me->GetVictim(), me->m_CombatDistance)
|
if (!me->IsWithinCombatRange(me->GetVictim(), me->m_CombatDistance)
|
||||||
|| (m_minRange && me->IsWithinCombatRange(me->GetVictim(), m_minRange)))
|
|| (m_minRange && me->IsWithinCombatRange(me->GetVictim(), m_minRange)))
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ struct DefaultTargetSelector : public Acore::unary_function<Unit*, bool>
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Target selector for spell casts checking range, auras and attributes
|
// Target selector for spell casts checking range, auras and attributes
|
||||||
// TODO: Add more checks from Spell::CheckCast
|
/// @todo: Add more checks from Spell::CheckCast
|
||||||
struct SpellTargetSelector : public Acore::unary_function<Unit*, bool>
|
struct SpellTargetSelector : public Acore::unary_function<Unit*, bool>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -641,22 +641,22 @@ enum SMART_ACTION
|
|||||||
SMART_ACTION_SET_CORPSE_DELAY = 116, // timer
|
SMART_ACTION_SET_CORPSE_DELAY = 116, // timer
|
||||||
SMART_ACTION_DISABLE_EVADE = 117, // 0/1 (1 = disabled, 0 = enabled)
|
SMART_ACTION_DISABLE_EVADE = 117, // 0/1 (1 = disabled, 0 = enabled)
|
||||||
SMART_ACTION_GO_SET_GO_STATE = 118, // state
|
SMART_ACTION_GO_SET_GO_STATE = 118, // state
|
||||||
SMART_ACTION_SET_CAN_FLY = 119, // TODO: NOT SUPPORTED YET
|
SMART_ACTION_SET_CAN_FLY = 119, /// @todo: NOT SUPPORTED YET
|
||||||
SMART_ACTION_REMOVE_AURAS_BY_TYPE = 120, // TODO: NOT SUPPORTED YET
|
SMART_ACTION_REMOVE_AURAS_BY_TYPE = 120, /// @todo: NOT SUPPORTED YET
|
||||||
SMART_ACTION_SET_SIGHT_DIST = 121, // sightDistance
|
SMART_ACTION_SET_SIGHT_DIST = 121, // sightDistance
|
||||||
SMART_ACTION_FLEE = 122, // fleeTime
|
SMART_ACTION_FLEE = 122, // fleeTime
|
||||||
SMART_ACTION_ADD_THREAT = 123, // +threat, -threat
|
SMART_ACTION_ADD_THREAT = 123, // +threat, -threat
|
||||||
SMART_ACTION_LOAD_EQUIPMENT = 124, // id
|
SMART_ACTION_LOAD_EQUIPMENT = 124, // id
|
||||||
SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT = 125, // id min range, id max range
|
SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT = 125, // id min range, id max range
|
||||||
SMART_ACTION_REMOVE_ALL_GAMEOBJECTS = 126,
|
SMART_ACTION_REMOVE_ALL_GAMEOBJECTS = 126,
|
||||||
SMART_ACTION_REMOVE_MOVEMENT = 127, // TODO: NOT SUPPORTED YET
|
SMART_ACTION_REMOVE_MOVEMENT = 127, /// @todo: NOT SUPPORTED YET
|
||||||
SMART_ACTION_PLAY_ANIMKIT = 128, // don't use on 3.3.5a
|
SMART_ACTION_PLAY_ANIMKIT = 128, // don't use on 3.3.5a
|
||||||
SMART_ACTION_SCENE_PLAY = 129, // don't use on 3.3.5a
|
SMART_ACTION_SCENE_PLAY = 129, // don't use on 3.3.5a
|
||||||
SMART_ACTION_SCENE_CANCEL = 130, // don't use on 3.3.5a
|
SMART_ACTION_SCENE_CANCEL = 130, // don't use on 3.3.5a
|
||||||
SMART_ACTION_SPAWN_SPAWNGROUP = 131, // TODO: NOT SUPPORTED YET
|
SMART_ACTION_SPAWN_SPAWNGROUP = 131, /// @todo: NOT SUPPORTED YET
|
||||||
SMART_ACTION_DESPAWN_SPAWNGROUP = 132, // TODO: NOT SUPPORTED YET
|
SMART_ACTION_DESPAWN_SPAWNGROUP = 132, /// @todo: NOT SUPPORTED YET
|
||||||
SMART_ACTION_RESPAWN_BY_SPAWNID = 133, // TODO: NOT SUPPORTED YET
|
SMART_ACTION_RESPAWN_BY_SPAWNID = 133, /// @todo: NOT SUPPORTED YET
|
||||||
// SMART_ACTION_INVOKER_CAST = 134, // TODO: solve name conflicts
|
// SMART_ACTION_INVOKER_CAST = 134, /// @todo: solve name conflicts
|
||||||
SMART_ACTION_PLAY_CINEMATIC = 135, // entry, cinematic
|
SMART_ACTION_PLAY_CINEMATIC = 135, // entry, cinematic
|
||||||
SMART_ACTION_SET_MOVEMENT_SPEED = 136, // movementType, speedInteger, speedFraction
|
SMART_ACTION_SET_MOVEMENT_SPEED = 136, // movementType, speedInteger, speedFraction
|
||||||
|
|
||||||
|
|||||||
@@ -2341,7 +2341,7 @@ void AchievementMgr::BuildAllDataPacket(WorldPacket* data) const
|
|||||||
*data << uint32(iter->first);
|
*data << uint32(iter->first);
|
||||||
data->appendPackGUID(iter->second.counter);
|
data->appendPackGUID(iter->second.counter);
|
||||||
*data << GetPlayer()->GetPackGUID();
|
*data << GetPlayer()->GetPackGUID();
|
||||||
*data << uint32(0); // TODO: This should be 1 if it is a failed timed criteria
|
*data << uint32(0); /// @todo: This should be 1 if it is a failed timed criteria
|
||||||
data->AppendPackedTime(iter->second.date);
|
data->AppendPackedTime(iter->second.date);
|
||||||
*data << uint32(now - iter->second.date);
|
*data << uint32(now - iter->second.date);
|
||||||
*data << uint32(now - iter->second.date);
|
*data << uint32(now - iter->second.date);
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ void Battlefield::HandlePlayerEnterZone(Player* player, uint32 /*zone*/)
|
|||||||
InvitePlayerToWar(player);
|
InvitePlayerToWar(player);
|
||||||
else // No more vacant places
|
else // No more vacant places
|
||||||
{
|
{
|
||||||
// TODO: Send a packet to announce it to player
|
/// @todo: Send a packet to announce it to player
|
||||||
m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = GameTime::GetGameTime().count() + (player->IsGameMaster() ? 30 * MINUTE : 10);
|
m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = GameTime::GetGameTime().count() + (player->IsGameMaster() ? 30 * MINUTE : 10);
|
||||||
InvitePlayerToQueue(player);
|
InvitePlayerToQueue(player);
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,7 @@ void Battlefield::InvitePlayerToWar(Player* player)
|
|||||||
if (!player)
|
if (!player)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO : needed ?
|
/// @todo : needed ?
|
||||||
if (player->IsInFlight())
|
if (player->IsInFlight())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TODO: Implement proper support for vehicle+player teleportation
|
/// @todo: Implement proper support for vehicle+player teleportation
|
||||||
// TODO: Use spell victory/defeat in wg instead of RewardMarkOfHonor() && RewardHonor
|
/// @todo: Use spell victory/defeat in wg instead of RewardMarkOfHonor() && RewardHonor
|
||||||
// TODO: Add proper implement of achievement
|
/// @todo: Add proper implement of achievement
|
||||||
|
|
||||||
#include "BattlefieldWG.h"
|
#include "BattlefieldWG.h"
|
||||||
#include "GameTime.h"
|
#include "GameTime.h"
|
||||||
@@ -864,7 +864,7 @@ void BattlefieldWG::OnPlayerJoinWar(Player* player)
|
|||||||
|
|
||||||
void BattlefieldWG::OnPlayerLeaveWar(Player* player)
|
void BattlefieldWG::OnPlayerLeaveWar(Player* player)
|
||||||
{
|
{
|
||||||
// Remove all aura from WG // TODO: false we can go out of this zone on retail and keep Rank buff, remove on end of WG
|
// Remove all aura from WG /// @todo: false we can go out of this zone on retail and keep Rank buff, remove on end of WG
|
||||||
if (!player->GetSession()->PlayerLogout())
|
if (!player->GetSession()->PlayerLogout())
|
||||||
{
|
{
|
||||||
if (player->GetVehicle()) // Remove vehicle of player if he go out.
|
if (player->GetVehicle()) // Remove vehicle of player if he go out.
|
||||||
|
|||||||
@@ -532,7 +532,7 @@ enum WintergraspWorldstates
|
|||||||
WORLDSTATE_ALLIANCE_KEEP_DEFENDED = 4025,
|
WORLDSTATE_ALLIANCE_KEEP_DEFENDED = 4025,
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Handle this with creature_text ?
|
/// @todo: Handle this with creature_text ?
|
||||||
enum eWGText
|
enum eWGText
|
||||||
{
|
{
|
||||||
BATTLEFIELD_WG_TEXT_START = 28,
|
BATTLEFIELD_WG_TEXT_START = 28,
|
||||||
|
|||||||
@@ -751,7 +751,7 @@ int32 ArenaTeam::GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won
|
|||||||
// Calculate the rating modification
|
// Calculate the rating modification
|
||||||
float mod;
|
float mod;
|
||||||
|
|
||||||
// TODO: Replace this hack with using the confidence factor (limiting the factor to 2.0f)
|
/// @todo: Replace this hack with using the confidence factor (limiting the factor to 2.0f)
|
||||||
if (won)
|
if (won)
|
||||||
{
|
{
|
||||||
if (ownRating < 1300)
|
if (ownRating < 1300)
|
||||||
|
|||||||
@@ -1599,7 +1599,7 @@ bool Battleground::AddSpiritGuide(uint32 type, float x, float y, float z, float
|
|||||||
creature->setDeathState(DEAD);
|
creature->setDeathState(DEAD);
|
||||||
creature->SetGuidValue(UNIT_FIELD_CHANNEL_OBJECT, creature->GetGUID());
|
creature->SetGuidValue(UNIT_FIELD_CHANNEL_OBJECT, creature->GetGUID());
|
||||||
// aura
|
// aura
|
||||||
// TODO: Fix display here
|
/// @todo: Fix display here
|
||||||
// creature->SetVisibleAura(0, SPELL_SPIRIT_HEAL_CHANNEL);
|
// creature->SetVisibleAura(0, SPELL_SPIRIT_HEAL_CHANNEL);
|
||||||
// casting visual effect
|
// casting visual effect
|
||||||
creature->SetUInt32Value(UNIT_CHANNEL_SPELL, SPELL_SPIRIT_HEAL_CHANNEL);
|
creature->SetUInt32Value(UNIT_CHANNEL_SPELL, SPELL_SPIRIT_HEAL_CHANNEL);
|
||||||
|
|||||||
@@ -525,7 +525,7 @@ public:
|
|||||||
void HandleTriggerBuff(GameObject* gameObject);
|
void HandleTriggerBuff(GameObject* gameObject);
|
||||||
void SetHoliday(bool is_holiday);
|
void SetHoliday(bool is_holiday);
|
||||||
|
|
||||||
// TODO: make this protected:
|
/// @todo: make this protected:
|
||||||
typedef GuidVector BGObjects;
|
typedef GuidVector BGObjects;
|
||||||
typedef GuidVector BGCreatures;
|
typedef GuidVector BGCreatures;
|
||||||
BGObjects BgObjects;
|
BGObjects BgObjects;
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ Creature* BattlegroundAV::AddAVCreature(uint16 cinfoid, uint16 type)
|
|||||||
if (!creature)
|
if (!creature)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN] || creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
|
if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN] || creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
|
||||||
creature->SetRespawnDelay(RESPAWN_ONE_DAY); // TODO: look if this can be done by database + also add this for the wingcommanders
|
creature->SetRespawnDelay(RESPAWN_ONE_DAY); /// @todo: look if this can be done by database + also add this for the wingcommanders
|
||||||
|
|
||||||
if ((isStatic && cinfoid >= 10 && cinfoid <= 14) || (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3) ||
|
if ((isStatic && cinfoid >= 10 && cinfoid <= 14) || (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3) ||
|
||||||
(cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3))))
|
(cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3))))
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ namespace lfg
|
|||||||
|
|
||||||
sLFGMgr->InitializeLockedDungeons(player, group);
|
sLFGMgr->InitializeLockedDungeons(player, group);
|
||||||
sLFGMgr->SetTeam(player->GetGUID(), player->GetTeamId());
|
sLFGMgr->SetTeam(player->GetGUID(), player->GetTeamId());
|
||||||
// TODO - Restore LfgPlayerData and send proper status to player if it was in a group
|
/// @todo - Restore LfgPlayerData and send proper status to player if it was in a group
|
||||||
}
|
}
|
||||||
|
|
||||||
void LFGPlayerScript::OnBindToInstance(Player* player, Difficulty difficulty, uint32 mapId, bool /*permanent*/)
|
void LFGPlayerScript::OnBindToInstance(Player* player, Difficulty difficulty, uint32 mapId, bool /*permanent*/)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "WorldPacket.h"
|
#include "WorldPacket.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -547,7 +547,7 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele
|
|||||||
|
|
||||||
SetMeleeDamageSchool(SpellSchools(cInfo->dmgschool));
|
SetMeleeDamageSchool(SpellSchools(cInfo->dmgschool));
|
||||||
CreatureBaseStats const* stats = sObjectMgr->GetCreatureBaseStats(GetLevel(), cInfo->unit_class);
|
CreatureBaseStats const* stats = sObjectMgr->GetCreatureBaseStats(GetLevel(), cInfo->unit_class);
|
||||||
float armor = (float)stats->GenerateArmor(cInfo); // TODO: Why is this treated as uint32 when it's a float?
|
float armor = (float)stats->GenerateArmor(cInfo); /// @todo: Why is this treated as uint32 when it's a float?
|
||||||
SetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE, armor);
|
SetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE, armor);
|
||||||
SetModifierValue(UNIT_MOD_RESISTANCE_HOLY, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_HOLY]));
|
SetModifierValue(UNIT_MOD_RESISTANCE_HOLY, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_HOLY]));
|
||||||
SetModifierValue(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_FIRE]));
|
SetModifierValue(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_FIRE]));
|
||||||
@@ -1521,7 +1521,7 @@ void Creature::SelectLevel(bool changelevel)
|
|||||||
SetMaxPower(POWER_MANA, mana); //MAX Mana
|
SetMaxPower(POWER_MANA, mana); //MAX Mana
|
||||||
SetPower(POWER_MANA, mana);
|
SetPower(POWER_MANA, mana);
|
||||||
|
|
||||||
// TODO: set UNIT_FIELD_POWER*, for some creature class case (energy, etc)
|
/// @todo: set UNIT_FIELD_POWER*, for some creature class case (energy, etc)
|
||||||
|
|
||||||
SetModifierValue(UNIT_MOD_HEALTH, BASE_VALUE, (float)health);
|
SetModifierValue(UNIT_MOD_HEALTH, BASE_VALUE, (float)health);
|
||||||
SetModifierValue(UNIT_MOD_MANA, BASE_VALUE, (float)mana);
|
SetModifierValue(UNIT_MOD_MANA, BASE_VALUE, (float)mana);
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public:
|
|||||||
[[nodiscard]] bool HasReactState(ReactStates state) const { return (m_reactState == state); }
|
[[nodiscard]] bool HasReactState(ReactStates state) const { return (m_reactState == state); }
|
||||||
void InitializeReactState();
|
void InitializeReactState();
|
||||||
|
|
||||||
///// TODO RENAME THIS!!!!!
|
///// @todo RENAME THIS!!!!!
|
||||||
bool isCanInteractWithBattleMaster(Player* player, bool msg) const;
|
bool isCanInteractWithBattleMaster(Player* player, bool msg) const;
|
||||||
bool isCanTrainingAndResetTalentsOf(Player* player) const;
|
bool isCanTrainingAndResetTalentsOf(Player* player) const;
|
||||||
[[nodiscard]] bool IsValidTrainerForPlayer(Player* player, uint32* npcFlags = nullptr) const;
|
[[nodiscard]] bool IsValidTrainerForPlayer(Player* player, uint32* npcFlags = nullptr) const;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ constexpr Milliseconds PET_FOCUS_REGEN_INTERVAL = 4s;
|
|||||||
|
|
||||||
enum class VisibilityDistanceType : uint8;
|
enum class VisibilityDistanceType : uint8;
|
||||||
|
|
||||||
// TODO: Implement missing flags from TC in places that custom flags from xinef&pussywizzard use flag values.
|
/// @todo: Implement missing flags from TC in places that custom flags from xinef&pussywizzard use flag values.
|
||||||
// EnumUtils: DESCRIBE THIS
|
// EnumUtils: DESCRIBE THIS
|
||||||
enum CreatureFlagsExtra : uint32
|
enum CreatureFlagsExtra : uint32
|
||||||
{
|
{
|
||||||
@@ -57,7 +57,7 @@ enum CreatureFlagsExtra : uint32
|
|||||||
CREATURE_FLAG_EXTRA_NO_TAUNT = 0x00000100, // creature is immune to taunt auras and 'attack me' effects
|
CREATURE_FLAG_EXTRA_NO_TAUNT = 0x00000100, // creature is immune to taunt auras and 'attack me' effects
|
||||||
CREATURE_FLAG_EXTRA_NO_MOVE_FLAGS_UPDATE = 0x00000200, // creature won't update movement flags
|
CREATURE_FLAG_EXTRA_NO_MOVE_FLAGS_UPDATE = 0x00000200, // creature won't update movement flags
|
||||||
CREATURE_FLAG_EXTRA_GHOST_VISIBILITY = 0x00000400, // creature will only be visible to dead players
|
CREATURE_FLAG_EXTRA_GHOST_VISIBILITY = 0x00000400, // creature will only be visible to dead players
|
||||||
CREATURE_FLAG_EXTRA_UNUSED_12 = 0x00000800, // TODO: Implement CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK (creature will use offhand attacks)
|
CREATURE_FLAG_EXTRA_UNUSED_12 = 0x00000800, /// @todo: Implement CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK (creature will use offhand attacks)
|
||||||
CREATURE_FLAG_EXTRA_NO_SELL_VENDOR = 0x00001000, // players can't sell items to this vendor
|
CREATURE_FLAG_EXTRA_NO_SELL_VENDOR = 0x00001000, // players can't sell items to this vendor
|
||||||
CREATURE_FLAG_EXTRA_IGNORE_COMBAT = 0x00002000,
|
CREATURE_FLAG_EXTRA_IGNORE_COMBAT = 0x00002000,
|
||||||
CREATURE_FLAG_EXTRA_WORLDEVENT = 0x00004000, // custom flag for world event creatures (left room for merging)
|
CREATURE_FLAG_EXTRA_WORLDEVENT = 0x00004000, // custom flag for world event creatures (left room for merging)
|
||||||
|
|||||||
@@ -499,7 +499,7 @@ void Puppet::Update(uint32 time)
|
|||||||
if (!IsAlive())
|
if (!IsAlive())
|
||||||
{
|
{
|
||||||
UnSummon();
|
UnSummon();
|
||||||
// TODO: why long distance .die does not remove it
|
/// @todo: why long distance .die does not remove it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2299,7 +2299,7 @@ void GameObject::ModifyHealth(int32 change, Unit* attackerOrHealer /*= nullptr*/
|
|||||||
Player* player = attackerOrHealer->GetCharmerOrOwnerPlayerOrPlayerItself();
|
Player* player = attackerOrHealer->GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||||
|
|
||||||
// dealing damage, send packet
|
// dealing damage, send packet
|
||||||
// TODO: is there any packet for healing?
|
/// @todo: is there any packet for healing?
|
||||||
if (player)
|
if (player)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 8 + 8 + 8 + 4 + 4);
|
WorldPacket data(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, 8 + 8 + 8 + 4 + 4);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
#include "Tokenize.h"
|
#include "Tokenize.h"
|
||||||
#include "StringConvert.h"
|
#include "StringConvert.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -2889,7 +2889,7 @@ void WorldObject::DestroyForNearbyPlayers()
|
|||||||
if (!player->HaveAtClient(this))
|
if (!player->HaveAtClient(this))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (isType(TYPEMASK_UNIT) && ((Unit*)this)->GetCharmerGUID() == player->GetGUID()) // TODO: this is for puppet
|
if (isType(TYPEMASK_UNIT) && ((Unit*)this)->GetCharmerGUID() == player->GetGUID()) /// @todo: this is for puppet
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
DestroyForPlayer(player);
|
DestroyForPlayer(player);
|
||||||
|
|||||||
@@ -1005,7 +1005,7 @@ bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map, uint32 phas
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Move stat mods code to pet passive auras
|
/// @todo: Move stat mods code to pet passive auras
|
||||||
bool Guardian::InitStatsForLevel(uint8 petlevel)
|
bool Guardian::InitStatsForLevel(uint8 petlevel)
|
||||||
{
|
{
|
||||||
CreatureTemplate const* cinfo = GetCreatureTemplate();
|
CreatureTemplate const* cinfo = GetCreatureTemplate();
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
#include "Tokenize.h"
|
#include "Tokenize.h"
|
||||||
#include "StringConvert.h"
|
#include "StringConvert.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -470,7 +470,7 @@ void Player::CleanupsBeforeDelete(bool finalCleanup)
|
|||||||
bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo)
|
bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo)
|
||||||
{
|
{
|
||||||
// FIXME: outfitId not used in player creating
|
// FIXME: outfitId not used in player creating
|
||||||
// TODO: need more checks against packet modifications
|
/// @todo: need more checks against packet modifications
|
||||||
// should check that skin, face, hair* are valid via DBC per race/class
|
// should check that skin, face, hair* are valid via DBC per race/class
|
||||||
// also do it in Player::BuildEnumData, Player::LoadFromDB
|
// also do it in Player::BuildEnumData, Player::LoadFromDB
|
||||||
|
|
||||||
@@ -853,7 +853,7 @@ void Player::HandleDrowning(uint32 time_diff)
|
|||||||
{
|
{
|
||||||
m_MirrorTimer[BREATH_TIMER] += 1 * IN_MILLISECONDS;
|
m_MirrorTimer[BREATH_TIMER] += 1 * IN_MILLISECONDS;
|
||||||
// Calculate and deal damage
|
// Calculate and deal damage
|
||||||
// TODO: Check this formula
|
/// @todo: Check this formula
|
||||||
uint32 damage = GetMaxHealth() / 5 + urand(0, GetLevel() - 1);
|
uint32 damage = GetMaxHealth() / 5 + urand(0, GetLevel() - 1);
|
||||||
EnvironmentalDamage(DAMAGE_DROWNING, damage);
|
EnvironmentalDamage(DAMAGE_DROWNING, damage);
|
||||||
}
|
}
|
||||||
@@ -922,7 +922,7 @@ void Player::HandleDrowning(uint32 time_diff)
|
|||||||
{
|
{
|
||||||
m_MirrorTimer[FIRE_TIMER] += 1 * IN_MILLISECONDS;
|
m_MirrorTimer[FIRE_TIMER] += 1 * IN_MILLISECONDS;
|
||||||
// Calculate and deal damage
|
// Calculate and deal damage
|
||||||
// TODO: Check this formula
|
/// @todo: Check this formula
|
||||||
uint32 damage = urand(600, 700);
|
uint32 damage = urand(600, 700);
|
||||||
if (m_MirrorTimerFlags & UNDERWATER_INLAVA)
|
if (m_MirrorTimerFlags & UNDERWATER_INLAVA)
|
||||||
EnvironmentalDamage(DAMAGE_LAVA, damage);
|
EnvironmentalDamage(DAMAGE_LAVA, damage);
|
||||||
@@ -1837,7 +1837,7 @@ void Player::Regenerate(Powers power)
|
|||||||
|
|
||||||
uint32 curValue = GetPower(power);
|
uint32 curValue = GetPower(power);
|
||||||
|
|
||||||
// TODO: possible use of miscvalueb instead of amount
|
/// @todo: possible use of miscvalueb instead of amount
|
||||||
if (HasAuraTypeWithMiscvalue(SPELL_AURA_PREVENT_REGENERATE_POWER, power + 1))
|
if (HasAuraTypeWithMiscvalue(SPELL_AURA_PREVENT_REGENERATE_POWER, power + 1))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -3184,7 +3184,7 @@ bool Player::_addSpell(uint32 spellId, uint8 addSpecMask, bool temporary, bool l
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo confirm if rogues start wth lockpicking skill at level 1 but only recieve the spell to use it at level 16
|
/// @todo confirm if rogues start wth lockpicking skill at level 1 but only recieve the spell to use it at level 16
|
||||||
// Added for runeforging, it is confirmed via sniff that this happens when death knights learn the spell, not on character creation.
|
// Added for runeforging, it is confirmed via sniff that this happens when death knights learn the spell, not on character creation.
|
||||||
if ((_spell_idx->second->AcquireMethod == SKILL_LINE_ABILITY_LEARNED_ON_SKILL_LEARN && !HasSkill(pSkill->id)) || ((pSkill->id == SKILL_LOCKPICKING || pSkill->id == SKILL_RUNEFORGING) && _spell_idx->second->TrivialSkillLineRankHigh == 0))
|
if ((_spell_idx->second->AcquireMethod == SKILL_LINE_ABILITY_LEARNED_ON_SKILL_LEARN && !HasSkill(pSkill->id)) || ((pSkill->id == SKILL_LOCKPICKING || pSkill->id == SKILL_RUNEFORGING) && _spell_idx->second->TrivialSkillLineRankHigh == 0))
|
||||||
{
|
{
|
||||||
@@ -5055,7 +5055,7 @@ void Player::GetDodgeFromAgility(float& diminishing, float& nondiminishing)
|
|||||||
if (!dodgeRatio || pclass > MAX_CLASSES)
|
if (!dodgeRatio || pclass > MAX_CLASSES)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO: research if talents/effects that increase total agility by x% should increase non-diminishing part
|
/// @todo: research if talents/effects that increase total agility by x% should increase non-diminishing part
|
||||||
float base_agility = GetCreateStat(STAT_AGILITY) * m_auraModifiersGroup[UNIT_MOD_STAT_START + static_cast<uint16>(STAT_AGILITY)][BASE_PCT];
|
float base_agility = GetCreateStat(STAT_AGILITY) * m_auraModifiersGroup[UNIT_MOD_STAT_START + static_cast<uint16>(STAT_AGILITY)][BASE_PCT];
|
||||||
float bonus_agility = GetStat(STAT_AGILITY) - base_agility;
|
float bonus_agility = GetStat(STAT_AGILITY) - base_agility;
|
||||||
|
|
||||||
@@ -12921,7 +12921,7 @@ PartyResult Player::CanUninviteFromGroup(ObjectGuid targetPlayerGUID) const
|
|||||||
if (grp->isRollLootActive())
|
if (grp->isRollLootActive())
|
||||||
return ERR_PARTY_LFG_BOOT_LOOT_ROLLS;
|
return ERR_PARTY_LFG_BOOT_LOOT_ROLLS;
|
||||||
|
|
||||||
// TODO: Should also be sent when anyone has recently left combat, with an aprox ~5 seconds timer.
|
/// @todo: Should also be sent when anyone has recently left combat, with an aprox ~5 seconds timer.
|
||||||
for (GroupReference const* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next())
|
for (GroupReference const* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next())
|
||||||
if (itr->GetSource() && itr->GetSource()->IsInMap(this) && itr->GetSource()->IsInCombat())
|
if (itr->GetSource() && itr->GetSource()->IsInMap(this) && itr->GetSource()->IsInCombat())
|
||||||
return ERR_PARTY_LFG_BOOT_IN_COMBAT;
|
return ERR_PARTY_LFG_BOOT_IN_COMBAT;
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
#include "Tokenize.h"
|
#include "Tokenize.h"
|
||||||
#include "StringConvert.h"
|
#include "StringConvert.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -2271,7 +2271,7 @@ InventoryResult Player::CanUseItem(Item* pItem, bool not_loading) const
|
|||||||
// Armor that is binded to account can "morph" from plate to mail, etc. if skill is not learned yet.
|
// Armor that is binded to account can "morph" from plate to mail, etc. if skill is not learned yet.
|
||||||
if (pProto->Quality == ITEM_QUALITY_HEIRLOOM && pProto->Class == ITEM_CLASS_ARMOR && !HasSkill(itemSkill))
|
if (pProto->Quality == ITEM_QUALITY_HEIRLOOM && pProto->Class == ITEM_CLASS_ARMOR && !HasSkill(itemSkill))
|
||||||
{
|
{
|
||||||
// TODO: when you right-click already equipped item it throws EQUIP_ERR_NO_REQUIRED_PROFICIENCY.
|
/// @todo: when you right-click already equipped item it throws EQUIP_ERR_NO_REQUIRED_PROFICIENCY.
|
||||||
|
|
||||||
// In fact it's a visual bug, everything works properly... I need sniffs of operations with
|
// In fact it's a visual bug, everything works properly... I need sniffs of operations with
|
||||||
// binded to account items from off server.
|
// binded to account items from off server.
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
#include "WeatherMgr.h"
|
#include "WeatherMgr.h"
|
||||||
#include "WorldStatePackets.h"
|
#include "WorldStatePackets.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -164,7 +164,7 @@ void Player::Update(uint32 p_time)
|
|||||||
if (Unit* victim = GetVictim())
|
if (Unit* victim = GetVictim())
|
||||||
{
|
{
|
||||||
// default combat reach 10
|
// default combat reach 10
|
||||||
// TODO add weapon, skill check
|
/// @todo add weapon, skill check
|
||||||
|
|
||||||
if (isAttackReady(BASE_ATTACK))
|
if (isAttackReady(BASE_ATTACK))
|
||||||
{
|
{
|
||||||
@@ -1407,7 +1407,7 @@ void Player::UpdatePvPState()
|
|||||||
|
|
||||||
void Player::UpdateFFAPvPState(bool reset /*= true*/)
|
void Player::UpdateFFAPvPState(bool reset /*= true*/)
|
||||||
{
|
{
|
||||||
// TODO: should we always synchronize UNIT_FIELD_BYTES_2, 1 of controller
|
/// @todo: should we always synchronize UNIT_FIELD_BYTES_2, 1 of controller
|
||||||
// and controlled? no, we shouldn't, those are checked for affecting player
|
// and controlled? no, we shouldn't, those are checked for affecting player
|
||||||
// by client
|
// by client
|
||||||
if (!pvpInfo.IsInNoPvPArea && !IsGameMaster() &&
|
if (!pvpInfo.IsInNoPvPArea && !IsGameMaster() &&
|
||||||
|
|||||||
@@ -1174,7 +1174,7 @@ SpellCastResult Unit::CastSpell(SpellCastTargets const& targets, SpellInfo const
|
|||||||
return SPELL_FAILED_SPELL_UNAVAILABLE;
|
return SPELL_FAILED_SPELL_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: this is a workaround - not needed anymore, but required for some scripts :(
|
/// @todo: this is a workaround - not needed anymore, but required for some scripts :(
|
||||||
if (!originalCaster && triggeredByAura)
|
if (!originalCaster && triggeredByAura)
|
||||||
{
|
{
|
||||||
originalCaster = triggeredByAura->GetCasterGUID();
|
originalCaster = triggeredByAura->GetCasterGUID();
|
||||||
@@ -1457,7 +1457,7 @@ void Unit::DealSpellDamage(SpellNonMeleeDamage* damageInfo, bool durabilityLoss,
|
|||||||
Unit::DealDamage(this, victim, damageInfo->damage, &cleanDamage, SPELL_DIRECT_DAMAGE, SpellSchoolMask(damageInfo->schoolMask), spellProto, durabilityLoss, false, spell);
|
Unit::DealDamage(this, victim, damageInfo->damage, &cleanDamage, SPELL_DIRECT_DAMAGE, SpellSchoolMask(damageInfo->schoolMask), spellProto, durabilityLoss, false, spell);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO for melee need create structure as in
|
// @todo for melee need create structure as in
|
||||||
void Unit::CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, WeaponAttackType attackType, const bool sittingVictim)
|
void Unit::CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, WeaponAttackType attackType, const bool sittingVictim)
|
||||||
{
|
{
|
||||||
damageInfo->attacker = this;
|
damageInfo->attacker = this;
|
||||||
@@ -1951,7 +1951,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
|
|||||||
|
|
||||||
Unit::DealDamageMods(this, damage, &absorb);
|
Unit::DealDamageMods(this, damage, &absorb);
|
||||||
|
|
||||||
// TODO: Move this to a packet handler
|
/// @todo: Move this to a packet handler
|
||||||
WorldPacket data(SMSG_SPELLDAMAGESHIELD, (8 + 8 + 4 + 4 + 4 + 4));
|
WorldPacket data(SMSG_SPELLDAMAGESHIELD, (8 + 8 + 4 + 4 + 4 + 4));
|
||||||
data << victim->GetGUID();
|
data << victim->GetGUID();
|
||||||
data << GetGUID();
|
data << GetGUID();
|
||||||
@@ -3428,7 +3428,7 @@ SpellMissInfo Unit::SpellHitResult(Unit* victim, SpellInfo const* spell, bool Ca
|
|||||||
return SPELL_MISS_IMMUNE;
|
return SPELL_MISS_IMMUNE;
|
||||||
|
|
||||||
// All positive spells can`t miss
|
// All positive spells can`t miss
|
||||||
// TODO: client not show miss log for this spells - so need find info for this in dbc and use it!
|
/// @todo: client not show miss log for this spells - so need find info for this in dbc and use it!
|
||||||
if ((spell->IsPositive() || spell->HasEffect(SPELL_EFFECT_DISPEL))
|
if ((spell->IsPositive() || spell->HasEffect(SPELL_EFFECT_DISPEL))
|
||||||
&& (!IsHostileTo(victim))) // prevent from affecting enemy by "positive" spell
|
&& (!IsHostileTo(victim))) // prevent from affecting enemy by "positive" spell
|
||||||
return SPELL_MISS_NONE;
|
return SPELL_MISS_NONE;
|
||||||
@@ -3496,7 +3496,7 @@ SpellMissInfo Unit::SpellHitResult(Unit* victim, Spell const* spell, bool CanRef
|
|||||||
}
|
}
|
||||||
|
|
||||||
// All positive spells can`t miss
|
// All positive spells can`t miss
|
||||||
// TODO: client not show miss log for this spells - so need find info for this in dbc and use it!
|
/// @todo: client not show miss log for this spells - so need find info for this in dbc and use it!
|
||||||
if ((spellInfo->IsPositive() || spellInfo->HasEffect(SPELL_EFFECT_DISPEL))
|
if ((spellInfo->IsPositive() || spellInfo->HasEffect(SPELL_EFFECT_DISPEL))
|
||||||
&& (!IsHostileTo(victim))) // prevent from affecting enemy by "positive" spell
|
&& (!IsHostileTo(victim))) // prevent from affecting enemy by "positive" spell
|
||||||
{
|
{
|
||||||
@@ -6615,7 +6615,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
|
|||||||
|
|
||||||
target = this;
|
target = this;
|
||||||
if (roll_chance_i(10))
|
if (roll_chance_i(10))
|
||||||
ToPlayer()->Say("This is Madness!", LANG_UNIVERSAL); // TODO: It should be moved to database, shouldn't it?
|
ToPlayer()->Say("This is Madness!", LANG_UNIVERSAL); /// @todo: It should be moved to database, shouldn't it?
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Sunwell Exalted Caster Neck (??? neck)
|
// Sunwell Exalted Caster Neck (??? neck)
|
||||||
@@ -7527,7 +7527,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
|
|||||||
triggered_spell_id = isWrathSpell ? 48518 : 48517;
|
triggered_spell_id = isWrathSpell ? 48518 : 48517;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
}
|
}
|
||||||
case SPELLFAMILY_ROGUE:
|
case SPELLFAMILY_ROGUE:
|
||||||
{
|
{
|
||||||
@@ -8378,7 +8378,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
|
|||||||
// Mark of Blood
|
// Mark of Blood
|
||||||
if (dummySpell->Id == 49005)
|
if (dummySpell->Id == 49005)
|
||||||
{
|
{
|
||||||
// TODO: need more info (cooldowns/PPM)
|
/// @todo: need more info (cooldowns/PPM)
|
||||||
triggered_spell_id = 61607;
|
triggered_spell_id = 61607;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -9454,7 +9454,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
|
|||||||
|
|
||||||
target = this;
|
target = this;
|
||||||
trigger_spell_id = 22588;
|
trigger_spell_id = 22588;
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
}
|
}
|
||||||
// Bonus Healing (Crystal Spire of Karabor mace)
|
// Bonus Healing (Crystal Spire of Karabor mace)
|
||||||
case 40971:
|
case 40971:
|
||||||
@@ -10843,7 +10843,7 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
|||||||
LOG_FATAL("entities.unit", "Player {} is trying to charm unit {}, but it already has a charmed unit {}", GetName(), charm->GetEntry(), GetCharmGUID().ToString());
|
LOG_FATAL("entities.unit", "Player {} is trying to charm unit {}, but it already has a charmed unit {}", GetName(), charm->GetEntry(), GetCharmGUID().ToString());
|
||||||
|
|
||||||
charm->m_ControlledByPlayer = true;
|
charm->m_ControlledByPlayer = true;
|
||||||
// TODO: maybe we can use this flag to check if controlled by player
|
/// @todo: maybe we can use this flag to check if controlled by player
|
||||||
charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -12150,7 +12150,7 @@ float Unit::SpellTakenCritChance(Unit const* caster, SpellInfo const* spellProto
|
|||||||
{
|
{
|
||||||
return 100.0f;
|
return 100.0f;
|
||||||
}
|
}
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELL_DAMAGE_CLASS_RANGED:
|
case SPELL_DAMAGE_CLASS_RANGED:
|
||||||
{
|
{
|
||||||
// flat aura mods
|
// flat aura mods
|
||||||
@@ -12211,7 +12211,7 @@ uint32 Unit::SpellCriticalDamageBonus(Unit const* caster, SpellInfo const* spell
|
|||||||
{
|
{
|
||||||
case SPELL_DAMAGE_CLASS_MELEE: // for melee based spells is 100%
|
case SPELL_DAMAGE_CLASS_MELEE: // for melee based spells is 100%
|
||||||
case SPELL_DAMAGE_CLASS_RANGED:
|
case SPELL_DAMAGE_CLASS_RANGED:
|
||||||
// TODO: write here full calculation for melee/ranged spells
|
/// @todo: write here full calculation for melee/ranged spells
|
||||||
crit_bonus += damage;
|
crit_bonus += damage;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -12249,7 +12249,7 @@ uint32 Unit::SpellCriticalHealingBonus(Unit const* caster, SpellInfo const* spel
|
|||||||
{
|
{
|
||||||
case SPELL_DAMAGE_CLASS_MELEE: // for melee based spells is 100%
|
case SPELL_DAMAGE_CLASS_MELEE: // for melee based spells is 100%
|
||||||
case SPELL_DAMAGE_CLASS_RANGED:
|
case SPELL_DAMAGE_CLASS_RANGED:
|
||||||
// TODO: write here full calculation for melee/ranged spells
|
/// @todo: write here full calculation for melee/ranged spells
|
||||||
crit_bonus = damage;
|
crit_bonus = damage;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -14867,7 +14867,7 @@ void Unit::ModSpellCastTime(SpellInfo const* spellInfo, int32& castTime, Spell*
|
|||||||
|
|
||||||
// called from caster
|
// called from caster
|
||||||
if (Player* modOwner = GetSpellModOwner())
|
if (Player* modOwner = GetSpellModOwner())
|
||||||
// TODO:(MadAgos) Eventually check and delete the bool argument
|
/// @todo:(MadAgos) Eventually check and delete the bool argument
|
||||||
modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_CASTING_TIME, castTime, spell, bool(modOwner != this && !IsPet()));
|
modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_CASTING_TIME, castTime, spell, bool(modOwner != this && !IsPet()));
|
||||||
|
|
||||||
switch (spellInfo->DmgClass)
|
switch (spellInfo->DmgClass)
|
||||||
@@ -18101,7 +18101,7 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp
|
|||||||
{
|
{
|
||||||
Map* instanceMap = creature->GetMap();
|
Map* instanceMap = creature->GetMap();
|
||||||
//Player* creditedPlayer = GetCharmerOrOwnerPlayerOrPlayerItself();
|
//Player* creditedPlayer = GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||||
// TODO: do instance binding anyway if the charmer/owner is offline
|
/// @todo: do instance binding anyway if the charmer/owner is offline
|
||||||
|
|
||||||
if (instanceMap->IsDungeon() && player)
|
if (instanceMap->IsDungeon() && player)
|
||||||
if (instanceMap->IsRaidOrHeroicDungeon())
|
if (instanceMap->IsRaidOrHeroicDungeon())
|
||||||
@@ -18540,7 +18540,7 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au
|
|||||||
AttackStop();
|
AttackStop();
|
||||||
|
|
||||||
// Xinef: dont reset threat and combat, put them on offline list, moved down after faction changes
|
// Xinef: dont reset threat and combat, put them on offline list, moved down after faction changes
|
||||||
// CombatStop(); // TODO: CombatStop(true) may cause crash (interrupt spells)
|
// CombatStop(); /// @todo: CombatStop(true) may cause crash (interrupt spells)
|
||||||
// DeleteThreatList();
|
// DeleteThreatList();
|
||||||
|
|
||||||
Player* playerCharmer = charmer->ToPlayer();
|
Player* playerCharmer = charmer->ToPlayer();
|
||||||
|
|||||||
@@ -581,7 +581,7 @@ enum MovementFlags
|
|||||||
MOVEMENTFLAG_FALLING_SLOW = 0x20000000, // active rogue safe fall spell (passive)
|
MOVEMENTFLAG_FALLING_SLOW = 0x20000000, // active rogue safe fall spell (passive)
|
||||||
MOVEMENTFLAG_HOVER = 0x40000000, // hover, cannot jump
|
MOVEMENTFLAG_HOVER = 0x40000000, // hover, cannot jump
|
||||||
|
|
||||||
// TODO: Check if PITCH_UP and PITCH_DOWN really belong here..
|
/// @todo: Check if PITCH_UP and PITCH_DOWN really belong here..
|
||||||
MOVEMENTFLAG_MASK_MOVING =
|
MOVEMENTFLAG_MASK_MOVING =
|
||||||
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT |
|
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT |
|
||||||
MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN | MOVEMENTFLAG_FALLING | MOVEMENTFLAG_FALLING_FAR | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING |
|
MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN | MOVEMENTFLAG_FALLING | MOVEMENTFLAG_FALLING_FAR | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING |
|
||||||
@@ -900,7 +900,7 @@ struct CalcDamageInfo
|
|||||||
uint32 procVictim;
|
uint32 procVictim;
|
||||||
uint32 procEx;
|
uint32 procEx;
|
||||||
uint32 cleanDamage; // Used only for rage calculation
|
uint32 cleanDamage; // Used only for rage calculation
|
||||||
MeleeHitOutcome hitOutCome; // TODO: remove this field (need use TargetState)
|
MeleeHitOutcome hitOutCome; /// @todo: remove this field (need use TargetState)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Spell damage info structure based on structure sending in SMSG_SPELLNONMELEEDAMAGELOG opcode
|
// Spell damage info structure based on structure sending in SMSG_SPELLNONMELEEDAMAGELOG opcode
|
||||||
|
|||||||
@@ -826,7 +826,7 @@ void GameEventMgr::LoadFromDB()
|
|||||||
Field* fields = result->Fetch();
|
Field* fields = result->Fetch();
|
||||||
|
|
||||||
uint32 questId = fields[0].Get<uint32>();
|
uint32 questId = fields[0].Get<uint32>();
|
||||||
uint32 eventEntry = fields[1].Get<uint32>(); // TODO: Change to uint8
|
uint32 eventEntry = fields[1].Get<uint32>(); /// @todo: Change to uint8
|
||||||
|
|
||||||
Quest* questTemplate = const_cast<Quest*>(sObjectMgr->GetQuestTemplate(questId));
|
Quest* questTemplate = const_cast<Quest*>(sObjectMgr->GetQuestTemplate(questId));
|
||||||
|
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ enum GuildEvents
|
|||||||
GE_RANK_DELETED = 11,
|
GE_RANK_DELETED = 11,
|
||||||
GE_SIGNED_ON = 12,
|
GE_SIGNED_ON = 12,
|
||||||
GE_SIGNED_OFF = 13,
|
GE_SIGNED_OFF = 13,
|
||||||
GE_GUILDBANKBAGSLOTS_CHANGED = 14, /// TODO: Sent when items are moved in gbank - all players with bank open will send tab query
|
GE_GUILDBANKBAGSLOTS_CHANGED = 14, /// @todo: Sent when items are moved in gbank - all players with bank open will send tab query
|
||||||
GE_BANK_TAB_PURCHASED = 15,
|
GE_BANK_TAB_PURCHASED = 15,
|
||||||
GE_BANK_TAB_UPDATED = 16,
|
GE_BANK_TAB_UPDATED = 16,
|
||||||
GE_BANK_MONEY_SET = 17,
|
GE_BANK_MONEY_SET = 17,
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ void WorldSession::HandleCalendarGetCalendar(WorldPacket& /*recvData*/)
|
|||||||
data << uint32(boundCounter);
|
data << uint32(boundCounter);
|
||||||
data.append(dataBuffer);
|
data.append(dataBuffer);
|
||||||
|
|
||||||
// TODO: Fix this, how we do know how many and what holidays to send?
|
/// @todo: Fix this, how we do know how many and what holidays to send?
|
||||||
data << uint32(sGameEventMgr->modifiedHolidays.size());
|
data << uint32(sGameEventMgr->modifiedHolidays.size());
|
||||||
for (uint32 entry : sGameEventMgr->modifiedHolidays)
|
for (uint32 entry : sGameEventMgr->modifiedHolidays)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ
|
|||||||
bool preventAfkLogout = sWorld->getIntConfig(CONFIG_AFK_PREVENT_LOGOUT) == 2
|
bool preventAfkLogout = sWorld->getIntConfig(CONFIG_AFK_PREVENT_LOGOUT) == 2
|
||||||
&& GetPlayer()->isAFK();
|
&& GetPlayer()->isAFK();
|
||||||
|
|
||||||
/// TODO: Possibly add RBAC permission to log out in combat
|
/// @todo: Possibly add RBAC permission to log out in combat
|
||||||
bool canLogoutInCombat = GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING);
|
bool canLogoutInCombat = GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING);
|
||||||
|
|
||||||
uint32 reason = 0;
|
uint32 reason = 0;
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe
|
|||||||
if (pet->ToPet())
|
if (pet->ToPet())
|
||||||
pet->ToPet()->ClearCastWhenWillAvailable();
|
pet->ToPet()->ClearCastWhenWillAvailable();
|
||||||
pet->ClearInPetCombat();
|
pet->ClearInPetCombat();
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
|
|
||||||
case REACT_DEFENSIVE: //recovery
|
case REACT_DEFENSIVE: //recovery
|
||||||
case REACT_AGGRESSIVE: //activete
|
case REACT_AGGRESSIVE: //activete
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recvData)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: find correct opcode
|
/// @todo: find correct opcode
|
||||||
if (_player->GetLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
if (_player->GetLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||||
{
|
{
|
||||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", _player->GetName(), ERR_ARENA_TEAM_TARGET_TOO_LOW_S);
|
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", _player->GetName(), ERR_ARENA_TEAM_TARGET_TOO_LOW_S);
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ void WorldSession::HandleClientCastFlags(WorldPacket& recvPacket, uint8 castFlag
|
|||||||
|
|
||||||
void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
|
void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
// TODO: add targets.read() check
|
/// @todo: add targets.read() check
|
||||||
Player* pUser = _player;
|
Player* pUser = _player;
|
||||||
|
|
||||||
// ignore for remote control state
|
// ignore for remote control state
|
||||||
@@ -384,7 +384,7 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Preparation for #23204
|
/// @todo: Preparation for #23204
|
||||||
// allow casting of spells triggered by clientside periodic trigger auras
|
// allow casting of spells triggered by clientside periodic trigger auras
|
||||||
/*
|
/*
|
||||||
if (caster->HasAuraTypeWithTriggerSpell(SPELL_AURA_PERIODIC_TRIGGER_SPELL_FROM_CLIENT, spellId))
|
if (caster->HasAuraTypeWithTriggerSpell(SPELL_AURA_PERIODIC_TRIGGER_SPELL_FROM_CLIENT, spellId))
|
||||||
@@ -651,7 +651,7 @@ void WorldSession::HandleSpellClick(WorldPacket& recvData)
|
|||||||
if (!unit)
|
if (!unit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO: Unit::SetCharmedBy: 28782 is not in world but 0 is trying to charm it! -> crash
|
/// @todo: Unit::SetCharmedBy: 28782 is not in world but 0 is trying to charm it! -> crash
|
||||||
if (!unit->IsInWorld())
|
if (!unit->IsInWorld())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -1457,7 +1457,7 @@ float LootTemplate::LootGroup::TotalChance() const
|
|||||||
void LootTemplate::LootGroup::Verify(LootStore const& lootstore, uint32 id, uint8 group_id) const
|
void LootTemplate::LootGroup::Verify(LootStore const& lootstore, uint32 id, uint8 group_id) const
|
||||||
{
|
{
|
||||||
float chance = RawTotalChance();
|
float chance = RawTotalChance();
|
||||||
if (chance > 101.0f) // TODO: replace with 100% when DBs will be ready
|
if (chance > 101.0f) /// @todo: replace with 100% when DBs will be ready
|
||||||
{
|
{
|
||||||
LOG_ERROR("sql.sql", "Table '{}' entry {} group {} has total chance > 100% ({})", lootstore.GetName(), id, group_id, chance);
|
LOG_ERROR("sql.sql", "Table '{}' entry {} group {} has total chance > 100% ({})", lootstore.GetName(), id, group_id, chance);
|
||||||
}
|
}
|
||||||
@@ -1807,7 +1807,7 @@ void LootTemplate::Verify(LootStore const& lootstore, uint32 id) const
|
|||||||
if (Groups[i])
|
if (Groups[i])
|
||||||
Groups[i]->Verify(lootstore, id, i + 1);
|
Groups[i]->Verify(lootstore, id, i + 1);
|
||||||
|
|
||||||
// TODO: References validity checks
|
/// @todo: References validity checks
|
||||||
}
|
}
|
||||||
|
|
||||||
void LootTemplate::CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_set) const
|
void LootTemplate::CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_set) const
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ Map::EnterState MapMgr::PlayerCannotEnter(uint32 mapid, Player* player, bool log
|
|||||||
if ((!group || !group->isRaidGroup()) && !sWorld->getBoolConfig(CONFIG_INSTANCE_IGNORE_RAID))
|
if ((!group || !group->isRaidGroup()) && !sWorld->getBoolConfig(CONFIG_INSTANCE_IGNORE_RAID))
|
||||||
{
|
{
|
||||||
// probably there must be special opcode, because client has this string constant in GlobalStrings.lua
|
// probably there must be special opcode, because client has this string constant in GlobalStrings.lua
|
||||||
// TODO: this is not a good place to send the message
|
/// @todo: this is not a good place to send the message
|
||||||
player->GetSession()->SendAreaTriggerMessage(player->GetSession()->GetAcoreString(LANG_INSTANCE_RAID_GROUP_ONLY), mapName);
|
player->GetSession()->SendAreaTriggerMessage(player->GetSession()->GetAcoreString(LANG_INSTANCE_RAID_GROUP_ONLY), mapName);
|
||||||
LOG_DEBUG("maps", "MAP: Player '{}' must be in a raid group to enter instance '{}'", player->GetName(), mapName);
|
LOG_DEBUG("maps", "MAP: Player '{}' must be in a raid group to enter instance '{}'", player->GetName(), mapName);
|
||||||
return Map::CANNOT_ENTER_NOT_IN_RAID;
|
return Map::CANNOT_ENTER_NOT_IN_RAID;
|
||||||
@@ -320,7 +320,7 @@ bool MapMgr::IsValidMAP(uint32 mapid, bool startUp)
|
|||||||
return mEntry && (!mEntry->IsDungeon() || sObjectMgr->GetInstanceTemplate(mapid));
|
return mEntry && (!mEntry->IsDungeon() || sObjectMgr->GetInstanceTemplate(mapid));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: add check for battleground template
|
/// @todo: add check for battleground template
|
||||||
}
|
}
|
||||||
|
|
||||||
void MapMgr::UnloadAll()
|
void MapMgr::UnloadAll()
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ void PointMovementGenerator<T>::DoInitialize(T* unit)
|
|||||||
if (unit->HasUnitState(UNIT_STATE_NOT_MOVE) || unit->IsMovementPreventedByCasting())
|
if (unit->HasUnitState(UNIT_STATE_NOT_MOVE) || unit->IsMovementPreventedByCasting())
|
||||||
{
|
{
|
||||||
// the next line is to ensure that a new spline is created in DoUpdate() once the unit is no longer rooted/stunned
|
// the next line is to ensure that a new spline is created in DoUpdate() once the unit is no longer rooted/stunned
|
||||||
// todo: rename this flag to something more appropriate since it is set to true even without speed change now.
|
/// @todo: rename this flag to something more appropriate since it is set to true even without speed change now.
|
||||||
i_recalculateSpeed = true;
|
i_recalculateSpeed = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ namespace Movement
|
|||||||
spline.initLengths(init);
|
spline.initLengths(init);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: what to do in such cases? problem is in input data (all points are at same coords)
|
/// @todo: what to do in such cases? problem is in input data (all points are at same coords)
|
||||||
if (spline.length() < minimal_duration)
|
if (spline.length() < minimal_duration)
|
||||||
{
|
{
|
||||||
spline.set_length(spline.last(), spline.isCyclic() ? 1000 : 1);
|
spline.set_length(spline.last(), spline.isCyclic() ? 1000 : 1);
|
||||||
|
|||||||
@@ -664,7 +664,7 @@ void Map::ScriptsProcess()
|
|||||||
|
|
||||||
case SCRIPT_COMMAND_CAST_SPELL:
|
case SCRIPT_COMMAND_CAST_SPELL:
|
||||||
{
|
{
|
||||||
// TODO: Allow gameobjects to be targets and casters
|
/// @todo: Allow gameobjects to be targets and casters
|
||||||
if (!source && !target)
|
if (!source && !target)
|
||||||
{
|
{
|
||||||
LOG_ERROR("maps.script", "{} source and target objects are nullptr.", step.script->GetDebugInfo());
|
LOG_ERROR("maps.script", "{} source and target objects are nullptr.", step.script->GetDebugInfo());
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/)
|
Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/)
|
||||||
{
|
{
|
||||||
// TODO: Implement script-side battlegrounds.
|
/// @todo: Implement script-side battlegrounds.
|
||||||
ABORT();
|
ABORT();
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1175,7 +1175,7 @@ void WorldSession::ReadAddonsInfo(ByteBuffer& data)
|
|||||||
LOG_DEBUG("network", "ADDON: {} (0x{:x}) was not known, saving...", addon.Name, addon.CRC);
|
LOG_DEBUG("network", "ADDON: {} (0x{:x}) was not known, saving...", addon.Name, addon.CRC);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Find out when to not use CRC/pubkey, and other possible states.
|
/// @todo: Find out when to not use CRC/pubkey, and other possible states.
|
||||||
m_addonsList.push_back(addon);
|
m_addonsList.push_back(addon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1230,7 +1230,7 @@ void WorldSession::SendAddonsInfo()
|
|||||||
data.append(addonPublicKey, sizeof(addonPublicKey));
|
data.append(addonPublicKey, sizeof(addonPublicKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
data << uint32(0); // TODO: Find out the meaning of this.
|
data << uint32(0); /// @todo: Find out the meaning of this.
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 unk3 = 0; // 0 is sent here
|
uint8 unk3 = 0; // 0 is sent here
|
||||||
|
|||||||
@@ -351,7 +351,7 @@ WorldSocket::ReadDataHandlerResult WorldSocket::ReadDataHandler()
|
|||||||
LOG_ERROR("network", "WorldSocket::ReadDataHandler(): client {} sent malformed CMSG_AUTH_SESSION", GetRemoteIpAddress().to_string());
|
LOG_ERROR("network", "WorldSocket::ReadDataHandler(): client {} sent malformed CMSG_AUTH_SESSION", GetRemoteIpAddress().to_string());
|
||||||
return ReadDataHandlerResult::Error;
|
return ReadDataHandlerResult::Error;
|
||||||
}
|
}
|
||||||
case CMSG_KEEP_ALIVE: // todo: handle this packet in the same way of CMSG_TIME_SYNC_RESP
|
case CMSG_KEEP_ALIVE: /// @todo: handle this packet in the same way of CMSG_TIME_SYNC_RESP
|
||||||
sessionGuard.lock();
|
sessionGuard.lock();
|
||||||
LogOpcodeText(opcode, sessionGuard);
|
LogOpcodeText(opcode, sessionGuard);
|
||||||
if (_worldSession)
|
if (_worldSession)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
#include "WorldPacket.h"
|
#include "WorldPacket.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -595,7 +595,7 @@ void AuraEffect::CalculatePeriodic(Unit* caster, bool create, bool load)
|
|||||||
// 3 spells have no amplitude set
|
// 3 spells have no amplitude set
|
||||||
if (!m_amplitude)
|
if (!m_amplitude)
|
||||||
m_amplitude = 1 * IN_MILLISECONDS;
|
m_amplitude = 1 * IN_MILLISECONDS;
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELL_AURA_PERIODIC_DAMAGE:
|
case SPELL_AURA_PERIODIC_DAMAGE:
|
||||||
case SPELL_AURA_PERIODIC_HEAL:
|
case SPELL_AURA_PERIODIC_HEAL:
|
||||||
case SPELL_AURA_OBS_MOD_HEALTH:
|
case SPELL_AURA_OBS_MOD_HEALTH:
|
||||||
@@ -1190,7 +1190,7 @@ void AuraEffect::CleanupTriggeredSpells(Unit* target)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// needed for spell 43680, maybe others
|
// needed for spell 43680, maybe others
|
||||||
// TODO: is there a spell flag, which can solve this in a more sophisticated way?
|
/// @todo: is there a spell flag, which can solve this in a more sophisticated way?
|
||||||
if (m_spellInfo->Effects[GetEffIndex()].ApplyAuraName == SPELL_AURA_PERIODIC_TRIGGER_SPELL &&
|
if (m_spellInfo->Effects[GetEffIndex()].ApplyAuraName == SPELL_AURA_PERIODIC_TRIGGER_SPELL &&
|
||||||
uint32(m_spellInfo->GetDuration()) == m_spellInfo->Effects[GetEffIndex()].Amplitude)
|
uint32(m_spellInfo->GetDuration()) == m_spellInfo->Effects[GetEffIndex()].Amplitude)
|
||||||
return;
|
return;
|
||||||
@@ -3128,7 +3128,7 @@ void AuraEffect::HandlePreventFleeing(AuraApplication const* aurApp, uint8 mode,
|
|||||||
// Since patch 3.0.2 this mechanic no longer affects fear effects. It will ONLY prevent humanoids from fleeing due to low health.
|
// Since patch 3.0.2 this mechanic no longer affects fear effects. It will ONLY prevent humanoids from fleeing due to low health.
|
||||||
if (target->GetTypeId() == TYPEID_PLAYER || !apply || target->HasAuraType(SPELL_AURA_MOD_FEAR))
|
if (target->GetTypeId() == TYPEID_PLAYER || !apply || target->HasAuraType(SPELL_AURA_MOD_FEAR))
|
||||||
return;
|
return;
|
||||||
/// TODO: find a way to cancel fleeing for assistance.
|
/// @todo: find a way to cancel fleeing for assistance.
|
||||||
/// Currently this will only stop creatures fleeing due to low health that could not find nearby allies to flee towards.
|
/// Currently this will only stop creatures fleeing due to low health that could not find nearby allies to flee towards.
|
||||||
target->SetControlled(false, UNIT_STATE_FLEEING);
|
target->SetControlled(false, UNIT_STATE_FLEEING);
|
||||||
}
|
}
|
||||||
@@ -3864,7 +3864,7 @@ void AuraEffect::HandleAuraModSchoolImmunity(AuraApplication const* aurApp, uint
|
|||||||
&& GetSpellInfo()->HasAttribute(SPELL_ATTR2_FAIL_ON_ALL_TARGETS_IMMUNE))
|
&& GetSpellInfo()->HasAttribute(SPELL_ATTR2_FAIL_ON_ALL_TARGETS_IMMUNE))
|
||||||
target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION);
|
target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION);
|
||||||
|
|
||||||
// TODO: optimalize this cycle - use RemoveAurasWithInterruptFlags call or something else
|
/// @todo: optimalize this cycle - use RemoveAurasWithInterruptFlags call or something else
|
||||||
if ((apply)
|
if ((apply)
|
||||||
&& GetSpellInfo()->HasAttribute(SPELL_ATTR1_IMMUNITY_PURGES_EFFECT)
|
&& GetSpellInfo()->HasAttribute(SPELL_ATTR1_IMMUNITY_PURGES_EFFECT)
|
||||||
&& GetSpellInfo()->IsPositive()) //Only positive immunity removes auras
|
&& GetSpellInfo()->IsPositive()) //Only positive immunity removes auras
|
||||||
@@ -6024,7 +6024,7 @@ void AuraEffect::HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster)
|
|||||||
triggerSpellId = 30571;
|
triggerSpellId = 30571;
|
||||||
break;
|
break;
|
||||||
// Doom
|
// Doom
|
||||||
// TODO: effect trigger spell may be independant on spell targets, and executed in spell finish phase
|
/// @todo: effect trigger spell may be independant on spell targets, and executed in spell finish phase
|
||||||
// so instakill will be naturally done before trigger spell
|
// so instakill will be naturally done before trigger spell
|
||||||
case 31347:
|
case 31347:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
#include "WorldPacket.h"
|
#include "WorldPacket.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -520,7 +520,7 @@ void Aura::_UnapplyForTarget(Unit* target, Unit* caster, AuraApplication* auraAp
|
|||||||
|
|
||||||
ApplicationMap::iterator itr = m_applications.find(target->GetGUID());
|
ApplicationMap::iterator itr = m_applications.find(target->GetGUID());
|
||||||
|
|
||||||
// TODO: Figure out why this happens
|
/// @todo: Figure out why this happens
|
||||||
if (itr == m_applications.end())
|
if (itr == m_applications.end())
|
||||||
{
|
{
|
||||||
LOG_ERROR("spells.aura", "Aura::_UnapplyForTarget, target:{}, caster:{}, spell:{} was not found in owners application map!",
|
LOG_ERROR("spells.aura", "Aura::_UnapplyForTarget, target:{}, caster:{}, spell:{} was not found in owners application map!",
|
||||||
@@ -1396,7 +1396,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b
|
|||||||
if (caster->HasAura(56370))
|
if (caster->HasAura(56370))
|
||||||
SetDuration(0);
|
SetDuration(0);
|
||||||
}
|
}
|
||||||
// Todo: This should be moved to similar function in spell::hit
|
/// @todo: This should be moved to similar function in spell::hit
|
||||||
else if (GetSpellInfo()->SpellFamilyFlags[0] & 0x01000000)
|
else if (GetSpellInfo()->SpellFamilyFlags[0] & 0x01000000)
|
||||||
{
|
{
|
||||||
// Polymorph Sound - Sheep && Penguin
|
// Polymorph Sound - Sheep && Penguin
|
||||||
@@ -1695,7 +1695,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b
|
|||||||
case SPELLFAMILY_WARRIOR:
|
case SPELLFAMILY_WARRIOR:
|
||||||
if (!caster)
|
if (!caster)
|
||||||
break;
|
break;
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELLFAMILY_WARLOCK:
|
case SPELLFAMILY_WARLOCK:
|
||||||
if (!caster)
|
if (!caster)
|
||||||
break;
|
break;
|
||||||
@@ -2243,7 +2243,7 @@ bool Aura::IsProcTriggeredOnEvent(AuraApplication* aurApp, ProcEventInfo& eventI
|
|||||||
if (IsProcOnCooldown())
|
if (IsProcOnCooldown())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// TODO:
|
/// @todo:
|
||||||
// something about triggered spells triggering, and add extra attack effect
|
// something about triggered spells triggering, and add extra attack effect
|
||||||
|
|
||||||
// do checks against db data
|
// do checks against db data
|
||||||
@@ -2261,14 +2261,14 @@ bool Aura::IsProcTriggeredOnEvent(AuraApplication* aurApp, ProcEventInfo& eventI
|
|||||||
if (!check)
|
if (!check)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// TODO:
|
/// @todo:
|
||||||
// do allow additional requirements for procs
|
// do allow additional requirements for procs
|
||||||
// this is needed because this is the last moment in which you can prevent aura charge drop on proc
|
// this is needed because this is the last moment in which you can prevent aura charge drop on proc
|
||||||
// and possibly a way to prevent default checks (if there're going to be any)
|
// and possibly a way to prevent default checks (if there're going to be any)
|
||||||
|
|
||||||
// Check if current equipment meets aura requirements
|
// Check if current equipment meets aura requirements
|
||||||
// do that only for passive spells
|
// do that only for passive spells
|
||||||
// TODO: this needs to be unified for all kinds of auras
|
/// @todo: this needs to be unified for all kinds of auras
|
||||||
Unit* target = aurApp->GetTarget();
|
Unit* target = aurApp->GetTarget();
|
||||||
if (IsPassive() && target->GetTypeId() == TYPEID_PLAYER && GetSpellInfo()->EquippedItemClass != -1)
|
if (IsPassive() && target->GetTypeId() == TYPEID_PLAYER && GetSpellInfo()->EquippedItemClass != -1)
|
||||||
{
|
{
|
||||||
@@ -2847,7 +2847,7 @@ void UnitAura::FillTargetMap(std::map<Unit*, uint8>& targets, Unit* caster)
|
|||||||
}
|
}
|
||||||
case SPELL_EFFECT_APPLY_AREA_AURA_PET:
|
case SPELL_EFFECT_APPLY_AREA_AURA_PET:
|
||||||
targetList.push_back(GetUnitOwner());
|
targetList.push_back(GetUnitOwner());
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELL_EFFECT_APPLY_AREA_AURA_OWNER:
|
case SPELL_EFFECT_APPLY_AREA_AURA_OWNER:
|
||||||
{
|
{
|
||||||
if (Unit* owner = GetUnitOwner()->GetCharmerOrOwner())
|
if (Unit* owner = GetUnitOwner()->GetCharmerOrOwner())
|
||||||
|
|||||||
@@ -1890,7 +1890,7 @@ void Spell::SelectImplicitTrajTargets(SpellEffIndex effIndex, SpellImplicitTarge
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
const float size = std::max((*itr)->GetObjectSize() * 0.7f, 1.0f); // 1/sqrt(3)
|
const float size = std::max((*itr)->GetObjectSize() * 0.7f, 1.0f); // 1/sqrt(3)
|
||||||
// TODO: all calculation should be based on src instead of m_caster
|
/// @todo: all calculation should be based on src instead of m_caster
|
||||||
const float objDist2d = std::fabs(m_targets.GetSrcPos()->GetExactDist2d(*itr) * cos(m_targets.GetSrcPos()->GetRelativeAngle(*itr)));
|
const float objDist2d = std::fabs(m_targets.GetSrcPos()->GetExactDist2d(*itr) * cos(m_targets.GetSrcPos()->GetRelativeAngle(*itr)));
|
||||||
const float dz = std::fabs((*itr)->GetPositionZ() - m_targets.GetSrcPos()->m_positionZ);
|
const float dz = std::fabs((*itr)->GetPositionZ() - m_targets.GetSrcPos()->m_positionZ);
|
||||||
|
|
||||||
@@ -2011,7 +2011,7 @@ void Spell::SelectImplicitTrajTargets(SpellEffIndex effIndex, SpellImplicitTarge
|
|||||||
void Spell::SelectEffectTypeImplicitTargets(uint8 effIndex)
|
void Spell::SelectEffectTypeImplicitTargets(uint8 effIndex)
|
||||||
{
|
{
|
||||||
// special case for SPELL_EFFECT_SUMMON_RAF_FRIEND and SPELL_EFFECT_SUMMON_PLAYER
|
// special case for SPELL_EFFECT_SUMMON_RAF_FRIEND and SPELL_EFFECT_SUMMON_PLAYER
|
||||||
// TODO: this is a workaround - target shouldn't be stored in target map for those spells
|
/// @todo: this is a workaround - target shouldn't be stored in target map for those spells
|
||||||
switch (m_spellInfo->Effects[effIndex].Effect)
|
switch (m_spellInfo->Effects[effIndex].Effect)
|
||||||
{
|
{
|
||||||
case SPELL_EFFECT_SUMMON_RAF_FRIEND:
|
case SPELL_EFFECT_SUMMON_RAF_FRIEND:
|
||||||
@@ -2054,7 +2054,7 @@ void Spell::SelectEffectTypeImplicitTargets(uint8 effIndex)
|
|||||||
{
|
{
|
||||||
if (Corpse* corpseTarget = m_targets.GetCorpseTarget())
|
if (Corpse* corpseTarget = m_targets.GetCorpseTarget())
|
||||||
{
|
{
|
||||||
// TODO: this is a workaround - corpses should be added to spell target map too, but we can't do that so we add owner instead
|
/// @todo: this is a workaround - corpses should be added to spell target map too, but we can't do that so we add owner instead
|
||||||
if (Player* owner = ObjectAccessor::FindPlayer(corpseTarget->GetOwnerGUID()))
|
if (Player* owner = ObjectAccessor::FindPlayer(corpseTarget->GetOwnerGUID()))
|
||||||
target = owner;
|
target = owner;
|
||||||
}
|
}
|
||||||
@@ -2442,7 +2442,7 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*=
|
|||||||
if (m_spellInfo->Speed > 0.0f && m_caster != target)
|
if (m_spellInfo->Speed > 0.0f && m_caster != target)
|
||||||
{
|
{
|
||||||
// calculate spell incoming interval
|
// calculate spell incoming interval
|
||||||
// TODO: this is a hack
|
/// @todo: this is a hack
|
||||||
float dist = m_caster->GetDistance(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
float dist = m_caster->GetDistance(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||||
|
|
||||||
if (dist < 5.0f)
|
if (dist < 5.0f)
|
||||||
@@ -2472,7 +2472,7 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*=
|
|||||||
m_spellFlags |= SPELL_FLAG_REFLECTED;
|
m_spellFlags |= SPELL_FLAG_REFLECTED;
|
||||||
|
|
||||||
// HACK: workaround check for succubus seduction case
|
// HACK: workaround check for succubus seduction case
|
||||||
// TODO: seduction should be casted only on humanoids (not demons)
|
/// @todo: seduction should be casted only on humanoids (not demons)
|
||||||
if (m_caster->IsPet())
|
if (m_caster->IsPet())
|
||||||
{
|
{
|
||||||
CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(m_caster->GetEntry());
|
CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(m_caster->GetEntry());
|
||||||
@@ -2702,7 +2702,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
|||||||
{
|
{
|
||||||
m_needComboPoints = false;
|
m_needComboPoints = false;
|
||||||
// Restore spell mods for a miss/dodge/parry Cold Blood
|
// Restore spell mods for a miss/dodge/parry Cold Blood
|
||||||
// TODO: check how broad this rule should be
|
/// @todo: check how broad this rule should be
|
||||||
if (m_caster->GetTypeId() == TYPEID_PLAYER && (missInfo == SPELL_MISS_MISS || missInfo == SPELL_MISS_DODGE || missInfo == SPELL_MISS_PARRY))
|
if (m_caster->GetTypeId() == TYPEID_PLAYER && (missInfo == SPELL_MISS_MISS || missInfo == SPELL_MISS_DODGE || missInfo == SPELL_MISS_PARRY))
|
||||||
m_caster->ToPlayer()->RestoreSpellMods(this, 14177);
|
m_caster->ToPlayer()->RestoreSpellMods(this, 14177);
|
||||||
}
|
}
|
||||||
@@ -3051,7 +3051,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA
|
|||||||
else if (m_caster->IsFriendlyTo(unit))
|
else if (m_caster->IsFriendlyTo(unit))
|
||||||
{
|
{
|
||||||
// for delayed spells ignore negative spells (after duel end) for friendly targets
|
// for delayed spells ignore negative spells (after duel end) for friendly targets
|
||||||
// TODO: this cause soul transfer bugged
|
/// @todo: this cause soul transfer bugged
|
||||||
if(!IsTriggered() && m_spellInfo->Speed > 0.0f && unit->GetTypeId() == TYPEID_PLAYER && !m_spellInfo->IsPositive())
|
if(!IsTriggered() && m_spellInfo->Speed > 0.0f && unit->GetTypeId() == TYPEID_PLAYER && !m_spellInfo->IsPositive())
|
||||||
return SPELL_MISS_EVADE;
|
return SPELL_MISS_EVADE;
|
||||||
|
|
||||||
@@ -3238,7 +3238,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA
|
|||||||
void Spell::DoTriggersOnSpellHit(Unit* unit, uint8 effMask)
|
void Spell::DoTriggersOnSpellHit(Unit* unit, uint8 effMask)
|
||||||
{
|
{
|
||||||
// Apply additional spell effects to target
|
// Apply additional spell effects to target
|
||||||
// TODO: move this code to scripts
|
/// @todo: move this code to scripts
|
||||||
if (m_preCastSpell)
|
if (m_preCastSpell)
|
||||||
{
|
{
|
||||||
// Paladin immunity shields
|
// Paladin immunity shields
|
||||||
@@ -3297,7 +3297,7 @@ void Spell::DoTriggersOnSpellHit(Unit* unit, uint8 effMask)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// trigger linked auras remove/apply
|
// trigger linked auras remove/apply
|
||||||
// TODO: remove/cleanup this, as this table is not documented and people are doing stupid things with it
|
/// @todo: remove/cleanup this, as this table is not documented and people are doing stupid things with it
|
||||||
if (std::vector<int32> const* spellTriggered = sSpellMgr->GetSpellLinked(m_spellInfo->Id + SPELL_LINK_HIT))
|
if (std::vector<int32> const* spellTriggered = sSpellMgr->GetSpellLinked(m_spellInfo->Id + SPELL_LINK_HIT))
|
||||||
{
|
{
|
||||||
for (std::vector<int32>::const_iterator i = spellTriggered->begin(); i != spellTriggered->end(); ++i)
|
for (std::vector<int32>::const_iterator i = spellTriggered->begin(); i != spellTriggered->end(); ++i)
|
||||||
@@ -3709,7 +3709,7 @@ void Spell::cancel(bool bySelf)
|
|||||||
if (m_caster->ToPlayer()->NeedSendSpectatorData())
|
if (m_caster->ToPlayer()->NeedSendSpectatorData())
|
||||||
ArenaSpectator::SendCommand_Spell(m_caster->FindMap(), m_caster->GetGUID(), "SPE", m_spellInfo->Id, bySelf ? 99998 : 99999);
|
ArenaSpectator::SendCommand_Spell(m_caster->FindMap(), m_caster->GetGUID(), "SPE", m_spellInfo->Id, bySelf ? 99998 : 99999);
|
||||||
}
|
}
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELL_STATE_DELAYED:
|
case SPELL_STATE_DELAYED:
|
||||||
SendInterrupted(0);
|
SendInterrupted(0);
|
||||||
// xinef: fixes bugged gcd reset in some cases
|
// xinef: fixes bugged gcd reset in some cases
|
||||||
@@ -5992,7 +5992,7 @@ SpellCastResult Spell::CheckCast(bool strict)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Triggered spells also have range check
|
// Triggered spells also have range check
|
||||||
// TODO: determine if there is some flag to enable/disable the check
|
/// @todo: determine if there is some flag to enable/disable the check
|
||||||
castResult = CheckRange(strict);
|
castResult = CheckRange(strict);
|
||||||
if (castResult != SPELL_CAST_OK)
|
if (castResult != SPELL_CAST_OK)
|
||||||
return castResult;
|
return castResult;
|
||||||
@@ -7416,7 +7416,7 @@ SpellCastResult Spell::CheckItems()
|
|||||||
return SPELL_FAILED_DONT_REPORT;
|
return SPELL_FAILED_DONT_REPORT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC:
|
case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC:
|
||||||
{
|
{
|
||||||
Item* targetItem = m_targets.GetItemTarget();
|
Item* targetItem = m_targets.GetItemTarget();
|
||||||
@@ -7917,7 +7917,7 @@ bool Spell::CheckEffectTarget(Unit const* target, uint32 eff) const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: below shouldn't be here, but it's temporary
|
/// @todo: below shouldn't be here, but it's temporary
|
||||||
//Check targets for LOS visibility (except spells without range limitations)
|
//Check targets for LOS visibility (except spells without range limitations)
|
||||||
switch (m_spellInfo->Effects[eff].Effect)
|
switch (m_spellInfo->Effects[eff].Effect)
|
||||||
{
|
{
|
||||||
@@ -8709,7 +8709,7 @@ bool Spell::CanExecuteTriggersOnHit(uint8 effMask, SpellInfo const* triggeredByA
|
|||||||
|
|
||||||
void Spell::PrepareTriggersExecutedOnHit()
|
void Spell::PrepareTriggersExecutedOnHit()
|
||||||
{
|
{
|
||||||
// todo: move this to scripts
|
/// @todo: move this to scripts
|
||||||
if (m_spellInfo->SpellFamilyName)
|
if (m_spellInfo->SpellFamilyName)
|
||||||
{
|
{
|
||||||
SpellInfo const* excludeCasterSpellInfo = sSpellMgr->GetSpellInfo(m_spellInfo->ExcludeCasterAuraSpell);
|
SpellInfo const* excludeCasterSpellInfo = sSpellMgr->GetSpellInfo(m_spellInfo->ExcludeCasterAuraSpell);
|
||||||
@@ -8720,7 +8720,7 @@ void Spell::PrepareTriggersExecutedOnHit()
|
|||||||
m_preCastSpell = m_spellInfo->ExcludeTargetAuraSpell;
|
m_preCastSpell = m_spellInfo->ExcludeTargetAuraSpell;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: move this to scripts
|
/// @todo: move this to scripts
|
||||||
switch (m_spellInfo->SpellFamilyName)
|
switch (m_spellInfo->SpellFamilyName)
|
||||||
{
|
{
|
||||||
case SPELLFAMILY_PALADIN:
|
case SPELLFAMILY_PALADIN:
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "WorldPacket.h"
|
#include "WorldPacket.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -586,7 +586,7 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: should this be put on taken but not done?
|
/// @todo: should this be put on taken but not done?
|
||||||
if (found)
|
if (found)
|
||||||
damage += m_spellInfo->Effects[EFFECT_1].CalcValue();
|
damage += m_spellInfo->Effects[EFFECT_1].CalcValue();
|
||||||
|
|
||||||
@@ -797,7 +797,7 @@ void Spell::EffectTriggerSpell(SpellEffIndex effIndex)
|
|||||||
|
|
||||||
uint32 triggered_spell_id = m_spellInfo->Effects[effIndex].TriggerSpell;
|
uint32 triggered_spell_id = m_spellInfo->Effects[effIndex].TriggerSpell;
|
||||||
|
|
||||||
// todo: move those to spell scripts
|
/// @todo: move those to spell scripts
|
||||||
if (m_spellInfo->Effects[effIndex].Effect == SPELL_EFFECT_TRIGGER_SPELL
|
if (m_spellInfo->Effects[effIndex].Effect == SPELL_EFFECT_TRIGGER_SPELL
|
||||||
&& effectHandleMode == SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
|
&& effectHandleMode == SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
|
||||||
{
|
{
|
||||||
@@ -1422,7 +1422,7 @@ void Spell::EffectSendEvent(SpellEffIndex effIndex)
|
|||||||
// some spells have no target entries in dbc and they use focus target
|
// some spells have no target entries in dbc and they use focus target
|
||||||
if (focusObject)
|
if (focusObject)
|
||||||
target = focusObject;
|
target = focusObject;
|
||||||
// TODO: there should be a possibility to pass dest target to event script
|
/// @todo: there should be a possibility to pass dest target to event script
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("spells.aura", "Spell ScriptStart {} for spellid {} in EffectSendEvent ", m_spellInfo->Effects[effIndex].MiscValue, m_spellInfo->Id);
|
LOG_DEBUG("spells.aura", "Spell ScriptStart {} for spellid {} in EffectSendEvent ", m_spellInfo->Effects[effIndex].MiscValue, m_spellInfo->Id);
|
||||||
@@ -1827,7 +1827,7 @@ void Spell::EffectCreateItem2(SpellEffIndex effIndex)
|
|||||||
else
|
else
|
||||||
player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell); // create some random items
|
player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell); // create some random items
|
||||||
}
|
}
|
||||||
// TODO: ExecuteLogEffectCreateItem(i, m_spellInfo->Effects[i].ItemType);
|
/// @todo: ExecuteLogEffectCreateItem(i, m_spellInfo->Effects[i].ItemType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectCreateRandomItem(SpellEffIndex /*effIndex*/)
|
void Spell::EffectCreateRandomItem(SpellEffIndex /*effIndex*/)
|
||||||
@@ -1846,7 +1846,7 @@ void Spell::EffectCreateRandomItem(SpellEffIndex /*effIndex*/)
|
|||||||
|
|
||||||
// create some random items
|
// create some random items
|
||||||
player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell);
|
player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell);
|
||||||
// TODO: ExecuteLogEffectCreateItem(i, m_spellInfo->Effects[i].ItemType);
|
/// @todo: ExecuteLogEffectCreateItem(i, m_spellInfo->Effects[i].ItemType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectPersistentAA(SpellEffIndex effIndex)
|
void Spell::EffectPersistentAA(SpellEffIndex effIndex)
|
||||||
@@ -2107,7 +2107,7 @@ void Spell::EffectOpenLock(SpellEffIndex effIndex)
|
|||||||
if (gameObjTarget)
|
if (gameObjTarget)
|
||||||
{
|
{
|
||||||
GameObjectTemplate const* goInfo = gameObjTarget->GetGOInfo();
|
GameObjectTemplate const* goInfo = gameObjTarget->GetGOInfo();
|
||||||
// Arathi Basin banner opening. // TODO: Verify correctness of this check
|
// Arathi Basin banner opening. /// @todo: Verify correctness of this check
|
||||||
if ((goInfo->type == GAMEOBJECT_TYPE_BUTTON && goInfo->button.noDamageImmune) ||
|
if ((goInfo->type == GAMEOBJECT_TYPE_BUTTON && goInfo->button.noDamageImmune) ||
|
||||||
(goInfo->type == GAMEOBJECT_TYPE_GOOBER && goInfo->goober.losOK))
|
(goInfo->type == GAMEOBJECT_TYPE_GOOBER && goInfo->goober.losOK))
|
||||||
{
|
{
|
||||||
@@ -2139,7 +2139,7 @@ void Spell::EffectOpenLock(SpellEffIndex effIndex)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// TODO: Add script for spell 41920 - Filling, becouse server it freze when use this spell
|
/// @todo: Add script for spell 41920 - Filling, becouse server it freze when use this spell
|
||||||
// handle outdoor pvp object opening, return true if go was registered for handling
|
// handle outdoor pvp object opening, return true if go was registered for handling
|
||||||
// these objects must have been spawned by outdoorpvp!
|
// these objects must have been spawned by outdoorpvp!
|
||||||
else if (gameObjTarget->GetGOInfo()->type == GAMEOBJECT_TYPE_GOOBER && sOutdoorPvPMgr->HandleOpenGo(player, gameObjTarget))
|
else if (gameObjTarget->GetGOInfo()->type == GAMEOBJECT_TYPE_GOOBER && sOutdoorPvPMgr->HandleOpenGo(player, gameObjTarget))
|
||||||
@@ -2687,7 +2687,7 @@ void Spell::EffectDualWield(SpellEffIndex /*effIndex*/)
|
|||||||
|
|
||||||
void Spell::EffectPull(SpellEffIndex effIndex)
|
void Spell::EffectPull(SpellEffIndex effIndex)
|
||||||
{
|
{
|
||||||
// TODO: create a proper pull towards distract spell center for distract
|
/// @todo: create a proper pull towards distract spell center for distract
|
||||||
EffectNULL(effIndex);
|
EffectNULL(effIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3712,7 +3712,7 @@ void Spell::EffectInterruptCast(SpellEffIndex effIndex)
|
|||||||
if (!unitTarget || !unitTarget->IsAlive())
|
if (!unitTarget || !unitTarget->IsAlive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO: not all spells that used this effect apply cooldown at school spells
|
/// @todo: not all spells that used this effect apply cooldown at school spells
|
||||||
// also exist case: apply cooldown to interrupted cast only and to all spells
|
// also exist case: apply cooldown to interrupted cast only and to all spells
|
||||||
// there is no CURRENT_AUTOREPEAT_SPELL spells that can be interrupted
|
// there is no CURRENT_AUTOREPEAT_SPELL spells that can be interrupted
|
||||||
for (uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_AUTOREPEAT_SPELL; ++i)
|
for (uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_AUTOREPEAT_SPELL; ++i)
|
||||||
@@ -3794,7 +3794,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
|
|||||||
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
|
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO: we must implement hunter pet summon at login there (spell 6962)
|
/// @todo: we must implement hunter pet summon at login there (spell 6962)
|
||||||
|
|
||||||
switch (m_spellInfo->SpellFamilyName)
|
switch (m_spellInfo->SpellFamilyName)
|
||||||
{
|
{
|
||||||
@@ -4554,7 +4554,7 @@ void Spell::EffectFeedPet(SpellEffIndex effIndex)
|
|||||||
|
|
||||||
uint32 count = 1;
|
uint32 count = 1;
|
||||||
player->DestroyItemCount(foodItem, count, true);
|
player->DestroyItemCount(foodItem, count, true);
|
||||||
// TODO: fix crash when a spell has two effects, both pointed at the same item target
|
/// @todo: fix crash when a spell has two effects, both pointed at the same item target
|
||||||
|
|
||||||
m_caster->CastCustomSpell(pet, m_spellInfo->Effects[effIndex].TriggerSpell, &benefit, nullptr, nullptr, true);
|
m_caster->CastCustomSpell(pet, m_spellInfo->Effects[effIndex].TriggerSpell, &benefit, nullptr, nullptr, true);
|
||||||
}
|
}
|
||||||
@@ -5248,7 +5248,7 @@ void Spell::EffectResurrectPet(SpellEffIndex /*effIndex*/)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Better to fail Hunter's "Revive Pet" at cast instead of here when casting ends
|
/// @todo: Better to fail Hunter's "Revive Pet" at cast instead of here when casting ends
|
||||||
if (pet->IsAlive())
|
if (pet->IsAlive())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1460,7 +1460,7 @@ SpellCastResult SpellInfo::CheckShapeshift(uint32 form) const
|
|||||||
|
|
||||||
// Check if stance disables cast of not-stance spells
|
// Check if stance disables cast of not-stance spells
|
||||||
// Example: cannot cast any other spells in zombie or ghoul form
|
// Example: cannot cast any other spells in zombie or ghoul form
|
||||||
// TODO: Find a way to disable use of these spells clientside
|
/// @todo: Find a way to disable use of these spells clientside
|
||||||
if (shapeInfo && shapeInfo->flags1 & 0x400)
|
if (shapeInfo && shapeInfo->flags1 & 0x400)
|
||||||
{
|
{
|
||||||
if (!(stanceMask & Stances))
|
if (!(stanceMask & Stances))
|
||||||
@@ -2283,7 +2283,7 @@ SpellSpecificType SpellInfo::LoadSpellSpecific() const
|
|||||||
/// @workaround For non-stacking tracking spells (We need generic solution)
|
/// @workaround For non-stacking tracking spells (We need generic solution)
|
||||||
if (Id == 30645) // Gas Cloud Tracking
|
if (Id == 30645) // Gas Cloud Tracking
|
||||||
return SPELL_SPECIFIC_NORMAL;
|
return SPELL_SPECIFIC_NORMAL;
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case SPELL_AURA_TRACK_RESOURCES:
|
case SPELL_AURA_TRACK_RESOURCES:
|
||||||
case SPELL_AURA_TRACK_STEALTHED:
|
case SPELL_AURA_TRACK_STEALTHED:
|
||||||
return SPELL_SPECIFIC_TRACKER;
|
return SPELL_SPECIFIC_TRACKER;
|
||||||
|
|||||||
@@ -2179,7 +2179,7 @@ void SpellMgr::LoadEnchantCustomAttr()
|
|||||||
if (!spellInfo)
|
if (!spellInfo)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// TODO: find a better check
|
/// @todo: find a better check
|
||||||
// Xinef: commented second part, fixes warlock enchants like firestone, spellstone
|
// Xinef: commented second part, fixes warlock enchants like firestone, spellstone
|
||||||
if (!spellInfo->HasAttribute(SPELL_ATTR2_ENCHANT_OWN_ITEM_ONLY)/* || !spellInfo->HasAttribute(SPELL_ATTR0_NOT_SHAPESHIFTED)*/)
|
if (!spellInfo->HasAttribute(SPELL_ATTR2_ENCHANT_OWN_ITEM_ONLY)/* || !spellInfo->HasAttribute(SPELL_ATTR0_NOT_SHAPESHIFTED)*/)
|
||||||
continue;
|
continue;
|
||||||
@@ -3029,7 +3029,7 @@ void SpellMgr::LoadSpellInfoCustomAttributes()
|
|||||||
spellInfo->Effects[j].ApplyAuraName == SPELL_AURA_PERIODIC_HEALTH_FUNNEL ||
|
spellInfo->Effects[j].ApplyAuraName == SPELL_AURA_PERIODIC_HEALTH_FUNNEL ||
|
||||||
spellInfo->Effects[j].ApplyAuraName == SPELL_AURA_PERIODIC_DUMMY)
|
spellInfo->Effects[j].ApplyAuraName == SPELL_AURA_PERIODIC_DUMMY)
|
||||||
continue;
|
continue;
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
default:
|
default:
|
||||||
if (spellInfo->Effects[j].CalcValue() || ((spellInfo->Effects[j].Effect == SPELL_EFFECT_INTERRUPT_CAST || spellInfo->HasAttribute(SPELL_ATTR0_CU_DONT_BREAK_STEALTH)) && !spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES)))
|
if (spellInfo->Effects[j].CalcValue() || ((spellInfo->Effects[j].Effect == SPELL_EFFECT_INTERRUPT_CAST || spellInfo->HasAttribute(SPELL_ATTR0_CU_DONT_BREAK_STEALTH)) && !spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES)))
|
||||||
if (spellInfo->Id != 69649 && spellInfo->Id != 71056 && spellInfo->Id != 71057 && spellInfo->Id != 71058 && spellInfo->Id != 73061 && spellInfo->Id != 73062 && spellInfo->Id != 73063 && spellInfo->Id != 73064) // Sindragosa Frost Breath
|
if (spellInfo->Id != 69649 && spellInfo->Id != 71056 && spellInfo->Id != 71057 && spellInfo->Id != 71058 && spellInfo->Id != 73061 && spellInfo->Id != 73062 && spellInfo->Id != 73063 && spellInfo->Id != 73064) // Sindragosa Frost Breath
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ enum SpellFamilyFlag
|
|||||||
SPELLFAMILYFLAG_DK_DEATH_STRIKE = 0x00000010,
|
SPELLFAMILYFLAG_DK_DEATH_STRIKE = 0x00000010,
|
||||||
SPELLFAMILYFLAG_DK_DEATH_COIL = 0x00002000,
|
SPELLFAMILYFLAG_DK_DEATH_COIL = 0x00002000,
|
||||||
|
|
||||||
// TODO: Figure out a more accurate name for the following familyflag(s)
|
/// @todo: Figure out a more accurate name for the following familyflag(s)
|
||||||
SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000, // Seems to be linked to most totems and some totem effects
|
SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000, // Seems to be linked to most totems and some totem effects
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ private:
|
|||||||
bool _completed;
|
bool _completed;
|
||||||
GMTicketEscalationStatus _escalatedStatus;
|
GMTicketEscalationStatus _escalatedStatus;
|
||||||
bool _viewed;
|
bool _viewed;
|
||||||
bool _needResponse; // TODO: find out the use of this, and then store it in DB
|
bool _needResponse; /// @todo: find out the use of this, and then store it in DB
|
||||||
bool _needMoreHelp;
|
bool _needMoreHelp;
|
||||||
std::string _response;
|
std::string _response;
|
||||||
std::string _chatLog; // No need to store in db, will be refreshed every session client side
|
std::string _chatLog; // No need to store in db, will be refreshed every session client side
|
||||||
|
|||||||
@@ -477,7 +477,7 @@ void WardenWin::HandleData(ByteBuffer& buff)
|
|||||||
{
|
{
|
||||||
uint8 result;
|
uint8 result;
|
||||||
buff >> result;
|
buff >> result;
|
||||||
// TODO: test it.
|
/// @todo: test it.
|
||||||
if (result == 0x00)
|
if (result == 0x00)
|
||||||
{
|
{
|
||||||
LOG_DEBUG("warden", "TIMING CHECK FAIL result 0x00");
|
LOG_DEBUG("warden", "TIMING CHECK FAIL result 0x00");
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO - move item to other slot
|
/// @todo - move item to other slot
|
||||||
static bool HandleItemMoveCommand(ChatHandler* handler, uint8 srcSlot, uint8 dstSlot)
|
static bool HandleItemMoveCommand(ChatHandler* handler, uint8 srcSlot, uint8 dstSlot)
|
||||||
{
|
{
|
||||||
if (srcSlot == dstSlot)
|
if (srcSlot == dstSlot)
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
#include "Tokenize.h"
|
#include "Tokenize.h"
|
||||||
#include "WeatherMgr.h"
|
#include "WeatherMgr.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
|
|||||||
+1
-1
@@ -229,7 +229,7 @@ public:
|
|||||||
for (ObjectGuid const& guid : EggList)
|
for (ObjectGuid const& guid : EggList)
|
||||||
{
|
{
|
||||||
// Eggs should be destroyed instead
|
// Eggs should be destroyed instead
|
||||||
// @todo: after dynamic spawns
|
/// @todo: after dynamic spawns
|
||||||
if (GameObject* egg = instance->GetGameObject(guid))
|
if (GameObject* egg = instance->GetGameObject(guid))
|
||||||
{
|
{
|
||||||
egg->SetPhaseMask(2, true);
|
egg->SetPhaseMask(2, true);
|
||||||
|
|||||||
@@ -777,7 +777,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
case 16:
|
case 16:
|
||||||
SendGossipMenuFor(player, 100116, creature->GetGUID());
|
SendGossipMenuFor(player, 100116, creature->GetGUID());
|
||||||
// todo: we need to play these 3 emote in sequence, we play only the last one right now.
|
/// @todo: we need to play these 3 emote in sequence, we play only the last one right now.
|
||||||
creature->HandleEmoteCommand(274);
|
creature->HandleEmoteCommand(274);
|
||||||
creature->HandleEmoteCommand(1);
|
creature->HandleEmoteCommand(1);
|
||||||
creature->HandleEmoteCommand(397);
|
creature->HandleEmoteCommand(397);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
#include "TaskScheduler.h"
|
#include "TaskScheduler.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
|
|||||||
+1
-1
@@ -251,7 +251,7 @@ public:
|
|||||||
{
|
{
|
||||||
drake->AI()->Talk(0);
|
drake->AI()->Talk(0);
|
||||||
}
|
}
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
}
|
}
|
||||||
case EVENT_THRALL_REPOSITION:
|
case EVENT_THRALL_REPOSITION:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_HADRONOX_MOVE4:
|
case EVENT_HADRONOX_MOVE4:
|
||||||
me->CastSpell(me, SPELL_WEB_FRONT_DOORS, true);
|
me->CastSpell(me, SPELL_WEB_FRONT_DOORS, true);
|
||||||
[[fallthrough]]; // TODO: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
|
||||||
case EVENT_HADRONOX_MOVE1:
|
case EVENT_HADRONOX_MOVE1:
|
||||||
case EVENT_HADRONOX_MOVE2:
|
case EVENT_HADRONOX_MOVE2:
|
||||||
case EVENT_HADRONOX_MOVE3:
|
case EVENT_HADRONOX_MOVE3:
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ class spell_ahn_kahet_swarmer_aura : public SpellScript
|
|||||||
}
|
}
|
||||||
else if (_targetCount)
|
else if (_targetCount)
|
||||||
{
|
{
|
||||||
// TODO: move spell id to enum
|
/// @todo: move spell id to enum
|
||||||
caster->CastCustomSpell(SPELL_SWARM, SPELLVALUE_AURA_STACK, _targetCount, caster, true);
|
caster->CastCustomSpell(SPELL_SWARM, SPELLVALUE_AURA_STACK, _targetCount, caster, true);
|
||||||
if (Aura *aur = caster->GetAura(SPELL_SWARM))
|
if (Aura *aur = caster->GetAura(SPELL_SWARM))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ struct npc_taldaram_flamesphere : public NullCreatureAI
|
|||||||
DoCastSelf(SPELL_FLAME_SPHERE_SPAWN_EFFECT);
|
DoCastSelf(SPELL_FLAME_SPHERE_SPAWN_EFFECT);
|
||||||
DoCastSelf(SPELL_FLAME_SPHERE_VISUAL);
|
DoCastSelf(SPELL_FLAME_SPHERE_VISUAL);
|
||||||
|
|
||||||
// TODO: replace with DespawnOrUnsummon
|
/// @todo: replace with DespawnOrUnsummon
|
||||||
uiDespawnTimer = 13000;
|
uiDespawnTimer = 13000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -490,7 +490,7 @@ private:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Turn into new script type when Gossips have been updated
|
// @todo: Turn into new script type when Gossips have been updated
|
||||||
class go_prince_taldaram_sphere : public GameObjectScript
|
class go_prince_taldaram_sphere : public GameObjectScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -1305,7 +1305,7 @@ public:
|
|||||||
|
|
||||||
if (Creature* acolyte = me->SummonCreature((isCalledBySartharion ? NPC_ACOLYTE_OF_SHADRON : NPC_DISCIPLE_OF_SHADRON), me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation()))
|
if (Creature* acolyte = me->SummonCreature((isCalledBySartharion ? NPC_ACOLYTE_OF_SHADRON : NPC_DISCIPLE_OF_SHADRON), me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation()))
|
||||||
{
|
{
|
||||||
// TODO: inpect JustSummoned
|
/// @todo: inpect JustSummoned
|
||||||
summons.Summon(acolyte);
|
summons.Summon(acolyte);
|
||||||
acolyte->SetPhaseMask(16, true);
|
acolyte->SetPhaseMask(16, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ public:
|
|||||||
n2->GetMotionMaster()->MovePoint(1, NecrolytePos2);
|
n2->GetMotionMaster()->MovePoint(1, NecrolytePos2);
|
||||||
n2->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
n2->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||||
}
|
}
|
||||||
// TODO This spell check is invalid
|
/// @todo This spell check is invalid
|
||||||
// if (SPELL_NECROLYTE_CHANNELING)
|
// if (SPELL_NECROLYTE_CHANNELING)
|
||||||
// {
|
// {
|
||||||
n1->RemoveAura(SPELL_NECROLYTE_CHANNELING);
|
n1->RemoveAura(SPELL_NECROLYTE_CHANNELING);
|
||||||
@@ -410,7 +410,7 @@ public:
|
|||||||
{
|
{
|
||||||
isInvincible = true;
|
isInvincible = true;
|
||||||
|
|
||||||
// TODO This spell check is invalid
|
/// @todo This spell check is invalid
|
||||||
// if (SPELL_NECROLYTE_CHANNELING)
|
// if (SPELL_NECROLYTE_CHANNELING)
|
||||||
me->CastSpell(me, SPELL_NECROLYTE_CHANNELING, false);
|
me->CastSpell(me, SPELL_NECROLYTE_CHANNELING, false);
|
||||||
|
|
||||||
@@ -434,7 +434,7 @@ public:
|
|||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override
|
void EnterCombat(Unit* /*who*/) override
|
||||||
{
|
{
|
||||||
// TODO This spell check is invalid
|
/// @todo This spell check is invalid
|
||||||
// if (SPELL_NECROLYTE_CHANNELING)
|
// if (SPELL_NECROLYTE_CHANNELING)
|
||||||
me->RemoveAura(SPELL_NECROLYTE_CHANNELING);
|
me->RemoveAura(SPELL_NECROLYTE_CHANNELING);
|
||||||
events.Reset();
|
events.Reset();
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ enum ScriptTexts
|
|||||||
SAY_INTRO_ALLIANCE_1 = 0,
|
SAY_INTRO_ALLIANCE_1 = 0,
|
||||||
SAY_INTRO_ALLIANCE_4 = 1,
|
SAY_INTRO_ALLIANCE_4 = 1,
|
||||||
SAY_INTRO_ALLIANCE_5 = 2,
|
SAY_INTRO_ALLIANCE_5 = 2,
|
||||||
SAY_OUTRO_ALLIANCE_1 = 3, // TODO ALLIANCE OUTRO
|
SAY_OUTRO_ALLIANCE_1 = 3, /// @todo ALLIANCE OUTRO
|
||||||
SAY_OUTRO_ALLIANCE_2 = 4,
|
SAY_OUTRO_ALLIANCE_2 = 4,
|
||||||
SAY_OUTRO_ALLIANCE_3 = 5,
|
SAY_OUTRO_ALLIANCE_3 = 5,
|
||||||
SAY_OUTRO_ALLIANCE_4 = 6,
|
SAY_OUTRO_ALLIANCE_4 = 6,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "OutdoorPvP.h"
|
#include "OutdoorPvP.h"
|
||||||
|
|
||||||
// TODO: "sometimes" set to neutral
|
// @todo: "sometimes" set to neutral
|
||||||
|
|
||||||
enum OutdoorPvPNASpells
|
enum OutdoorPvPNASpells
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -259,5 +259,5 @@ private:
|
|||||||
uint32 m_HordeTowersControlled;
|
uint32 m_HordeTowersControlled;
|
||||||
};
|
};
|
||||||
|
|
||||||
// todo: flag carrier death/leave/mount/activitychange should give back the gossip options
|
// @todo: flag carrier death/leave/mount/activitychange should give back the gossip options
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ EndContentData */
|
|||||||
#include "SpellInfo.h"
|
#include "SpellInfo.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#include "SpellAuraEffects.h"
|
#include "SpellAuraEffects.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
|
|||||||
@@ -861,7 +861,7 @@ class spell_dk_anti_magic_shell_raid : public AuraScript
|
|||||||
|
|
||||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||||
{
|
{
|
||||||
// TODO: this should absorb limited amount of damage, but no info on calculation formula
|
/// @todo: this should absorb limited amount of damage, but no info on calculation formula
|
||||||
amount = -1;
|
amount = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
#include "Vehicle.h"
|
#include "Vehicle.h"
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
#include "SpellMgr.h"
|
#include "SpellMgr.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
@@ -463,7 +463,7 @@ class spell_hun_chimera_shot : public SpellScript
|
|||||||
|
|
||||||
// Amount of one aura tick
|
// Amount of one aura tick
|
||||||
basePoint = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), aurEff->GetAmount()));
|
basePoint = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), aurEff->GetAmount()));
|
||||||
int32 casterBasePoint = aurEff->GetAmount() * unitTarget->GetMaxPower(POWER_MANA) / 50; // TODO: Caster uses unitTarget?
|
int32 casterBasePoint = aurEff->GetAmount() * unitTarget->GetMaxPower(POWER_MANA) / 50; /// @todo: Caster uses unitTarget?
|
||||||
if (basePoint > casterBasePoint)
|
if (basePoint > casterBasePoint)
|
||||||
basePoint = casterBasePoint;
|
basePoint = casterBasePoint;
|
||||||
ApplyPct(basePoint, TickCount * 60);
|
ApplyPct(basePoint, TickCount * 60);
|
||||||
|
|||||||
@@ -591,7 +591,7 @@ class spell_mage_ice_barrier_aura : public spell_mage_incanters_absorbtion_base_
|
|||||||
{
|
{
|
||||||
PrepareAuraScript(spell_mage_ice_barrier_aura);
|
PrepareAuraScript(spell_mage_ice_barrier_aura);
|
||||||
|
|
||||||
// TODO: Rework
|
/// @todo: Rework
|
||||||
static int32 CalculateSpellAmount(Unit* caster, int32 amount, SpellInfo const* spellInfo, const AuraEffect* aurEff)
|
static int32 CalculateSpellAmount(Unit* caster, int32 amount, SpellInfo const* spellInfo, const AuraEffect* aurEff)
|
||||||
{
|
{
|
||||||
// +80.68% from sp bonus
|
// +80.68% from sp bonus
|
||||||
@@ -627,7 +627,7 @@ class spell_mage_ice_barrier : public SpellScript
|
|||||||
{
|
{
|
||||||
PrepareSpellScript(spell_mage_ice_barrier);
|
PrepareSpellScript(spell_mage_ice_barrier);
|
||||||
|
|
||||||
// TODO: Rework
|
/// @todo: Rework
|
||||||
static int32 CalculateSpellAmount(Unit* caster, int32 amount, SpellInfo const* spellInfo, const AuraEffect* aurEff)
|
static int32 CalculateSpellAmount(Unit* caster, int32 amount, SpellInfo const* spellInfo, const AuraEffect* aurEff)
|
||||||
{
|
{
|
||||||
// +80.68% from sp bonus
|
// +80.68% from sp bonus
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ public:
|
|||||||
|
|
||||||
enum SentryPoint
|
enum SentryPoint
|
||||||
{
|
{
|
||||||
SPELL_TELEPORT_VISUAL = 799, // TODO Find the correct spell
|
SPELL_TELEPORT_VISUAL = 799, /// @todo Find the correct spell
|
||||||
QUEST_MISSING_DIPLO_PT14 = 1265,
|
QUEST_MISSING_DIPLO_PT14 = 1265,
|
||||||
NPC_TERVOSH = 4967
|
NPC_TERVOSH = 4967
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ EndContentData */
|
|||||||
#include "WaypointMgr.h"
|
#include "WaypointMgr.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
|
|
||||||
// TODO: this import is not necessary for compilation and marked as unused by the IDE
|
// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||||
// however, for some reasons removing it would cause a damn linking issue
|
// however, for some reasons removing it would cause a damn linking issue
|
||||||
// there is probably some underlying problem with imports which should properly addressed
|
// there is probably some underlying problem with imports which should properly addressed
|
||||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ enum AchievementCriteriaTypes
|
|||||||
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34,
|
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL = 35,
|
ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL = 35,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36,
|
ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37, // TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
|
ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37, /// @todo: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
|
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
|
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
|
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
|
||||||
@@ -167,13 +167,13 @@ enum AchievementCriteriaTypes
|
|||||||
ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
|
ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP = 48, // note: rewarded as soon as the player payed, not at taking place at the seat
|
ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP = 48, // note: rewarded as soon as the player payed, not at taking place at the seat
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
|
ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, // TODO: itemlevel is mentioned in text but not present in dbc
|
ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, /// @todo: itemlevel is mentioned in text but not present in dbc
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
|
ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52,
|
ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53,
|
ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54,
|
ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55,
|
ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56, // TODO: in some cases map not present, and in some cases need do without die
|
ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56, /// @todo: in some cases map not present, and in some cases need do without die
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57,
|
ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
|
ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
|
ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
|
||||||
@@ -187,11 +187,11 @@ enum AchievementCriteriaTypes
|
|||||||
ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
|
ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
|
ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
|
ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN = 74, // TODO: title id is not mentioned in dbc
|
ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN = 74, /// @todo: title id is not mentioned in dbc
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
|
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76,
|
ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL = 77,
|
ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL = 77,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE = 78, // TODO: creature type (demon, undead etc.) is not stored in dbc
|
ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE = 78, /// @todo: creature type (demon, undead etc.) is not stored in dbc
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
|
ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION = 82,
|
ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION = 82,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
|
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
|
||||||
@@ -220,7 +220,7 @@ enum AchievementCriteriaTypes
|
|||||||
ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107,
|
ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
|
ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109,
|
ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110, // TODO: target entry is missing
|
ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo: target entry is missing
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
|
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
|
ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
|
ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ struct AchievementCriteriaEntry
|
|||||||
union
|
union
|
||||||
{
|
{
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0
|
// ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0
|
||||||
// TODO: also used for player deaths..
|
/// @todo: also used for player deaths..
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 creatureID; // 3
|
uint32 creatureID; // 3
|
||||||
@@ -286,14 +286,14 @@ struct AchievementCriteriaEntry
|
|||||||
// ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43
|
// ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
// TODO: This rank is _NOT_ the index from AreaTable.dbc
|
/// @todo: This rank is _NOT_ the index from AreaTable.dbc
|
||||||
uint32 areaReference; // 3
|
uint32 areaReference; // 3
|
||||||
} explore_area;
|
} explore_area;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44
|
// ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
// TODO: This rank is _NOT_ the index from CharTitles.dbc
|
/// @todo: This rank is _NOT_ the index from CharTitles.dbc
|
||||||
uint32 rank; // 3
|
uint32 rank; // 3
|
||||||
} own_rank;
|
} own_rank;
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@ struct AchievementCriteriaEntry
|
|||||||
} visit_barber;
|
} visit_barber;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49
|
// ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49
|
||||||
// TODO: where is the required itemlevel stored?
|
/// @todo: where is the required itemlevel stored?
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 itemSlot; // 3
|
uint32 itemSlot; // 3
|
||||||
@@ -361,7 +361,7 @@ struct AchievementCriteriaEntry
|
|||||||
} hk_race;
|
} hk_race;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54
|
// ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54
|
||||||
// TODO: where is the information about the target stored?
|
/// @todo: where is the information about the target stored?
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 emoteID; // 3 enum TextEmotes
|
uint32 emoteID; // 3 enum TextEmotes
|
||||||
@@ -412,7 +412,7 @@ struct AchievementCriteriaEntry
|
|||||||
} use_gameobject;
|
} use_gameobject;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70
|
// ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70
|
||||||
// TODO: are those special criteria stored in the dbc or do we have to add another sql table?
|
/// @todo: are those special criteria stored in the dbc or do we have to add another sql table?
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 unused; // 3
|
uint32 unused; // 3
|
||||||
|
|||||||
@@ -103,6 +103,6 @@ TEST(FormulasTest, Gain)
|
|||||||
{
|
{
|
||||||
auto worldMock = new WorldMock();
|
auto worldMock = new WorldMock();
|
||||||
sWorld.reset((worldMock));
|
sWorld.reset((worldMock));
|
||||||
// TODO: create mocks of Player and Creature
|
/// @todo: create mocks of Player and Creature
|
||||||
// Gain(nullptr, nullptr);
|
// Gain(nullptr, nullptr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ namespace MMAP
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToDo: delete the old tile as the user clearly wants to rebuild it
|
/// @todo: delete the old tile as the user clearly wants to rebuild it
|
||||||
|
|
||||||
TileBuilder tileBuilder = TileBuilder(this, m_skipLiquid, m_bigBaseUnit, m_debugOutput);
|
TileBuilder tileBuilder = TileBuilder(this, m_skipLiquid, m_bigBaseUnit, m_debugOutput);
|
||||||
tileBuilder.buildTile(mapID, tileX, tileY, navMesh);
|
tileBuilder.buildTile(mapID, tileX, tileY, navMesh);
|
||||||
@@ -763,7 +763,7 @@ namespace MMAP
|
|||||||
delete[] tiles;
|
delete[] tiles;
|
||||||
|
|
||||||
// set polygons as walkable
|
// set polygons as walkable
|
||||||
// TODO: special flags for DYNAMIC polygons, ie surfaces that can be turned on and off
|
/// @todo: special flags for DYNAMIC polygons, ie surfaces that can be turned on and off
|
||||||
for (int i = 0; i < iv.polyMesh->npolys; ++i)
|
for (int i = 0; i < iv.polyMesh->npolys; ++i)
|
||||||
if (iv.polyMesh->areas[i] & RC_WALKABLE_AREA)
|
if (iv.polyMesh->areas[i] & RC_WALKABLE_AREA)
|
||||||
iv.polyMesh->flags[i] = iv.polyMesh->areas[i];
|
iv.polyMesh->flags[i] = iv.polyMesh->areas[i];
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ namespace MMAP
|
|||||||
dtNavMeshParams m_navMeshParams;
|
dtNavMeshParams m_navMeshParams;
|
||||||
};
|
};
|
||||||
|
|
||||||
// ToDo: move this to its own file. For now it will stay here to keep the changes to a minimum, especially in the cpp file
|
/// @todo: move this to its own file. For now it will stay here to keep the changes to a minimum, especially in the cpp file
|
||||||
class MapBuilder;
|
class MapBuilder;
|
||||||
class TileBuilder
|
class TileBuilder
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public:
|
|||||||
// Open database. It must be openened before it can be used.
|
// Open database. It must be openened before it can be used.
|
||||||
bool open();
|
bool open();
|
||||||
|
|
||||||
// TODO: Add a close function?
|
/// @todo: Add a close function?
|
||||||
|
|
||||||
// Database exceptions
|
// Database exceptions
|
||||||
class Exception
|
class Exception
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ void ExtractGameobjectModels()
|
|||||||
}
|
}
|
||||||
else if (!strcmp(ch_ext, ".mdl"))
|
else if (!strcmp(ch_ext, ".mdl"))
|
||||||
{
|
{
|
||||||
// TODO: extract .mdl files, if needed
|
/// @todo: extract .mdl files, if needed
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else //if (!strcmp(ch_ext, ".mdx") || !strcmp(ch_ext, ".m2"))
|
else //if (!strcmp(ch_ext, ".mdx") || !strcmp(ch_ext, ".m2"))
|
||||||
|
|||||||
@@ -472,7 +472,7 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE* output, bool preciseVectorData)
|
|||||||
// only need height values, the other values are unknown anyway
|
// only need height values, the other values are unknown anyway
|
||||||
for (uint32 i = 0; i < LiquEx_size / sizeof(WMOLiquidVert); ++i)
|
for (uint32 i = 0; i < LiquEx_size / sizeof(WMOLiquidVert); ++i)
|
||||||
fwrite(&LiquEx[i].height, sizeof(float), 1, output);
|
fwrite(&LiquEx[i].height, sizeof(float), 1, output);
|
||||||
// todo: compress to bit field
|
/// @todo: compress to bit field
|
||||||
fwrite(LiquBytes, 1, hlq->xtiles * hlq->ytiles, output);
|
fwrite(LiquBytes, 1, hlq->xtiles * hlq->ytiles, output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user