Core/Spells: Send OriginalCastId in SMSG_SPELL_START and SMSG_SPELL_GO for triggered spells in 'game' project
Port From (https://github.com/TrinityCore/TrinityCore/commit/555b2d40ecc22eb0ea4bf913b534ffa7197fa6fe)
This commit is contained in:
@@ -642,7 +642,8 @@ namespace Game.Entities
|
|||||||
switch (action.ActionType)
|
switch (action.ActionType)
|
||||||
{
|
{
|
||||||
case AreaTriggerActionTypes.Cast:
|
case AreaTriggerActionTypes.Cast:
|
||||||
caster.CastSpell(unit, action.Param, true);
|
caster.CastSpell(unit, action.Param, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_areaTriggerData.CreatingEffectGUID._value.IsCast() ? m_areaTriggerData.CreatingEffectGUID : ObjectGuid.Empty));
|
||||||
break;
|
break;
|
||||||
case AreaTriggerActionTypes.AddAura:
|
case AreaTriggerActionTypes.AddAura:
|
||||||
caster.AddAura(action.Param, unit);
|
caster.AddAura(action.Param, unit);
|
||||||
|
|||||||
@@ -160,9 +160,9 @@ namespace Game.Entities
|
|||||||
public bool IsAnyTypeGameObject() { return IsGameObject() || IsMOTransport(); }
|
public bool IsAnyTypeGameObject() { return IsGameObject() || IsMOTransport(); }
|
||||||
public bool IsParty() { return GetHigh() == HighGuid.Party; }
|
public bool IsParty() { return GetHigh() == HighGuid.Party; }
|
||||||
public bool IsGuild() { return GetHigh() == HighGuid.Guild; }
|
public bool IsGuild() { return GetHigh() == HighGuid.Guild; }
|
||||||
bool IsSceneObject() { return GetHigh() == HighGuid.SceneObject; }
|
public bool IsSceneObject() { return GetHigh() == HighGuid.SceneObject; }
|
||||||
bool IsConversation() { return GetHigh() == HighGuid.Conversation; }
|
public bool IsConversation() { return GetHigh() == HighGuid.Conversation; }
|
||||||
bool IsCast() { return GetHigh() == HighGuid.Cast; }
|
public bool IsCast() { return GetHigh() == HighGuid.Cast; }
|
||||||
|
|
||||||
public TypeId GetTypeId() { return GetTypeId(GetHigh()); }
|
public TypeId GetTypeId() { return GetTypeId(GetHigh()); }
|
||||||
bool HasEntry() { return HasEntry(GetHigh()); }
|
bool HasEntry() { return HasEntry(GetHigh()); }
|
||||||
|
|||||||
@@ -2248,7 +2248,7 @@ namespace Game.Entities
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Spell spell = new Spell(this, info, args.TriggerFlags, args.OriginalCaster);
|
Spell spell = new Spell(this, info, args.TriggerFlags, args.OriginalCaster, args.OriginalCastId);
|
||||||
foreach (var pair in args.SpellValueOverrides)
|
foreach (var pair in args.SpellValueOverrides)
|
||||||
spell.SetSpellValue(pair.Key, pair.Value);
|
spell.SetSpellValue(pair.Key, pair.Value);
|
||||||
|
|
||||||
|
|||||||
@@ -706,9 +706,7 @@ namespace Game.Entities
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpell(this, triggerSpell, new CastSpellExtraArgs(effect));
|
||||||
args.TriggeringAura = effect;
|
|
||||||
CastSpell(this, triggerSpell, args);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -570,9 +570,7 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpell(victim, meleeAttackSpellId, new CastSpellExtraArgs(meleeAttackAuraEffect));
|
||||||
args.TriggeringAura = meleeAttackAuraEffect;
|
|
||||||
CastSpell(victim, meleeAttackSpellId, args);
|
|
||||||
|
|
||||||
HitInfo hitInfo = HitInfo.AffectsVictim | HitInfo.NoAnimation;
|
HitInfo hitInfo = HitInfo.AffectsVictim | HitInfo.NoAnimation;
|
||||||
if (attType == WeaponAttackType.OffAttack)
|
if (attType == WeaponAttackType.OffAttack)
|
||||||
|
|||||||
@@ -2920,7 +2920,7 @@ namespace Game.Entities
|
|||||||
if (aura.IsSingleTarget())
|
if (aura.IsSingleTarget())
|
||||||
aura.UnregisterSingleTarget();
|
aura.UnregisterSingleTarget();
|
||||||
|
|
||||||
AuraCreateInfo createInfo = new(aura.GetCastGUID(), aura.GetSpellInfo(), aura.GetCastDifficulty(), effMask, stealer);
|
AuraCreateInfo createInfo = new(aura.GetCastId(), aura.GetSpellInfo(), aura.GetCastDifficulty(), effMask, stealer);
|
||||||
createInfo.SetCasterGUID(aura.GetCasterGUID());
|
createInfo.SetCasterGUID(aura.GetCasterGUID());
|
||||||
createInfo.SetBaseAmount(baseDamage);
|
createInfo.SetBaseAmount(baseDamage);
|
||||||
|
|
||||||
@@ -3903,7 +3903,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
Unit caster = aura.GetCaster();
|
Unit caster = aura.GetCaster();
|
||||||
if (caster && caster.IsTypeId(TypeId.Player))
|
if (caster && caster.IsTypeId(TypeId.Player))
|
||||||
Spell.SendCastResult(caster.ToPlayer(), aura.GetSpellInfo(), aura.GetSpellVisual(), aura.GetCastGUID(), SpellCastResult.AuraBounced);
|
Spell.SendCastResult(caster.ToPlayer(), aura.GetSpellInfo(), aura.GetSpellVisual(), aura.GetCastId(), SpellCastResult.AuraBounced);
|
||||||
}
|
}
|
||||||
|
|
||||||
aura.Remove();
|
aura.Remove();
|
||||||
|
|||||||
@@ -3401,7 +3401,7 @@ namespace Game.Entities
|
|||||||
uint split_absorb = 0;
|
uint split_absorb = 0;
|
||||||
DealDamageMods(damageInfo.GetAttacker(), caster, ref splitDamage, ref split_absorb);
|
DealDamageMods(damageInfo.GetAttacker(), caster, ref splitDamage, ref split_absorb);
|
||||||
|
|
||||||
SpellNonMeleeDamage log = new(damageInfo.GetAttacker(), caster, itr.GetSpellInfo(), itr.GetBase().GetSpellVisual(), damageInfo.GetSchoolMask(), itr.GetBase().GetCastGUID());
|
SpellNonMeleeDamage log = new(damageInfo.GetAttacker(), caster, itr.GetSpellInfo(), itr.GetBase().GetSpellVisual(), damageInfo.GetSchoolMask(), itr.GetBase().GetCastId());
|
||||||
CleanDamage cleanDamage = new(splitDamage, 0, WeaponAttackType.BaseAttack, MeleeHitOutcome.Normal);
|
CleanDamage cleanDamage = new(splitDamage, 0, WeaponAttackType.BaseAttack, MeleeHitOutcome.Normal);
|
||||||
DealDamage(damageInfo.GetAttacker(), caster, splitDamage, cleanDamage, DamageEffectType.Direct, damageInfo.GetSchoolMask(), itr.GetSpellInfo(), false);
|
DealDamage(damageInfo.GetAttacker(), caster, splitDamage, cleanDamage, DamageEffectType.Direct, damageInfo.GetSchoolMask(), itr.GetSpellInfo(), false);
|
||||||
log.damage = splitDamage;
|
log.damage = splitDamage;
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ namespace Game.Spells
|
|||||||
Aura aura = GetBase();
|
Aura aura = GetBase();
|
||||||
|
|
||||||
AuraDataInfo auraData = auraInfo.AuraData.Value;
|
AuraDataInfo auraData = auraInfo.AuraData.Value;
|
||||||
auraData.CastID = aura.GetCastGUID();
|
auraData.CastID = aura.GetCastId();
|
||||||
auraData.SpellID = (int)aura.GetId();
|
auraData.SpellID = (int)aura.GetId();
|
||||||
auraData.Visual= aura.GetSpellVisual();
|
auraData.Visual= aura.GetSpellVisual();
|
||||||
auraData.Flags = GetFlags();
|
auraData.Flags = GetFlags();
|
||||||
@@ -329,7 +329,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
m_spellInfo = createInfo._spellInfo;
|
m_spellInfo = createInfo._spellInfo;
|
||||||
m_castDifficulty = createInfo._castDifficulty;
|
m_castDifficulty = createInfo._castDifficulty;
|
||||||
m_castGuid = createInfo._castId;
|
m_castId = createInfo._castId;
|
||||||
m_casterGuid = createInfo.CasterGUID;
|
m_casterGuid = createInfo.CasterGUID;
|
||||||
m_castItemGuid = createInfo.CastItemGUID;
|
m_castItemGuid = createInfo.CastItemGUID;
|
||||||
m_castItemId = createInfo.CastItemId;
|
m_castItemId = createInfo.CastItemId;
|
||||||
@@ -1212,7 +1212,7 @@ namespace Game.Spells
|
|||||||
else if (spellArea.flags.HasAnyFlag(SpellAreaFlag.AutoCast))
|
else if (spellArea.flags.HasAnyFlag(SpellAreaFlag.AutoCast))
|
||||||
{
|
{
|
||||||
if (!target.HasAura(spellArea.spellId))
|
if (!target.HasAura(spellArea.spellId))
|
||||||
target.CastSpell(target, spellArea.spellId, new CastSpellExtraArgs(true));
|
target.CastSpell(target, spellArea.spellId, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(GetCastId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1246,7 +1246,9 @@ namespace Game.Spells
|
|||||||
if (spell < 0)
|
if (spell < 0)
|
||||||
target.RemoveAurasDueToSpell((uint)-spell);
|
target.RemoveAurasDueToSpell((uint)-spell);
|
||||||
else if (removeMode != AuraRemoveMode.Death)
|
else if (removeMode != AuraRemoveMode.Death)
|
||||||
target.CastSpell(target, (uint)spell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(GetCasterGUID()));
|
target.CastSpell(target, (uint)spell, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCaster(GetCasterGUID())
|
||||||
|
.SetOriginalCastId(GetCastId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spellTriggered = Global.SpellMgr.GetSpellLinked((int)GetId() + (int)SpellLinkedType.Aura);
|
spellTriggered = Global.SpellMgr.GetSpellLinked((int)GetId() + (int)SpellLinkedType.Aura);
|
||||||
@@ -1294,11 +1296,11 @@ namespace Game.Spells
|
|||||||
break;
|
break;
|
||||||
case 33572: // Gronn Lord's Grasp, becomes stoned
|
case 33572: // Gronn Lord's Grasp, becomes stoned
|
||||||
if (GetStackAmount() >= 5 && !target.HasAura(33652))
|
if (GetStackAmount() >= 5 && !target.HasAura(33652))
|
||||||
target.CastSpell(target, 33652, new CastSpellExtraArgs(true));
|
target.CastSpell(target, 33652, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(GetCastId()));
|
||||||
break;
|
break;
|
||||||
case 50836: //Petrifying Grip, becomes stoned
|
case 50836: //Petrifying Grip, becomes stoned
|
||||||
if (GetStackAmount() >= 5 && !target.HasAura(50812))
|
if (GetStackAmount() >= 5 && !target.HasAura(50812))
|
||||||
target.CastSpell(target, 50812, new CastSpellExtraArgs(true));
|
target.CastSpell(target, 50812, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(GetCastId()));
|
||||||
break;
|
break;
|
||||||
case 60970: // Heroic Fury (remove Intercept cooldown)
|
case 60970: // Heroic Fury (remove Intercept cooldown)
|
||||||
if (target.IsTypeId(TypeId.Player))
|
if (target.IsTypeId(TypeId.Player))
|
||||||
@@ -1371,6 +1373,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
float multiplier = aurEff.GetAmount();
|
float multiplier = aurEff.GetAmount();
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
|
args.SetOriginalCastId(GetCastId());
|
||||||
args.AddSpellMod(SpellValueMod.BasePoint0, MathFunctions.CalculatePct(caster.GetMaxPower(PowerType.Mana), multiplier));
|
args.AddSpellMod(SpellValueMod.BasePoint0, MathFunctions.CalculatePct(caster.GetMaxPower(PowerType.Mana), multiplier));
|
||||||
caster.CastSpell(caster, 47755, args);
|
caster.CastSpell(caster, 47755, args);
|
||||||
}
|
}
|
||||||
@@ -1433,7 +1436,7 @@ namespace Game.Spells
|
|||||||
if (target.HasAura(70755))
|
if (target.HasAura(70755))
|
||||||
{
|
{
|
||||||
if (apply)
|
if (apply)
|
||||||
target.CastSpell(target, 71166, new CastSpellExtraArgs(true));
|
target.CastSpell(target, 71166, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(GetCastId()));
|
||||||
else
|
else
|
||||||
target.RemoveAurasDueToSpell(71166);
|
target.RemoveAurasDueToSpell(71166);
|
||||||
}
|
}
|
||||||
@@ -2280,7 +2283,7 @@ namespace Game.Spells
|
|||||||
public SpellInfo GetSpellInfo() { return m_spellInfo; }
|
public SpellInfo GetSpellInfo() { return m_spellInfo; }
|
||||||
public uint GetId() { return m_spellInfo.Id; }
|
public uint GetId() { return m_spellInfo.Id; }
|
||||||
public Difficulty GetCastDifficulty() { return m_castDifficulty; }
|
public Difficulty GetCastDifficulty() { return m_castDifficulty; }
|
||||||
public ObjectGuid GetCastGUID() { return m_castGuid; }
|
public ObjectGuid GetCastId() { return m_castId; }
|
||||||
public ObjectGuid GetCasterGUID() { return m_casterGuid; }
|
public ObjectGuid GetCasterGUID() { return m_casterGuid; }
|
||||||
public ObjectGuid GetCastItemGUID() { return m_castItemGuid; }
|
public ObjectGuid GetCastItemGUID() { return m_castItemGuid; }
|
||||||
public uint GetCastItemId() { return m_castItemId; }
|
public uint GetCastItemId() { return m_castItemId; }
|
||||||
@@ -2553,7 +2556,7 @@ namespace Game.Spells
|
|||||||
List<AuraScript> m_loadedScripts = new();
|
List<AuraScript> m_loadedScripts = new();
|
||||||
SpellInfo m_spellInfo;
|
SpellInfo m_spellInfo;
|
||||||
Difficulty m_castDifficulty;
|
Difficulty m_castDifficulty;
|
||||||
ObjectGuid m_castGuid;
|
ObjectGuid m_castId;
|
||||||
ObjectGuid m_casterGuid;
|
ObjectGuid m_casterGuid;
|
||||||
ObjectGuid m_castItemGuid;
|
ObjectGuid m_castItemGuid;
|
||||||
uint m_castItemId;
|
uint m_castItemId;
|
||||||
|
|||||||
@@ -2117,7 +2117,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
var mountCapability = CliDB.MountCapabilityStorage.LookupByKey(GetAmount());
|
var mountCapability = CliDB.MountCapabilityStorage.LookupByKey(GetAmount());
|
||||||
if (mountCapability != null)
|
if (mountCapability != null)
|
||||||
target.CastSpell(target, mountCapability.ModSpellAuraID, new CastSpellExtraArgs(true));
|
target.CastSpell(target, mountCapability.ModSpellAuraID, new CastSpellExtraArgs(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -4270,14 +4270,14 @@ namespace Game.Spells
|
|||||||
break;
|
break;
|
||||||
case 91604: // Restricted Flight Area
|
case 91604: // Restricted Flight Area
|
||||||
if (aurApp.GetRemoveMode() == AuraRemoveMode.Expire)
|
if (aurApp.GetRemoveMode() == AuraRemoveMode.Expire)
|
||||||
target.CastSpell(target, 58601, new CastSpellExtraArgs(true));
|
target.CastSpell(target, 58601, new CastSpellExtraArgs(this));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SpellFamilyNames.Deathknight:
|
case SpellFamilyNames.Deathknight:
|
||||||
// Summon Gargoyle (Dismiss Gargoyle at remove)
|
// Summon Gargoyle (Dismiss Gargoyle at remove)
|
||||||
if (GetId() == 61777)
|
if (GetId() == 61777)
|
||||||
target.CastSpell(target, (uint)GetAmount(), new CastSpellExtraArgs(true));
|
target.CastSpell(target, (uint)GetAmount(), new CastSpellExtraArgs(this));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -4309,7 +4309,8 @@ namespace Game.Spells
|
|||||||
CastSpellExtraArgs args = new();
|
CastSpellExtraArgs args = new();
|
||||||
args.TriggerFlags = TriggerCastFlags.FullMask;
|
args.TriggerFlags = TriggerCastFlags.FullMask;
|
||||||
args.OriginalCaster = GetCasterGUID();
|
args.OriginalCaster = GetCasterGUID();
|
||||||
args.CastDifficulty = spell.Difficulty;
|
args.OriginalCastId = GetBase().GetCastId();
|
||||||
|
args.CastDifficulty = GetBase().GetCastDifficulty();
|
||||||
|
|
||||||
for (uint i = 0; i < spell.StackAmount; ++i)
|
for (uint i = 0; i < spell.StackAmount; ++i)
|
||||||
caster.CastSpell(target, spell.Id, args);
|
caster.CastSpell(target, spell.Id, args);
|
||||||
@@ -4327,7 +4328,8 @@ namespace Game.Spells
|
|||||||
SpellInfo spell = Global.SpellMgr.GetSpellInfo(spellId, GetBase().GetCastDifficulty());
|
SpellInfo spell = Global.SpellMgr.GetSpellInfo(spellId, GetBase().GetCastDifficulty());
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
args.OriginalCaster = GetCasterGUID();
|
args.OriginalCaster = GetCasterGUID();
|
||||||
args.CastDifficulty = spell.Difficulty;
|
args.OriginalCastId = GetBase().GetCastId();
|
||||||
|
args.CastDifficulty = GetBase().GetCastDifficulty();
|
||||||
|
|
||||||
for (uint i = 0; i < spell.StackAmount; ++i)
|
for (uint i = 0; i < spell.StackAmount; ++i)
|
||||||
caster.CastSpell(target, spell.Id, args);
|
caster.CastSpell(target, spell.Id, args);
|
||||||
@@ -4383,7 +4385,7 @@ namespace Game.Spells
|
|||||||
target.PlayDirectSound(14970, target.ToPlayer());
|
target.PlayDirectSound(14970, target.ToPlayer());
|
||||||
// continue in 58205
|
// continue in 58205
|
||||||
else
|
else
|
||||||
target.CastSpell(target, 58205, new CastSpellExtraArgs(true));
|
target.CastSpell(target, 58205, new CastSpellExtraArgs(this));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// LK Intro VO (2)
|
// LK Intro VO (2)
|
||||||
@@ -4645,7 +4647,7 @@ namespace Game.Spells
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
target.CastSpell(target, triggerSpell, new CastSpellExtraArgs(true));
|
target.CastSpell(target, triggerSpell, new CastSpellExtraArgs(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
[AuraEffectHandler(AuraType.TriggerSpellOnPowerAmount)]
|
[AuraEffectHandler(AuraType.TriggerSpellOnPowerAmount)]
|
||||||
@@ -4674,7 +4676,7 @@ namespace Game.Spells
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
target.CastSpell(target, triggerSpell, new CastSpellExtraArgs(true));
|
target.CastSpell(target, triggerSpell, new CastSpellExtraArgs(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
[AuraEffectHandler(AuraType.OpenStable)]
|
[AuraEffectHandler(AuraType.OpenStable)]
|
||||||
@@ -5066,7 +5068,7 @@ namespace Game.Spells
|
|||||||
uint resist = damageInfo.GetResist();
|
uint resist = damageInfo.GetResist();
|
||||||
|
|
||||||
// SendSpellNonMeleeDamageLog expects non-absorbed/non-resisted damage
|
// SendSpellNonMeleeDamageLog expects non-absorbed/non-resisted damage
|
||||||
SpellNonMeleeDamage log = new(caster, target, GetSpellInfo(), GetBase().GetSpellVisual(), GetSpellInfo().GetSchoolMask(), GetBase().GetCastGUID());
|
SpellNonMeleeDamage log = new(caster, target, GetSpellInfo(), GetBase().GetSpellVisual(), GetSpellInfo().GetSchoolMask(), GetBase().GetCastId());
|
||||||
log.damage = damage;
|
log.damage = damage;
|
||||||
log.originalDamage = (uint)dmg;
|
log.originalDamage = (uint)dmg;
|
||||||
log.absorb = absorb;
|
log.absorb = absorb;
|
||||||
@@ -5338,7 +5340,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
SpellInfo spellProto = GetSpellInfo();
|
SpellInfo spellProto = GetSpellInfo();
|
||||||
// maybe has to be sent different to client, but not by SMSG_PERIODICAURALOG
|
// maybe has to be sent different to client, but not by SMSG_PERIODICAURALOG
|
||||||
SpellNonMeleeDamage damageInfo = new(caster, target, spellProto, GetBase().GetSpellVisual(), spellProto.SchoolMask, GetBase().GetCastGUID());
|
SpellNonMeleeDamage damageInfo = new(caster, target, spellProto, GetBase().GetSpellVisual(), spellProto.SchoolMask, GetBase().GetCastId());
|
||||||
// no SpellDamageBonus for burn mana
|
// no SpellDamageBonus for burn mana
|
||||||
caster.CalculateSpellDamageTaken(damageInfo, (int)(gain * dmgMultiplier), spellProto);
|
caster.CalculateSpellDamageTaken(damageInfo, (int)(gain * dmgMultiplier), spellProto);
|
||||||
|
|
||||||
@@ -5438,7 +5440,7 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SpellNonMeleeDamage damageInfo = new(target, triggerTarget, GetSpellInfo(), GetBase().GetSpellVisual(), GetSpellInfo().SchoolMask, GetBase().GetCastGUID());
|
SpellNonMeleeDamage damageInfo = new(target, triggerTarget, GetSpellInfo(), GetBase().GetSpellVisual(), GetSpellInfo().SchoolMask, GetBase().GetCastId());
|
||||||
int damage = (int)target.SpellDamageBonusDone(triggerTarget, GetSpellInfo(), (uint)GetAmount(), DamageEffectType.SpellDirect, GetSpellEffectInfo());
|
int damage = (int)target.SpellDamageBonusDone(triggerTarget, GetSpellInfo(), (uint)GetAmount(), DamageEffectType.SpellDirect, GetSpellEffectInfo());
|
||||||
damage = (int)triggerTarget.SpellDamageBonusTaken(target, GetSpellInfo(), (uint)damage, DamageEffectType.SpellDirect);
|
damage = (int)triggerTarget.SpellDamageBonusTaken(target, GetSpellInfo(), (uint)damage, DamageEffectType.SpellDirect);
|
||||||
target.CalculateSpellDamageTaken(damageInfo, damage, GetSpellInfo());
|
target.CalculateSpellDamageTaken(damageInfo, damage, GetSpellInfo());
|
||||||
@@ -5615,8 +5617,7 @@ namespace Game.Spells
|
|||||||
// on apply cast summon spell
|
// on apply cast summon spell
|
||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(this);
|
||||||
args.TriggeringAura = this;
|
|
||||||
args.CastDifficulty = triggerSpellInfo.Difficulty;
|
args.CastDifficulty = triggerSpellInfo.Difficulty;
|
||||||
target.CastSpell(target, triggerSpellInfo.Id, args);
|
target.CastSpell(target, triggerSpellInfo.Id, args);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,13 +36,14 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
public partial class Spell : IDisposable
|
public partial class Spell : IDisposable
|
||||||
{
|
{
|
||||||
public Spell(WorldObject caster, SpellInfo info, TriggerCastFlags triggerFlags, ObjectGuid originalCasterGUID = default)
|
public Spell(WorldObject caster, SpellInfo info, TriggerCastFlags triggerFlags, ObjectGuid originalCasterGUID = default, ObjectGuid originalCastId = default)
|
||||||
{
|
{
|
||||||
m_spellInfo = info;
|
m_spellInfo = info;
|
||||||
m_caster = (info.HasAttribute(SpellAttr6.CastByCharmer) && caster.GetCharmerOrOwner() != null ? caster.GetCharmerOrOwner() : caster);
|
m_caster = (info.HasAttribute(SpellAttr6.CastByCharmer) && caster.GetCharmerOrOwner() != null ? caster.GetCharmerOrOwner() : caster);
|
||||||
m_spellValue = new SpellValue(m_spellInfo, caster);
|
m_spellValue = new SpellValue(m_spellInfo, caster);
|
||||||
m_castItemLevel = -1;
|
m_castItemLevel = -1;
|
||||||
m_castId = ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, m_caster.GetMapId(), m_spellInfo.Id, m_caster.GetMap().GenerateLowGuid(HighGuid.Cast));
|
m_castId = ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, m_caster.GetMapId(), m_spellInfo.Id, m_caster.GetMap().GenerateLowGuid(HighGuid.Cast));
|
||||||
|
m_originalCastId = originalCastId;
|
||||||
m_SpellVisual.SpellXSpellVisualID = caster.GetCastSpellXSpellVisualId(m_spellInfo);
|
m_SpellVisual.SpellXSpellVisualID = caster.GetCastSpellXSpellVisualId(m_spellInfo);
|
||||||
|
|
||||||
m_customError = SpellCustomErrors.None;
|
m_customError = SpellCustomErrors.None;
|
||||||
@@ -2106,7 +2107,9 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
if (CanExecuteTriggersOnHit(effMask, hit.triggeredByAura) && RandomHelper.randChance(hit.chance))
|
if (CanExecuteTriggersOnHit(effMask, hit.triggeredByAura) && RandomHelper.randChance(hit.chance))
|
||||||
{
|
{
|
||||||
m_caster.CastSpell(unit, hit.triggeredSpell.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetCastDifficulty(hit.triggeredSpell.Difficulty));
|
m_caster.CastSpell(unit, hit.triggeredSpell.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId)
|
||||||
|
.SetCastDifficulty(hit.triggeredSpell.Difficulty));
|
||||||
Log.outDebug(LogFilter.Spells, "Spell {0} triggered spell {1} by SPELL_AURA_ADD_TARGET_TRIGGER aura", m_spellInfo.Id, hit.triggeredSpell.Id);
|
Log.outDebug(LogFilter.Spells, "Spell {0} triggered spell {1} by SPELL_AURA_ADD_TARGET_TRIGGER aura", m_spellInfo.Id, hit.triggeredSpell.Id);
|
||||||
|
|
||||||
// SPELL_AURA_ADD_TARGET_TRIGGER auras shouldn't trigger auras without duration
|
// SPELL_AURA_ADD_TARGET_TRIGGER auras shouldn't trigger auras without duration
|
||||||
@@ -2139,7 +2142,7 @@ namespace Game.Spells
|
|||||||
if (id < 0)
|
if (id < 0)
|
||||||
unit.RemoveAurasDueToSpell((uint)-id);
|
unit.RemoveAurasDueToSpell((uint)-id);
|
||||||
else
|
else
|
||||||
unit.CastSpell(unit, (uint)id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_caster.GetGUID()));
|
unit.CastSpell(unit, (uint)id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_caster.GetGUID()).SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2727,7 +2730,7 @@ namespace Game.Spells
|
|||||||
unitCaster.RemoveAurasDueToSpell((uint)-spellId);
|
unitCaster.RemoveAurasDueToSpell((uint)-spellId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_caster.CastSpell(m_targets.GetUnitTarget() ?? m_caster, (uint)spellId, new CastSpellExtraArgs(true));
|
m_caster.CastSpell(m_targets.GetUnitTarget() ?? m_caster, (uint)spellId, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5027,7 +5030,11 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
Pet pet = unitCaster.ToPlayer().GetPet();
|
Pet pet = unitCaster.ToPlayer().GetPet();
|
||||||
if (pet != null)
|
if (pet != null)
|
||||||
pet.CastSpell(pet, 32752, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(pet.GetGUID()));
|
{
|
||||||
|
pet.CastSpell(pet, 32752, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCaster(pet.GetGUID())
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!m_spellInfo.HasAttribute(SpellAttr1.DismissPet))
|
else if (!m_spellInfo.HasAttribute(SpellAttr1.DismissPet))
|
||||||
@@ -6058,7 +6065,7 @@ namespace Game.Spells
|
|||||||
return SpellCastResult.DontReport;
|
return SpellCastResult.DontReport;
|
||||||
}
|
}
|
||||||
else if (m_spellInfo.GetEffects().Count > 1)
|
else if (m_spellInfo.GetEffects().Count > 1)
|
||||||
player.CastSpell(m_caster, (uint)m_spellInfo.GetEffect(1).CalcValue(), new CastSpellExtraArgs(false)); // move this to anywhere
|
player.CastSpell(m_caster, (uint)m_spellInfo.GetEffect(1).CalcValue(), new CastSpellExtraArgs().SetOriginalCastId(m_castId)); // move this to anywhere
|
||||||
return SpellCastResult.DontReport;
|
return SpellCastResult.DontReport;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7389,7 +7396,7 @@ namespace Game.Spells
|
|||||||
public bool m_fromClient;
|
public bool m_fromClient;
|
||||||
public SpellCastFlagsEx m_castFlagsEx;
|
public SpellCastFlagsEx m_castFlagsEx;
|
||||||
public SpellMisc m_misc;
|
public SpellMisc m_misc;
|
||||||
public Networking.Packets.SpellCastVisual m_SpellVisual;
|
public SpellCastVisual m_SpellVisual;
|
||||||
public SpellCastTargets m_targets;
|
public SpellCastTargets m_targets;
|
||||||
public sbyte m_comboPointGain;
|
public sbyte m_comboPointGain;
|
||||||
public SpellCustomErrors m_customError;
|
public SpellCustomErrors m_customError;
|
||||||
@@ -7947,7 +7954,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
// Check for SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER
|
// Check for SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER
|
||||||
if (MissCondition == SpellMissInfo.None && spell.m_spellInfo.HasAttribute(SpellAttr7.InterruptOnlyNonplayer) && !unit.IsPlayer())
|
if (MissCondition == SpellMissInfo.None && spell.m_spellInfo.HasAttribute(SpellAttr7.InterruptOnlyNonplayer) && !unit.IsPlayer())
|
||||||
caster.CastSpell(unit, 32747, true);
|
caster.CastSpell(unit, 32747, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(spell.m_castId));
|
||||||
|
|
||||||
if (_spellHitTarget)
|
if (_spellHitTarget)
|
||||||
{
|
{
|
||||||
@@ -8481,9 +8488,11 @@ namespace Game.Spells
|
|||||||
public AuraEffect TriggeringAura;
|
public AuraEffect TriggeringAura;
|
||||||
public ObjectGuid OriginalCaster = ObjectGuid.Empty;
|
public ObjectGuid OriginalCaster = ObjectGuid.Empty;
|
||||||
public Difficulty CastDifficulty;
|
public Difficulty CastDifficulty;
|
||||||
|
public ObjectGuid OriginalCastId = ObjectGuid.Empty;
|
||||||
public Dictionary<SpellValueMod, int> SpellValueOverrides = new();
|
public Dictionary<SpellValueMod, int> SpellValueOverrides = new();
|
||||||
|
|
||||||
public CastSpellExtraArgs() { }
|
public CastSpellExtraArgs() { }
|
||||||
|
|
||||||
public CastSpellExtraArgs(bool triggered)
|
public CastSpellExtraArgs(bool triggered)
|
||||||
{
|
{
|
||||||
TriggerFlags = triggered ? TriggerCastFlags.FullMask : TriggerCastFlags.None;
|
TriggerFlags = triggered ? TriggerCastFlags.FullMask : TriggerCastFlags.None;
|
||||||
@@ -8503,7 +8512,7 @@ namespace Game.Spells
|
|||||||
public CastSpellExtraArgs(AuraEffect eff)
|
public CastSpellExtraArgs(AuraEffect eff)
|
||||||
{
|
{
|
||||||
TriggerFlags = TriggerCastFlags.FullMask;
|
TriggerFlags = TriggerCastFlags.FullMask;
|
||||||
TriggeringAura = eff;
|
SetTriggeringAura(eff);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CastSpellExtraArgs(Difficulty castDifficulty)
|
public CastSpellExtraArgs(Difficulty castDifficulty)
|
||||||
@@ -8521,26 +8530,40 @@ namespace Game.Spells
|
|||||||
TriggerFlags = flag;
|
TriggerFlags = flag;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CastSpellExtraArgs SetCastItem(Item item)
|
public CastSpellExtraArgs SetCastItem(Item item)
|
||||||
{
|
{
|
||||||
CastItem = item;
|
CastItem = item;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CastSpellExtraArgs SetTriggeringAura(AuraEffect triggeringAura)
|
public CastSpellExtraArgs SetTriggeringAura(AuraEffect triggeringAura)
|
||||||
{
|
{
|
||||||
TriggeringAura = triggeringAura;
|
TriggeringAura = triggeringAura;
|
||||||
|
if (triggeringAura != null)
|
||||||
|
OriginalCastId = triggeringAura.GetBase().GetCastId();
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CastSpellExtraArgs SetOriginalCaster(ObjectGuid guid)
|
public CastSpellExtraArgs SetOriginalCaster(ObjectGuid guid)
|
||||||
{
|
{
|
||||||
OriginalCaster = guid;
|
OriginalCaster = guid;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CastSpellExtraArgs SetCastDifficulty(Difficulty castDifficulty)
|
public CastSpellExtraArgs SetCastDifficulty(Difficulty castDifficulty)
|
||||||
{
|
{
|
||||||
CastDifficulty = castDifficulty;
|
CastDifficulty = castDifficulty;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CastSpellExtraArgs SetOriginalCastId(ObjectGuid castId)
|
||||||
|
{
|
||||||
|
OriginalCastId = castId;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public CastSpellExtraArgs AddSpellMod(SpellValueMod mod, int val)
|
public CastSpellExtraArgs AddSpellMod(SpellValueMod mod, int val)
|
||||||
{
|
{
|
||||||
SpellValueOverrides.Add(mod, val);
|
SpellValueOverrides.Add(mod, val);
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ namespace Game.Spells
|
|||||||
unitTarget.RemoveAurasByType(AuraType.ModStun);
|
unitTarget.RemoveAurasByType(AuraType.ModStun);
|
||||||
|
|
||||||
// Cast Lesser Invisibility
|
// Cast Lesser Invisibility
|
||||||
unitTarget.CastSpell(unitTarget, 7870, true);
|
unitTarget.CastSpell(unitTarget, 7870, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Brittle Armor - (need add max stack of 24575 Brittle Armor)
|
// Brittle Armor - (need add max stack of 24575 Brittle Armor)
|
||||||
@@ -301,7 +301,7 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for (uint j = 0; j < spell.StackAmount; ++j)
|
for (uint j = 0; j < spell.StackAmount; ++j)
|
||||||
m_caster.CastSpell(unitTarget, spell.Id, true);
|
m_caster.CastSpell(unitTarget, spell.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Mercurial Shield - (need add max stack of 26464 Mercurial Shield)
|
// Mercurial Shield - (need add max stack of 26464 Mercurial Shield)
|
||||||
@@ -313,7 +313,7 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for (uint j = 0; j < spell.StackAmount; ++j)
|
for (uint j = 0; j < spell.StackAmount; ++j)
|
||||||
m_caster.CastSpell(unitTarget, spell.Id, true);
|
m_caster.CastSpell(unitTarget, spell.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -361,6 +361,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
args.SetOriginalCaster(m_originalCasterGUID);
|
args.SetOriginalCaster(m_originalCasterGUID);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
// set basepoints for trigger with value effect
|
// set basepoints for trigger with value effect
|
||||||
if (effectInfo.Effect == SpellEffectName.TriggerSpellWithValue)
|
if (effectInfo.Effect == SpellEffectName.TriggerSpellWithValue)
|
||||||
for (int i = 0; i < SpellConst.MaxEffects; ++i)
|
for (int i = 0; i < SpellConst.MaxEffects; ++i)
|
||||||
@@ -416,6 +417,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
args.SetOriginalCaster(m_originalCasterGUID);
|
args.SetOriginalCaster(m_originalCasterGUID);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
// set basepoints for trigger with value effect
|
// set basepoints for trigger with value effect
|
||||||
if (effectInfo.Effect == SpellEffectName.TriggerMissileSpellWithValue)
|
if (effectInfo.Effect == SpellEffectName.TriggerMissileSpellWithValue)
|
||||||
for (int i = 0; i < SpellConst.MaxEffects; ++i)
|
for (int i = 0; i < SpellConst.MaxEffects; ++i)
|
||||||
@@ -459,6 +461,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
CastSpellExtraArgs args1 = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args1 = new(TriggerCastFlags.FullMask);
|
||||||
args1.SetOriginalCaster(m_originalCasterGUID);
|
args1.SetOriginalCaster(m_originalCasterGUID);
|
||||||
|
args1.SetOriginalCastId(m_castId);
|
||||||
args1.AddSpellMod(SpellValueMod.BasePoint0, damage);
|
args1.AddSpellMod(SpellValueMod.BasePoint0, damage);
|
||||||
unitTarget.CastSpell(unitTarget, spellInfo.Id, args1);
|
unitTarget.CastSpell(unitTarget, spellInfo.Id, args1);
|
||||||
return;
|
return;
|
||||||
@@ -469,11 +472,14 @@ namespace Game.Spells
|
|||||||
switch (spellInfo.Id)
|
switch (spellInfo.Id)
|
||||||
{
|
{
|
||||||
case 72298: // Malleable Goo Summon
|
case 72298: // Malleable Goo Summon
|
||||||
unitTarget.CastSpell(unitTarget, spellInfo.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_originalCasterGUID));
|
unitTarget.CastSpell(unitTarget, spellInfo.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCaster(m_originalCasterGUID)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
// set basepoints for trigger with value effect
|
// set basepoints for trigger with value effect
|
||||||
if (effectInfo.Effect == SpellEffectName.ForceCastWithValue)
|
if (effectInfo.Effect == SpellEffectName.ForceCastWithValue)
|
||||||
for (int i = 0; i < SpellConst.MaxEffects; ++i)
|
for (int i = 0; i < SpellConst.MaxEffects; ++i)
|
||||||
@@ -498,7 +504,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
Finish();
|
Finish();
|
||||||
|
|
||||||
m_caster.CastSpell((Unit)null, spellInfo.Id, new CastSpellExtraArgs(false));
|
m_caster.CastSpell((Unit)null, spellInfo.Id, new CastSpellExtraArgs().SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CalculateJumpSpeeds(SpellEffectInfo effInfo, float dist, out float speedXY, out float speedZ)
|
void CalculateJumpSpeeds(SpellEffectInfo effInfo, float dist, out float speedXY, out float speedZ)
|
||||||
@@ -611,9 +617,9 @@ namespace Game.Spells
|
|||||||
if (r >= 70) // 7/12 success
|
if (r >= 70) // 7/12 success
|
||||||
{
|
{
|
||||||
if (r < 100) // 4/12 evil twin
|
if (r < 100) // 4/12 evil twin
|
||||||
m_caster.CastSpell(m_caster, 23445, true);
|
m_caster.CastSpell(m_caster, 23445, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
else // 1/12 fire
|
else // 1/12 fire
|
||||||
m_caster.CastSpell(m_caster, 23449, true);
|
m_caster.CastSpell(m_caster, 23449, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -627,36 +633,44 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
// soul split - evil
|
// soul split - evil
|
||||||
m_caster.CastSpell(m_caster, 36900, true);
|
m_caster.CastSpell(m_caster, 36900, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// soul split - good
|
// soul split - good
|
||||||
m_caster.CastSpell(m_caster, 36901, true);
|
m_caster.CastSpell(m_caster, 36901, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
// Increase the size
|
// Increase the size
|
||||||
m_caster.CastSpell(m_caster, 36895, true);
|
m_caster.CastSpell(m_caster, 36895, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
// Decrease the size
|
// Decrease the size
|
||||||
m_caster.CastSpell(m_caster, 36893, true);
|
m_caster.CastSpell(m_caster, 36893, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
// Transform
|
// Transform
|
||||||
{
|
{
|
||||||
if (m_caster.ToPlayer().GetTeam() == Team.Alliance)
|
if (m_caster.ToPlayer().GetTeam() == Team.Alliance)
|
||||||
m_caster.CastSpell(m_caster, 36897, true);
|
m_caster.CastSpell(m_caster, 36897, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
else
|
else
|
||||||
m_caster.CastSpell(m_caster, 36899, true);
|
m_caster.CastSpell(m_caster, 36899, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6:
|
case 6:
|
||||||
// chicken
|
// chicken
|
||||||
m_caster.CastSpell(m_caster, 36940, true);
|
m_caster.CastSpell(m_caster, 36940, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
// evil twin
|
// evil twin
|
||||||
m_caster.CastSpell(m_caster, 23445, true);
|
m_caster.CastSpell(m_caster, 23445, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -672,23 +686,23 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
// soul split - evil
|
// soul split - evil
|
||||||
m_caster.CastSpell(m_caster, 36900, true);
|
m_caster.CastSpell(m_caster, 36900, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// soul split - good
|
// soul split - good
|
||||||
m_caster.CastSpell(m_caster, 36901, true);
|
m_caster.CastSpell(m_caster, 36901, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
// Increase the size
|
// Increase the size
|
||||||
m_caster.CastSpell(m_caster, 36895, true);
|
m_caster.CastSpell(m_caster, 36895, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
// Transform
|
// Transform
|
||||||
{
|
{
|
||||||
if (m_caster.ToPlayer().GetTeam() == Team.Alliance)
|
if (m_caster.ToPlayer().GetTeam() == Team.Alliance)
|
||||||
m_caster.CastSpell(m_caster, 36897, true);
|
m_caster.CastSpell(m_caster, 36897, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
else
|
else
|
||||||
m_caster.CastSpell(m_caster, 36899, true);
|
m_caster.CastSpell(m_caster, 36899, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1761,6 +1775,7 @@ namespace Game.Spells
|
|||||||
}
|
}
|
||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
|
|
||||||
// if we have small value, it indicates seat position
|
// if we have small value, it indicates seat position
|
||||||
if (basePoints > 0 && basePoints < SharedConst.MaxVehicleSeats)
|
if (basePoints > 0 && basePoints < SharedConst.MaxVehicleSeats)
|
||||||
@@ -2744,7 +2759,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
uint spell_id = RandomHelper.Rand32(20) != 0 ? 8854u : 8855u;
|
uint spell_id = RandomHelper.Rand32(20) != 0 ? 8854u : 8855u;
|
||||||
|
|
||||||
m_caster.CastSpell(m_caster, spell_id, new CastSpellExtraArgs(true));
|
m_caster.CastSpell(m_caster, spell_id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Brittle Armor - need remove one 24575 Brittle Armor aura
|
// Brittle Armor - need remove one 24575 Brittle Armor aura
|
||||||
@@ -2778,7 +2793,7 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Shadow Flame
|
// Shadow Flame
|
||||||
m_caster.CastSpell(unitTarget, 22682, new CastSpellExtraArgs(true));
|
m_caster.CastSpell(unitTarget, 22682, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Mirren's Drinking Hat
|
// Mirren's Drinking Hat
|
||||||
@@ -2850,7 +2865,7 @@ namespace Game.Spells
|
|||||||
if (m_caster.ToPlayer().GetItemByPos(bag, slot).GetCount() == 1) m_caster.ToPlayer().RemoveItem(bag, slot, true);
|
if (m_caster.ToPlayer().GetItemByPos(bag, slot).GetCount() == 1) m_caster.ToPlayer().RemoveItem(bag, slot, true);
|
||||||
else m_caster.ToPlayer().GetItemByPos(bag, slot).SetCount(m_caster.ToPlayer().GetItemByPos(bag, slot).GetCount() - 1);
|
else m_caster.ToPlayer().GetItemByPos(bag, slot).SetCount(m_caster.ToPlayer().GetItemByPos(bag, slot).GetCount() - 1);
|
||||||
// Spell 42518 (Braufest - Gratisprobe des Braufest herstellen)
|
// Spell 42518 (Braufest - Gratisprobe des Braufest herstellen)
|
||||||
m_caster.CastSpell(m_caster, 42518, new CastSpellExtraArgs(true));
|
m_caster.CastSpell(m_caster, 42518, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2862,7 +2877,7 @@ namespace Game.Spells
|
|||||||
//Workaround for Range ... should be global for every ScriptEffect
|
//Workaround for Range ... should be global for every ScriptEffect
|
||||||
float radius = effectInfo.CalcRadius();
|
float radius = effectInfo.CalcRadius();
|
||||||
if (unitTarget != null && unitTarget.IsTypeId(TypeId.Player) && unitTarget.GetDistance(m_caster) >= radius && !unitTarget.HasAura(46394) && unitTarget != m_caster)
|
if (unitTarget != null && unitTarget.IsTypeId(TypeId.Player) && unitTarget.GetDistance(m_caster) >= radius && !unitTarget.HasAura(46394) && unitTarget != m_caster)
|
||||||
unitTarget.CastSpell(unitTarget, 46394, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(unitTarget, 46394, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2880,7 +2895,7 @@ namespace Game.Spells
|
|||||||
case 2: spellId = 46738; break;
|
case 2: spellId = 46738; break;
|
||||||
case 3: spellId = 46736; break;
|
case 3: spellId = 46736; break;
|
||||||
}
|
}
|
||||||
unitTarget.CastSpell(unitTarget, spellId, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(unitTarget, spellId, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 5, 000 Gold
|
// 5, 000 Gold
|
||||||
@@ -2925,7 +2940,7 @@ namespace Game.Spells
|
|||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
|
|
||||||
unitTarget.CastSpell(unitTarget, iTmpSpellId, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(unitTarget, iTmpSpellId, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
Creature npc = unitTarget.ToCreature();
|
Creature npc = unitTarget.ToCreature();
|
||||||
npc.LoadEquipment();
|
npc.LoadEquipment();
|
||||||
return;
|
return;
|
||||||
@@ -2947,9 +2962,9 @@ namespace Game.Spells
|
|||||||
if (unitTarget == null)
|
if (unitTarget == null)
|
||||||
return;
|
return;
|
||||||
if (unitTarget.HasAura(51845))
|
if (unitTarget.HasAura(51845))
|
||||||
unitTarget.CastSpell(m_caster, 51856, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(m_caster, 51856, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
else
|
else
|
||||||
m_caster.CastSpell(unitTarget, 51855, new CastSpellExtraArgs(true));
|
m_caster.CastSpell(unitTarget, 51855, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Summon Ghouls On Scarlet Crusade
|
// Summon Ghouls On Scarlet Crusade
|
||||||
@@ -2963,7 +2978,7 @@ namespace Game.Spells
|
|||||||
for (byte i = 0; i < 15; ++i)
|
for (byte i = 0; i < 15; ++i)
|
||||||
{
|
{
|
||||||
m_caster.GetRandomPoint(destTarget, radius, out x, out y, out z);
|
m_caster.GetRandomPoint(destTarget, radius, out x, out y, out z);
|
||||||
m_caster.CastSpell(new Position(x, y, z), 54522, new CastSpellExtraArgs(true));
|
m_caster.CastSpell(new Position(x, y, z), 54522, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2974,11 +2989,11 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
case 52479: // Gift of the Harvester
|
case 52479: // Gift of the Harvester
|
||||||
if (unitTarget != null && unitCaster != null)
|
if (unitTarget != null && unitCaster != null)
|
||||||
unitCaster.CastSpell(unitTarget, Convert.ToBoolean(RandomHelper.IRand(0, 1)) ? (uint)damage : 52505, new CastSpellExtraArgs(true));
|
unitCaster.CastSpell(unitTarget, Convert.ToBoolean(RandomHelper.IRand(0, 1)) ? (uint)damage : 52505, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
case 53110: // Devour Humanoid
|
case 53110: // Devour Humanoid
|
||||||
if (unitTarget != null)
|
if (unitTarget != null)
|
||||||
unitTarget.CastSpell(m_caster, (uint)damage, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(m_caster, (uint)damage, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
return;
|
return;
|
||||||
case 57347: // Retrieving (Wintergrasp RP-GG pickup spell)
|
case 57347: // Retrieving (Wintergrasp RP-GG pickup spell)
|
||||||
{
|
{
|
||||||
@@ -3009,7 +3024,7 @@ namespace Game.Spells
|
|||||||
uint questID = (uint)m_spellInfo.GetEffect(1).CalcValue();
|
uint questID = (uint)m_spellInfo.GetEffect(1).CalcValue();
|
||||||
|
|
||||||
if (unitTarget.ToPlayer().GetQuestStatus(questID) == QuestStatus.Complete)
|
if (unitTarget.ToPlayer().GetQuestStatus(questID) == QuestStatus.Complete)
|
||||||
unitTarget.CastSpell(unitTarget, spellID, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(unitTarget, spellID, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3041,10 +3056,10 @@ namespace Game.Spells
|
|||||||
|
|
||||||
// return from top
|
// return from top
|
||||||
if (unitTarget.ToPlayer().GetAreaId() == 4637)
|
if (unitTarget.ToPlayer().GetAreaId() == 4637)
|
||||||
unitTarget.CastSpell(unitTarget, 59316, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(unitTarget, 59316, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
// teleport atop
|
// teleport atop
|
||||||
else
|
else
|
||||||
unitTarget.CastSpell(unitTarget, 59314, new CastSpellExtraArgs(true));
|
unitTarget.CastSpell(unitTarget, 59314, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3062,8 +3077,8 @@ namespace Game.Spells
|
|||||||
if (parent != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
// @todo a hack, range = 11, should after some time cast, otherwise too far
|
// @todo a hack, range = 11, should after some time cast, otherwise too far
|
||||||
unitCaster.CastSpell(parent, 62496, new CastSpellExtraArgs(true));
|
unitCaster.CastSpell(parent, 62496, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
unitTarget.CastSpell(parent, (uint)damage); // DIFFICULTY_NONE, so effect always valid
|
unitTarget.CastSpell(parent, (uint)damage, new CastSpellExtraArgs().SetOriginalCastId(m_castId)); // DIFFICULTY_NONE, so effect always valid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3093,7 +3108,9 @@ namespace Game.Spells
|
|||||||
Aura chargesAura = m_caster.ToCreature().GetAura(59907);
|
Aura chargesAura = m_caster.ToCreature().GetAura(59907);
|
||||||
if (chargesAura != null)
|
if (chargesAura != null)
|
||||||
{
|
{
|
||||||
m_caster.CastSpell(unitTarget, spell_heal, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_caster.ToCreature().ToTempSummon().GetSummonerGUID()));
|
m_caster.CastSpell(unitTarget, spell_heal, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCaster(m_caster.ToCreature().ToTempSummon().GetSummonerGUID())
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
if (chargesAura.ModCharges(-1))
|
if (chargesAura.ModCharges(-1))
|
||||||
m_caster.ToCreature().ToTempSummon().UnSummon();
|
m_caster.ToCreature().ToTempSummon().UnSummon();
|
||||||
}
|
}
|
||||||
@@ -3122,6 +3139,7 @@ namespace Game.Spells
|
|||||||
if (totem != null && totem.IsTotem())
|
if (totem != null && totem.IsTotem())
|
||||||
{
|
{
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
args.AddSpellMod(SpellValueMod.BasePoint0, damage);
|
args.AddSpellMod(SpellValueMod.BasePoint0, damage);
|
||||||
m_caster.CastSpell(totem, 55277, args);
|
m_caster.CastSpell(totem, 55277, args);
|
||||||
}
|
}
|
||||||
@@ -3154,8 +3172,8 @@ namespace Game.Spells
|
|||||||
45683 // Polymorph
|
45683 // Polymorph
|
||||||
};
|
};
|
||||||
|
|
||||||
m_caster.CastSpell(m_caster, spellPlayer[RandomHelper.IRand(0, 4)], true);
|
m_caster.CastSpell(m_caster, spellPlayer[RandomHelper.IRand(0, 4)], new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
unitTarget.CastSpell(unitTarget, spellTarget[RandomHelper.IRand(0, 4)], true);
|
unitTarget.CastSpell(unitTarget, spellTarget[RandomHelper.IRand(0, 4)], new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3400,7 +3418,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
GlyphPropertiesRecord glyphProperties = CliDB.GlyphPropertiesStorage.LookupByKey(glyphId);
|
GlyphPropertiesRecord glyphProperties = CliDB.GlyphPropertiesStorage.LookupByKey(glyphId);
|
||||||
if (glyphProperties != null)
|
if (glyphProperties != null)
|
||||||
player.CastSpell(player, glyphProperties.SpellID, true);
|
player.CastSpell(player, glyphProperties.SpellID, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
|
|
||||||
ActiveGlyphs activeGlyphs = new();
|
ActiveGlyphs activeGlyphs = new();
|
||||||
activeGlyphs.Glyphs.Add(new GlyphBinding(m_misc.SpellId, (ushort)glyphId));
|
activeGlyphs.Glyphs.Add(new GlyphBinding(m_misc.SpellId, (ushort)glyphId));
|
||||||
@@ -3489,7 +3507,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
currentDrunk = 100;
|
currentDrunk = 100;
|
||||||
if (RandomHelper.randChance() < 25.0f)
|
if (RandomHelper.randChance() < 25.0f)
|
||||||
player.CastSpell(player, 67468, false); // Drunken Vomit
|
player.CastSpell(player, 67468, new CastSpellExtraArgs().SetOriginalCastId(m_castId)); // Drunken Vomit
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
currentDrunk += (byte)drunkMod;
|
currentDrunk += (byte)drunkMod;
|
||||||
@@ -3536,6 +3554,7 @@ namespace Game.Spells
|
|||||||
// @todo fix crash when a spell has two effects, both pointed at the same item target
|
// @todo fix crash when a spell has two effects, both pointed at the same item target
|
||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
args.AddSpellMod(SpellValueMod.BasePoint0, pct);
|
args.AddSpellMod(SpellValueMod.BasePoint0, pct);
|
||||||
m_caster.CastSpell(pet, effectInfo.TriggerSpell, args);
|
m_caster.CastSpell(pet, effectInfo.TriggerSpell, args);
|
||||||
}
|
}
|
||||||
@@ -3922,7 +3941,9 @@ namespace Game.Spells
|
|||||||
unitCaster.Attack(unitTarget, true);
|
unitCaster.Attack(unitTarget, true);
|
||||||
|
|
||||||
if (effectInfo.TriggerSpell != 0)
|
if (effectInfo.TriggerSpell != 0)
|
||||||
m_caster.CastSpell(unitTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_originalCasterGUID));
|
m_caster.CastSpell(unitTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCaster(m_originalCasterGUID)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3950,7 +3971,9 @@ namespace Game.Spells
|
|||||||
else if (effectHandleMode == SpellEffectHandleMode.Hit)
|
else if (effectHandleMode == SpellEffectHandleMode.Hit)
|
||||||
{
|
{
|
||||||
if (effectInfo.TriggerSpell != 0)
|
if (effectInfo.TriggerSpell != 0)
|
||||||
m_caster.CastSpell(destTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_originalCasterGUID));
|
m_caster.CastSpell(destTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
|
||||||
|
.SetOriginalCaster(m_originalCasterGUID)
|
||||||
|
.SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4235,6 +4258,7 @@ namespace Game.Spells
|
|||||||
if (mana != 0)
|
if (mana != 0)
|
||||||
{
|
{
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
CastSpellExtraArgs args = new(TriggerCastFlags.FullMask);
|
||||||
|
args.SetOriginalCastId(m_castId);
|
||||||
args.AddSpellMod(SpellValueMod.BasePoint0, mana);
|
args.AddSpellMod(SpellValueMod.BasePoint0, mana);
|
||||||
unitCaster.CastSpell(m_caster, 39104, args);
|
unitCaster.CastSpell(m_caster, 39104, args);
|
||||||
}
|
}
|
||||||
@@ -5043,6 +5067,7 @@ namespace Game.Spells
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
CastSpellExtraArgs args = new(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.CastDirectly | TriggerCastFlags.DontReportCastError);
|
CastSpellExtraArgs args = new(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.CastDirectly | TriggerCastFlags.DontReportCastError);
|
||||||
|
args.OriginalCastId = m_castId;
|
||||||
args.CastDifficulty = GetCastDifficulty();
|
args.CastDifficulty = GetCastDifficulty();
|
||||||
m_caster.CastSpell(m_caster, spellInfo.Id, args);
|
m_caster.CastSpell(m_caster, spellInfo.Id, args);
|
||||||
}
|
}
|
||||||
@@ -5131,7 +5156,7 @@ namespace Game.Spells
|
|||||||
if (!m_caster.IsTypeId(TypeId.Player) || unitTarget == null || !unitTarget.IsTypeId(TypeId.Player))
|
if (!m_caster.IsTypeId(TypeId.Player) || unitTarget == null || !unitTarget.IsTypeId(TypeId.Player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_caster.CastSpell(unitTarget, effectInfo.TriggerSpell, true);
|
m_caster.CastSpell(unitTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCastId(m_castId));
|
||||||
}
|
}
|
||||||
|
|
||||||
[SpellEffectHandler(SpellEffectName.UnlockGuildVaultTab)]
|
[SpellEffectHandler(SpellEffectName.UnlockGuildVaultTab)]
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ namespace Scripts.Spells.Warlock
|
|||||||
if (modOwner)
|
if (modOwner)
|
||||||
modOwner.ApplySpellMod(GetSpellInfo(), SpellModOp.PowerCost0, ref damage);
|
modOwner.ApplySpellMod(GetSpellInfo(), SpellModOp.PowerCost0, ref damage);
|
||||||
|
|
||||||
SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, caster, GetSpellInfo(), GetAura().GetSpellVisual(), GetSpellInfo().SchoolMask, GetAura().GetCastGUID());
|
SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, caster, GetSpellInfo(), GetAura().GetSpellVisual(), GetSpellInfo().SchoolMask, GetAura().GetCastId());
|
||||||
damageInfo.periodicLog = true;
|
damageInfo.periodicLog = true;
|
||||||
damageInfo.damage = damage;
|
damageInfo.damage = damage;
|
||||||
caster.DealSpellDamage(damageInfo, false);
|
caster.DealSpellDamage(damageInfo, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user