Added some implicit operators to spell casting.

This commit is contained in:
hondacrx
2023-10-01 07:32:38 -04:00
parent 4cbee1a6bb
commit 85f37f6edf
6 changed files with 46 additions and 24 deletions
+1 -1
View File
@@ -207,7 +207,7 @@ namespace Framework.Constants
public const int MaxActivePets = 5; public const int MaxActivePets = 5;
public const int MaxPetStables = 200; public const int MaxPetStables = 200;
public const uint CallPetSpellId = 883; public const uint CallPetSpellId = 883;
public const uint PetSummoningDisorientation = 32752; public const uint SpellPetSummoningDisorientation = 32752;
public const float PetFollowDist = 1.0f; public const float PetFollowDist = 1.0f;
public const float PetFollowAngle = MathF.PI; public const float PetFollowAngle = MathF.PI;
public const int MaxSpellCharm = 4; public const int MaxSpellCharm = 4;
+4 -19
View File
@@ -2423,25 +2423,9 @@ namespace Game.Entities
return my_faction.IsNeutralToAll(); return my_faction.IsNeutralToAll();
} }
public SpellCastResult CastSpell(WorldObject target, uint spellId, bool triggered = false) public SpellCastResult CastSpell(CastSpellTargetArg targets, uint spellId)
{ {
CastSpellExtraArgs args = new(triggered); return CastSpell(targets, spellId, new CastSpellExtraArgs());
return CastSpell(target, spellId, args);
}
public SpellCastResult CastSpell(SpellCastTargets targets, uint spellId, CastSpellExtraArgs args)
{
return CastSpell(new CastSpellTargetArg(targets), spellId, args);
}
public SpellCastResult CastSpell(WorldObject target, uint spellId, CastSpellExtraArgs args)
{
return CastSpell(new CastSpellTargetArg(target), spellId, args);
}
public SpellCastResult CastSpell(Position dest, uint spellId, CastSpellExtraArgs args)
{
return CastSpell(new CastSpellTargetArg(dest), spellId, args);
} }
public SpellCastResult CastSpell(CastSpellTargetArg targets, uint spellId, CastSpellExtraArgs args) public SpellCastResult CastSpell(CastSpellTargetArg targets, uint spellId, CastSpellExtraArgs args)
@@ -3366,7 +3350,8 @@ namespace Game.Entities
{ {
return obj1 && obj2 && IsInBetween(obj1.GetPosition(), obj2.GetPosition(), size); return obj1 && obj2 && IsInBetween(obj1.GetPosition(), obj2.GetPosition(), size);
} }
bool IsInBetween(Position pos1, Position pos2, float size)
public bool IsInBetween(Position pos1, Position pos2, float size)
{ {
float dist = GetExactDist2d(pos1); float dist = GetExactDist2d(pos1);
+1 -1
View File
@@ -1131,7 +1131,7 @@ namespace Game.Entities
SetUpdateFieldStatValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.MaxDamage), maxdamage); SetUpdateFieldStatValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.MaxDamage), maxdamage);
} }
void SetBonusDamage(int damage) public void SetBonusDamage(int damage)
{ {
m_bonusSpellDamage = damage; m_bonusSpellDamage = damage;
Player playerOwner = GetOwner().ToPlayer(); Player playerOwner = GetOwner().ToPlayer();
+1 -1
View File
@@ -39,7 +39,7 @@ namespace Game.Entities
protected float[][] m_weaponDamage = new float[(int)WeaponAttackType.Max][]; protected float[][] m_weaponDamage = new float[(int)WeaponAttackType.Max][];
uint[] m_baseAttackSpeed = new uint[(int)WeaponAttackType.Max]; uint[] m_baseAttackSpeed = new uint[(int)WeaponAttackType.Max];
internal float[] m_modAttackSpeedPct = new float[(int)WeaponAttackType.Max]; public float[] m_modAttackSpeedPct = new float[(int)WeaponAttackType.Max];
protected uint[] m_attackTimer = new uint[(int)WeaponAttackType.Max]; protected uint[] m_attackTimer = new uint[(int)WeaponAttackType.Max];
bool _isCombatDisallowed; bool _isCombatDisallowed;
+1 -1
View File
@@ -2823,7 +2823,7 @@ namespace Game.Entities
return aurApp?.GetBase(); return aurApp?.GetBase();
} }
AuraApplication GetAuraApplicationOfRankedSpell(uint spellId, ObjectGuid casterGUID = default, ObjectGuid itemCasterGUID = default, uint reqEffMask = 0, AuraApplication except = null) public AuraApplication GetAuraApplicationOfRankedSpell(uint spellId, ObjectGuid casterGUID = default, ObjectGuid itemCasterGUID = default, uint reqEffMask = 0, AuraApplication except = null)
{ {
uint rankSpell = Global.SpellMgr.GetFirstSpellInChain(spellId); uint rankSpell = Global.SpellMgr.GetFirstSpellInChain(spellId);
while (rankSpell != 0) while (rankSpell != 0)
+38 -1
View File
@@ -5366,7 +5366,7 @@ namespace Game.Spells
Pet pet = unitCaster.ToPlayer().GetPet(); Pet pet = unitCaster.ToPlayer().GetPet();
if (pet != null) if (pet != null)
{ {
pet.CastSpell(pet, SharedConst.PetSummoningDisorientation, new CastSpellExtraArgs(TriggerCastFlags.FullMask) pet.CastSpell(pet, SharedConst.SpellPetSummoningDisorientation, new CastSpellExtraArgs(TriggerCastFlags.FullMask)
.SetOriginalCaster(pet.GetGUID()) .SetOriginalCaster(pet.GetGUID())
.SetTriggeringSpell(this)); .SetTriggeringSpell(this));
} }
@@ -9339,6 +9339,31 @@ namespace Game.Spells
Targets = new(); Targets = new();
Targets = targets; Targets = targets;
} }
public static implicit operator CastSpellTargetArg(WorldObject target)
{
return new CastSpellTargetArg(target);
}
public static implicit operator CastSpellTargetArg(Item itemTarget)
{
return new CastSpellTargetArg(itemTarget);
}
public static implicit operator CastSpellTargetArg(Position dest)
{
return new CastSpellTargetArg(dest);
}
public static implicit operator CastSpellTargetArg(SpellDestination dest)
{
return new CastSpellTargetArg(dest);
}
public static implicit operator CastSpellTargetArg(SpellCastTargets targets)
{
return new CastSpellTargetArg(targets);
}
} }
public class CastSpellExtraArgs public class CastSpellExtraArgs
@@ -9455,6 +9480,18 @@ namespace Game.Spells
CustomArg = customArg; CustomArg = customArg;
return this; return this;
} }
public static implicit operator CastSpellExtraArgs(bool triggered) => new CastSpellExtraArgs(triggered);
public static implicit operator CastSpellExtraArgs(TriggerCastFlags trigger) => new CastSpellExtraArgs(trigger);
public static implicit operator CastSpellExtraArgs(Item item) => new CastSpellExtraArgs(item);
public static implicit operator CastSpellExtraArgs(Spell triggeringSpell) => new CastSpellExtraArgs(triggeringSpell);
public static implicit operator CastSpellExtraArgs(AuraEffect eff) => new CastSpellExtraArgs(eff);
public static implicit operator CastSpellExtraArgs(Difficulty castDifficulty) => new CastSpellExtraArgs(castDifficulty);
} }
public class SpellLogEffect public class SpellLogEffect