Core/DataStores: Fixed db2 structures after 7.3.5
This commit is contained in:
@@ -305,7 +305,7 @@ namespace Game.Spells
|
||||
|
||||
var powers = Global.DB2Mgr.GetSpellPowers(GetId(), caster ? caster.GetMap().GetDifficultyID() : Difficulty.None);
|
||||
foreach (var power in powers)
|
||||
if (power.ManaCostPerSecond != 0 || power.ManaCostPercentagePerSecond > 0.0f)
|
||||
if (power.ManaPerSecond != 0 || power.PowerPctPerSecond > 0.0f)
|
||||
m_periodicCosts.Add(power);
|
||||
|
||||
if (!m_periodicCosts.Empty())
|
||||
@@ -653,14 +653,14 @@ namespace Game.Spells
|
||||
|
||||
foreach (SpellPowerRecord power in m_periodicCosts)
|
||||
{
|
||||
if (power.RequiredAura != 0 && !caster.HasAura(power.RequiredAura))
|
||||
if (power.RequiredAuraSpellID != 0 && !caster.HasAura(power.RequiredAuraSpellID))
|
||||
continue;
|
||||
|
||||
int manaPerSecond = (int)power.ManaCostPerSecond;
|
||||
int manaPerSecond = (int)power.ManaPerSecond;
|
||||
if (power.PowerType != PowerType.Health)
|
||||
manaPerSecond += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.ManaCostPercentagePerSecond);
|
||||
manaPerSecond += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.PowerPctPerSecond);
|
||||
else
|
||||
manaPerSecond += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.ManaCostPercentagePerSecond);
|
||||
manaPerSecond += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.PowerPctPerSecond);
|
||||
|
||||
if (manaPerSecond != 0)
|
||||
{
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace Game.Spells
|
||||
{
|
||||
for (int t = 0; t < ItemConst.MaxItemEnchantmentEffects; t++)
|
||||
{
|
||||
if (pEnchant.EffectSpellID[t] == m_spellInfo.Id)
|
||||
if (pEnchant.EffectArg[t] == m_spellInfo.Id)
|
||||
{
|
||||
amount = (int)((item_rand_suffix.AllocationPct[k] * castItem.GetItemSuffixFactor()) / 10000);
|
||||
break;
|
||||
@@ -146,7 +146,7 @@ namespace Game.Spells
|
||||
uint mountType = (uint)GetMiscValueB();
|
||||
MountRecord mountEntry = Global.DB2Mgr.GetMount(GetId());
|
||||
if (mountEntry != null)
|
||||
mountType = mountEntry.MountTypeId;
|
||||
mountType = mountEntry.MountTypeID;
|
||||
|
||||
var mountCapability = GetBase().GetUnitOwner().GetMountCapability(mountType);
|
||||
if (mountCapability != null)
|
||||
@@ -2197,7 +2197,7 @@ namespace Game.Spells
|
||||
}).ToList();
|
||||
|
||||
if (!usableDisplays.Empty())
|
||||
displayId = usableDisplays.SelectRandom().DisplayID;
|
||||
displayId = usableDisplays.SelectRandom().CreatureDisplayInfoID;
|
||||
}
|
||||
}
|
||||
// TODO: CREATE TABLE mount_vehicle (mountId, vehicleCreatureId) for future mounts that are vehicles (new mounts no longer have proper data in MiscValue)
|
||||
@@ -2229,7 +2229,7 @@ namespace Game.Spells
|
||||
{
|
||||
var mountCapability = CliDB.MountCapabilityStorage.LookupByKey(GetAmount());
|
||||
if (mountCapability != null)
|
||||
target.CastSpell(target, mountCapability.SpeedModSpell, true);
|
||||
target.CastSpell(target, mountCapability.ModSpellAuraID, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2245,7 +2245,7 @@ namespace Game.Spells
|
||||
// remove speed aura
|
||||
var mountCapability = CliDB.MountCapabilityStorage.LookupByKey(GetAmount());
|
||||
if (mountCapability != null)
|
||||
target.RemoveAurasDueToSpell(mountCapability.SpeedModSpell, target.GetGUID());
|
||||
target.RemoveAurasDueToSpell(mountCapability.ModSpellAuraID, target.GetGUID());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3512,7 +3512,7 @@ namespace Game.Spells
|
||||
return;
|
||||
|
||||
Unit target = aurApp.GetTarget();
|
||||
if (target.GetPowerIndex((PowerType)powerDisplay.PowerType) == (int)PowerType.Max)
|
||||
if (target.GetPowerIndex((PowerType)powerDisplay.ActualType) == (int)PowerType.Max)
|
||||
return;
|
||||
|
||||
if (apply)
|
||||
@@ -4693,7 +4693,7 @@ namespace Game.Spells
|
||||
{
|
||||
for (byte i = 0; i < SharedConst.MaxOverrideSpell; ++i)
|
||||
{
|
||||
uint spellId = overrideSpells.SpellID[i];
|
||||
uint spellId = overrideSpells.Spells[i];
|
||||
if (spellId != 0)
|
||||
target.AddTemporarySpell(spellId);
|
||||
}
|
||||
@@ -4707,7 +4707,7 @@ namespace Game.Spells
|
||||
{
|
||||
for (byte i = 0; i < SharedConst.MaxOverrideSpell; ++i)
|
||||
{
|
||||
uint spellId = overrideSpells.SpellID[i];
|
||||
uint spellId = overrideSpells.Spells[i];
|
||||
if (spellId != 0)
|
||||
target.RemoveTemporarySpell(spellId);
|
||||
}
|
||||
|
||||
@@ -3850,9 +3850,9 @@ namespace Game.Spells
|
||||
ItemRecord itemEntry = CliDB.ItemStorage.LookupByKey(itemId);
|
||||
if (itemEntry != null)
|
||||
{
|
||||
if (itemEntry.Class == ItemClass.Weapon)
|
||||
if (itemEntry.ClassID == ItemClass.Weapon)
|
||||
{
|
||||
switch ((ItemSubClassWeapon)itemEntry.SubClass)
|
||||
switch ((ItemSubClassWeapon)itemEntry.SubclassID)
|
||||
{
|
||||
case ItemSubClassWeapon.Thrown:
|
||||
ammoDisplayID = Global.DB2Mgr.GetItemDisplayId(itemId, m_caster.GetVirtualItemAppearanceMod(i));
|
||||
@@ -5065,7 +5065,7 @@ namespace Game.Spells
|
||||
if (SummonProperties == null)
|
||||
break;
|
||||
|
||||
switch (SummonProperties.Category)
|
||||
switch (SummonProperties.Control)
|
||||
{
|
||||
case SummonCategory.Pet:
|
||||
if (!m_spellInfo.HasAttribute(SpellAttr1.DismissPet) && !m_caster.GetPetGUID().IsEmpty())
|
||||
@@ -6034,7 +6034,7 @@ namespace Game.Spells
|
||||
ItemTemplate proto = targetItem.GetTemplate();
|
||||
for (byte e = 0; e < proto.Effects.Count; ++e)
|
||||
{
|
||||
if (proto.Effects[e].SpellID != 0 && proto.Effects[e].Trigger == ItemSpelltriggerType.OnUse)
|
||||
if (proto.Effects[e].SpellID != 0 && proto.Effects[e].TriggerType == ItemSpelltriggerType.OnUse)
|
||||
{
|
||||
isItemUsable = true;
|
||||
break;
|
||||
@@ -6115,7 +6115,7 @@ namespace Game.Spells
|
||||
ItemDisenchantLootRecord itemDisenchantLoot = item.GetDisenchantLoot(m_caster.ToPlayer());
|
||||
if (itemDisenchantLoot == null)
|
||||
return SpellCastResult.CantBeDisenchanted;
|
||||
if (itemDisenchantLoot.RequiredDisenchantSkill > player.GetSkillValue(SkillType.Enchanting))
|
||||
if (itemDisenchantLoot.SkillRequired > player.GetSkillValue(SkillType.Enchanting))
|
||||
return SpellCastResult.LowCastlevel;
|
||||
break;
|
||||
}
|
||||
@@ -6716,19 +6716,6 @@ namespace Game.Spells
|
||||
{
|
||||
m_loadedScripts = Global.ScriptMgr.CreateSpellScripts(m_spellInfo.Id, this);
|
||||
|
||||
var holder = Global.SmartAIMgr.GetScript((int)GetSpellInfo().Id, SmartScriptType.Spell);
|
||||
if (!holder.Empty())
|
||||
{
|
||||
var script = new SmartSpell();
|
||||
script._Init("", GetSpellInfo().Id);
|
||||
if (script._Load(this))
|
||||
{
|
||||
script._Register();
|
||||
if (script._Validate(GetSpellInfo()))
|
||||
m_loadedScripts.Add(script);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var script in m_loadedScripts)
|
||||
{
|
||||
Log.outDebug(LogFilter.Spells, "Spell.LoadScripts: Script `{0}` for spell `{1}` is loaded now", script._GetScriptName(), m_spellInfo.Id);
|
||||
|
||||
@@ -1746,7 +1746,7 @@ namespace Game.Spells
|
||||
break;
|
||||
}
|
||||
|
||||
switch (properties.Category)
|
||||
switch (properties.Control)
|
||||
{
|
||||
case SummonCategory.Wild:
|
||||
case SummonCategory.Ally:
|
||||
@@ -1756,7 +1756,7 @@ namespace Game.Spells
|
||||
SummonGuardian(effIndex, entry, properties, numSummons);
|
||||
break;
|
||||
}
|
||||
switch (properties.Type)
|
||||
switch (properties.Title)
|
||||
{
|
||||
case SummonType.Pet:
|
||||
case SummonType.Guardian:
|
||||
@@ -1816,7 +1816,7 @@ namespace Game.Spells
|
||||
if (summon == null)
|
||||
continue;
|
||||
|
||||
if (properties.Category == SummonCategory.Ally)
|
||||
if (properties.Control == SummonCategory.Ally)
|
||||
{
|
||||
summon.SetOwnerGUID(m_originalCaster.GetGUID());
|
||||
summon.SetFaction(m_originalCaster.getFaction());
|
||||
@@ -5073,7 +5073,7 @@ namespace Game.Spells
|
||||
if (summon.HasUnitTypeMask(UnitTypeMask.Guardian))
|
||||
((Guardian)summon).InitStatsForLevel(level);
|
||||
|
||||
if (properties != null && properties.Category == SummonCategory.Ally)
|
||||
if (properties != null && properties.Control == SummonCategory.Ally)
|
||||
summon.SetFaction(caster.getFaction());
|
||||
|
||||
if (summon.HasUnitTypeMask(UnitTypeMask.Minion) && m_targets.HasDst())
|
||||
|
||||
@@ -869,9 +869,9 @@ namespace Game.Spells
|
||||
{
|
||||
if (itemEffect.SpellID == spellInfo.Id)
|
||||
{
|
||||
tmpCooldown = itemEffect.Cooldown;
|
||||
tmpCategoryId = itemEffect.Category;
|
||||
tmpCategoryCooldown = itemEffect.CategoryCooldown;
|
||||
tmpCooldown = itemEffect.CoolDownMSec;
|
||||
tmpCategoryId = itemEffect.SpellCategoryID;
|
||||
tmpCategoryCooldown = itemEffect.CategoryCoolDownMSec;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,20 +59,20 @@ namespace Game.Spells
|
||||
SpellMiscRecord _misc = data.Misc;
|
||||
if (_misc != null)
|
||||
{
|
||||
Attributes = (SpellAttr0)_misc.Attributes;
|
||||
AttributesEx = (SpellAttr1)_misc.AttributesEx;
|
||||
AttributesEx2 = (SpellAttr2)_misc.AttributesExB;
|
||||
AttributesEx3 = (SpellAttr3)_misc.AttributesExC;
|
||||
AttributesEx4 = (SpellAttr4)_misc.AttributesExD;
|
||||
AttributesEx5 = (SpellAttr5)_misc.AttributesExE;
|
||||
AttributesEx6 = (SpellAttr6)_misc.AttributesExF;
|
||||
AttributesEx7 = (SpellAttr7)_misc.AttributesExG;
|
||||
AttributesEx8 = (SpellAttr8)_misc.AttributesExH;
|
||||
AttributesEx9 = (SpellAttr9)_misc.AttributesExI;
|
||||
AttributesEx10 = (SpellAttr10)_misc.AttributesExJ;
|
||||
AttributesEx11 = (SpellAttr11)_misc.AttributesExK;
|
||||
AttributesEx12 = (SpellAttr12)_misc.AttributesExL;
|
||||
AttributesEx13 = (SpellAttr13)_misc.AttributesExM;
|
||||
Attributes = (SpellAttr0)_misc.Attributes[0];
|
||||
AttributesEx = (SpellAttr1)_misc.Attributes[1];
|
||||
AttributesEx2 = (SpellAttr2)_misc.Attributes[2];
|
||||
AttributesEx3 = (SpellAttr3)_misc.Attributes[3];
|
||||
AttributesEx4 = (SpellAttr4)_misc.Attributes[4];
|
||||
AttributesEx5 = (SpellAttr5)_misc.Attributes[5];
|
||||
AttributesEx6 = (SpellAttr6)_misc.Attributes[6];
|
||||
AttributesEx7 = (SpellAttr7)_misc.Attributes[7];
|
||||
AttributesEx8 = (SpellAttr8)_misc.Attributes[8];
|
||||
AttributesEx9 = (SpellAttr9)_misc.Attributes[9];
|
||||
AttributesEx10 = (SpellAttr10)_misc.Attributes[10];
|
||||
AttributesEx11 = (SpellAttr11)_misc.Attributes[11];
|
||||
AttributesEx12 = (SpellAttr12)_misc.Attributes[12];
|
||||
AttributesEx13 = (SpellAttr13)_misc.Attributes[13];
|
||||
CastTimeEntry = CliDB.SpellCastTimesStorage.LookupByKey(_misc.CastingTimeIndex);
|
||||
DurationEntry = CliDB.SpellDurationStorage.LookupByKey(_misc.DurationIndex);
|
||||
RangeIndex = _misc.RangeIndex;
|
||||
@@ -81,7 +81,7 @@ namespace Game.Spells
|
||||
SchoolMask = (SpellSchoolMask)_misc.SchoolMask;
|
||||
AttributesCu = 0;
|
||||
|
||||
IconFileDataId = _misc.IconFileDataID;
|
||||
IconFileDataId = _misc.SpellIconFileDataID;
|
||||
ActiveIconFileDataId = _misc.ActiveIconFileDataID;
|
||||
}
|
||||
|
||||
@@ -90,13 +90,13 @@ namespace Game.Spells
|
||||
|
||||
// sort all visuals so that the ones without a condition requirement are last on the list
|
||||
foreach (var key in _visuals.Keys.ToList())
|
||||
_visuals[key] = _visuals[key].OrderByDescending(x => x.PlayerConditionID).ToList();
|
||||
_visuals[key] = _visuals[key].OrderByDescending(x => x.CasterPlayerConditionID).ToList();
|
||||
|
||||
// SpellScalingEntry
|
||||
SpellScalingRecord _scaling = data.Scaling;
|
||||
if (_scaling != null)
|
||||
{
|
||||
Scaling._Class = _scaling.ScalingClass;
|
||||
Scaling._Class = _scaling.Class;
|
||||
Scaling.MinScalingLevel = _scaling.MinScalingLevel;
|
||||
Scaling.MaxScalingLevel = _scaling.MaxScalingLevel;
|
||||
Scaling.ScalesFromItemLevel = _scaling.ScalesFromItemLevel;
|
||||
@@ -179,8 +179,8 @@ namespace Game.Spells
|
||||
if (_equipped != null)
|
||||
{
|
||||
EquippedItemClass = (ItemClass)_equipped.EquippedItemClass;
|
||||
EquippedItemSubClassMask = _equipped.EquippedItemSubClassMask;
|
||||
EquippedItemInventoryTypeMask = _equipped.EquippedItemInventoryTypeMask;
|
||||
EquippedItemSubClassMask = _equipped.EquippedItemSubclass;
|
||||
EquippedItemInventoryTypeMask = _equipped.EquippedItemInvTypes;
|
||||
}
|
||||
|
||||
// SpellInterruptsEntry
|
||||
@@ -226,10 +226,10 @@ namespace Game.Spells
|
||||
if (_target != null)
|
||||
{
|
||||
targets = (SpellCastTargetFlags)_target.Targets;
|
||||
ConeAngle = _target.ConeAngle;
|
||||
ConeAngle = _target.ConeDegrees;
|
||||
Width = _target.Width;
|
||||
TargetCreatureType = _target.TargetCreatureType;
|
||||
MaxAffectedTargets = _target.MaxAffectedTargets;
|
||||
MaxAffectedTargets = _target.MaxTargets;
|
||||
MaxTargetLevel = _target.MaxTargetLevel;
|
||||
}
|
||||
|
||||
@@ -964,7 +964,7 @@ namespace Game.Spells
|
||||
uint mountType = (uint)effect.MiscValueB;
|
||||
MountRecord mountEntry = Global.DB2Mgr.GetMount(Id);
|
||||
if (mountEntry != null)
|
||||
mountType = mountEntry.MountTypeId;
|
||||
mountType = mountEntry.MountTypeID;
|
||||
if (mountType != 0 && player.GetMountCapability(mountType) == null)
|
||||
return SpellCastResult.NotHere;
|
||||
break;
|
||||
@@ -1210,11 +1210,11 @@ namespace Game.Spells
|
||||
|
||||
var vehicleSeat = vehicle.GetSeatForPassenger(caster);
|
||||
if (!HasAttribute(SpellAttr6.CastableWhileOnVehicle) && !HasAttribute(SpellAttr0.CastableWhileMounted)
|
||||
&& (vehicleSeat.Flags[0] & (uint)checkMask) != (uint)checkMask)
|
||||
&& (vehicleSeat.Flags & checkMask) != checkMask)
|
||||
return SpellCastResult.CantDoThatRightNow;
|
||||
|
||||
// Can only summon uncontrolled minions/guardians when on controlled vehicle
|
||||
if (vehicleSeat.Flags[0].HasAnyFlag((uint)(VehicleSeatFlags.CanControl | VehicleSeatFlags.Unk2)))
|
||||
if (vehicleSeat.Flags.HasAnyFlag((VehicleSeatFlags.CanControl | VehicleSeatFlags.Unk2)))
|
||||
{
|
||||
foreach (SpellEffectInfo effect in GetEffectsForDifficulty(caster.GetMap().GetDifficultyID()))
|
||||
{
|
||||
@@ -1222,7 +1222,7 @@ namespace Game.Spells
|
||||
continue;
|
||||
|
||||
var props = CliDB.SummonPropertiesStorage.LookupByKey(effect.MiscValueB);
|
||||
if (props != null && props.Category != SummonCategory.Wild)
|
||||
if (props != null && props.Control != SummonCategory.Wild)
|
||||
return SpellCastResult.CantDoThatRightNow;
|
||||
}
|
||||
}
|
||||
@@ -2529,20 +2529,16 @@ namespace Game.Spells
|
||||
{
|
||||
if (RangeEntry == null)
|
||||
return 0.0f;
|
||||
if (positive)
|
||||
return RangeEntry.MinRangeFriend;
|
||||
return RangeEntry.MinRangeHostile;
|
||||
|
||||
return RangeEntry.RangeMin[positive ? 1 : 0];
|
||||
}
|
||||
|
||||
public float GetMaxRange(bool positive = false, Unit caster = null, Spell spell = null)
|
||||
{
|
||||
if (RangeEntry == null)
|
||||
return 0.0f;
|
||||
float range;
|
||||
if (positive)
|
||||
range = RangeEntry.MaxRangeFriend;
|
||||
else
|
||||
range = RangeEntry.MaxRangeHostile;
|
||||
|
||||
float range = RangeEntry.RangeMax[positive ? 1 : 0];
|
||||
if (caster != null)
|
||||
{
|
||||
Player modOwner = caster.GetSpellModOwner();
|
||||
@@ -2601,9 +2597,9 @@ namespace Game.Spells
|
||||
if (calcLevel < 0)
|
||||
calcLevel = 0;
|
||||
|
||||
castTime = (int)(CastTimeEntry.CastTime + CastTimeEntry.CastTimePerLevel * level);
|
||||
if (castTime < CastTimeEntry.MinCastTime)
|
||||
castTime = CastTimeEntry.MinCastTime;
|
||||
castTime = (int)(CastTimeEntry.Base + CastTimeEntry.PerLevel * level);
|
||||
if (castTime < CastTimeEntry.Minimum)
|
||||
castTime = CastTimeEntry.Minimum;
|
||||
}
|
||||
|
||||
if (castTime <= 0)
|
||||
@@ -2669,7 +2665,7 @@ namespace Game.Spells
|
||||
|
||||
foreach (SpellPowerRecord power in powers)
|
||||
{
|
||||
if (power.RequiredAura != 0 && !caster.HasAura(power.RequiredAura))
|
||||
if (power.RequiredAuraSpellID != 0 && !caster.HasAura(power.RequiredAuraSpellID))
|
||||
continue;
|
||||
|
||||
// Spell drain all exist power on cast (Only paladin lay of Hands)
|
||||
@@ -2696,23 +2692,23 @@ namespace Game.Spells
|
||||
}
|
||||
|
||||
// Base powerCost
|
||||
int powerCost = (int)power.ManaCost;
|
||||
int powerCost = power.ManaCost;
|
||||
// PCT cost from total amount
|
||||
if (power.ManaCostPercentage != 0)
|
||||
if (power.PowerCostPct != 0)
|
||||
{
|
||||
switch (power.PowerType)
|
||||
{
|
||||
// health as power used
|
||||
case PowerType.Health:
|
||||
powerCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.ManaCostPercentage);
|
||||
powerCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.PowerCostPct);
|
||||
break;
|
||||
case PowerType.Mana:
|
||||
powerCost += (int)MathFunctions.CalculatePct(caster.GetCreateMana(), power.ManaCostPercentage);
|
||||
powerCost += (int)MathFunctions.CalculatePct(caster.GetCreateMana(), power.PowerCostPct);
|
||||
break;
|
||||
case PowerType.Rage:
|
||||
case PowerType.Focus:
|
||||
case PowerType.Energy:
|
||||
powerCost += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.ManaCostPercentage);
|
||||
powerCost += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.PowerCostPct);
|
||||
break;
|
||||
case PowerType.Runes:
|
||||
case PowerType.RunicPower:
|
||||
@@ -2724,8 +2720,8 @@ namespace Game.Spells
|
||||
}
|
||||
}
|
||||
|
||||
if (power.HealthCostPercentage != 0)
|
||||
healthCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.HealthCostPercentage);
|
||||
if (power.PowerCostMaxPct != 0)
|
||||
healthCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.PowerCostMaxPct);
|
||||
|
||||
if (power.PowerType != PowerType.Health)
|
||||
{
|
||||
@@ -2766,13 +2762,13 @@ namespace Game.Spells
|
||||
Player modOwner = caster.GetSpellModOwner();
|
||||
if (modOwner)
|
||||
{
|
||||
if (power.PowerIndex == 0)
|
||||
if (power.OrderIndex == 0)
|
||||
modOwner.ApplySpellMod(Id, SpellModOp.Cost, ref powerCost);
|
||||
else if (power.PowerIndex == 1)
|
||||
else if (power.OrderIndex == 1)
|
||||
modOwner.ApplySpellMod(Id, SpellModOp.SpellCost2, ref powerCost);
|
||||
}
|
||||
|
||||
if (!caster.IsControlledByPlayer() && MathFunctions.fuzzyEq(power.ManaCostPercentage, 0.0f) && SpellLevel != 0)
|
||||
if (!caster.IsControlledByPlayer() && MathFunctions.fuzzyEq(power.PowerCostPct, 0.0f) && SpellLevel != 0)
|
||||
{
|
||||
if (HasAttribute(SpellAttr0.LevelDamageCalculation))
|
||||
{
|
||||
@@ -3077,7 +3073,7 @@ namespace Game.Spells
|
||||
{
|
||||
foreach (SpellXSpellVisualRecord visual in visualList)
|
||||
{
|
||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.PlayerConditionID);
|
||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.CasterPlayerConditionID);
|
||||
if (playerCondition == null || (caster.IsTypeId(TypeId.Player) && ConditionManager.IsPlayerMeetingCondition(caster.ToPlayer(), playerCondition)))
|
||||
return visual.Id;
|
||||
}
|
||||
@@ -3092,7 +3088,7 @@ namespace Game.Spells
|
||||
{
|
||||
foreach (var visual in defaultList)
|
||||
{
|
||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.PlayerConditionID);
|
||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.CasterPlayerConditionID);
|
||||
if (playerCondition == null || (caster && caster.IsTypeId(TypeId.Player) && ConditionManager.IsPlayerMeetingCondition(caster.ToPlayer(), playerCondition)))
|
||||
return visual.Id;
|
||||
}
|
||||
@@ -3705,14 +3701,14 @@ namespace Game.Spells
|
||||
Amplitude = _effect.EffectAmplitude;
|
||||
ChainAmplitude = _effect.EffectChainAmplitude;
|
||||
BonusCoefficient = _effect.EffectBonusCoefficient;
|
||||
MiscValue = _effect.EffectMiscValue;
|
||||
MiscValueB = _effect.EffectMiscValueB;
|
||||
MiscValue = _effect.EffectMiscValue[0];
|
||||
MiscValueB = _effect.EffectMiscValue[1];
|
||||
Mechanic = (Mechanics)_effect.EffectMechanic;
|
||||
PositionFacing = _effect.EffectPosFacing;
|
||||
TargetA = new SpellImplicitTargetInfo((Targets)_effect.ImplicitTarget[0]);
|
||||
TargetB = new SpellImplicitTargetInfo((Targets)_effect.ImplicitTarget[1]);
|
||||
RadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusIndex);
|
||||
MaxRadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusMaxIndex);
|
||||
RadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusIndex[0]);
|
||||
MaxRadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusIndex[1]);
|
||||
ChainTargets = _effect.EffectChainTargets;
|
||||
ItemType = _effect.EffectItemType;
|
||||
TriggerSpell = _effect.EffectTriggerSpell;
|
||||
|
||||
@@ -642,11 +642,11 @@ namespace Game.Entities
|
||||
if (skillAbility.SupercedesSpell == 0)
|
||||
continue;
|
||||
|
||||
if (!HasSpellInfo(skillAbility.SupercedesSpell) || !HasSpellInfo(skillAbility.SpellID))
|
||||
if (!HasSpellInfo(skillAbility.SupercedesSpell) || !HasSpellInfo(skillAbility.Spell))
|
||||
continue;
|
||||
|
||||
chains[skillAbility.SupercedesSpell] = skillAbility.SpellID;
|
||||
hasPrev.Add(skillAbility.SpellID);
|
||||
chains[skillAbility.SupercedesSpell] = skillAbility.Spell;
|
||||
hasPrev.Add(skillAbility.Spell);
|
||||
}
|
||||
|
||||
// each key in chains that isn't present in hasPrev is a first rank
|
||||
@@ -1418,7 +1418,7 @@ namespace Game.Entities
|
||||
mSkillLineAbilityMap.Clear();
|
||||
|
||||
foreach (var skill in CliDB.SkillLineAbilityStorage.Values)
|
||||
mSkillLineAbilityMap.Add(skill.SpellID, skill);
|
||||
mSkillLineAbilityMap.Add(skill.Spell, skill);
|
||||
|
||||
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} SkillLineAbility MultiMap Data in {1} ms", mSkillLineAbilityMap.Count, Time.GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
@@ -1627,7 +1627,7 @@ namespace Game.Entities
|
||||
if (skillLine.AcquireMethod != AbilytyLearnType.OnSkillLearn)
|
||||
continue;
|
||||
|
||||
SpellInfo spell = GetSpellInfo(skillLine.SpellID);
|
||||
SpellInfo spell = GetSpellInfo(skillLine.Spell);
|
||||
if (spell == null) // not exist or triggered or talent
|
||||
continue;
|
||||
|
||||
@@ -2189,7 +2189,7 @@ namespace Game.Entities
|
||||
if (enchant.Effect[s] != ItemEnchantmentType.CombatSpell)
|
||||
continue;
|
||||
|
||||
SpellInfo procInfo = GetSpellInfo(enchant.EffectSpellID[s]);
|
||||
SpellInfo procInfo = GetSpellInfo(enchant.EffectArg[s]);
|
||||
if (procInfo == null)
|
||||
continue;
|
||||
|
||||
@@ -2810,13 +2810,13 @@ namespace Game.Entities
|
||||
|
||||
SummonPropertiesRecord properties = CliDB.SummonPropertiesStorage.LookupByKey(121);
|
||||
if (properties != null)
|
||||
properties.Type = SummonType.Totem;
|
||||
properties.Title = SummonType.Totem;
|
||||
properties = CliDB.SummonPropertiesStorage.LookupByKey(647); // 52893
|
||||
if (properties != null)
|
||||
properties.Type = SummonType.Totem;
|
||||
properties.Title = SummonType.Totem;
|
||||
properties = CliDB.SummonPropertiesStorage.LookupByKey(628);
|
||||
if (properties != null) // Hungry Plaguehound
|
||||
properties.Category = SummonCategory.Pet;
|
||||
properties.Control = SummonCategory.Pet;
|
||||
|
||||
Log.outInfo(LogFilter.ServerLoading, "Loaded SpellInfo corrections in {0} ms", Time.GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
@@ -2874,11 +2874,11 @@ namespace Game.Entities
|
||||
|
||||
foreach (var skillLine in CliDB.SkillLineAbilityStorage.Values)
|
||||
{
|
||||
SpellInfo spellInfo = GetSpellInfo(skillLine.SpellID);
|
||||
SpellInfo spellInfo = GetSpellInfo(skillLine.Spell);
|
||||
if (spellInfo == null)
|
||||
continue;
|
||||
|
||||
var levels = levelsBySpell.LookupByKey(skillLine.SpellID);
|
||||
var levels = levelsBySpell.LookupByKey(skillLine.Spell);
|
||||
if (levels != null && levels.SpellLevel != 0)
|
||||
continue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user