Merge branch 'azerothcore:master' into Playerbot

This commit is contained in:
ZhengPeiRu21
2022-04-22 09:13:49 -06:00
committed by GitHub
30 changed files with 128 additions and 82 deletions
@@ -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();
}
+1 -1
View File
@@ -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
{
+7 -5
View File
@@ -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
+5 -5
View File
@@ -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())
+2 -2
View File
@@ -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())
{
+17 -17
View File
@@ -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()))
+8 -3
View File
@@ -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).
+2 -2
View File
@@ -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;
}
+1 -1
View File
@@ -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();
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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()))
+2 -2
View File
@@ -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);
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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;
}
+1 -1
View File
@@ -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
{
+1 -1
View File
@@ -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)
{
+3 -1
View File
@@ -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:
+2 -4
View File
@@ -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.
+3 -3
View File
@@ -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));
+2 -2
View File
@@ -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;
+1 -1
View File
@@ -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");