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
+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.