aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-02-20 23:57:25 +0100
committerOvahlord <dreadkiller@gmx.de>2025-02-22 07:42:00 +0100
commitb46a556c92e7433e9e8d4b86d75e12e78706fac1 (patch)
treea16140d05e3c8ca708695a7f9c3772a685e8a659
parent1f18ac7b4c19dcee027d620fc52b124c313262b4 (diff)
Core/Misc: Reduce differences between branches
(cherry picked from commit ff6a107ac0e7a82d728f8fd2fd8423743233a474) # Conflicts: # src/server/game/Entities/Player/Player.cpp
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp10
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp18
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h8
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp13
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp11
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.h3
8 files changed, 38 insertions, 30 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index cc54bd91419..a0c8d2c0483 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -474,7 +474,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
SetInventorySlotCount(INVENTORY_DEFAULT_SIZE);
// set starting level
- SetLevel(GetStartLevel(createInfo->Class, createInfo->TemplateSet));
+ SetLevel(GetStartLevel(createInfo->Class, createInfo->TemplateSet), false);
InitRunes();
@@ -10109,7 +10109,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool
{
// Do not allow polearm to be equipped in the offhand (rare case for the only 1h polearm 41750)
if (type == INVTYPE_WEAPON && pProto->GetSubClass() == ITEM_SUBCLASS_WEAPON_POLEARM)
- return EQUIP_ERR_2HSKILLNOTFOUND;
+ return EQUIP_ERR_WRONG_SLOT;
else if (type == INVTYPE_WEAPON)
{
if (!CanDualWield())
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 50b8e2c6e71..62a812b90a3 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7136,14 +7136,14 @@ void ObjectMgr::SetHighestGuids()
result = CharacterDatabase.Query("SELECT MAX(guid) FROM item_instance");
if (result)
- GetGuidSequenceGenerator(HighGuid::Item).Set((*result)[0].GetUInt64() + 1);
+ GetGenerator<HighGuid::Item>().Set((*result)[0].GetUInt64() + 1);
// Cleanup other tables from nonexistent guids ( >= _hiItemGuid)
- CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item >= '{}'", GetGuidSequenceGenerator(HighGuid::Item).GetNextAfterMaxUsed()); // One-time query
- CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid >= '{}'", GetGuidSequenceGenerator(HighGuid::Item).GetNextAfterMaxUsed()); // One-time query
+ CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item >= '{}'", GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query
+ CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid >= '{}'", GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query
CharacterDatabase.PExecute("DELETE a, ab, ai FROM auctionhouse a LEFT JOIN auction_bidders ab ON ab.auctionId = a.id LEFT JOIN auction_items ai ON ai.auctionId = a.id WHERE ai.itemGuid >= '{}'",
- GetGuidSequenceGenerator(HighGuid::Item).GetNextAfterMaxUsed()); // One-time query
- CharacterDatabase.PExecute("DELETE FROM guild_bank_item WHERE item_guid >= '{}'", GetGuidSequenceGenerator(HighGuid::Item).GetNextAfterMaxUsed()); // One-time query
+ GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query
+ CharacterDatabase.PExecute("DELETE FROM guild_bank_item WHERE item_guid >= '{}'", GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query
result = WorldDatabase.Query("SELECT MAX(guid) FROM transports");
if (result)
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index 7c7d21c5430..7e51a3a54f5 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -31,6 +31,7 @@
#include "QueryPackets.h"
#include "RealmList.h"
#include "TerrainMgr.h"
+#include "Transport.h"
#include "World.h"
void WorldSession::BuildNameQueryData(ObjectGuid guid, WorldPackets::Query::NameCacheLookupResult& lookupData)
@@ -168,7 +169,7 @@ void WorldSession::HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLoc
packet.MapID = corpseMapID;
packet.ActualMapID = mapID;
packet.Position = Position(x, y, z);
- packet.Transport = ObjectGuid::Empty;
+ packet.Transport = ObjectGuid::Empty; // TODO: If corpse is on transport, send transport offsets and transport guid
SendPacket(packet.Write());
}
@@ -236,13 +237,18 @@ void WorldSession::HandleQueryCorpseTransport(WorldPackets::Query::QueryCorpseTr
{
WorldPackets::Query::CorpseTransportQuery response;
response.Player = queryCorpseTransport.Player;
- if (Player* player = ObjectAccessor::FindConnectedPlayer(queryCorpseTransport.Player))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(queryCorpseTransport.Player); player && _player->IsInSameRaidWith(player))
{
- Corpse* corpse = player->GetCorpse();
- if (_player->IsInSameRaidWith(player) && corpse && !corpse->GetTransGUID().IsEmpty() && corpse->GetTransGUID() == queryCorpseTransport.Transport)
+ if (Corpse const* corpse = _player->GetCorpse())
{
- response.Position = corpse->GetTransOffset();
- response.Facing = corpse->GetTransOffsetO();
+ if (Transport const* transport = dynamic_cast<Transport const*>(corpse->GetTransport()))
+ {
+ if (transport->GetGUID() == queryCorpseTransport.Transport)
+ {
+ response.Position = transport->GetPosition();
+ response.Facing = transport->GetOrientation();
+ }
+ }
}
}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index f537bdc14a8..42eaa3e657d 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -358,20 +358,20 @@ namespace WorldPackets
SpellHealPrediction Predict;
};
- class SpellGo final : public CombatLog::CombatLogServerPacket
+ class SpellStart final : public ServerPacket
{
public:
- SpellGo() : CombatLog::CombatLogServerPacket(SMSG_SPELL_GO) { }
+ SpellStart() : ServerPacket(SMSG_SPELL_START) { }
WorldPacket const* Write() override;
SpellCastData Cast;
};
- class SpellStart final : public ServerPacket
+ class SpellGo final : public CombatLog::CombatLogServerPacket
{
public:
- SpellStart() : ServerPacket(SMSG_SPELL_START) { }
+ SpellGo() : CombatLog::CombatLogServerPacket(SMSG_SPELL_GO) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 859253b82bd..9d6c7d9de96 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -6032,20 +6032,9 @@ void AuraEffect::HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) con
caster->SendSpellNonMeleeDamageLog(&damageInfo);
}
-bool AuraEffect::CanPeriodicTickCrit() const
-{
- if (GetSpellInfo()->HasAttribute(SPELL_ATTR2_CANT_CRIT))
- return false;
-
- if (GetSpellInfo()->HasAttribute(SPELL_ATTR8_PERIODIC_CAN_CRIT))
- return true;
-
- return false;
-}
-
float AuraEffect::CalcPeriodicCritChance(Unit const* caster) const
{
- if (!caster || !CanPeriodicTickCrit())
+ if (!caster || !GetBase()->CanPeriodicTickCrit())
return 0.0f;
Player* modOwner = caster->GetSpellModOwner();
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index abe57a454b7..47bd467393f 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -354,7 +354,6 @@ class TC_GAME_API AuraEffect
void HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) const;
void HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) const;
- bool CanPeriodicTickCrit() const;
float CalcPeriodicCritChance(Unit const* caster) const;
// aura effect proc handlers
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 83000394a9b..4bd7f9f19b0 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -519,6 +519,17 @@ void Aura::_InitEffects(uint32 effMask, Unit* caster, int32 const* baseAmount)
_effects.pop_back();
}
+bool Aura::CanPeriodicTickCrit() const
+{
+ if (GetSpellInfo()->HasAttribute(SPELL_ATTR2_CANT_CRIT))
+ return false;
+
+ if (GetSpellInfo()->HasAttribute(SPELL_ATTR8_PERIODIC_CAN_CRIT))
+ return true;
+
+ return false;
+}
+
Aura::~Aura()
{
// unload scripts
diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h
index ee43c84e681..609ef81e47d 100644
--- a/src/server/game/Spells/Auras/SpellAuras.h
+++ b/src/server/game/Spells/Auras/SpellAuras.h
@@ -225,6 +225,9 @@ class TC_GAME_API Aura
AuraKey GenerateKey(uint32& recalculateMask) const;
void SetLoadedState(int32 maxDuration, int32 duration, int32 charges, uint8 stackAmount, uint32 recalculateMask, int32* amount);
+ // helpers for aura effects
+ bool CanPeriodicTickCrit() const;
+
bool HasEffect(uint8 effIndex) const { return GetEffect(effIndex) != nullptr; }
bool HasEffectType(AuraType type) const;
static bool EffectTypeNeedsSendingAmount(AuraType type);