diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index dad3eb699..0899ccc66 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -1579,13 +1579,13 @@ namespace Framework.Constants None = 0x0, //! Not Triggered IgnoreGCD = 0x01, //! Will Ignore Gcd IgnoreSpellAndCategoryCD = 0x02, //! Will Ignore Spell And Category Cooldowns - IgnorePowerAndReagentCost = 0x04, //! Will Ignore Power And Reagent Cost + IgnorePowerCost = 0x04, //! Will Ignore Power Cost IgnoreCastItem = 0x08, //! Will Not Take Away Cast Item Or Update Related Achievement Criteria IgnoreAuraScaling = 0x10, //! Will Ignore Aura Scaling IgnoreCastInProgress = 0x20, //! Will Not Check If A Current Cast Is In Progress IgnoreCastTime = 0x40, //! Will always be instantly cast CastDirectly = 0x80, //! In Spell.Prepare, Will Be Cast Directly Without Setting Containers For Executed Spell - // reuse = 0x100, // + IgnoreReagentCost = 0x04, //! Will Ignore Reagent Cost IgnoreSetFacing = 0x200, //! Will Not Adjust Facing To Target (If Any) IgnoreShapeshift = 0x400, //! Will Ignore Shapeshift Checks // reuse = 0x800, // diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 5b37766b2..d5169729a 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -957,9 +957,9 @@ namespace Game.Entities if (info != null) { if (auraEffect.GetSpellInfo().HasAttribute(SpellAttr8.IgnoreSpellcastOverrideCost)) - triggerFlag |= TriggerCastFlags.IgnorePowerAndReagentCost; + triggerFlag |= TriggerCastFlags.IgnorePowerCost; else - triggerFlag &= ~TriggerCastFlags.IgnorePowerAndReagentCost; + triggerFlag &= ~TriggerCastFlags.IgnorePowerCost; if (auraEffect.GetSpellInfo().HasAttribute(SpellAttr11.IgnoreSpellcastOverrideShapeshiftRequirements)) triggerFlag |= TriggerCastFlags.IgnoreShapeshift; diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index 0e602968b..afb23870d 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -3002,12 +3002,12 @@ namespace Game.Spells } Item targetItem = m_targets.GetItemTarget(); - if (!Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnorePowerAndReagentCost)) - { - // Powers have to be taken before SendSpellGo + // Powers have to be taken before SendSpellGo + if (!_triggeredCastFlags.HasAnyFlag(TriggerCastFlags.IgnorePowerCost)) TakePower(); - TakeReagents(); // we must remove reagents before HandleEffects to allow place crafted item in same slot - } + + if (!_triggeredCastFlags.HasAnyFlag(TriggerCastFlags.IgnoreReagentCost)) + TakeReagents(); // we must remove reagents before HandleEffects to allow place crafted item in same slot else if (targetItem != null) { // Not own traded item (in trader trade slot) req. reagents including triggered spell case @@ -4044,11 +4044,11 @@ namespace Game.Spells if (m_spellInfo.HasAttribute(SpellAttr0.UsesRangedSlot) || m_spellInfo.HasAttribute(SpellAttr10.UsesRangedSlotCosmeticOnly) || m_spellInfo.HasAttribute(SpellCustomAttributes.NeedsAmmoData)) castFlags |= SpellCastFlags.Projectile; // arrows/bullets visual - if ((m_caster.IsTypeId(TypeId.Player) || (m_caster.IsTypeId(TypeId.Unit) && m_caster.ToCreature().IsPet())) && m_powerCost.Any(cost => cost.Power != PowerType.Health)) + if ((m_caster.IsPlayer() || (m_caster.IsTypeId(TypeId.Unit) && m_caster.ToCreature().IsPet())) && m_powerCost.Any(cost => cost.Power != PowerType.Health)) castFlags |= SpellCastFlags.PowerLeftSelf; - if (m_caster.IsTypeId(TypeId.Player) && m_caster.ToPlayer().GetClass() == Class.Deathknight && - HasPowerTypeCost(PowerType.Runes) && !_triggeredCastFlags.HasAnyFlag(TriggerCastFlags.IgnorePowerAndReagentCost)) + if (m_caster.IsPlayer() && m_caster.ToPlayer().GetClass() == Class.Deathknight && + HasPowerTypeCost(PowerType.Runes) && !_triggeredCastFlags.HasAnyFlag(TriggerCastFlags.IgnorePowerCost)) { castFlags |= SpellCastFlags.NoGCD; // same as in SMSG_SPELL_START castFlags |= SpellCastFlags.RuneList; // rune cooldowns list @@ -5369,7 +5369,7 @@ namespace Game.Spells if (castResult != SpellCastResult.SpellCastOk) return castResult; - if (!Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnorePowerAndReagentCost)) + if (!Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnorePowerCost)) { castResult = CheckPower(); if (castResult != SpellCastResult.SpellCastOk) @@ -6772,7 +6772,7 @@ namespace Game.Spells // do not take reagents for these item casts if (!(m_CastItem != null && m_CastItem.GetTemplate().HasFlag(ItemFlags.NoReagentCost))) { - bool checkReagents = !Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnorePowerAndReagentCost) && !player.CanNoReagentCast(m_spellInfo); + bool checkReagents = !Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnoreReagentCost) && !player.CanNoReagentCast(m_spellInfo); // Not own traded item (in trader trade slot) requires reagents even if triggered spell if (!checkReagents) { diff --git a/Source/Scripts/DragonIsles/AzureVault/Leymor.cs b/Source/Scripts/DragonIsles/AzureVault/Leymor.cs index cfb737695..75a0cdee0 100644 --- a/Source/Scripts/DragonIsles/AzureVault/Leymor.cs +++ b/Source/Scripts/DragonIsles/AzureVault/Leymor.cs @@ -65,7 +65,7 @@ namespace Scripts.DragonIsles.AzureVault.Leymor if (instance.GetData(DataTypes.LeymorIntroDone) != 0) return; - me.SetUnitFlag(UnitFlags.ImmuneToPc | UnitFlags.ImmuneToNpc); + me.SetImmuneToAll(true); DoCastSelf(SpellIds.Stasis); } @@ -81,7 +81,7 @@ namespace Scripts.DragonIsles.AzureVault.Leymor _scheduler.Schedule(TimeSpan.FromSeconds(1), _ => { me.RemoveAurasDueToSpell(SpellIds.Stasis); - me.RemoveUnitFlag(UnitFlags.ImmuneToPc | UnitFlags.ImmuneToNpc); + me.SetImmuneToAll(false); DoCastSelf(SpellIds.ArcaneEruption); Talk(MiscConst.SayAnnounceAwaken); }); diff --git a/Source/Scripts/Events/Brewfest.cs b/Source/Scripts/Events/Brewfest.cs index de53429b3..c012c2a73 100644 --- a/Source/Scripts/Events/Brewfest.cs +++ b/Source/Scripts/Events/Brewfest.cs @@ -243,7 +243,7 @@ namespace Scripts.Events.Brewfest PreventHitDefaultEffect(effIndex); // All this spells trigger a spell that requires reagents; if the // triggered spell is cast as "triggered", reagents are not consumed - GetHitUnit().CastSpell(null, GetEffectInfo().TriggerSpell, TriggerCastFlags.FullMask & ~TriggerCastFlags.IgnorePowerAndReagentCost); + GetHitUnit().CastSpell(null, GetEffectInfo().TriggerSpell, TriggerCastFlags.FullMask & ~TriggerCastFlags.IgnoreReagentCost); } public override void Register() diff --git a/Source/Scripts/Spells/Druid.cs b/Source/Scripts/Spells/Druid.cs index ff5624e17..82ad1bdc8 100644 --- a/Source/Scripts/Spells/Druid.cs +++ b/Source/Scripts/Spells/Druid.cs @@ -1241,7 +1241,7 @@ namespace Scripts.Spells.Druid if (targetList.Empty()) return; - rejuvCaster.CastSpell(targetList.SelectRandom(), SpellIds.Rejuvenation, TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnorePowerAndReagentCost | TriggerCastFlags.IgnoreCastInProgress); + rejuvCaster.CastSpell(targetList.SelectRandom(), SpellIds.Rejuvenation, TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnorePowerCost | TriggerCastFlags.IgnoreCastInProgress); } public override void Register() diff --git a/Source/Scripts/Spells/Priest.cs b/Source/Scripts/Spells/Priest.cs index 8fb0f74e5..82fab6a81 100644 --- a/Source/Scripts/Spells/Priest.cs +++ b/Source/Scripts/Spells/Priest.cs @@ -2730,7 +2730,7 @@ namespace Scripts.Spells.Priest Unit target = ObjAccessor.GetUnit(caster, _raptureTarget); if (target != null) caster.CastSpell(target, SpellIds.PowerWordShield, - new CastSpellExtraArgs(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnorePowerAndReagentCost | TriggerCastFlags.IgnoreCastInProgress) + new CastSpellExtraArgs(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnorePowerCost | TriggerCastFlags.IgnoreCastInProgress) .SetTriggeringSpell(GetSpell())); } @@ -3466,7 +3466,7 @@ namespace Scripts.Spells.Priest { GetCaster().CastSpell(GetHitUnit(), SpellIds.VampiricTouch, new CastSpellExtraArgs() .SetTriggeringSpell(GetSpell()) - .SetTriggerFlags(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreSpellAndCategoryCD | TriggerCastFlags.IgnorePowerAndReagentCost | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.IgnoreCastTime | TriggerCastFlags.DontReportCastError)); + .SetTriggerFlags(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreSpellAndCategoryCD | TriggerCastFlags.IgnorePowerCost | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.IgnoreCastTime | TriggerCastFlags.DontReportCastError)); } public override void Register()