public ProjectileEffectEventArgs(string effectName, string iD, string taleSpireId, float speed, int count, ProjectileKind kind, FireCollisionEventOn fireCollisionEventOn, float launchTimeVariance, float targetVariance, Target target, ProjectileSizeOption projectileSize, float projectileSizeMultiplier, float bezierPathMultiplier) : base(effectName, iD, taleSpireId) { BezierPathMultiplier = bezierPathMultiplier; ProjectileSizeMultiplier = projectileSizeMultiplier; ProjectileSize = projectileSize; Target = target; Speed = speed; Count = count; Kind = kind; FireCollisionEventOn = fireCollisionEventOn; LaunchTimeVariance = launchTimeVariance; TargetVariance = targetVariance; }
public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, RollResults dice = null) { ExpectingArguments(args, 3, 11); if (player == null || spell == null) { return(null); } string effectName = Expressions.GetStr(args[0]); ProjectileKind projectileKind = ProjectileKind.EachTarget; int projectileCount = 1; float speed = 20; FireCollisionEventOn fireCollisionEventOn = FireCollisionEventOn.EachImpact; float launchTimeVariance = 0; float targetVariance = 0; ProjectileSizeOption projectileSize = ProjectileSizeOption.ConstantSize; float projectileSizeMultiplier = 1; float bezierPathMultiplier = 1; if (args.Count > 1) { projectileKind = Expressions.Get <ProjectileKind>(args[1]); if (args.Count > 2) { int.TryParse(args[2], out projectileCount); if (args.Count > 3) { float.TryParse(args[3], out speed); if (args.Count > 4) { fireCollisionEventOn = Expressions.Get <FireCollisionEventOn>(args[4]); if (args.Count > 5) { float.TryParse(args[5], out launchTimeVariance); if (args.Count > 6) { float.TryParse(args[6], out targetVariance); if (args.Count > 7) { projectileSize = Expressions.Get <ProjectileSizeOption>(args[7]); if (args.Count > 8) { float.TryParse(args[8], out projectileSizeMultiplier); if (args.Count > 9) { float.TryParse(args[9], out bezierPathMultiplier); } } } } } } } } } ProjectileEffectEventArgs ea = new ProjectileEffectEventArgs(effectName, spell.ID, player.taleSpireId, speed, projectileCount, projectileKind, fireCollisionEventOn, launchTimeVariance, targetVariance, target, projectileSize, projectileSizeMultiplier, bezierPathMultiplier); LaunchProjectile?.Invoke(null, ea); return(null); }