Merge branch 'master' into Playerbot

# Conflicts:
#	apps/ci/ci-install-modules.sh
#	src/common/Collision/Management/MMapMgr.cpp
#	src/common/Debugging/Errors.h
#	src/server/game/AI/SmartScripts/SmartScript.cpp
#	src/server/game/Battlegrounds/Arena.cpp
#	src/server/game/Battlegrounds/ArenaScore.h
#	src/server/game/Battlegrounds/Battleground.cpp
#	src/server/game/Battlegrounds/BattlegroundMgr.cpp
#	src/server/game/Battlegrounds/BattlegroundMgr.h
#	src/server/game/Battlegrounds/BattlegroundQueue.cpp
#	src/server/game/Battlegrounds/BattlegroundQueue.h
#	src/server/game/Battlegrounds/Zones/BattlegroundAB.h
#	src/server/game/Battlegrounds/Zones/BattlegroundEY.h
#	src/server/game/Battlegrounds/Zones/BattlegroundIC.h
#	src/server/game/Conditions/ConditionMgr.cpp
#	src/server/game/DataStores/M2Stores.cpp
#	src/server/game/DungeonFinding/LFGMgr.cpp
#	src/server/game/Entities/Creature/Creature.cpp
#	src/server/game/Entities/Creature/CreatureData.h
#	src/server/game/Entities/GameObject/GameObject.cpp
#	src/server/game/Entities/GameObject/GameObject.h
#	src/server/game/Entities/Player/Player.cpp
#	src/server/game/Entities/Player/Player.h
#	src/server/game/Entities/Player/PlayerStorage.cpp
#	src/server/game/Entities/Unit/Unit.cpp
#	src/server/game/Entities/Unit/Unit.h
#	src/server/game/Globals/ObjectMgr.cpp
#	src/server/game/Groups/Group.cpp
#	src/server/game/Groups/Group.h
#	src/server/game/Guilds/Guild.cpp
#	src/server/game/Guilds/Guild.h
#	src/server/game/Handlers/BattleGroundHandler.cpp
#	src/server/game/Handlers/CharacterHandler.cpp
#	src/server/game/Scripting/ScriptDefines/BGScript.cpp
#	src/server/game/Scripting/ScriptDefines/DatabaseScript.cpp
#	src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
#	src/server/game/Scripting/ScriptDefines/ServerScript.cpp
#	src/server/game/Scripting/ScriptMgr.cpp
#	src/server/game/Scripting/ScriptMgrMacros.h
#	src/server/game/Server/Packets/MiscPackets.cpp
#	src/server/game/Server/Packets/MiscPackets.h
#	src/server/game/Server/WorldSession.cpp
#	src/server/game/Spells/SpellEffects.cpp
#	src/server/game/World/IWorld.h
#	src/server/game/World/World.cpp
#	src/server/game/World/World.h
#	src/server/scripts/Commands/cs_npc.cpp
#	src/server/scripts/Commands/cs_server.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
#	src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
#	src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
#	src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h
#	src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
This commit is contained in:
郑佩茹
2022-03-21 13:57:37 -06:00
150 changed files with 9687 additions and 2113 deletions

View File

@@ -212,7 +212,6 @@ Unit::Unit(bool isWorldObject) : WorldObject(isWorldObject),
m_vehicleKit(nullptr),
m_unitTypeMask(UNIT_MASK_NONE),
m_HostileRefMgr(this),
m_cannotReachTarget(false),
m_comboTarget(nullptr),
m_comboPoints(0)
{
@@ -7234,6 +7233,12 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
if (!victim)
return false;
// Do not proc from Glyph of Holy Light and Judgement of Light
if (procSpell->Id == 20267 || procSpell->Id == 54968)
{
return false;
}
Unit* beaconTarget = triggeredByAura->GetBase()->GetCaster();
if (!beaconTarget || beaconTarget == this || !beaconTarget->GetAura(53563, victim->GetGUID()))
return false;
@@ -9132,8 +9137,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
case 14189: // Seal Fate (Netherblade set)
case 14157: // Ruthlessness
{
if (!victim || victim == this)
return false;
victim = nullptr;
// Need add combopoint AFTER finish movie (or they dropped in finish phase)
break;
}
@@ -9673,7 +9677,7 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem
// xinef: check forced reputation for self also
if (Player const* selfPlayerOwner = GetAffectingPlayer())
if (ReputationRank const* repRank = selfPlayerOwner->GetReputationMgr().GetForcedRankIfAny(targetFactionTemplateEntry))
if (ReputationRank const* repRank = selfPlayerOwner->GetReputationMgr().GetForcedRankIfAny(target->GetFactionTemplateEntry()))
return *repRank;
if (Player const* targetPlayerOwner = target->GetAffectingPlayer())
@@ -9700,32 +9704,15 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem
}
}
return GetFactionReactionTo(factionTemplateEntry, targetFactionTemplateEntry);
}
ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTemplateEntry, FactionTemplateEntry const* targetFactionTemplateEntry)
{
// common faction based check
if (factionTemplateEntry->IsHostileTo(*targetFactionTemplateEntry))
{
return REP_HOSTILE;
}
if (factionTemplateEntry->IsFriendlyTo(*targetFactionTemplateEntry))
{
return REP_FRIENDLY;
}
if (targetFactionTemplateEntry->IsFriendlyTo(*factionTemplateEntry))
{
return REP_FRIENDLY;
}
if (factionTemplateEntry->factionFlags & FACTION_TEMPLATE_FLAG_HATES_ALL_EXCEPT_FRIENDS)
{
return REP_HOSTILE;
}
// neutral by default
return REP_NEUTRAL;
}
@@ -15830,7 +15817,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u
continue;
}
switch(triggeredByAura->GetAuraType())
switch (triggeredByAura->GetAuraType())
{
case SPELL_AURA_PROC_TRIGGER_SPELL:
{
@@ -15970,6 +15957,19 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u
break;
takeCharges = true;
break;
case SPELL_AURA_ADD_FLAT_MODIFIER:
case SPELL_AURA_ADD_PCT_MODIFIER:
{
if (SpellModifier* mod = triggeredByAura->GetSpellModifier())
{
if (mod->op == SPELLMOD_CASTING_TIME && procSpell && (procSpell->GetTriggeredCastFlags() & TRIGGERED_CAST_DIRECTLY) != 0)
{
break;
}
}
takeCharges = true;
break;
}
default:
takeCharges = true;
break;
@@ -18304,24 +18304,12 @@ void Unit::SendPlaySpellVisual(uint32 id)
SendMessageToSet(&data, true);
}
void Unit::SendPlaySpellVisual(ObjectGuid guid, uint32 id)
{
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 8 + 4);
data << guid;
data << uint32(id); // SpellVisualKit.dbc index
SendMessageToSet(&data, true);
}
void Unit::SendPlaySpellImpact(ObjectGuid guid, uint32 id)
{
WorldPacket data(SMSG_PLAY_SPELL_IMPACT, 8 + 4);
data << guid; // target
data << uint32(id); // SpellVisualKit.dbc index
if (IsPlayer())
ToPlayer()->SendDirectMessage(&data);
else
SendMessageToSet(&data, true);
SendMessageToSet(&data, true);
}
void Unit::ApplyResilience(Unit const* victim, float* crit, int32* damage, bool isCrit, CombatRating type)
@@ -20541,15 +20529,3 @@ bool Unit::CanRestoreMana(SpellInfo const* spellInfo) const
return false;
}
bool Unit::SetCannotReachTarget(bool cannotReach, bool /*isChase = true*/)
{
if (cannotReach == m_cannotReachTarget)
{
return false;
}
m_cannotReachTarget = cannotReach;
return true;
}

View File

@@ -1442,7 +1442,6 @@ public:
ReputationRank GetReactionTo(Unit const* target, bool checkOriginalFaction = false) const;
ReputationRank GetFactionReactionTo(FactionTemplateEntry const* factionTemplateEntry, Unit const* target) const;
static ReputationRank GetFactionReactionTo(FactionTemplateEntry const* factionTemplateEntry, FactionTemplateEntry const* targetFactionTemplateEntry);
bool IsHostileTo(Unit const* unit) const;
[[nodiscard]] bool IsHostileToPlayers() const;
@@ -1663,7 +1662,6 @@ public:
Aura* AddAura(SpellInfo const* spellInfo, uint8 effMask, Unit* target);
void SetAuraStack(uint32 spellId, Unit* target, uint32 stack);
void SendPlaySpellVisual(uint32 id);
void SendPlaySpellVisual(ObjectGuid guid, uint32 id);
void SendPlaySpellImpact(ObjectGuid guid, uint32 id);
void BuildCooldownPacket(WorldPacket& data, uint8 flags, uint32 spellId, uint32 cooldown);
void BuildCooldownPacket(WorldPacket& data, uint8 flags, PacketCooldowns const& cooldowns);
@@ -2383,9 +2381,6 @@ public:
[[nodiscard]] bool CanRestoreMana(SpellInfo const* spellInfo) const;
virtual bool SetCannotReachTarget(bool cannotReach, bool isChase = true);
[[nodiscard]] bool CanNotReachTarget() const { return m_cannotReachTarget; }
protected:
explicit Unit (bool isWorldObject);
@@ -2468,8 +2463,6 @@ protected:
bool IsAlwaysDetectableFor(WorldObject const* seer) const override;
bool _instantCast;
bool m_cannotReachTarget;
private:
bool IsTriggeredAtSpellProcEvent(Unit* victim, Aura* aura, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const*& spellProcEvent, ProcEventInfo const& eventInfo);
bool HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggeredByAura, SpellInfo const* procSpell, uint32 procFlag, uint32 procEx, uint32 cooldown);