diff options
Diffstat (limited to 'src')
55 files changed, 250 insertions, 413 deletions
diff --git a/src/server/bnetserver/Packets/AuthenticationPackets.h b/src/server/bnetserver/Packets/AuthenticationPackets.h index bcaa0e72011..fd5838720ab 100644 --- a/src/server/bnetserver/Packets/AuthenticationPackets.h +++ b/src/server/bnetserver/Packets/AuthenticationPackets.h @@ -60,7 +60,7 @@ namespace Battlenet std::string Locale; std::vector<Component> Components; std::string Login; - uint8 Region; + uint8 Region = 0; std::string GameAccountName; }; @@ -98,7 +98,7 @@ namespace Battlenet std::string Locale; std::vector<Component> Components; std::string Login; - uint64 Compatibility; + uint64 Compatibility = 0; }; class ResponseFailure @@ -138,8 +138,8 @@ namespace Battlenet { public: LogonResponse() : ServerPacket(PacketHeader(SMSG_LOGON_RESPONSE, AUTHENTICATION)), - PingTimeout(120000), FirstName(""), LastName(""), AccountId(0), Region(2), Flags(0), - GameAccountRegion(2), GameAccountName(""), FailedLogins(0) + PingTimeout(120000), AccountId(0), Region(2), Flags(0), + GameAccountRegion(2), GameAccountFlags(0), FailedLogins(0) { } diff --git a/src/server/bnetserver/Packets/CachePackets.h b/src/server/bnetserver/Packets/CachePackets.h index a65ab2651c8..57ccd448081 100644 --- a/src/server/bnetserver/Packets/CachePackets.h +++ b/src/server/bnetserver/Packets/CachePackets.h @@ -54,8 +54,8 @@ namespace Battlenet std::string Channel; std::string ItemName; std::string Locale; - uint32 Index; - int32 ReferenceTime; + uint32 Index = 0; + int32 ReferenceTime = 0; }; class GetStreamItemsResponse final : public ServerPacket @@ -70,7 +70,7 @@ namespace Battlenet void Write() override; std::string ToString() const override; - uint32 Index; + uint32 Index = 0; std::vector<ModuleInfo*> Modules; }; } diff --git a/src/server/bnetserver/Packets/ConnectionPackets.h b/src/server/bnetserver/Packets/ConnectionPackets.h index 8572cd5d854..1c4619c6df3 100644 --- a/src/server/bnetserver/Packets/ConnectionPackets.h +++ b/src/server/bnetserver/Packets/ConnectionPackets.h @@ -89,8 +89,8 @@ namespace Battlenet void Read() override; std::string ToString() const override; - uint16 Timeout; - uint32 Tick; + uint16 Timeout = 0; + uint32 Tick = 0; }; class ConnectionClosing final : public ClientPacket diff --git a/src/server/bnetserver/Packets/FriendsPackets.cpp b/src/server/bnetserver/Packets/FriendsPackets.cpp index 2659ec6204f..8b5d92389af 100644 --- a/src/server/bnetserver/Packets/FriendsPackets.cpp +++ b/src/server/bnetserver/Packets/FriendsPackets.cpp @@ -20,8 +20,8 @@ void Battlenet::Friends::GetFriendsOfFriend::Read() { - uint8 unk = _stream.Read<uint8>(2); - uint32 unk1 = _stream.Read<uint32>(32); + _stream.Read<uint8>(2); + _stream.Read<uint32>(32); } std::string Battlenet::Friends::GetFriendsOfFriend::ToString() const diff --git a/src/server/bnetserver/Packets/FriendsPackets.h b/src/server/bnetserver/Packets/FriendsPackets.h index ea4d6d2ea92..12935ddc4da 100644 --- a/src/server/bnetserver/Packets/FriendsPackets.h +++ b/src/server/bnetserver/Packets/FriendsPackets.h @@ -78,7 +78,7 @@ namespace Battlenet std::string ToString() const override; void CallHandler(Session* session) override; - uint32 SocialNetworkId; + uint32 SocialNetworkId = 0; }; class RealIdFriendInvite final : public ClientPacket diff --git a/src/server/bnetserver/Packets/WoWRealmPackets.h b/src/server/bnetserver/Packets/WoWRealmPackets.h index b411c63100a..dc958db501b 100644 --- a/src/server/bnetserver/Packets/WoWRealmPackets.h +++ b/src/server/bnetserver/Packets/WoWRealmPackets.h @@ -78,7 +78,7 @@ namespace Battlenet std::string ToString() const override; void CallHandler(Session* session) override; - uint32 ClientSeed; + uint32 ClientSeed = 0; RealmId Realm; }; diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index 33772c2c165..69336869c73 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -62,16 +62,16 @@ void UnitAI::DoMeleeAttackIfReady() } } -bool UnitAI::DoSpellAttackIfReady(uint32 spell) +bool UnitAI::DoSpellAttackIfReady(uint32 spellId) { if (me->HasUnitState(UNIT_STATE_CASTING) || !me->isAttackReady()) return true; - if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spell)) + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId)) { if (me->IsWithinCombatRange(me->GetVictim(), spellInfo->GetMaxRange(false))) { - me->CastSpell(me->GetVictim(), spell, false); + me->CastSpell(me->GetVictim(), spellInfo, TRIGGERED_NONE); me->resetAttackTimer(); return true; } @@ -90,40 +90,6 @@ void UnitAI::SelectTargetList(std::list<Unit*>& targetList, uint32 num, SelectAg SelectTargetList(targetList, DefaultTargetSelector(me, dist, playerOnly, aura), num, targetType); } -float UnitAI::DoGetSpellMaxRange(uint32 spellId, bool positive) -{ - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); - return spellInfo ? spellInfo->GetMaxRange(positive) : 0; -} - -void UnitAI::DoAddAuraToAllHostilePlayers(uint32 spellid) -{ - if (me->IsInCombat()) - { - ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); - for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) - { - if (Unit* unit = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid())) - if (unit->GetTypeId() == TYPEID_PLAYER) - me->AddAura(spellid, unit); - } - } -} - -void UnitAI::DoCastToAllHostilePlayers(uint32 spellid, bool triggered) -{ - if (me->IsInCombat()) - { - ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); - for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) - { - if (Unit* unit = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid())) - if (unit->GetTypeId() == TYPEID_PLAYER) - me->CastSpell(unit, spellid, triggered); - } - } -} - void UnitAI::DoCast(uint32 spellId) { Unit* target = NULL; diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 5d67c9546aa..79ba8cbdbbc 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -238,17 +238,13 @@ class UnitAI void AttackStartCaster(Unit* victim, float dist); - void DoAddAuraToAllHostilePlayers(uint32 spellid); void DoCast(uint32 spellId); void DoCast(Unit* victim, uint32 spellId, bool triggered = false); - void DoCastToAllHostilePlayers(uint32 spellid, bool triggered = false); void DoCastVictim(uint32 spellId, bool triggered = false); void DoCastAOE(uint32 spellId, bool triggered = false); - float DoGetSpellMaxRange(uint32 spellId, bool positive = false); - void DoMeleeAttackIfReady(); - bool DoSpellAttackIfReady(uint32 spell); + bool DoSpellAttackIfReady(uint32 spellId); static AISpellInfoType* AISpellInfo; static void FillAISpellInfo(); diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 8fe96be26fb..fc360587e58 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2882,6 +2882,7 @@ bool AchievementMgr<T>::AdditionalRequirementsSatisfied(AchievementCriteriaEntry case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_ZONE: // 41 if (!unit || unit->GetZoneId() != reqValue) return false; + break; case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_TARGET_HEALTH_PERCENT_BELOW: // 46 if (!unit || unit->GetHealthPct() >= reqValue) return false; @@ -3227,7 +3228,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData() uint32 dataType = fields[1].GetUInt8(); std::string scriptName = fields[4].GetString(); uint32 scriptId = 0; - if (scriptName.length()) // not empty + if (!scriptName.empty()) { if (dataType != ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT) TC_LOG_ERROR("sql.sql", "Table `achievement_criteria_data` has ScriptName set for non-scripted data type (Entry: %u, type %u), useless data.", criteria_id, dataType); diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 2f99bc0a6cc..332d635448b 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1712,7 +1712,7 @@ void Battleground::SendWarningToAll(uint32 entry, ...) vsnprintf(str, 1024, format, ap); va_end(ap); - ChatHandler::BuildChatPacket(&packetItr->second, CHAT_MSG_RAID_BOSS_EMOTE, LANG_UNIVERSAL, NULL, NULL, str); + ChatHandler::BuildChatPacket(&localizedPackets[player->GetSession()->GetSessionDbLocaleIndex()], CHAT_MSG_RAID_BOSS_EMOTE, LANG_UNIVERSAL, NULL, NULL, str); } player->SendDirectMessage(packetItr->second.Write()); diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index e2b6b16c9f2..a316c8630dc 100644 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -209,8 +209,8 @@ void Channel::JoinChannel(Player* player, std::string const& pass) //notify.ChannelWelcomeMsg = ""; notify.ChatChannelID = _channelId; //notify.InstanceID = 0; - notify.ChannelFlags = _flags; - notify.Channel = _name; + notify._ChannelFlags = _flags; + notify._Channel = _name; player->SendDirectMessage(notify.Write()); JoinNotify(player); @@ -541,12 +541,13 @@ void Channel::List(Player const* player) player->GetSession()->GetPlayerInfo().c_str(), GetName().c_str()); WorldPackets::Channel::ChannelListResponse list; - list.Display = true; /// always true? - list.Channel = GetName(); - list.ChannelFlags = GetFlags(); + list._Display = true; /// always true? + list._Channel = GetName(); + list._ChannelFlags = GetFlags(); uint32 gmLevelInWhoList = sWorld->getIntConfig(CONFIG_GM_LEVEL_IN_WHO_LIST); + list._Members.reserve(_playersStore.size()); for (PlayerContainer::value_type const& i : _playersStore) { Player* member = ObjectAccessor::FindConnectedPlayer(i.first); @@ -558,7 +559,7 @@ void Channel::List(Player const* player) member->GetSession()->GetSecurity() <= AccountTypes(gmLevelInWhoList)) && member->IsVisibleGloballyFor(player)) { - list.Members.emplace_back(i.second.PlayerGuid, GetVirtualRealmAddress(), i.second.GetFlags()); + list._Members.emplace_back(i.second.PlayerGuid, GetVirtualRealmAddress(), i.second.GetFlags()); } } @@ -760,7 +761,7 @@ void Channel::DeVoice(ObjectGuid const& /*guid1*/, ObjectGuid const& /*guid2*/) void Channel::MakeNotifyPacket(WorldPackets::Channel::ChannelNotify& data, uint8 notifyType) { data.Type = notifyType; - data.Channel = _name; + data._Channel = _name; } void Channel::MakeJoined(WorldPackets::Channel::ChannelNotify& data, ObjectGuid const& guid) diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index ca664abffd9..097eea5bb09 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -107,6 +107,6 @@ void ChannelMgr::SendNotOnChannelNotify(Player const* player, std::string const& { WorldPackets::Channel::ChannelNotify notify; notify.Type = CHAT_NOT_MEMBER_NOTICE; - notify.Channel = name; + notify._Channel = name; player->SendDirectMessage(notify.Write()); } diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 491b1864dda..8af2e64cc1f 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2213,12 +2213,7 @@ void Creature::ProhibitSpellSchool(SpellSchoolMask idSchoolMask, uint32 unTimeMs continue; uint32 unSpellId = m_spells[i]; - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(unSpellId); - if (!spellInfo) - { - ASSERT(spellInfo); - continue; - } + SpellInfo const* spellInfo = sSpellMgr->EnsureSpellInfo(unSpellId); // Not send cooldown for this spells if (spellInfo->IsCooldownStartedOnEvent()) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index c2a8dcd3538..40a8ed046fb 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -943,9 +943,14 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const case TYPEID_AREATRIGGER: flags = AreaTriggerUpdateFieldFlags; break; - case TYPEID_OBJECT: + case TYPEID_SCENEOBJECT: + flags = SceneObjectUpdateFieldFlags; break; - default: + case TYPEID_CONVERSATION: + flags = ConversationUpdateFieldFlags; + break; + case TYPEID_OBJECT: + ASSERT(false); break; } @@ -983,6 +988,9 @@ uint32 Object::GetDynamicUpdateFieldData(Player const* target, uint32*& flags) c visibleFlag |= UF_FLAG_PARTY_MEMBER; break; } + case TYPEID_CONVERSATION: + flags = ConversationDynamicUpdateFieldFlags; + break; default: flags = nullptr; break; diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index f59c82d44f5..327b83ba6d4 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -231,13 +231,13 @@ ObjectGuid const ObjectGuid::Empty = ObjectGuid(); ObjectGuid const ObjectGuid::TradeItem = ObjectGuid::Create<HighGuid::Uniq>(uint64(10)); template<HighGuid type> -ObjectGuid ObjectGuid::Create(LowType counter) +ObjectGuid ObjectGuid::Create(LowType /*counter*/) { static_assert(type == HighGuid::Count, "This guid type cannot be constructed using Create(LowType counter)."); } template<HighGuid type> -ObjectGuid ObjectGuid::Create(uint16 mapId, uint32 entry, LowType counter) +ObjectGuid ObjectGuid::Create(uint16 /*mapId*/, uint32 /*entry*/, LowType /*counter*/) { static_assert(type == HighGuid::Count, "This guid type cannot be constructed using Create(uint16 mapId, uint32 entry, LowType counter)."); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 479faad1ede..4b2ca3f0f23 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3849,18 +3849,11 @@ void Player::RemoveSpell(uint32 spell_id, bool disabled, bool learn_low_rank) if (spell_id == 46917 && m_canTitanGrip) SetCanTitanGrip(false); + if (m_canDualWield) { - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spell_id); - if (spellInfo->IsPassive()) - { - for (int i = 0; i < MAX_SPELL_EFFECTS; i++) - if (spellInfo->Effects[i].Effect == SPELL_EFFECT_DUAL_WIELD) - { - SetCanDualWield(false); - break; - } - } + if (spellInfo && spellInfo->IsPassive() && spellInfo->HasEffect(SPELL_EFFECT_DUAL_WIELD)) + SetCanDualWield(false); } if (sWorld->getBoolConfig(CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN)) @@ -16751,7 +16744,7 @@ void Player::_LoadEquipmentSets(PreparedQueryResult result) eqSet.State = EQUIPMENT_SET_UNCHANGED; for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i) - if (uint64 guid = fields[5 + i].GetUInt64()) + if (ObjectGuid::LowType guid = fields[5 + i].GetUInt64()) eqSet.Data.Pieces[i] = ObjectGuid::Create<HighGuid::Item>(guid); if (eqSet.Data.SetID >= MAX_EQUIPMENT_SET_INDEX) // client limit @@ -17810,12 +17803,12 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) Field* fields = result->Fetch(); if (Item* item = _LoadItem(trans, zoneId, timeDiff, fields)) { - ObjectGuid bagGuid = ObjectGuid::Create<HighGuid::Item>(fields[11].GetUInt64()); + ObjectGuid bagGuid = fields[11].GetUInt64() ? ObjectGuid::Create<HighGuid::Item>(fields[11].GetUInt64()) : ObjectGuid::Empty; uint8 slot = fields[12].GetUInt8(); uint8 err = EQUIP_ERR_OK; // Item is not in bag - if (!bagGuid.GetCounter()) + if (bagGuid.IsEmpty()) { item->SetContainer(NULL); item->SetSlot(slot); @@ -21372,12 +21365,7 @@ void Player::ProhibitSpellSchool(SpellSchoolMask idSchoolMask, uint32 unTimeMs) if (itr->second->state == PLAYERSPELL_REMOVED) continue; uint32 unSpellId = itr->first; - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(unSpellId); - if (!spellInfo) - { - ASSERT(spellInfo); - continue; - } + SpellInfo const* spellInfo = sSpellMgr->EnsureSpellInfo(unSpellId); // Not send cooldown for this spells if (spellInfo->IsCooldownStartedOnEvent()) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6a41a304639..9235a652850 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4888,133 +4888,6 @@ void Unit::SendAttackStateUpdate(uint32 HitInfo, Unit* target, uint8 /*SwingType SendAttackStateUpdate(&dmgInfo); } -bool Unit::HandleAuraProcOnPowerAmount(Unit* victim, uint32 /*damage*/, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 /*procEx*/, uint32 cooldown) -{ - // Get triggered aura spell info - SpellInfo const* auraSpellInfo = triggeredByAura->GetSpellInfo(); - - // Get effect index used for the proc - uint32 effIndex = triggeredByAura->GetEffIndex(); - - // Power amount required to proc the spell - int32 powerAmountRequired = triggeredByAura->GetAmount(); - // Power type required to proc - Powers powerRequired = Powers(auraSpellInfo->Effects[triggeredByAura->GetEffIndex()].MiscValue); - - // Set trigger spell id, target, custom basepoints - uint32 trigger_spell_id = auraSpellInfo->Effects[triggeredByAura->GetEffIndex()].TriggerSpell; - - Unit* target = NULL; - int32 basepoints0 = 0; - - Item* castItem = !triggeredByAura->GetBase()->GetCastItemGUID().IsEmpty() && GetTypeId() == TYPEID_PLAYER - ? ToPlayer()->GetItemByGuid(triggeredByAura->GetBase()->GetCastItemGUID()) : NULL; - - /* Try handle unknown trigger spells or with invalid power amount or misc value - if (sSpellMgr->GetSpellInfo(trigger_spell_id) == NULL || powerAmountRequired == NULL || powerRequired >= MAX_POWER) - { - switch (auraSpellInfo->SpellFamilyName) - { - case SPELLFAMILY_GENERIC: - { - break; - } - } - }*/ - - // All ok. Check current trigger spell - SpellInfo const* triggerEntry = sSpellMgr->GetSpellInfo(trigger_spell_id); - if (triggerEntry == NULL) - { - // Not cast unknown spell - // TC_LOG_ERROR("Unit::HandleAuraProcOnPowerAmount: Spell %u have 0 in EffectTriggered[%d], not handled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex()); - return false; - } - - // not allow proc extra attack spell at extra attack - if (m_extraAttacks && triggerEntry->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS)) - return false; - - if (!powerRequired || !powerAmountRequired) - { - TC_LOG_ERROR("spells", "Unit::HandleAuraProcOnPowerAmount: Spell %u have 0 powerAmountRequired in EffectAmount[%d] or 0 powerRequired in EffectMiscValue, not handled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex()); - return false; - } - - if (GetPower(powerRequired) != powerAmountRequired) - return false; - - // Custom requirements (not listed in procEx) Warning! damage dealing after this - // Custom triggered spells - switch (auraSpellInfo->SpellFamilyName) - { - case SPELLFAMILY_DRUID: - { - // Eclipse Mastery Driver Passive - if (auraSpellInfo->Id == 79577) - { - uint32 solarEclipseMarker = 67483; - uint32 lunarEclipseMarker = 67484; - - switch (effIndex) - { - case 0: - { - if (HasAura(trigger_spell_id)) - return false; - - // Do not proc if proc spell isnt starfire and starsurge - if (procSpell->Id != 2912 && procSpell->Id != 78674) - return false; - - if (HasAura(solarEclipseMarker)) - { - RemoveAurasDueToSpell(solarEclipseMarker); - CastSpell(this, lunarEclipseMarker, true); - } - break; - } - case 1: - { - if (HasAura(trigger_spell_id)) - return false; - - // Do not proc if proc spell isnt wrath and starsurge - if (procSpell->Id != 5176 && procSpell->Id != 78674) - return false; - - if (HasAura(lunarEclipseMarker)) - { - RemoveAurasDueToSpell(lunarEclipseMarker); - CastSpell(this, solarEclipseMarker, true); - } - - break; - } - } - } - break; - } - } - - if (cooldown && GetTypeId() == TYPEID_PLAYER && ToPlayer()->HasSpellCooldown(trigger_spell_id)) - return false; - - // try detect target manually if not set - if (target == NULL) - target = !(procFlag & (PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS)) && triggerEntry && triggerEntry->IsPositive() ? this : victim; - - if (basepoints0) - CastCustomSpell(target, trigger_spell_id, &basepoints0, NULL, NULL, true, castItem, triggeredByAura); - else - CastSpell(target, trigger_spell_id, true, castItem, triggeredByAura); - - if (cooldown && GetTypeId() == TYPEID_PLAYER) - ToPlayer()->AddSpellCooldown(trigger_spell_id, 0, time(NULL) + cooldown); - - return true; -} - //victim may be NULL bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown) { @@ -6367,10 +6240,6 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere return true; } - /* - */ - - // Used in case when access to whole aura is needed // All procs should be handled like this... bool Unit::HandleAuraProc(Unit* victim, uint32 /*damage*/, Aura* triggeredByAura, SpellInfo const* procSpell, uint32 /*procFlag*/, uint32 /*procEx*/, uint32 cooldown, bool * handled) @@ -8589,6 +8458,7 @@ float Unit::SpellDamagePctDone(Unit* victim, SpellInfo const* spellProto, Damage // Health at 25% or less (25% stored at effect 2 of the spell) if (victim->HealthBelowPct(CalculateSpellDamage(this, (*i)->GetSpellInfo(), EFFECT_2))) AddPct(DoneTotalMod, (*i)->GetAmount()); + break; } case 6916: // Death's Embrace heal effect case 6925: @@ -12591,9 +12461,8 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u } case SPELL_AURA_PROC_ON_POWER_AMOUNT: { - TC_LOG_DEBUG("spells", "ProcDamageAndSpell: casting spell id %u (triggered by %s aura of spell %u)", spellInfo->Id, (isVictim?"a victim's":"an attacker's"), triggeredByAura->GetId()); - if (HandleAuraProcOnPowerAmount(target, damage, triggeredByAura, procSpell, procFlag, procExtra, cooldown)) - takeCharges = true; + triggeredByAura->HandleProcTriggerSpellOnPowerAmountAuraProc(aurApp, eventInfo); + takeCharges = true; break; } case SPELL_AURA_OBS_MOD_POWER: @@ -15802,9 +15671,6 @@ void Unit::SendTeleportPacket(Position& pos) if (GetTypeId() == TYPEID_UNIT) Relocate(&pos); // Relocate the unit to its new position in order to build the packets correctly. - ObjectGuid guid = GetGUID(); - ObjectGuid transGuid = GetTransGUID(); - WorldPackets::Movement::MoveUpdateTeleport packet; packet.movementInfo = &m_movementInfo; @@ -15812,13 +15678,11 @@ void Unit::SendTeleportPacket(Position& pos) { WorldPackets::Movement::MoveTeleport selfPacket; - selfPacket.MoverGUID = guid; + selfPacket.MoverGUID = GetGUID(); + ObjectGuid transGuid = GetTransGUID(); if (!transGuid.IsEmpty()) - { - selfPacket.TransportGUID.Value = transGuid; - selfPacket.TransportGUID.HasValue = true; - } + selfPacket.TransportGUID.Set(transGuid); selfPacket.Pos.Relocate(GetPositionX(), GetPositionY(), GetPositionZMinusOffset()); selfPacket.Facing = GetOrientation(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index de18ffeddab..1fa2ba6b1c3 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2272,7 +2272,6 @@ class Unit : public WorldObject void DisableSpline(); private: bool IsTriggeredAtSpellProcEvent(Unit* victim, Aura* aura, SpellInfo const* procSpell, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const* & spellProcEvent); - bool HandleAuraProcOnPowerAmount(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown); bool HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown); bool HandleAuraProc(Unit* victim, uint32 damage, Aura* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown, bool * handled); bool HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index fb696a13352..793614930b7 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2326,8 +2326,7 @@ void FillItemDamageFields(float* minDamage, float* maxDamage, float* dps, uint32 return; } - if (!store) - return; + ASSERT(store); ItemDamageEntry const* damageInfo = store->LookupEntry(itemLevel); if (!damageInfo) diff --git a/src/server/game/Guilds/GuildFinderMgr.cpp b/src/server/game/Guilds/GuildFinderMgr.cpp index 67a00d3dff8..40e2bc1613e 100644 --- a/src/server/game/Guilds/GuildFinderMgr.cpp +++ b/src/server/game/Guilds/GuildFinderMgr.cpp @@ -129,11 +129,11 @@ void GuildFinderMgr::AddMembershipRequest(ObjectGuid const& guildGuid, Membershi // Notify the applicant his submittion has been added if (Player* player = ObjectAccessor::FindPlayer(request.GetPlayerGUID())) - SendMembershipRequestListUpdate(*player); + SendMembershipRequestListUpdate(player); // Notify the guild master and officers the list changed if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid)) - SendApplicantListUpdate(*guild); + SendApplicantListUpdate(guild); } void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(ObjectGuid const& playerId) @@ -159,7 +159,7 @@ void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(ObjectGuid const& pla // Notify the guild master and officers the list changed if (Guild* guild = sGuildMgr->GetGuildByGuid(itr->first)) - SendApplicantListUpdate(*guild); + SendApplicantListUpdate(guild); } } @@ -182,15 +182,15 @@ void GuildFinderMgr::RemoveMembershipRequest(ObjectGuid const& playerId, ObjectG CharacterDatabase.CommitTransaction(trans); - _membershipRequests[guildId].erase(itr); - // Notify the applicant his submittion has been removed if (Player* player = ObjectAccessor::FindPlayer(itr->GetPlayerGUID())) - SendMembershipRequestListUpdate(*player); + SendMembershipRequestListUpdate(player); // Notify the guild master and officers the list changed if (Guild* guild = sGuildMgr->GetGuildByGuid(guildId)) - SendApplicantListUpdate(*guild); + SendApplicantListUpdate(guild); + + _membershipRequests[guildId].erase(itr); } std::list<MembershipRequest> GuildFinderMgr::GetAllMembershipRequestsForPlayer(ObjectGuid const& playerGuid) @@ -302,7 +302,7 @@ void GuildFinderMgr::DeleteGuild(ObjectGuid const& guildId) // Notify the applicant his submition has been removed if (Player* player = ObjectAccessor::FindPlayer(itr->GetPlayerGUID())) - SendMembershipRequestListUpdate(*player); + SendMembershipRequestListUpdate(player); ++itr; } @@ -312,19 +312,19 @@ void GuildFinderMgr::DeleteGuild(ObjectGuid const& guildId) // Notify the guild master the list changed (even if he's not a GM any more, not sure if needed) if (Guild* guild = sGuildMgr->GetGuildByGuid(guildId)) - SendApplicantListUpdate(*guild); + SendApplicantListUpdate(guild); } -void GuildFinderMgr::SendApplicantListUpdate(Guild& guild) +void GuildFinderMgr::SendApplicantListUpdate(Guild* guild) { WorldPacket data(SMSG_LF_GUILD_APPLICANT_LIST_UPDATED, 0); - if (Player* player = ObjectAccessor::FindPlayer(guild.GetLeaderGUID())) + if (Player* player = ObjectAccessor::FindPlayer(guild->GetLeaderGUID())) player->SendDirectMessage(&data); - guild.BroadcastPacketToRank(&data, GR_OFFICER); + guild->BroadcastPacketToRank(&data, GR_OFFICER); } -void GuildFinderMgr::SendMembershipRequestListUpdate(Player& player) +void GuildFinderMgr::SendMembershipRequestListUpdate(Player* player) { WorldPacket data(SMSG_LF_GUILD_APPLICATIONS_LIST_CHANGED, 0); - player.SendDirectMessage(&data); + player->SendDirectMessage(&data); } diff --git a/src/server/game/Guilds/GuildFinderMgr.h b/src/server/game/Guilds/GuildFinderMgr.h index 45228957b55..763d9285b31 100644 --- a/src/server/game/Guilds/GuildFinderMgr.h +++ b/src/server/game/Guilds/GuildFinderMgr.h @@ -262,8 +262,8 @@ class GuildFinderMgr /// Counts the amount of pending membership requests, given the player's db guid. uint8 CountRequestsFromPlayer(ObjectGuid const& playerId); - void SendApplicantListUpdate(Guild& guild); - void SendMembershipRequestListUpdate(Player& player); + static void SendApplicantListUpdate(Guild* guild); + static void SendMembershipRequestListUpdate(Player* player); static GuildFinderMgr* instance() { diff --git a/src/server/game/Handlers/BattlefieldHandler.cpp b/src/server/game/Handlers/BattlefieldHandler.cpp index 649e5ff171f..14928e1efdc 100644 --- a/src/server/game/Handlers/BattlefieldHandler.cpp +++ b/src/server/game/Handlers/BattlefieldHandler.cpp @@ -27,7 +27,7 @@ #include "BattlefieldMgr.h" /** - * @fn void WorldSession::SendBfInvitePlayerToWar(uint64 guid, uint32 zoneId, uint32 acceptTime) + * @fn void WorldSession::SendBfInvitePlayerToWar(ObjectGuid guid, uint32 zoneId, uint32 acceptTime) * * @brief This send to player windows for invite player to join the war. * @@ -62,7 +62,7 @@ void WorldSession::SendBfInvitePlayerToWar(ObjectGuid guid, uint32 zoneId, uint3 } /** - * @fn void WorldSession::SendBfInvitePlayerToQueue(uint64 guid) + * @fn void WorldSession::SendBfInvitePlayerToQueue(ObjectGuid guid) * * @brief This send invitation to player to join the queue. * @@ -103,7 +103,7 @@ void WorldSession::SendBfInvitePlayerToQueue(ObjectGuid guid) } /** - * @fn void WorldSession::SendBfQueueInviteResponse(uint64 guid, uint32 zoneId, bool canQueue, bool full) + * @fn void WorldSession::SendBfQueueInviteResponse(ObjectGuid guid, uint32 zoneId, bool canQueue, bool full) * * @brief This send packet for inform player that he join queue. * @@ -157,7 +157,7 @@ void WorldSession::SendBfQueueInviteResponse(ObjectGuid guid, uint32 zoneId, boo } /** - * @fn void WorldSession::SendBfEntered(uint64 guid) + * @fn void WorldSession::SendBfEntered(ObjectGuid guid) * * @brief This is call when player accept to join war. * @@ -196,7 +196,7 @@ void WorldSession::SendBfEntered(ObjectGuid guid) } /** - * @fn void WorldSession::SendBfLeaveMessage(uint64 guid, BFLeaveReason reason) + * @fn void WorldSession::SendBfLeaveMessage(ObjectGuid guid, BFLeaveReason reason) * * @brief This is call when player leave battlefield zone. * diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 81dc9e6cec0..fb8e45f5f42 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -456,7 +456,7 @@ void WorldSession::HandleDBQueryBulk(WorldPackets::Query::DBQueryBulk& packet) else { TC_LOG_ERROR("network", "CMSG_DB_QUERY_BULK: Entry %u does not exist in datastore: %u", rec.RecordID, packet.TableHash); - response.RecordID = -rec.RecordID; + response.RecordID = -int32(rec.RecordID); response.Timestamp = time(NULL); } diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 7b6ca00416c..eab91b44e49 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -4620,7 +4620,7 @@ enum GroupJoinBattlegroundResult ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 8, // You can't do that in a battleground. ERR_BATTLEGROUND_JOIN_XP_GAIN = 9, // wtf, doesn't exist in client... ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 10, // Cannot join the queue unless all members of your party are in the same battleground level range. - ERR_BATTLEGROUND_JOIN_TIMED_OUT = 11, // %s was unavailable to join the queue. (uint64 guid exist in client cache) + ERR_BATTLEGROUND_JOIN_TIMED_OUT = 11, // %s was unavailable to join the queue. (ObjectGuid exist in client cache) //ERR_BATTLEGROUND_JOIN_TIMED_OUT = 12, // same as 11 //ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 13, // same as 7 ERR_LFG_CANT_USE_BATTLEGROUND = 14, // You cannot queue for a battleground or arena while using the dungeon system. diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index eb44064750a..dcc9a908539 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -34,13 +34,13 @@ namespace WorldPackets class AuthChallenge final : public ServerPacket { public: - AuthChallenge() : ServerPacket(SMSG_AUTH_CHALLENGE, 4 + 32 + 1), Challenge(0) { } + AuthChallenge() : ServerPacket(SMSG_AUTH_CHALLENGE, 4 + 32 + 1) { } WorldPacket const* Write() override; - uint32 Challenge; + uint32 Challenge = 0; uint32 DosChallenge[8]; ///< Encryption seeds - uint8 DosZeroBits; + uint8 DosZeroBits = 0; }; class AuthSession final : public ClientPacket diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index 2ece521b42b..bd1e62eadd6 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -25,13 +25,13 @@ void WorldPackets::Channel::ChannelListRequest::Read() WorldPacket const* WorldPackets::Channel::ChannelListResponse::Write() { - _worldPacket.WriteBit(Display); - _worldPacket.WriteBits(Channel.length(), 7); - _worldPacket << uint8(ChannelFlags); - _worldPacket << uint32(Members.size()); - _worldPacket.WriteString(Channel); + _worldPacket.WriteBit(_Display); + _worldPacket.WriteBits(_Channel.length(), 7); + _worldPacket << uint8(_ChannelFlags); + _worldPacket << uint32(_Members.size()); + _worldPacket.WriteString(_Channel); - for (ChannelPlayer const& player : Members) + for (ChannelPlayer const& player : _Members) { _worldPacket << player.Guid; _worldPacket << uint32(player.VirtualRealmAddress); @@ -44,7 +44,7 @@ WorldPacket const* WorldPackets::Channel::ChannelListResponse::Write() WorldPacket const* WorldPackets::Channel::ChannelNotify::Write() { _worldPacket.WriteBits(Type, 6); - _worldPacket.WriteBits(Channel.length(), 7); + _worldPacket.WriteBits(_Channel.length(), 7); _worldPacket.WriteBits(Sender.length(), 6); _worldPacket << SenderGuid; @@ -60,7 +60,7 @@ WorldPacket const* WorldPackets::Channel::ChannelNotify::Write() _worldPacket << uint8(NewFlags); } - _worldPacket.WriteString(Channel); + _worldPacket.WriteString(_Channel); _worldPacket.WriteString(Sender); return &_worldPacket; @@ -68,12 +68,12 @@ WorldPacket const* WorldPackets::Channel::ChannelNotify::Write() WorldPacket const* WorldPackets::Channel::ChannelNotifyJoined::Write() { - _worldPacket.WriteBits(Channel.length(), 7); + _worldPacket.WriteBits(_Channel.length(), 7); _worldPacket.WriteBits(ChannelWelcomeMsg.length(), 10); - _worldPacket << uint8(ChannelFlags); + _worldPacket << uint8(_ChannelFlags); _worldPacket << int32(ChatChannelID); _worldPacket << uint64(InstanceID); - _worldPacket.WriteString(Channel); + _worldPacket.WriteString(_Channel); _worldPacket.WriteString(ChannelWelcomeMsg); return &_worldPacket; diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h index 36a0a516928..e3d96c5c453 100644 --- a/src/server/game/Server/Packets/ChannelPackets.h +++ b/src/server/game/Server/Packets/ChannelPackets.h @@ -55,10 +55,10 @@ namespace WorldPackets WorldPacket const* Write() override; - std::vector<ChannelPlayer> Members; - std::string Channel; ///< Channel Name - uint8 ChannelFlags = 0; ///< @see enum ChannelFlags - bool Display = false; + std::vector<ChannelPlayer> _Members; + std::string _Channel; ///< Channel Name + uint8 _ChannelFlags = 0; ///< @see enum ChannelFlags + bool _Display = false; }; class ChannelNotify final : public ServerPacket @@ -74,7 +74,7 @@ namespace WorldPackets uint8 Type = 0; ///< @see enum ChatNotify uint8 OldFlags = 0; ///< @see enum ChannelMemberFlags uint8 NewFlags = 0; ///< @see enum ChannelMemberFlags - std::string Channel; ///< Channel Name + std::string _Channel; ///< Channel Name uint32 SenderVirtualRealm = 0; ObjectGuid TargetGuid; uint32 TargetVirtualRealm = 0; @@ -91,8 +91,8 @@ namespace WorldPackets std::string ChannelWelcomeMsg; int32 ChatChannelID = 0; int32 InstanceID = 0; - uint8 ChannelFlags = 0; ///< @see enum ChannelFlags - std::string Channel; ///< Channel Name + uint8 _ChannelFlags = 0; ///< @see enum ChannelFlags + std::string _Channel; ///< Channel Name }; class ChannelNotifyLeft final : public ServerPacket diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index a4080371003..bb22cac1740 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -660,7 +660,6 @@ enum OpcodeClient : uint32 MSG_PARTY_ASSIGNMENT = 0xBADD, MSG_PETITION_DECLINE = 0xBADD, MSG_PETITION_RENAME = 0xBADD, - MSG_PVP_LOG_DATA = 0xBADD, MSG_QUERY_NEXT_MAIL_TIME = 0xBADD, MSG_QUEST_PUSH_RESULT = 0xBADD, MSG_RAID_READY_CHECK = 0xBADD, diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index aa1426d5fd2..7f4b2cc906e 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -55,8 +55,8 @@ uint32 const SizeOfClientHeader[2][2] = uint32 const SizeOfServerHeader[2] = { sizeof(uint16) + sizeof(uint32), sizeof(uint32) }; WorldSocket::WorldSocket(tcp::socket&& socket) : Socket(std::move(socket)), - _type(CONNECTION_TYPE_REALM), _authSeed(rand32()), - _OverSpeedPings(0), _worldSession(nullptr), _initialized(false) + _type(CONNECTION_TYPE_REALM), _authSeed(rand32()), _OverSpeedPings(0), + _worldSession(nullptr), _compressionStream(nullptr), _initialized(false) { _headerBuffer.Resize(SizeOfClientHeader[0][0]); } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c55c92d296e..fe2e8998a26 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1091,6 +1091,7 @@ void AuraEffect::HandleProc(AuraApplication* aurApp, ProcEventInfo& eventInfo) switch (GetAuraType()) { case SPELL_AURA_PROC_TRIGGER_SPELL: + case SPELL_AURA_PROC_TRIGGER_SPELL_2: HandleProcTriggerSpellAuraProc(aurApp, eventInfo); break; case SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE: @@ -1105,6 +1106,9 @@ void AuraEffect::HandleProc(AuraApplication* aurApp, ProcEventInfo& eventInfo) case SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE: HandleRaidProcFromChargeWithValueAuraProc(aurApp, eventInfo); break; + case SPELL_AURA_PROC_ON_POWER_AMOUNT: + HandleProcTriggerSpellOnPowerAmountAuraProc(aurApp, eventInfo); + break; default: break; } @@ -6494,6 +6498,35 @@ void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurA target->CastCustomSpell(target, triggerSpellId, &value, NULL, NULL, true, NULL, this, GetCasterGUID()); } +void AuraEffect::HandleProcTriggerSpellOnPowerAmountAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo) +{ + // Power amount required to proc the spell + int32 powerAmountRequired = GetAmount(); + // Power type required to proc + Powers powerRequired = Powers(GetSpellInfo()->Effects[GetEffIndex()].MiscValue); + + if (!powerRequired || !powerAmountRequired) + { + TC_LOG_ERROR("spells", "AuraEffect::HandleProcTriggerSpellOnPowerAmountAuraProc: Spell %u have 0 PowerAmountRequired in EffectAmount[%d] or 0 PowerRequired in EffectMiscValue", GetId(), GetEffIndex()); + return /*false*/; + } + + Unit* triggerCaster = aurApp->GetTarget(); + Unit* triggerTarget = eventInfo.GetProcTarget(); + + if (triggerCaster->GetPower(powerRequired) != powerAmountRequired) + return /*false*/; + + uint32 triggerSpellId = GetSpellInfo()->Effects[GetEffIndex()].TriggerSpell; + if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId)) + { + TC_LOG_DEBUG("spells", "AuraEffect::HandleProcTriggerSpellOnPowerAmountAuraProc: Triggering spell %u from aura %u proc", triggeredSpellInfo->Id, GetId()); + triggerCaster->CastSpell(triggerTarget, triggeredSpellInfo, true, nullptr, this); + } + else + TC_LOG_DEBUG("spells", "AuraEffect::HandleProcTriggerSpellOnPowerAmountAuraProc: Could not trigger spell %u from aura %u proc, because the spell does not have an entry in Spell.dbc.", triggerSpellId, GetId()); +} + void AuraEffect::HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const { if (!(mode & AURA_EFFECT_HANDLE_REAL)) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 22571f4851e..11cf55b6584 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -312,6 +312,7 @@ class AuraEffect void HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); void HandleRaidProcFromChargeAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); void HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); + void HandleProcTriggerSpellOnPowerAmountAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo); }; namespace Trinity diff --git a/src/server/ipc/Commands.cpp b/src/server/ipc/Commands.cpp index 8e494fc34b9..61b448d3d01 100644 --- a/src/server/ipc/Commands.cpp +++ b/src/server/ipc/Commands.cpp @@ -49,14 +49,14 @@ zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::ToonHandle& toonHandl return msg; } -zmqpp::message& operator<<(zmqpp::message& msg, IPCHeader& header) +zmqpp::message& operator<<(zmqpp::message& msg, IPCHeader const& header) { msg << header.Channel; msg << header.Command; return msg; } -zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle& realm) +zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle const& realm) { msg << realm.Region; msg << realm.Battlegroup; @@ -64,14 +64,14 @@ zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle& realm) return msg; } -zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::Header& header) +zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::Header const& header) { msg << header.Ipc; msg << header.Realm; return msg; } -zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle) +zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::ToonHandle const& toonHandle) { msg << toonHandle.AccountId; msg << toonHandle.GameAccountId; diff --git a/src/server/ipc/Commands.h b/src/server/ipc/Commands.h index 05309a45022..e34f939bae4 100644 --- a/src/server/ipc/Commands.h +++ b/src/server/ipc/Commands.h @@ -75,9 +75,9 @@ zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::RealmHandle& realm); zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::Header& header); zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle); -zmqpp::message& operator<<(zmqpp::message& msg, IPCHeader& header); -zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle& realm); -zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::Header& header); -zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle); +zmqpp::message& operator<<(zmqpp::message& msg, IPCHeader const& header); +zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle const& realm); +zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::Header const& header); +zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::ToonHandle const& toonHandle); #endif // _COMMANDS_H diff --git a/src/server/ipc/ZMQTask.h b/src/server/ipc/ZMQTask.h index 24251893aaa..1141f740f76 100644 --- a/src/server/ipc/ZMQTask.h +++ b/src/server/ipc/ZMQTask.h @@ -45,8 +45,8 @@ protected: zmqpp::poller* _poller; - zmqpp::socket* _inproc; - std::thread* _thread; + zmqpp::socket* _inproc = nullptr; + std::thread* _thread = nullptr; }; #endif // __ZMQTASK_H diff --git a/src/server/ipc/ZmqMux.cpp b/src/server/ipc/ZmqMux.cpp index 2b62eaaf1eb..0f87106a948 100644 --- a/src/server/ipc/ZmqMux.cpp +++ b/src/server/ipc/ZmqMux.cpp @@ -18,15 +18,15 @@ #include "ZmqMux.h" #include "ZmqContext.h" -ZmqMux::ZmqMux(std::string from_uri, std::string to_uri): - _fromAddress(from_uri) +ZmqMux::ZmqMux(std::string const& fromUri, std::string const& toUri): + _fromAddress(fromUri) { - printf("Opening muxer thread from %s to %s\n", from_uri.c_str(), to_uri.c_str()); + printf("Opening muxer thread from %s to %s\n", fromUri.c_str(), toUri.c_str()); _from = sIpcContext->CreateNewSocket(zmqpp::socket_type::pull); _to = sIpcContext->CreateNewSocket(zmqpp::socket_type::push); - _from->bind(from_uri); - _to->connect(to_uri); + _from->bind(fromUri); + _to->connect(toUri); } ZmqMux::~ZmqMux() diff --git a/src/server/ipc/ZmqMux.h b/src/server/ipc/ZmqMux.h index 07336330253..c6ec26596c1 100644 --- a/src/server/ipc/ZmqMux.h +++ b/src/server/ipc/ZmqMux.h @@ -29,7 +29,7 @@ class ZmqMux : public ZMQTask { public: - ZmqMux(std::string from, std::string to); + ZmqMux(std::string const& from, std::string const& to); ~ZmqMux(); bool Send(zmqpp::message*, bool dont_block = false); void Run() override; diff --git a/src/server/ipc/ZmqWorker.cpp b/src/server/ipc/ZmqWorker.cpp index f205ea831b5..a3db41efe18 100644 --- a/src/server/ipc/ZmqWorker.cpp +++ b/src/server/ipc/ZmqWorker.cpp @@ -18,8 +18,8 @@ #include "ZmqWorker.h" #include "ZmqContext.h" -ZmqWorker::ZmqWorker(std::string task_uri, std::string res_uri) : - _taskUri(task_uri), _resultsUri(res_uri) +ZmqWorker::ZmqWorker(std::string const& taskUri, std::string const& resUri) : + _taskUri(taskUri), _resultsUri(resUri) { } @@ -27,7 +27,6 @@ ZmqWorker::~ZmqWorker() { delete _taskQueue; delete _results; - delete _inproc; } void ZmqWorker::HandleOpen() diff --git a/src/server/ipc/ZmqWorker.h b/src/server/ipc/ZmqWorker.h index b3e221e9129..7f9b0cd1382 100644 --- a/src/server/ipc/ZmqWorker.h +++ b/src/server/ipc/ZmqWorker.h @@ -24,19 +24,19 @@ class ZmqWorker : public ZMQTask { public: - ZmqWorker(std::string task_uri, std::string res_uri); + ZmqWorker(std::string const& taskUri, std::string const& resUri); ~ZmqWorker(); void Run() override; protected: void HandleOpen() override; void HandleClose() override; - zmqpp::socket* _results; + zmqpp::socket* _results = nullptr; private: void PerformWork(); virtual void Dispatch(zmqpp::message const&) = 0; - zmqpp::socket* _taskQueue; + zmqpp::socket* _taskQueue = nullptr; std::string _taskUri; std::string _resultsUri; }; diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 39644e5c08f..bc7e5ccaac5 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -1065,39 +1065,44 @@ public: // Search in CharTitles.dbc for (uint32 id = 0; id < sCharTitlesStore.GetNumRows(); id++) { - CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id); - if (titleInfo) + if (CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id)) { - std::string name = target->getGender() == GENDER_MALE ? titleInfo->NameMale_lang : titleInfo->NameFemale_lang; + for (uint8 gender = GENDER_MALE; gender <= GENDER_FEMALE; ++gender) + { + if (target && target->getGender() != gender) + continue; - if (name.empty()) - continue; + std::string name = gender == GENDER_MALE ? titleInfo->NameMale_lang : titleInfo->NameFemale_lang; - if (!Utf8FitTo(name, wNamePart)) - continue; + if (name.empty()) + continue; - if (maxResults && counter == maxResults) - { - handler->PSendSysMessage(LANG_COMMAND_LOOKUP_MAX_RESULTS, maxResults); - return true; - } + if (!Utf8FitTo(name, wNamePart)) + continue; - char const* knownStr = target && target->HasTitle(titleInfo) ? handler->GetTrinityString(LANG_KNOWN) : ""; + if (maxResults && counter == maxResults) + { + handler->PSendSysMessage(LANG_COMMAND_LOOKUP_MAX_RESULTS, maxResults); + return true; + } - char const* activeStr = target && target->GetUInt32Value(PLAYER_CHOSEN_TITLE) == titleInfo->MaskID - ? handler->GetTrinityString(LANG_ACTIVE) - : ""; + char const* knownStr = target && target->HasTitle(titleInfo) ? handler->GetTrinityString(LANG_KNOWN) : ""; - char titleNameStr[80]; - snprintf(titleNameStr, 80, name.c_str(), targetName); + char const* activeStr = target && target->GetUInt32Value(PLAYER_CHOSEN_TITLE) == titleInfo->MaskID + ? handler->GetTrinityString(LANG_ACTIVE) + : ""; - // send title in "id (idx:idx) - [namedlink locale]" format - if (handler->GetSession()) - handler->PSendSysMessage(LANG_TITLE_LIST_CHAT, id, titleInfo->MaskID, id, titleNameStr, "", knownStr, activeStr); - else - handler->PSendSysMessage(LANG_TITLE_LIST_CONSOLE, id, titleInfo->MaskID, titleNameStr, "", knownStr, activeStr); + char titleNameStr[80]; + snprintf(titleNameStr, 80, name.c_str(), targetName); + + // send title in "id (idx:idx) - [namedlink locale]" format + if (handler->GetSession()) + handler->PSendSysMessage(LANG_TITLE_LIST_CHAT, id, titleInfo->MaskID, id, titleNameStr, "", knownStr, activeStr); + else + handler->PSendSysMessage(LANG_TITLE_LIST_CONSOLE, id, titleInfo->MaskID, titleNameStr, "", knownStr, activeStr); - ++counter; + ++counter; + } } } if (counter == 0) // if counter == 0 then we found nth diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp index 62d12a94c54..80ddecf8914 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp @@ -81,10 +81,7 @@ class boss_alizabal : public CreatureScript struct boss_alizabalAI : public BossAI { - boss_alizabalAI(Creature* creature) : BossAI(creature, DATA_ALIZABAL) - { - _intro = false; - } + boss_alizabalAI(Creature* creature) : BossAI(creature, DATA_ALIZABAL) { } void Reset() override { @@ -251,10 +248,9 @@ class boss_alizabal : public CreatureScript } private: - bool _intro; - bool _hate; - bool _skewer; - + bool _intro = false; + bool _hate = false; + bool _skewer = false; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp index 008803f9a52..26a6b89dee9 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp @@ -157,12 +157,6 @@ class spell_argaloth_meteor_slash : public SpellScriptLoader { PrepareSpellScript(spell_argaloth_meteor_slash_SpellScript); - bool Load() override - { - _targetCount = 0; - return true; - } - void CountTargets(std::list<WorldObject*>& targets) { _targetCount = targets.size(); @@ -183,7 +177,7 @@ class spell_argaloth_meteor_slash : public SpellScriptLoader } private: - uint32 _targetCount; + uint32 _targetCount = 0; }; SpellScript* GetSpellScript() const override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp index f736aa6ffbc..97d43ab163c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp @@ -357,7 +357,7 @@ class npc_twilight_sadist : public CreatureScript void Reset() override { _combatPhase = false; - if(!me->GetWaypointPath()) + if (!me->GetWaypointPath()) _events.ScheduleEvent(EVENT_INFLICT_PAIN_TS, urand(6000, 18000)); } @@ -422,7 +422,7 @@ class npc_twilight_sadist : public CreatureScript private: EventMap _events; InstanceScript* _instance; - bool _combatPhase; + bool _combatPhase = false; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp index 3f2e8f8b243..e97583c3575 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp @@ -114,7 +114,7 @@ class boss_corla : public CreatureScript } private: - bool combatPhase; + bool combatPhase = false; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index dd1152a02a5..ac557bcad97 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -141,6 +141,7 @@ class npc_voljin_zulaman : public CreatureScript case EVENT_INTRO_MOVEPOINT_3: Talk(SAY_INTRO_2); _events.ScheduleEvent(EVENT_BANGING_THE_GONG, 3000); + break; case EVENT_BANGING_THE_GONG: DoCast(me, SPELL_BANGING_THE_GONG); if (GameObject* strangeGong = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(DATA_STRANGE_GONG))) @@ -208,7 +209,7 @@ class npc_voljin_zulaman : public CreatureScript private: InstanceScript* _instance; EventMap _events; - uint8 _gongCount; + uint8 _gongCount = 0; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp index 9b8b435e93c..386f80c0c64 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp @@ -484,7 +484,7 @@ class npc_egg_pile : public CreatureScript private: EventMap _events; - uint32 _callHatchlingSpell; + uint32 _callHatchlingSpell = 0; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp index 47a40dd56ef..74a932a376e 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp @@ -80,7 +80,17 @@ public: struct boss_temple_guardian_anhuurAI : public BossAI { - boss_temple_guardian_anhuurAI(Creature* creature) : BossAI(creature, DATA_TEMPLE_GUARDIAN_ANHUUR) { } + boss_temple_guardian_anhuurAI(Creature* creature) : BossAI(creature, DATA_TEMPLE_GUARDIAN_ANHUUR) + { + Initialize(); + } + + void Initialize() + { + _phase = PHASE_FIRST_SHIELD; + _oldPhase = PHASE_FIRST_SHIELD; + _beacons = 0; + } void CleanStalkers() { @@ -95,9 +105,7 @@ public: void Reset() override { - _phase = PHASE_FIRST_SHIELD; - _oldPhase = PHASE_FIRST_SHIELD; - _beacons = 0; + Initialize(); _Reset(); CleanStalkers(); me->RemoveAurasDueToSpell(SPELL_SHIELD_OF_LIGHT); diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp index 4377344fb26..30a0e2441fb 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp @@ -65,6 +65,7 @@ class instance_halls_of_origination : public InstanceMapScript { case GO_ANHUURS_BRIDGE: AnhuursBridgeGUID = go->GetGUID(); + // no break case GO_DOODAD_ULDUM_ELEVATOR_COL01: case GO_VAULT_OF_LIGHTS_DOOR: case GO_DOODAD_ULDUM_LIGHTMACHINE_01: diff --git a/src/server/scripts/Kalimdor/zone_felwood.cpp b/src/server/scripts/Kalimdor/zone_felwood.cpp index e4d5925c950..9f02e14220e 100644 --- a/src/server/scripts/Kalimdor/zone_felwood.cpp +++ b/src/server/scripts/Kalimdor/zone_felwood.cpp @@ -51,7 +51,7 @@ public: void Reset() override { - lasher_clicked = false; + lasherClicked = false; } void OnSpellClick(Unit* clicker, bool& result) override @@ -74,7 +74,7 @@ public: me->CastSpell(me, SPELL_STAND); me->GetMotionMaster()->MoveRandom(8.0f); events.ScheduleEvent(EVENT_CHECK_OOC, 20000); - lasher_clicked = true; + lasherClicked = true; if (Player* player = clicker->ToPlayer()) player->KilledMonsterCredit(NPC_WHISPERWIND_LASHER); @@ -82,7 +82,7 @@ public: void UpdateAI(uint32 diff) override { - if (!lasher_clicked) + if (!lasherClicked) return; events.Update(diff); @@ -104,7 +104,7 @@ public: private: EventMap events; - bool lasher_clicked; + bool lasherClicked = false; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp index 01baf54eef7..1cf0cc56242 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp @@ -241,7 +241,7 @@ class boss_corborus : public CreatureScript private: EncounterState stateIntro; - uint32 countTrashingCharge; + uint32 countTrashingCharge = 0; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp index 0535ac64a9f..08d56f2fa50 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp @@ -132,13 +132,11 @@ class boss_high_priestess_azil : public CreatureScript struct boss_high_priestess_azilAI : public BossAI { - boss_high_priestess_azilAI(Creature* creature) : BossAI(creature, DATA_HIGH_PRIESTESS_AZIL), vehicle(creature->GetVehicleKit()) + boss_high_priestess_azilAI(Creature* creature) : BossAI(creature, DATA_HIGH_PRIESTESS_AZIL) { - ASSERT(vehicle); + ASSERT(creature->GetVehicleKit()); } - Vehicle* vehicle; - void Reset() override { _Reset(); @@ -276,7 +274,7 @@ class boss_high_priestess_azil : public CreatureScript me->GetMotionMaster()->MovePoint(POINT_ABOVE_PLATFORM, AbovePlatformPos); break; case EVENT_EARTH_FURY_CHECK_SEAT0: - if (!vehicle->GetPassenger(0)) + if (!me->GetVehicleKit()->GetPassenger(0)) DoCast(SPELL_SEISMIC_SHARD_PREPARE); events.ScheduleEvent(EVENT_EARTH_FURY_LAUNCH_SHARD, 1800); break; @@ -318,7 +316,7 @@ class boss_high_priestess_azil : public CreatureScript } private: - uint8 countSeismicShard; + uint8 countSeismicShard = 3; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp b/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp index dc2fdb62d19..abfb82284d3 100644 --- a/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp @@ -213,7 +213,7 @@ class npc_sc_millhouse_manastorm : public CreatureScript events.Update(diff); // Impending Doom is exception because it needs to be interrupted. - if (me->HasUnitState(UNIT_STATE_CASTING) && !me->GetCurrentSpell(SPELL_IMPENDING_DOOM)) + if (me->HasUnitState(UNIT_STATE_CASTING) && me->GetCurrentSpell(CURRENT_GENERIC_SPELL)->GetSpellInfo()->Id != SPELL_IMPENDING_DOOM_CHANNEL) return; while (uint32 eventId = events.ExecuteEvent()) diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 184e12cdccb..e668b74c993 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -148,8 +148,6 @@ class spell_dru_eclipse_energize : public SpellScriptLoader { PrepareSpellScript(spell_dru_eclipse_energize_SpellScript); - int32 energizeAmount; - bool Load() override { if (GetCaster()->GetTypeId() != TYPEID_PLAYER) @@ -158,8 +156,6 @@ class spell_dru_eclipse_energize : public SpellScriptLoader if (GetCaster()->ToPlayer()->getClass() != CLASS_DRUID) return false; - energizeAmount = 0; - return true; } @@ -175,7 +171,7 @@ class spell_dru_eclipse_energize : public SpellScriptLoader { case SPELL_DRUID_WRATH: { - energizeAmount = -GetSpellInfo()->Effects[effIndex].BasePoints; // -13 + int32 energizeAmount = -GetEffectValue(); // -13 // If we are set to fill the lunar side or we've just logged in with 0 power.. if ((!caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER)) || caster->GetPower(POWER_ECLIPSE) == 0) @@ -192,7 +188,7 @@ class spell_dru_eclipse_energize : public SpellScriptLoader } case SPELL_DRUID_STARFIRE: { - energizeAmount = GetSpellInfo()->Effects[effIndex].BasePoints; // 20 + int32 energizeAmount = GetEffectValue(); // 20 // If we are set to fill the solar side or we've just logged in with 0 power.. if ((!caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER)) || caster->GetPower(POWER_ECLIPSE) == 0) @@ -213,7 +209,7 @@ class spell_dru_eclipse_energize : public SpellScriptLoader if ((!caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER)) || caster->GetPower(POWER_ECLIPSE) == 0) { - energizeAmount = GetSpellInfo()->Effects[effIndex].BasePoints; // 15 + int32 energizeAmount = GetEffectValue(); // 15 caster->CastCustomSpell(caster, SPELL_DRUID_STARSURGE_ENERGIZE, &energizeAmount, 0, 0, true); // If the energize was due to 0 power, cast the eclipse marker aura @@ -222,7 +218,7 @@ class spell_dru_eclipse_energize : public SpellScriptLoader } else if (!caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER)) { - energizeAmount = -GetSpellInfo()->Effects[effIndex].BasePoints; // -15 + int32 energizeAmount = -GetEffectValue(); // -15 caster->CastCustomSpell(caster, SPELL_DRUID_STARSURGE_ENERGIZE, &energizeAmount, 0, 0, true); } // The energizing effect brought us out of the lunar eclipse, remove the aura diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 17c72ba5561..8f7a776126a 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -221,7 +221,7 @@ class spell_mage_blast_wave : public SpellScriptLoader } private: - uint32 _targetCount; + uint32 _targetCount = 0; }; SpellScript* GetSpellScript() const override @@ -1078,12 +1078,6 @@ class spell_mage_polymorph : public SpellScriptLoader return true; } - bool Load() override - { - _caster = NULL; - return true; - } - bool DoCheck(ProcEventInfo& eventInfo) { _caster = GetCaster(); @@ -1111,7 +1105,7 @@ class spell_mage_polymorph : public SpellScriptLoader } private: - Unit* _caster; + Unit* _caster = nullptr; }; AuraScript* GetAuraScript() const override @@ -1456,7 +1450,7 @@ class spell_mage_water_elemental_freeze : public SpellScriptLoader } private: - bool _didHit; + bool _didHit = false; }; SpellScript* GetSpellScript() const diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 5e8e3a1070f..3ca94e56c09 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -664,21 +664,21 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader int32 damage = GetEffectValue(); SpellInfo const* triggeringSpell = GetTriggeringSpell(); if (Unit* target = GetHitUnit()) - if (Unit* caster = GetCaster()) + { + if (Unit* owner = GetCaster()->GetOwner()) { - if (Unit* owner = caster->GetOwner()) - { - if (triggeringSpell) - damage = int32(owner->SpellHealingBonusDone(target, triggeringSpell, damage, HEAL)); + if (triggeringSpell) + damage = int32(owner->SpellHealingBonusDone(target, triggeringSpell, damage, HEAL)); - // Soothing Rains - if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_SOOTHING_RAIN, EFFECT_0)) - AddPct(damage, dummy->GetAmount()); + // Soothing Rains + if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_SOOTHING_RAIN, EFFECT_0)) + AddPct(damage, dummy->GetAmount()); + if (triggeringSpell) damage = int32(target->SpellHealingBonusTaken(owner, triggeringSpell, damage, HEAL)); - } - caster->CastCustomSpell(target, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); } + GetCaster()->CastCustomSpell(target, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); + } } void Register() override diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 128cddef1c1..8811f152ea9 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -426,7 +426,7 @@ class spell_warl_demon_soul : public SpellScriptLoader { if (targetCreature->IsPet()) { - CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(targetCreature->GetEntry()); + CreatureTemplate const* ci = targetCreature->GetCreatureTemplate(); switch (ci->family) { case CREATURE_FAMILY_SUCCUBUS: @@ -485,8 +485,7 @@ class spell_warl_demonic_empowerment : public SpellScriptLoader { if (targetCreature->IsPet()) { - CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(targetCreature->GetEntry()); - ASSERT(ci); + CreatureTemplate const* ci = targetCreature->GetCreatureTemplate(); switch (ci->family) { case CREATURE_FAMILY_SUCCUBUS: @@ -1194,22 +1193,18 @@ class spell_warl_soul_swap : public SpellScriptLoader } }; +#define SoulSwapOverrideScriptName "spell_warl_soul_swap_override" + // 86211 - Soul Swap Override - Also acts as a dot container class spell_warl_soul_swap_override : public SpellScriptLoader { public: - spell_warl_soul_swap_override() : SpellScriptLoader("spell_warl_soul_swap_override") { } + spell_warl_soul_swap_override() : SpellScriptLoader(SoulSwapOverrideScriptName) { } class spell_warl_soul_swap_override_AuraScript : public AuraScript { PrepareAuraScript(spell_warl_soul_swap_override_AuraScript); - bool Load() override - { - _swapCaster = NULL; - return true; - } - //! Forced to, pure virtual functions must have a body when linking void Register() override { } @@ -1221,7 +1216,7 @@ class spell_warl_soul_swap_override : public SpellScriptLoader private: std::list<uint32> _dotList; - Unit* _swapCaster; + Unit* _swapCaster = nullptr; }; AuraScript* GetAuraScript() const override @@ -1252,11 +1247,11 @@ class spell_warl_soul_swap_dot_marker : public SpellScriptLoader flag128 classMask = GetSpellInfo()->Effects[effIndex].SpellClassMask; Unit::AuraApplicationMap const& appliedAuras = swapVictim->GetAppliedAuras(); - SoulSwapOverrideAuraScript* swapSpellScript = NULL; + SoulSwapOverrideAuraScript* swapSpellScript = nullptr; if (Aura* swapOverrideAura = warlock->GetAura(SPELL_WARLOCK_SOUL_SWAP_OVERRIDE)) - swapSpellScript = dynamic_cast<SoulSwapOverrideAuraScript*>(swapOverrideAura->GetScriptByName("spell_warl_soul_swap_override")); + swapSpellScript = dynamic_cast<SoulSwapOverrideAuraScript*>(swapOverrideAura->GetScriptByName(SoulSwapOverrideScriptName)); - if (swapSpellScript == NULL) + if (!swapSpellScript) return; for (Unit::AuraApplicationMap::const_iterator itr = appliedAuras.begin(); itr != appliedAuras.end(); ++itr) @@ -1303,9 +1298,9 @@ public: SpellCastResult CheckCast() { Unit* currentTarget = GetExplTargetUnit(); - Unit* swapTarget = NULL; + Unit* swapTarget = nullptr; if (Aura const* swapOverride = GetCaster()->GetAura(SPELL_WARLOCK_SOUL_SWAP_OVERRIDE)) - if (SoulSwapOverrideAuraScript* swapScript = dynamic_cast<SoulSwapOverrideAuraScript*>(swapOverride->GetScriptByName("spell_warl_soul_swap_override"))) + if (SoulSwapOverrideAuraScript* swapScript = dynamic_cast<SoulSwapOverrideAuraScript*>(swapOverride->GetScriptByName(SoulSwapOverrideScriptName))) swapTarget = swapScript->GetOriginalSwapSource(); // Soul Swap Exhale can't be cast on the same target than Soul Swap @@ -1321,10 +1316,10 @@ public: bool hasGlyph = GetCaster()->HasAura(SPELL_WARLOCK_GLYPH_OF_SOUL_SWAP); std::list<uint32> dotList; - Unit* swapSource = NULL; + Unit* swapSource = nullptr; if (Aura const* swapOverride = GetCaster()->GetAura(SPELL_WARLOCK_SOUL_SWAP_OVERRIDE)) { - SoulSwapOverrideAuraScript* swapScript = dynamic_cast<SoulSwapOverrideAuraScript*>(swapOverride->GetScriptByName("spell_warl_soul_swap_override")); + SoulSwapOverrideAuraScript* swapScript = dynamic_cast<SoulSwapOverrideAuraScript*>(swapOverride->GetScriptByName(SoulSwapOverrideScriptName)); if (!swapScript) return; dotList = swapScript->GetDotList(); |