private static void TriggerOnDetectSkillshot(DetectionType detectionType, SpellData spellData, int startT, Vector2 start, Vector2 end, Obj_AI_Base unit) { var skillshot = new Skillshot(detectionType, spellData, startT, start, end, unit); if (OnDetectSkillshot != null) { OnDetectSkillshot(skillshot); } }
public Skillshot( DetectionType detectionType, SpellData spellData, int startT, Vector2 start, Vector2 end, Obj_AI_Base unit) { this.DetectionType = detectionType; this.SpellData = spellData; this.StartTick = startT; this.Start = start; this.End = end; this.MissilePosition = start; this.Direction = (end - start).Normalized(); this.Unit = unit; //Create the spatial object for each type of skillshot. switch (spellData.Type) { case SkillShotType.SkillshotCircle: this.Circle = new Geometry.Circle(this.CollisionEnd, spellData.Radius); break; case SkillShotType.SkillshotLine: this.Rectangle = new Geometry.Rectangle(this.Start, this.CollisionEnd, spellData.Radius); break; case SkillShotType.SkillshotMissileLine: this.Rectangle = new Geometry.Rectangle(this.Start, this.CollisionEnd, spellData.Radius); break; case SkillShotType.SkillshotCone: this.Sector = new Geometry.Sector( start, this.CollisionEnd - start, spellData.Radius * (float)Math.PI / 180, spellData.Range); break; case SkillShotType.SkillshotRing: this.Ring = new Geometry.Ring(this.CollisionEnd, spellData.Radius, spellData.RingRadius); break; } this.UpdatePolygon(); //Create the polygon. }
public static bool WillKill(this Obj_AI_Base caster, Obj_AI_Base target, Evade.SpellData spell, int buffer = 10) { return(caster.GetSpellDamage(target, spell.SpellName) >= target.HealthBuffer(buffer)); }