Core/Packets: fixed ContentTuningParams structure

This commit is contained in:
Ovahlord
2024-11-14 17:29:09 +01:00
parent ac87a39550
commit f4395bbb62
2 changed files with 16 additions and 62 deletions

View File

@@ -65,63 +65,27 @@ bool ContentTuningParams::GenerateDataForUnits(T* /*attacker*/, U* /*target*/)
}
template<>
bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* attacker, Player* target)
bool ContentTuningParams::GenerateDataForUnits<Creature, Player>(Creature* /*attacker*/, Player* /*target*/)
{
CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate();
CreatureDifficulty const* creatureDifficulty = creatureTemplate->GetDifficulty(attacker->GetMap()->GetDifficultyID());
Type = TYPE_CREATURE_TO_PLAYER_DAMAGE;
PlayerLevelDelta = target->m_activePlayerData->ScalingPlayerLevelDelta;
PlayerItemLevel = target->GetAverageItemLevel();
TargetItemLevel = 0;
ScalingHealthItemLevelCurveID = 0; // target->m_unitData->ScalingHealthItemLevelCurveID;
TargetLevel = target->GetLevel();
Expansion = creatureDifficulty->HealthScalingExpansion;
TargetScalingLevelDelta = int8(attacker->m_unitData->ScalingLevelDelta);
return true;
}
template<>
bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* attacker, Creature* target)
bool ContentTuningParams::GenerateDataForUnits<Player, Creature>(Player* /*attacker*/, Creature* /*target*/)
{
CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate();
CreatureDifficulty const* creatureDifficulty = creatureTemplate->GetDifficulty(target->GetMap()->GetDifficultyID());
Type = TYPE_PLAYER_TO_CREATURE_DAMAGE;
PlayerLevelDelta = attacker->m_activePlayerData->ScalingPlayerLevelDelta;
PlayerItemLevel = attacker->GetAverageItemLevel();
TargetItemLevel = 0;
ScalingHealthItemLevelCurveID = 0; // target->m_unitData->ScalingHealthItemLevelCurveID;
TargetLevel = target->GetLevel();
Expansion = creatureDifficulty->HealthScalingExpansion;
TargetScalingLevelDelta = int8(target->m_unitData->ScalingLevelDelta);
return true;
}
template<>
bool ContentTuningParams::GenerateDataForUnits<Creature, Creature>(Creature* attacker, Creature* target)
bool ContentTuningParams::GenerateDataForUnits<Creature, Creature>(Creature* /*attacker*/, Creature* /*target*/)
{
Creature* accessor = attacker;
CreatureTemplate const* creatureTemplate = accessor->GetCreatureTemplate();
CreatureDifficulty const* creatureDifficulty = creatureTemplate->GetDifficulty(accessor->GetMap()->GetDifficultyID());
Type = TYPE_CREATURE_TO_CREATURE_DAMAGE;
PlayerLevelDelta = 0;
PlayerItemLevel = 0;
TargetLevel = target->GetLevel();
Expansion = creatureDifficulty->HealthScalingExpansion;
TargetScalingLevelDelta = int8(accessor->m_unitData->ScalingLevelDelta);
return true;
}
template<>
bool ContentTuningParams::GenerateDataForUnits<Unit, Unit>(Unit* attacker, Unit* target)
bool ContentTuningParams::GenerateDataForUnits<Unit, Unit>(Unit* /*attacker*/, Unit* /*target*/)
{
if (Player* playerAttacker = Object::ToPlayer(attacker))
if (Player* playerTarget = Object::ToPlayer(target))
return GenerateDataForUnits(playerAttacker, playerTarget);
return false;
return true;
}
ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogData)
@@ -145,18 +109,16 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogDat
ByteBuffer& operator<<(ByteBuffer& data, ContentTuningParams const& contentTuningParams)
{
data << float(contentTuningParams.PlayerItemLevel);
data << float(contentTuningParams.TargetItemLevel);
data << uint16(contentTuningParams.PlayerItemLevel);
data << int16(contentTuningParams.PlayerLevelDelta);
data << uint32(contentTuningParams.ScalingHealthItemLevelCurveID);
data << uint32(contentTuningParams.TargetItemLevel);
data << uint8(contentTuningParams.TargetLevel);
data << uint8(contentTuningParams.Expansion);
data << uint8(contentTuningParams.TargetMinScalingLevel);
data << uint8(contentTuningParams.TargetMaxScalingLevel);
data << int8(contentTuningParams.TargetScalingLevelDelta);
data << uint32(contentTuningParams.Flags);
data << int32(contentTuningParams.PlayerContentTuningID);
data << int32(contentTuningParams.TargetContentTuningID);
data << int32(contentTuningParams.Unused927);
data.WriteBits(contentTuningParams.Type, 4);
data.WriteBits(contentTuningParams.ScalesWithItemLevel, 1);
data.FlushBits();
return data;
}

View File

@@ -60,24 +60,16 @@ namespace WorldPackets
TYPE_PLAYER_TO_PLAYER_EXPECTED_STAT = 8,
};
enum ContentTuningFlags : uint32
{
NO_LEVEL_SCALING = 0x1,
NO_ITEM_LEVEL_SCALING = 0x2
};
uint32 Type = 0;
uint16 PlayerItemLevel = 0;
int16 PlayerLevelDelta = 0;
float PlayerItemLevel = 0;
float TargetItemLevel = 0;
uint32 ScalingHealthItemLevelCurveID = 0;
uint32 TargetItemLevel = 0;
uint8 TargetLevel = 0;
uint8 Expansion = 0;
uint8 TargetMinScalingLevel = 0;
uint8 TargetMaxScalingLevel = 0;
int8 TargetScalingLevelDelta = 0;
uint32 Flags = NO_LEVEL_SCALING | NO_ITEM_LEVEL_SCALING;
int32 PlayerContentTuningID = 0;
int32 TargetContentTuningID = 0;
int32 Unused927 = 0;
uint32 Type = 0;
bool ScalesWithItemLevel = false;
template<class T, class U>
bool GenerateDataForUnits(T* attacker, U* target);