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;
}