Implemented Basic Creature Scaling
Trainer followup Misc Fixes
This commit is contained in:
@@ -150,6 +150,7 @@ namespace Game.Spells
|
||||
}
|
||||
|
||||
if (GetBase().GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount) ||
|
||||
GetBase().HasEffectType(AuraType.ModSpellCategoryCooldown) ||
|
||||
GetBase().HasEffectType(AuraType.ModMaxCharges) ||
|
||||
GetBase().HasEffectType(AuraType.ChargeRecoveryMod) ||
|
||||
GetBase().HasEffectType(AuraType.ChargeRecoveryMultiplier))
|
||||
|
||||
+11
-11
@@ -1625,7 +1625,7 @@ namespace Game.Spells
|
||||
if (m_auraScaleMask != 0 && ihit.effectMask == m_auraScaleMask && m_caster != target)
|
||||
{
|
||||
SpellInfo auraSpell = Global.SpellMgr.GetSpellInfo(Global.SpellMgr.GetFirstSpellInChain(m_spellInfo.Id));
|
||||
if (target.getLevel() + 10 >= auraSpell.SpellLevel)
|
||||
if (target.GetLevelForTarget(m_caster) + 10 >= auraSpell.SpellLevel)
|
||||
ihit.scaleAura = true;
|
||||
}
|
||||
return;
|
||||
@@ -1646,7 +1646,7 @@ namespace Game.Spells
|
||||
if (m_auraScaleMask != 0 && targetInfo.effectMask == m_auraScaleMask && m_caster != target)
|
||||
{
|
||||
SpellInfo auraSpell = Global.SpellMgr.GetSpellInfo(Global.SpellMgr.GetFirstSpellInChain(m_spellInfo.Id));
|
||||
if (target.getLevel() + 10 >= auraSpell.SpellLevel)
|
||||
if (target.GetLevelForTarget(m_caster) + 10 >= auraSpell.SpellLevel)
|
||||
targetInfo.scaleAura = true;
|
||||
}
|
||||
|
||||
@@ -4874,7 +4874,7 @@ namespace Game.Spells
|
||||
SkillType skill = creature.GetCreatureTemplate().GetRequiredLootSkill();
|
||||
|
||||
ushort skillValue = m_caster.ToPlayer().GetSkillValue(skill);
|
||||
uint TargetLevel = m_targets.GetUnitTarget().getLevel();
|
||||
uint TargetLevel = m_targets.GetUnitTarget().GetLevelForTarget(m_caster);
|
||||
int ReqValue = (int)(skillValue < 100 ? (TargetLevel - 10) * 10 : TargetLevel * 5);
|
||||
if (ReqValue > skillValue)
|
||||
return SpellCastResult.LowCastlevel;
|
||||
@@ -5199,7 +5199,7 @@ namespace Game.Spells
|
||||
return SpellCastResult.TargetIsPlayerControlled;
|
||||
|
||||
int damage = CalculateDamage(effect.EffectIndex, target1);
|
||||
if (damage != 0 && target1.getLevel() > damage)
|
||||
if (damage != 0 && target1.GetLevelForTarget(m_caster) > damage)
|
||||
return SpellCastResult.Highlevel;
|
||||
}
|
||||
|
||||
@@ -6118,19 +6118,19 @@ namespace Game.Spells
|
||||
return SpellCastResult.EquippedItem;
|
||||
break;
|
||||
}
|
||||
case SpellEffectName.CreateManaGem:
|
||||
case SpellEffectName.RechargeItem:
|
||||
{
|
||||
uint item_id = effect.ItemType;
|
||||
ItemTemplate proto = Global.ObjectMgr.GetItemTemplate(item_id);
|
||||
uint itemId = effect.ItemType;
|
||||
|
||||
ItemTemplate proto = Global.ObjectMgr.GetItemTemplate(itemId);
|
||||
if (proto == null)
|
||||
return SpellCastResult.ItemAtMaxCharges;
|
||||
|
||||
Item pitem = player.GetItemByEntry(item_id);
|
||||
if (pitem != null)
|
||||
Item item = player.GetItemByEntry(itemId);
|
||||
if (item != null)
|
||||
{
|
||||
for (int x = 0; x < proto.Effects.Count && x < 5; ++x)
|
||||
if (proto.Effects[x].Charges != 0 && pitem.GetSpellCharges(x) == proto.Effects[x].Charges)
|
||||
if (proto.Effects[x].Charges != 0 && item.GetSpellCharges(x) == proto.Effects[x].Charges)
|
||||
return SpellCastResult.ItemAtMaxCharges;
|
||||
}
|
||||
break;
|
||||
@@ -6343,7 +6343,7 @@ namespace Game.Spells
|
||||
return false;
|
||||
int damage = CalculateDamage(effect.EffectIndex, target);
|
||||
if (damage != 0)
|
||||
if (target.getLevel() > damage)
|
||||
if (target.GetLevelForTarget(m_caster) > damage)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
|
||||
+12
-20
@@ -2464,7 +2464,7 @@ namespace Game.Spells
|
||||
// "kill" original creature
|
||||
creatureTarget.DespawnOrUnsummon();
|
||||
|
||||
uint level = (creatureTarget.getLevel() < (m_caster.getLevel() - 5)) ? (m_caster.getLevel() - 5) : creatureTarget.getLevel();
|
||||
uint level = (creatureTarget.GetLevelForTarget(m_caster) < (m_caster.GetLevelForTarget(creatureTarget) - 5)) ? (m_caster.GetLevelForTarget(creatureTarget) - 5) : creatureTarget.GetLevelForTarget(m_caster);
|
||||
|
||||
// prepare visual effect for levelup
|
||||
pet.SetUInt32Value(UnitFields.Level, level - 1);
|
||||
@@ -4169,7 +4169,7 @@ namespace Game.Spells
|
||||
return;
|
||||
|
||||
Creature creature = unitTarget.ToCreature();
|
||||
int targetLevel = (int)creature.getLevel();
|
||||
int targetLevel = (int)creature.GetLevelForTarget(m_caster);
|
||||
|
||||
SkillType skill = creature.GetCreatureTemplate().GetRequiredLootSkill();
|
||||
|
||||
@@ -5376,35 +5376,27 @@ namespace Game.Spells
|
||||
}
|
||||
}
|
||||
|
||||
[SpellEffectHandler(SpellEffectName.CreateManaGem)]
|
||||
void EffectRechargeManaGem(uint effIndex)
|
||||
[SpellEffectHandler(SpellEffectName.RechargeItem)]
|
||||
void EffectRechargeItem(uint effIndex)
|
||||
{
|
||||
if (effectHandleMode != SpellEffectHandleMode.HitTarget)
|
||||
return;
|
||||
|
||||
if (unitTarget == null || !unitTarget.IsTypeId(TypeId.Player))
|
||||
if (unitTarget == null)
|
||||
return;
|
||||
|
||||
Player player = m_caster.ToPlayer();
|
||||
|
||||
Player player = unitTarget.ToPlayer();
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
uint item_id = GetEffect(0).ItemType;
|
||||
|
||||
ItemTemplate proto = Global.ObjectMgr.GetItemTemplate(item_id);
|
||||
if (proto == null)
|
||||
{
|
||||
player.SendEquipError(InventoryResult.ItemNotFound);
|
||||
return;
|
||||
}
|
||||
|
||||
Item pItem = player.GetItemByEntry(item_id);
|
||||
if (pItem != null)
|
||||
Item item = player.GetItemByEntry(effectInfo.ItemType);
|
||||
if (item != null)
|
||||
{
|
||||
ItemTemplate proto = item.GetTemplate();
|
||||
for (int x = 0; x < proto.Effects.Count && x < 5; ++x)
|
||||
pItem.SetSpellCharges(x, proto.Effects[x].Charges);
|
||||
pItem.SetState(ItemUpdateState.Changed, player);
|
||||
item.SetSpellCharges(x, proto.Effects[x].Charges);
|
||||
|
||||
item.SetState(ItemUpdateState.Changed, player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3124,7 +3124,7 @@ namespace Game.Spells
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 63 SPELL_EFFECT_THREAT
|
||||
new StaticData(SpellEffectImplicitTargetTypes.None, SpellTargetObjectTypes.None), // 64 SPELL_EFFECT_TRIGGER_SPELL
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 65 SPELL_EFFECT_APPLY_AREA_AURA_RAID
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 66 SPELL_EFFECT_CREATE_MANA_GEM
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 66 SPELL_EFFECT_RECHARGE_ITEM
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 67 SPELL_EFFECT_HEAL_MAX_HEALTH
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.Unit), // 68 SPELL_EFFECT_INTERRUPT_CAST
|
||||
new StaticData(SpellEffectImplicitTargetTypes.Explicit, SpellTargetObjectTypes.UnitAndDest), // 69 SPELL_EFFECT_DISTRACT
|
||||
|
||||
Reference in New Issue
Block a user