Merge branch 'azerothcore:master' into Playerbot
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
-- DB update 2022_04_19_00 -> 2022_04_21_00
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE updateDb ()
|
||||
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
|
||||
SELECT COUNT(*) INTO @COLEXISTS
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_04_19_00';
|
||||
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
|
||||
START TRANSACTION;
|
||||
ALTER TABLE version_db_world CHANGE COLUMN 2022_04_19_00 2022_04_21_00 bit;
|
||||
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1650555787208782000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
|
||||
--
|
||||
-- START UPDATING QUERIES
|
||||
--
|
||||
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1650555787208782000');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_igb_battle_experience_check';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(71201, 'spell_igb_battle_experience_check');
|
||||
|
||||
--
|
||||
-- END UPDATING QUERIES
|
||||
--
|
||||
UPDATE version_db_world SET date = '2022_04_21_00' WHERE sql_rev = '1650555787208782000';
|
||||
COMMIT;
|
||||
END //
|
||||
DELIMITER ;
|
||||
CALL updateDb();
|
||||
DROP PROCEDURE IF EXISTS `updateDb`;
|
||||
@@ -28,7 +28,7 @@ namespace MMAP
|
||||
|
||||
MMapMgr* MMapFactory::createOrGetMMapMgr()
|
||||
{
|
||||
if (g_MMapMgr == nullptr)
|
||||
if (!g_MMapMgr)
|
||||
{
|
||||
g_MMapMgr = new MMapMgr();
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ bool IsIPAddress(char const* ipaddress)
|
||||
uint32 CreatePIDFile(std::string const& filename)
|
||||
{
|
||||
FILE* pid_file = fopen(filename.c_str(), "w");
|
||||
if (pid_file == nullptr)
|
||||
if (!pid_file)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st
|
||||
}
|
||||
|
||||
// Database does not exist
|
||||
if ((error == ER_BAD_DB_ERROR) && updatesEnabledForThis && _autoSetup && !sConfigMgr->isDryRun())
|
||||
if ((error == ER_BAD_DB_ERROR) && updatesEnabledForThis && _autoSetup)
|
||||
{
|
||||
// Try to create the database and connect again if auto setup is enabled
|
||||
if (DBUpdater<T>::Create(pool) && (!pool.Open()))
|
||||
@@ -112,7 +112,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st
|
||||
});
|
||||
|
||||
// Populate and update only if updates are enabled for this pool
|
||||
if (updatesEnabledForThis && !sConfigMgr->isDryRun())
|
||||
if (updatesEnabledForThis)
|
||||
{
|
||||
_populate.push([this, name, &pool]() -> bool
|
||||
{
|
||||
|
||||
@@ -231,10 +231,13 @@ bool DBUpdater<T>::Create(DatabaseWorkerPool<T>& pool)
|
||||
LOG_WARN("sql.updates", "Database \"{}\" does not exist, do you want to create it? [yes (default) / no]: ",
|
||||
pool.GetConnectionInfo()->database);
|
||||
|
||||
std::string answer;
|
||||
std::getline(std::cin, answer);
|
||||
if (!answer.empty() && !(answer.substr(0, 1) == "y"))
|
||||
return false;
|
||||
if (!sConfigMgr->isDryRun())
|
||||
{
|
||||
std::string answer;
|
||||
std::getline(std::cin, answer);
|
||||
if (!answer.empty() && !(answer.substr(0, 1) == "y"))
|
||||
return false;
|
||||
}
|
||||
|
||||
LOG_INFO("sql.updates", "Creating database \"{}\"...", pool.GetConnectionInfo()->database);
|
||||
|
||||
@@ -250,7 +253,6 @@ bool DBUpdater<T>::Create(DatabaseWorkerPool<T>& pool)
|
||||
}
|
||||
|
||||
file << "CREATE DATABASE `" << pool.GetConnectionInfo()->database << "` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;\n\n";
|
||||
|
||||
file.close();
|
||||
|
||||
try
|
||||
|
||||
@@ -93,9 +93,9 @@ namespace FactorySelector
|
||||
}
|
||||
|
||||
// select NullCreatureAI if not another cases
|
||||
ainame = (ai_factory == nullptr) ? "NullCreatureAI" : ai_factory->key();
|
||||
ainame = (!ai_factory) ? "NullCreatureAI" : ai_factory->key();
|
||||
LOG_DEBUG("scripts.ai", "Creature {} used AI is {}.", creature->GetGUID().ToString(), ainame);
|
||||
return (ai_factory == nullptr ? new NullCreatureAI(creature) : ai_factory->Create(creature));
|
||||
return (!ai_factory ? new NullCreatureAI(creature) : ai_factory->Create(creature));
|
||||
}
|
||||
|
||||
MovementGenerator* selectMovementGenerator(Creature* creature)
|
||||
@@ -123,7 +123,7 @@ namespace FactorySelector
|
||||
}
|
||||
}*/
|
||||
|
||||
return (mv_factory == nullptr ? nullptr : mv_factory->Create(creature));
|
||||
return (!mv_factory ? nullptr : mv_factory->Create(creature));
|
||||
}
|
||||
|
||||
GameObjectAI* SelectGameObjectAI(GameObject* go)
|
||||
@@ -138,9 +138,9 @@ namespace FactorySelector
|
||||
|
||||
//future goAI types go here
|
||||
|
||||
std::string ainame = (ai_factory == nullptr || go->GetScriptId()) ? "NullGameObjectAI" : ai_factory->key();
|
||||
std::string ainame = (!ai_factory || go->GetScriptId()) ? "NullGameObjectAI" : ai_factory->key();
|
||||
LOG_DEBUG("scripts.ai", "GameObject {} used AI is {}.", go->GetGUID().ToString(), ainame);
|
||||
|
||||
return (ai_factory == nullptr ? new NullGameObjectAI(go) : ai_factory->Create(go));
|
||||
return (!ai_factory ? new NullGameObjectAI(go) : ai_factory->Create(go));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1797,7 +1797,7 @@ class ObjectGuidList
|
||||
public:
|
||||
ObjectGuidList(ObjectList* objectList, WorldObject* baseObject)
|
||||
{
|
||||
ASSERT(objectList != nullptr);
|
||||
ASSERT(objectList);
|
||||
m_objectList = objectList;
|
||||
m_baseObject = baseObject;
|
||||
m_guidList = new GuidList();
|
||||
|
||||
@@ -3036,7 +3036,7 @@ bool Creature::SetSwim(bool enable)
|
||||
*/
|
||||
bool Creature::CanSwim() const
|
||||
{
|
||||
if (Unit::CanSwim())
|
||||
if (Unit::CanSwim() || (!Unit::CanSwim() && !CanFly()))
|
||||
return true;
|
||||
|
||||
if (IsPet())
|
||||
|
||||
@@ -728,7 +728,7 @@ void Item::AddToUpdateQueueOf(Player* player)
|
||||
if (IsInUpdateQueue())
|
||||
return;
|
||||
|
||||
ASSERT(player != nullptr);
|
||||
ASSERT(player);
|
||||
|
||||
if (player->GetGUID() != GetOwnerGUID())
|
||||
{
|
||||
@@ -748,7 +748,7 @@ void Item::RemoveFromUpdateQueueOf(Player* player)
|
||||
if (!IsInUpdateQueue())
|
||||
return;
|
||||
|
||||
ASSERT(player != nullptr);
|
||||
ASSERT(player);
|
||||
|
||||
if (player->GetGUID() != GetOwnerGUID())
|
||||
{
|
||||
|
||||
@@ -2266,7 +2266,7 @@ bool Player::IsGroupVisibleFor(Player const* p) const
|
||||
|
||||
bool Player::IsInSameGroupWith(Player const* p) const
|
||||
{
|
||||
return p == this || (GetGroup() != nullptr &&
|
||||
return p == this || (GetGroup() &&
|
||||
GetGroup() == p->GetGroup() &&
|
||||
GetGroup()->SameSubGroup(this, p));
|
||||
}
|
||||
@@ -3741,7 +3741,7 @@ void Player::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
{
|
||||
for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i)
|
||||
{
|
||||
if (m_items[i] == nullptr)
|
||||
if (!m_items[i])
|
||||
continue;
|
||||
|
||||
m_items[i]->BuildCreateUpdateBlockForPlayer(data, target);
|
||||
@@ -3749,14 +3749,14 @@ void Player::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
|
||||
for (uint8 i = INVENTORY_SLOT_BAG_START; i < BANK_SLOT_BAG_END; ++i)
|
||||
{
|
||||
if (m_items[i] == nullptr)
|
||||
if (!m_items[i])
|
||||
continue;
|
||||
|
||||
m_items[i]->BuildCreateUpdateBlockForPlayer(data, target);
|
||||
}
|
||||
for (uint8 i = KEYRING_SLOT_START; i < CURRENCYTOKEN_SLOT_END; ++i)
|
||||
{
|
||||
if (m_items[i] == nullptr)
|
||||
if (!m_items[i])
|
||||
continue;
|
||||
|
||||
m_items[i]->BuildCreateUpdateBlockForPlayer(data, target);
|
||||
@@ -3772,7 +3772,7 @@ void Player::DestroyForPlayer(Player* target, bool onDeath) const
|
||||
|
||||
for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) // xinef: previously INVENTORY_SLOT_BAG_END
|
||||
{
|
||||
if (m_items[i] == nullptr)
|
||||
if (!m_items[i])
|
||||
continue;
|
||||
|
||||
m_items[i]->DestroyForPlayer(target);
|
||||
@@ -3782,14 +3782,14 @@ void Player::DestroyForPlayer(Player* target, bool onDeath) const
|
||||
{
|
||||
for (uint8 i = INVENTORY_SLOT_BAG_START; i < BANK_SLOT_BAG_END; ++i)
|
||||
{
|
||||
if (m_items[i] == nullptr)
|
||||
if (!m_items[i])
|
||||
continue;
|
||||
|
||||
m_items[i]->DestroyForPlayer(target);
|
||||
}
|
||||
for (uint8 i = KEYRING_SLOT_START; i < CURRENCYTOKEN_SLOT_END; ++i)
|
||||
{
|
||||
if (m_items[i] == nullptr)
|
||||
if (!m_items[i])
|
||||
continue;
|
||||
|
||||
m_items[i]->DestroyForPlayer(target);
|
||||
@@ -4978,7 +4978,7 @@ float Player::GetMeleeCritFromAgility()
|
||||
|
||||
GtChanceToMeleeCritBaseEntry const* critBase = sGtChanceToMeleeCritBaseStore.LookupEntry(pclass - 1);
|
||||
GtChanceToMeleeCritEntry const* critRatio = sGtChanceToMeleeCritStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1);
|
||||
if (critBase == nullptr || critRatio == nullptr)
|
||||
if (!critBase || !critRatio)
|
||||
return 0.0f;
|
||||
|
||||
float crit = critBase->base + GetStat(STAT_AGILITY) * critRatio->ratio;
|
||||
@@ -5026,7 +5026,7 @@ void Player::GetDodgeFromAgility(float& diminishing, float& nondiminishing)
|
||||
|
||||
// Dodge per agility is proportional to crit per agility, which is available from DBC files
|
||||
GtChanceToMeleeCritEntry const* dodgeRatio = sGtChanceToMeleeCritStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1);
|
||||
if (dodgeRatio == nullptr || pclass > MAX_CLASSES)
|
||||
if (!dodgeRatio || pclass > MAX_CLASSES)
|
||||
return;
|
||||
|
||||
// TODO: research if talents/effects that increase total agility by x% should increase non-diminishing part
|
||||
@@ -5048,7 +5048,7 @@ float Player::GetSpellCritFromIntellect()
|
||||
|
||||
GtChanceToSpellCritBaseEntry const* critBase = sGtChanceToSpellCritBaseStore.LookupEntry(pclass - 1);
|
||||
GtChanceToSpellCritEntry const* critRatio = sGtChanceToSpellCritStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1);
|
||||
if (critBase == nullptr || critRatio == nullptr)
|
||||
if (!critBase || !critRatio)
|
||||
return 0.0f;
|
||||
|
||||
float crit = critBase->base + GetStat(STAT_INTELLECT) * critRatio->ratio;
|
||||
@@ -5100,7 +5100,7 @@ float Player::OCTRegenHPPerSpirit()
|
||||
|
||||
GtOCTRegenHPEntry const* baseRatio = sGtOCTRegenHPStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1);
|
||||
GtRegenHPPerSptEntry const* moreRatio = sGtRegenHPPerSptStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1);
|
||||
if (baseRatio == nullptr || moreRatio == nullptr)
|
||||
if (!baseRatio || !moreRatio)
|
||||
return 0.0f;
|
||||
|
||||
// Formula from PaperDollFrame script
|
||||
@@ -5123,7 +5123,7 @@ float Player::OCTRegenMPPerSpirit()
|
||||
|
||||
// GtOCTRegenMPEntry const* baseRatio = sGtOCTRegenMPStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
|
||||
GtRegenMPPerSptEntry const* moreRatio = sGtRegenMPPerSptStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1);
|
||||
if (moreRatio == nullptr)
|
||||
if (!moreRatio)
|
||||
return 0.0f;
|
||||
|
||||
// Formula get from PaperDollFrame script
|
||||
@@ -6045,7 +6045,7 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar
|
||||
}
|
||||
}
|
||||
|
||||
if (uVictim != nullptr)
|
||||
if (uVictim)
|
||||
{
|
||||
if (groupsize > 1)
|
||||
honor_f /= groupsize;
|
||||
@@ -9781,7 +9781,7 @@ void Player::DropModCharge(SpellModifier* mod, Spell* spell)
|
||||
|
||||
void Player::SetSpellModTakingSpell(Spell* spell, bool apply)
|
||||
{
|
||||
if (apply && m_spellModTakingSpell != nullptr)
|
||||
if (apply && m_spellModTakingSpell)
|
||||
{
|
||||
LOG_INFO("misc", "Player::SetSpellModTakingSpell (A1) - {}, {}", spell->m_spellInfo->Id, m_spellModTakingSpell->m_spellInfo->Id);
|
||||
return;
|
||||
@@ -11218,7 +11218,7 @@ void Player::SetSelection(ObjectGuid guid)
|
||||
|
||||
void Player::SetGroup(Group* group, int8 subgroup)
|
||||
{
|
||||
if (group == nullptr)
|
||||
if (!group)
|
||||
m_group.unlink();
|
||||
else
|
||||
{
|
||||
@@ -12762,7 +12762,7 @@ void Player::RemoveFromBattlegroundOrBattlefieldRaid()
|
||||
|
||||
void Player::SetOriginalGroup(Group* group, int8 subgroup)
|
||||
{
|
||||
if (group == nullptr)
|
||||
if (!group)
|
||||
m_originalGroup.unlink();
|
||||
else
|
||||
{
|
||||
@@ -13176,7 +13176,7 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot)
|
||||
// Xinef: exploit protection, dont allow to loot normal items if player is not master loot and not below loot threshold
|
||||
// Xinef: only quest, ffa and conditioned items
|
||||
if (!item->is_underthreshold && loot->roundRobinPlayer && !GetLootGUID().IsItem() && GetGroup() && GetGroup()->GetLootMethod() == MASTER_LOOT && GetGUID() != GetGroup()->GetMasterLooterGuid())
|
||||
if (qitem == nullptr && ffaitem == nullptr && conditem == nullptr)
|
||||
if (!qitem && !ffaitem && !conditem)
|
||||
{
|
||||
SendLootRelease(GetLootGUID());
|
||||
return;
|
||||
|
||||
@@ -7331,7 +7331,7 @@ void Player::_SaveInventory(CharacterDatabaseTransaction trans)
|
||||
if (item->GetState() != ITEM_REMOVED)
|
||||
{
|
||||
Item* test = GetItemByPos(item->GetBagSlot(), item->GetSlot());
|
||||
if (test == nullptr)
|
||||
if (!test)
|
||||
{
|
||||
ObjectGuid::LowType bagTestGUID = 0;
|
||||
if (Item* test2 = GetItemByPos(INVENTORY_SLOT_BAG_0, item->GetBagSlot()))
|
||||
|
||||
@@ -8944,7 +8944,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
|
||||
|
||||
// All ok. Check current trigger spell
|
||||
SpellInfo const* triggerEntry = sSpellMgr->GetSpellInfo(trigger_spell_id);
|
||||
if (triggerEntry == nullptr)
|
||||
if (!triggerEntry)
|
||||
{
|
||||
// Don't cast unknown spell
|
||||
LOG_ERROR("entities.unit", "Unit::HandleProcTriggerSpell: Spell {} (effIndex: {}) has unknown TriggerSpell {}. Unhandled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex(), trigger_spell_id);
|
||||
@@ -9387,7 +9387,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
|
||||
}
|
||||
|
||||
// try detect target manually if not set
|
||||
if (target == nullptr)
|
||||
if (!target)
|
||||
target = !(procFlags & (PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS)) && triggerEntry->IsPositive() ? this : victim;
|
||||
|
||||
if (cooldown)
|
||||
@@ -13844,6 +13844,7 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
|
||||
if (Unit* critter = ObjectAccessor::GetUnit(*this, GetCritterGUID()))
|
||||
critter->UpdateSpeed(mtype, forced);
|
||||
}
|
||||
ToPlayer()->SetCanTeleport(true);
|
||||
}
|
||||
|
||||
switch (mtype)
|
||||
@@ -15778,7 +15779,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u
|
||||
continue;
|
||||
|
||||
// If not trigger by default and spellProcEvent == nullptr - skip
|
||||
if (!isTriggerAura[aurEff->GetAuraType()] && triggerData.spellProcEvent == nullptr)
|
||||
if (!isTriggerAura[aurEff->GetAuraType()] && !triggerData.spellProcEvent)
|
||||
continue;
|
||||
|
||||
switch (aurEff->GetAuraType())
|
||||
@@ -19185,6 +19186,10 @@ void Unit::ExitVehicle(Position const* /*exitPosition*/)
|
||||
return;
|
||||
|
||||
GetVehicleBase()->RemoveAurasByType(SPELL_AURA_CONTROL_VEHICLE, GetGUID());
|
||||
if (Player* player = ToPlayer())
|
||||
{
|
||||
player->SetCanTeleport(true);
|
||||
}
|
||||
//! The following call would not even be executed successfully as the
|
||||
//! SPELL_AURA_CONTROL_VEHICLE unapply handler already calls _ExitVehicle without
|
||||
//! specifying an exitposition. The subsequent call below would return on if (!m_vehicle).
|
||||
|
||||
@@ -3429,7 +3429,7 @@ void ObjectMgr::LoadPetLevelInfo()
|
||||
|
||||
PetLevelInfo*& pInfoMapEntry = _petInfoStore[creature_id];
|
||||
|
||||
if (pInfoMapEntry == nullptr)
|
||||
if (!pInfoMapEntry)
|
||||
pInfoMapEntry = new PetLevelInfo[sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)];
|
||||
|
||||
// data for level 1 stored in [0] array element, ...
|
||||
@@ -8497,7 +8497,7 @@ GameTele const* ObjectMgr::GetGameTele(std::string_view name) const
|
||||
{
|
||||
if (itr->second.wnameLow == wname)
|
||||
return &itr->second;
|
||||
else if (alt == nullptr && itr->second.wnameLow.find(wname) != std::wstring::npos)
|
||||
else if (!alt && itr->second.wnameLow.find(wname) != std::wstring::npos)
|
||||
alt = &itr->second;
|
||||
}
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData)
|
||||
|
||||
Unit* mover = _player->m_mover;
|
||||
|
||||
ASSERT(mover != nullptr); // there must always be a mover
|
||||
ASSERT(mover); // there must always be a mover
|
||||
|
||||
Player* plrMover = mover->ToPlayer();
|
||||
|
||||
|
||||
@@ -140,8 +140,8 @@ void WorldSession::moveItems(Item* myItems[], Item* hisItems[])
|
||||
{
|
||||
ItemPosCountVec traderDst;
|
||||
ItemPosCountVec playerDst;
|
||||
bool traderCanTrade = (myItems[i] == nullptr || trader->CanStoreItem(NULL_BAG, NULL_SLOT, traderDst, myItems[i], false) == EQUIP_ERR_OK);
|
||||
bool playerCanTrade = (hisItems[i] == nullptr || _player->CanStoreItem(NULL_BAG, NULL_SLOT, playerDst, hisItems[i], false) == EQUIP_ERR_OK);
|
||||
bool traderCanTrade = (!myItems[i] || trader->CanStoreItem(NULL_BAG, NULL_SLOT, traderDst, myItems[i], false) == EQUIP_ERR_OK);
|
||||
bool playerCanTrade = (!hisItems[i] || _player->CanStoreItem(NULL_BAG, NULL_SLOT, playerDst, hisItems[i], false) == EQUIP_ERR_OK);
|
||||
if (traderCanTrade && playerCanTrade)
|
||||
{
|
||||
// Ok, if trade item exists and can be stored
|
||||
|
||||
@@ -359,7 +359,7 @@ void Map::SwitchGridContainers(Creature* obj, bool on)
|
||||
|
||||
LOG_DEBUG("maps", "Switch object {} from grid[{}, {}] {}", obj->GetGUID().ToString(), cell.GridX(), cell.GridY(), on);
|
||||
NGridType* ngrid = getNGrid(cell.GridX(), cell.GridY());
|
||||
ASSERT(ngrid != nullptr);
|
||||
ASSERT(ngrid);
|
||||
|
||||
GridType& grid = ngrid->GetGridType(cell.CellX(), cell.CellY());
|
||||
|
||||
@@ -397,7 +397,7 @@ void Map::SwitchGridContainers(GameObject* obj, bool on)
|
||||
|
||||
//LOG_DEBUG(LOG_FILTER_MAPS, "Switch object {} from grid[{}, {}] {}", obj->GetGUID().ToString(), cell.data.Part.grid_x, cell.data.Part.grid_y, on);
|
||||
NGridType* ngrid = getNGrid(cell.GridX(), cell.GridY());
|
||||
ASSERT(ngrid != nullptr);
|
||||
ASSERT(ngrid);
|
||||
|
||||
GridType& grid = ngrid->GetGridType(cell.CellX(), cell.CellY());
|
||||
|
||||
@@ -471,7 +471,7 @@ bool Map::EnsureGridLoaded(const Cell& cell)
|
||||
EnsureGridCreated(GridCoord(cell.GridX(), cell.GridY()));
|
||||
NGridType* grid = getNGrid(cell.GridX(), cell.GridY());
|
||||
|
||||
ASSERT(grid != nullptr);
|
||||
ASSERT(grid);
|
||||
if (!isGridObjectDataLoaded(cell.GridX(), cell.GridY()))
|
||||
{
|
||||
//if (!isGridObjectDataLoaded(cell.GridX(), cell.GridY()))
|
||||
|
||||
@@ -71,12 +71,12 @@ Map* MapMgr::CreateBaseMap(uint32 id)
|
||||
{
|
||||
Map* map = FindBaseMap(id);
|
||||
|
||||
if (map == nullptr)
|
||||
if (!map)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(Lock);
|
||||
|
||||
map = FindBaseMap(id);
|
||||
if (map == nullptr) // pussywizard: check again after acquiring mutex
|
||||
if (!map) // pussywizard: check again after acquiring mutex
|
||||
{
|
||||
MapEntry const* entry = sMapStore.LookupEntry(id);
|
||||
ASSERT(entry);
|
||||
|
||||
@@ -66,7 +66,7 @@ void TransportMgr::LoadTransportTemplates()
|
||||
Field* fields = result->Fetch();
|
||||
uint32 entry = fields[0].Get<uint32>();
|
||||
GameObjectTemplate const* goInfo = sObjectMgr->GetGameObjectTemplate(entry);
|
||||
if (goInfo == nullptr)
|
||||
if (!goInfo)
|
||||
{
|
||||
LOG_ERROR("entities.transport", "Transport {} has no associated GameObjectTemplate from `gameobject_template` , skipped.", entry);
|
||||
continue;
|
||||
|
||||
@@ -429,7 +429,7 @@ GraveyardStruct const* Graveyard::GetGraveyard(const std::string& name) const
|
||||
{
|
||||
if (itr->second.wnameLow == wname)
|
||||
return &itr->second;
|
||||
else if (alt == nullptr && itr->second.wnameLow.find(wname) != std::wstring::npos)
|
||||
else if (!alt && itr->second.wnameLow.find(wname) != std::wstring::npos)
|
||||
alt = &itr->second;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ void MotionMaster::InitDefault()
|
||||
if (_owner->GetTypeId() == TYPEID_UNIT && _owner->IsAlive())
|
||||
{
|
||||
MovementGenerator* movement = FactorySelector::selectMovementGenerator(_owner->ToCreature());
|
||||
Mutate(movement == nullptr ? &si_idleMovement : movement, MOTION_SLOT_IDLE);
|
||||
Mutate(!movement ? &si_idleMovement : movement, MOTION_SLOT_IDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -183,7 +183,7 @@ WorldSession::~WorldSession()
|
||||
|
||||
std::string const& WorldSession::GetPlayerName() const
|
||||
{
|
||||
return _player != nullptr ? _player->GetName() : DefaultPlayerName;
|
||||
return _player ? _player->GetName() : DefaultPlayerName;
|
||||
}
|
||||
|
||||
std::string WorldSession::GetPlayerInfo() const
|
||||
|
||||
@@ -5932,7 +5932,7 @@ void AuraEffect::HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster)
|
||||
uint32 auraId = auraSpellInfo->Id;
|
||||
|
||||
// specific code for cases with no trigger spell provided in field
|
||||
if (triggeredSpellInfo == nullptr)
|
||||
if (!triggeredSpellInfo)
|
||||
{
|
||||
switch (auraSpellInfo->SpellFamilyName)
|
||||
{
|
||||
|
||||
@@ -1683,7 +1683,7 @@ void Spell::SelectImplicitTrajTargets(SpellEffIndex effIndex, SpellImplicitTarge
|
||||
if (a > -0.0001f)
|
||||
a = 0;
|
||||
|
||||
LOG_ERROR("spells", "Spell::SelectTrajTargets: a {} b {}", a, b);
|
||||
LOG_DEBUG("spells", "Spell::SelectTrajTargets: a {} b {}", a, b);
|
||||
|
||||
// Xinef: hack for distance, many trajectory spells have RangeEntry 1 (self)
|
||||
float bestDist = m_spellInfo->GetMaxRange(false) * 2;
|
||||
@@ -6036,6 +6036,8 @@ SpellCastResult Spell::CheckCast(bool strict)
|
||||
if (m_pathFinder->GetPathType() & (PATHFIND_NOPATH | PATHFIND_INCOMPLETE) || target->GetExactDistSq(endPos.x, endPos.y, endPos.z) > maxdist * maxdist || m_pathFinder->getPathLength() > (40.0f + (m_caster->HasAura(58097) ? 5.0f : 0.0f)))
|
||||
return SPELL_FAILED_NOPATH;
|
||||
}
|
||||
if (Player* player = m_caster->ToPlayer())
|
||||
player->SetCanTeleport(true);
|
||||
break;
|
||||
}
|
||||
case SPELL_EFFECT_SKINNING:
|
||||
|
||||
@@ -1551,11 +1551,9 @@ void Spell::EffectHeal(SpellEffIndex /*effIndex*/)
|
||||
}
|
||||
|
||||
// Implemented this way as there is no other way to do it currently (that I know :P)...
|
||||
if (caster->ToPlayer() && caster->ToPlayer()->HasAura(23401)) // Nefarian Corrupted Healing (priest)
|
||||
if (caster->ToPlayer() && caster->HasAura(23401)) // Nefarian Corrupted Healing (priest)
|
||||
{
|
||||
if (m_spellInfo->Effects[EFFECT_0].ApplyAuraName != SPELL_AURA_PERIODIC_HEAL ||
|
||||
m_spellInfo->Effects[EFFECT_1].ApplyAuraName != SPELL_AURA_PERIODIC_HEAL ||
|
||||
m_spellInfo->Effects[EFFECT_2].ApplyAuraName != SPELL_AURA_PERIODIC_HEAL)
|
||||
if (!m_spellInfo->HasAura(SPELL_AURA_PERIODIC_HEAL) && (m_spellInfo->GetSchoolMask() & SPELL_SCHOOL_MASK_HOLY))
|
||||
{
|
||||
m_damage = 0;
|
||||
caster->CastSpell(unitTarget, 23402, false); // Nefarian Corrupted Healing Periodic Damage effect.
|
||||
|
||||
@@ -620,7 +620,7 @@ public:
|
||||
continue;
|
||||
}
|
||||
|
||||
if (updateQueue[qp] == nullptr)
|
||||
if (!updateQueue[qp])
|
||||
{
|
||||
handler->PSendSysMessage("The item with slot %d and guid %d has its queuepos (%d) pointing to NULL in the queue!", item->GetSlot(), item->GetGUID().GetCounter(), qp);
|
||||
error = true;
|
||||
@@ -688,7 +688,7 @@ public:
|
||||
continue;
|
||||
}
|
||||
|
||||
if (updateQueue[qp] == nullptr)
|
||||
if (!updateQueue[qp])
|
||||
{
|
||||
handler->PSendSysMessage("The item in bag %d at slot %d having guid %d has a queuepos (%d) that points to NULL in the queue!", bag->GetSlot(), item2->GetSlot(), item2->GetGUID().GetCounter(), qp);
|
||||
error = true;
|
||||
@@ -737,7 +737,7 @@ public:
|
||||
|
||||
Item* test = player->GetItemByPos(item->GetBagSlot(), item->GetSlot());
|
||||
|
||||
if (test == nullptr)
|
||||
if (!test)
|
||||
{
|
||||
handler->SendSysMessage(Acore::StringFormatFmt("queue({}): The bag({}) and slot({}) values for {} are incorrect, the player doesn't have any item at that position!", index, item->GetBagSlot(), item->GetSlot(), item->GetGUID().ToString()));
|
||||
error = true;
|
||||
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
{
|
||||
for (uint8 i = 0; i < 3; i++)
|
||||
{
|
||||
if (Guardians[room][i] == nullptr)
|
||||
if (!Guardians[room][i])
|
||||
{
|
||||
Guardians[room][i] = cr;
|
||||
break;
|
||||
|
||||
@@ -2719,6 +2719,22 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// 71201 - Battle Experience - proc should never happen, handled in script
|
||||
class spell_igb_battle_experience_check : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_igb_battle_experience_check);
|
||||
|
||||
bool CheckProc(ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_igb_battle_experience_check::CheckProc);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_icecrown_gunship_battle()
|
||||
{
|
||||
new npc_gunship();
|
||||
@@ -2750,4 +2766,5 @@ void AddSC_boss_icecrown_gunship_battle()
|
||||
new spell_igb_below_zero();
|
||||
new spell_igb_on_gunship_deck();
|
||||
new achievement_im_on_a_boat();
|
||||
RegisterSpellScript(spell_igb_battle_experience_check);
|
||||
}
|
||||
|
||||
@@ -560,37 +560,32 @@ public:
|
||||
switch (CreatureID)
|
||||
{
|
||||
case ADYEN_THE_LIGHTBRINGER:
|
||||
adyen = nullptr;
|
||||
adyen = me->FindNearestCreature(ADYEN_THE_LIGHTBRINGER, 100.0f, true);
|
||||
if (adyen != nullptr)
|
||||
if (adyen)
|
||||
return true;
|
||||
break;
|
||||
case EXARCH_ORELIS:
|
||||
orelis = nullptr;
|
||||
orelis = me->FindNearestCreature(EXARCH_ORELIS, 100.0f, true);
|
||||
if (orelis != nullptr)
|
||||
if (orelis)
|
||||
return true;
|
||||
break;
|
||||
case ANCHORITE_KARJA:
|
||||
karja = nullptr;
|
||||
karja = me->FindNearestCreature(ANCHORITE_KARJA, 100.0f, true);
|
||||
if (karja != nullptr)
|
||||
if (karja)
|
||||
return true;
|
||||
break;
|
||||
case KAYLAAN_THE_LOST:
|
||||
kaylaan = nullptr;
|
||||
kaylaan = me->FindNearestCreature(KAYLAAN_THE_LOST, 100.0f, true);
|
||||
if (kaylaan != nullptr)
|
||||
if (kaylaan)
|
||||
return true;
|
||||
break;
|
||||
case ISHANAH_HIGH_PRIESTESS:
|
||||
ishanah = nullptr;
|
||||
ishanah = me->FindNearestCreature(ISHANAH_HIGH_PRIESTESS, 100.0f, true);
|
||||
if (ishanah == nullptr)
|
||||
if (!ishanah)
|
||||
{
|
||||
// Ishanah may be dead; in this case we also need a reference to the creature for the respawn
|
||||
ishanah = me->FindNearestCreature(ISHANAH_HIGH_PRIESTESS, 100.0f, false);
|
||||
if (ishanah != nullptr)
|
||||
if (ishanah)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -604,10 +599,6 @@ public:
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFaction(FACTION_DEMON);
|
||||
adyen = nullptr;
|
||||
orelis = nullptr;
|
||||
karja = nullptr;
|
||||
ishanah = nullptr;
|
||||
}
|
||||
|
||||
void DoAction(int32 param) override
|
||||
@@ -1185,7 +1176,7 @@ public:
|
||||
for (GuidList::iterator itr = summons.begin(); itr != summons.end(); ++itr, i += 1.0f)
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, *itr))
|
||||
{
|
||||
if (who == nullptr)
|
||||
if (!who)
|
||||
{
|
||||
cr->GetMotionMaster()->Clear(false);
|
||||
cr->GetMotionMaster()->MoveFollow(me, 2.0f, M_PI / 2.0f + (i / summons.size() * M_PI));
|
||||
|
||||
@@ -517,7 +517,7 @@ void ClearOnlineAccounts()
|
||||
|
||||
void ShutdownCLIThread(std::thread* cliThread)
|
||||
{
|
||||
if (cliThread != nullptr)
|
||||
if (cliThread)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
// First try to cancel any I/O in the CLI thread
|
||||
@@ -772,7 +772,7 @@ void AuctionListingRunnable()
|
||||
|
||||
void ShutdownAuctionListingThread(std::thread* thread)
|
||||
{
|
||||
if (thread != nullptr)
|
||||
if (thread)
|
||||
{
|
||||
thread->join();
|
||||
delete thread;
|
||||
|
||||
@@ -905,7 +905,7 @@ namespace MMAP
|
||||
void TerrainBuilder::loadOffMeshConnections(uint32 mapID, uint32 tileX, uint32 tileY, MeshData& meshData, const char* offMeshFilePath)
|
||||
{
|
||||
// no meshfile input given?
|
||||
if (offMeshFilePath == nullptr)
|
||||
if (!offMeshFilePath)
|
||||
return;
|
||||
|
||||
FILE* fp = fopen(offMeshFilePath, "rb");
|
||||
|
||||
Reference in New Issue
Block a user