diff --git a/Framework/Framework.csproj b/Framework/Framework.csproj index d453dacfd..966f68a7b 100644 --- a/Framework/Framework.csproj +++ b/Framework/Framework.csproj @@ -39,7 +39,7 @@ full x64 prompt - true + true ..\Build\x64\Release\ @@ -48,7 +48,7 @@ pdbonly x64 prompt - true + true @@ -181,7 +181,7 @@ - + diff --git a/Game/DataStorage/ClientReader/DB6Storage.cs b/Game/DataStorage/ClientReader/DB6Storage.cs index dc51e5af8..51fa8cd3e 100644 --- a/Game/DataStorage/ClientReader/DB6Storage.cs +++ b/Game/DataStorage/ClientReader/DB6Storage.cs @@ -284,7 +284,6 @@ namespace Game.DataStorage } string str = locStr[locale]; - buffer.WriteUInt16(str.Length + 1); buffer.WriteCString(str); break; } @@ -296,54 +295,44 @@ namespace Game.DataStorage void WriteArrayValues(object entry, FieldInfo fieldInfo, ByteBuffer buffer) { var type = fieldInfo.FieldType.GetElementType(); - var length = ((Array)fieldInfo.GetValue(entry)).Length; - for (var i = 0; i < length; ++i) + var array = (Array)fieldInfo.GetValue(entry); + for (var i = 0; i < array.Length; ++i) { - var value = (Array)fieldInfo.GetValue(entry); switch (Type.GetTypeCode(type)) { case TypeCode.Boolean: - buffer.WriteUInt8(value.GetValue(i)); + buffer.WriteUInt8(array.GetValue(i)); break; case TypeCode.SByte: - buffer.WriteInt8(value.GetValue(i)); + buffer.WriteInt8(array.GetValue(i)); break; case TypeCode.Byte: - buffer.WriteUInt8(value.GetValue(i)); + buffer.WriteUInt8(array.GetValue(i)); break; case TypeCode.Int16: - buffer.WriteInt16(value.GetValue(i)); + buffer.WriteInt16(array.GetValue(i)); break; case TypeCode.UInt16: - buffer.WriteUInt16(value.GetValue(i)); + buffer.WriteUInt16(array.GetValue(i)); break; case TypeCode.Int32: - buffer.WriteInt32(value.GetValue(i)); + buffer.WriteInt32(array.GetValue(i)); break; case TypeCode.UInt32: - buffer.WriteUInt32(value.GetValue(i)); + buffer.WriteUInt32(array.GetValue(i)); break; case TypeCode.Int64: - buffer.WriteInt64(value.GetValue(i)); + buffer.WriteInt64(array.GetValue(i)); break; case TypeCode.UInt64: - buffer.WriteUInt64(value.GetValue(i)); + buffer.WriteUInt64(array.GetValue(i)); break; case TypeCode.Single: - buffer.WriteFloat(value.GetValue(i)); + buffer.WriteFloat(array.GetValue(i)); break; case TypeCode.String: - var str = (string)value.GetValue(i); - buffer.WriteInt32(str.Length); - buffer.WriteString(str); - break; - case TypeCode.Object: - switch (type.Name) - { - case "Unused": - buffer.WriteUInt32(0u); - break; - } + var str = (string)array.GetValue(i); + buffer.WriteCString(str); break; } } diff --git a/Game/DataStorage/DB2Manager.cs b/Game/DataStorage/DB2Manager.cs index 123b69111..340716795 100644 --- a/Game/DataStorage/DB2Manager.cs +++ b/Game/DataStorage/DB2Manager.cs @@ -145,7 +145,7 @@ namespace Game.DataStorage foreach (CurvePointRecord curvePoint in CliDB.CurvePointStorage.Values) { if (CliDB.CurveStorage.ContainsKey(curvePoint.CurveID)) - _curvePoints[curvePoint.CurveID].Add(curvePoint); + _curvePoints.Add(curvePoint.CurveID, curvePoint); } foreach (var key in _curvePoints.Keys.ToList()) diff --git a/Game/Entities/Player/KillRewarder.cs b/Game/Entities/Player/KillRewarder.cs index 3521f27d6..cfff3a236 100644 --- a/Game/Entities/Player/KillRewarder.cs +++ b/Game/Entities/Player/KillRewarder.cs @@ -167,8 +167,8 @@ namespace Game.Entities if (xp != 0) { // 4.2.2. Apply auras modifying rewarded XP (SPELL_AURA_MOD_XP_PCT and SPELL_AURA_MOD_XP_FROM_CREATURE_TYPE). - xp *= (uint)player.GetTotalAuraMultiplier(AuraType.ModXpPct); - xp *= (uint)player.GetTotalAuraMultiplierByMiscValue(AuraType.ModXpFromCreatureType, (int)_victim.GetCreatureType()); + xp = (uint)(xp * player.GetTotalAuraMultiplier(AuraType.ModXpPct)); + xp = (uint)(xp * player.GetTotalAuraMultiplierByMiscValue(AuraType.ModXpFromCreatureType, (int)_victim.GetCreatureType())); // 4.2.3. Give XP to player. player.GiveXP(xp, _victim, _groupRate); diff --git a/Game/Entities/Player/Player.Items.cs b/Game/Entities/Player/Player.Items.cs index 9c4cc1e8a..72ed75983 100644 --- a/Game/Entities/Player/Player.Items.cs +++ b/Game/Entities/Player/Player.Items.cs @@ -4232,7 +4232,7 @@ namespace Game.Entities if (spellproto == null) continue; - if (spellproto.HasAura(GetMap().GetDifficultyID(), AuraType.ModXpPct) || !GetSession().GetCollectionMgr().CanApplyHeirloomXpBonus(item.GetEntry(), getLevel()) + if (spellproto.HasAura(GetMap().GetDifficultyID(), AuraType.ModXpPct) && !GetSession().GetCollectionMgr().CanApplyHeirloomXpBonus(item.GetEntry(), getLevel()) && Global.DB2Mgr.GetHeirloomByItemId(item.GetEntry()) != null) continue; diff --git a/Game/Entities/StatSystem.cs b/Game/Entities/StatSystem.cs index 4cbd9bfe2..e809fe04d 100644 --- a/Game/Entities/StatSystem.cs +++ b/Game/Entities/StatSystem.cs @@ -1484,7 +1484,7 @@ namespace Game.Entities float value = GetTotalPercentageModValue(modGroup) + GetRatingBonusValue(cr); // Modify crit from weapon skill and maximized defense skill of same level victim difference - value += GetMaxSkillValueForLevel() - GetMaxSkillValueForLevel() * 0.04f; + value += (GetMaxSkillValueForLevel() - GetMaxSkillValueForLevel()) * 0.04f; if (WorldConfig.GetBoolValue(WorldCfg.StatsLimitsEnable)) value = value > WorldConfig.GetFloatValue(WorldCfg.StatsLimitsCrit) ? WorldConfig.GetFloatValue(WorldCfg.StatsLimitsCrit) : value; diff --git a/Game/Scripting/SpellScript.cs b/Game/Scripting/SpellScript.cs index 11de73db1..64ec59c92 100644 --- a/Game/Scripting/SpellScript.cs +++ b/Game/Scripting/SpellScript.cs @@ -1124,6 +1124,7 @@ namespace Game.Scripting case AuraScriptHookType.EffectAbsorb: case AuraScriptHookType.EffectSplit: case AuraScriptHookType.PrepareProc: + case AuraScriptHookType.Proc: case AuraScriptHookType.EffectProc: return m_defaultActionPrevented; default: diff --git a/Game/Spells/SpellInfo.cs b/Game/Spells/SpellInfo.cs index 2b8333088..b6a19b942 100644 --- a/Game/Spells/SpellInfo.cs +++ b/Game/Spells/SpellInfo.cs @@ -956,7 +956,7 @@ namespace Game.Spells { Creature targetCreature = unitTarget.ToCreature(); if (targetCreature != null) - if (targetCreature.hasLootRecipient() && targetCreature.isTappedBy(caster.ToPlayer())) + if (targetCreature.hasLootRecipient() && !targetCreature.isTappedBy(caster.ToPlayer())) return SpellCastResult.CantCastOnTapped; }