本文整理汇总了C#中SFXChallenger.Wrappers.Spell.IsReady方法的典型用法代码示例。如果您正苦于以下问题:C# SFXChallenger.Wrappers.Spell.IsReady方法的具体用法?C# SFXChallenger.Wrappers.Spell.IsReady怎么用?C# SFXChallenger.Wrappers.Spell.IsReady使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SFXChallenger.Wrappers.Spell
的用法示例。
在下文中一共展示了SFXChallenger.Wrappers.Spell.IsReady方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Farm
public static void Farm(Spell spell,
int minHit = 3,
float overrideWidth = -1f,
bool chargeMax = true,
List<Obj_AI_Base> minions = null)
{
if (!spell.IsReady())
{
return;
}
var spellWidth = overrideWidth > 0 ? overrideWidth : spell.Width;
if (minions == null)
{
minions =
MinionManager.GetMinions(
(((chargeMax && spell.IsChargedSpell ? spell.ChargedMaxRange : spell.Range) + spellWidth) * 1.5f),
MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
}
if (minions.Count == 0)
{
return;
}
if (minHit > 1)
{
var nearest = minions.OrderBy(m => m.Distance(ObjectManager.Player)).FirstOrDefault();
if (nearest != null && nearest.Team == GameObjectTeam.Neutral)
{
minHit = 1;
}
}
if (spell.Type == SkillshotType.SkillshotCircle)
{
CircleFarm(spell, minions, minHit, overrideWidth);
}
else if (spell.Type == SkillshotType.SkillshotLine)
{
LineFarm(spell, minions, minHit, overrideWidth);
}
else if (spell.Type == SkillshotType.SkillshotCone)
{
ConeFarm(spell, minions, minHit, overrideWidth);
}
}
示例2: SkillShot
public static void SkillShot(Obj_AI_Hero target,
Spell spell,
HitChance hitChance,
bool boundingRadius = true,
bool maxRange = true)
{
if (!spell.IsReady() || target == null)
{
return;
}
if (spell.Type == SkillshotType.SkillshotLine)
{
var prediction = CPrediction.Line(spell, target, hitChance, boundingRadius, maxRange);
if (prediction.TotalHits >= 1)
{
spell.Cast(prediction.CastPosition);
}
}
else if (spell.Type == SkillshotType.SkillshotCircle)
{
var prediction = CPrediction.Circle(spell, target, hitChance);
if (prediction.TotalHits >= 1)
{
spell.Cast(prediction.CastPosition);
}
}
else
{
var prediction = spell.GetPrediction(target);
if (prediction.Hitchance >= hitChance)
{
spell.Cast(prediction.CastPosition);
}
}
}
示例3: TargetSkill
public static void TargetSkill(Obj_AI_Base target, Spell spell)
{
if (!spell.IsReady() || target == null)
{
return;
}
spell.CastOnUnit(target);
}
示例4: FarmSelfAoe
public static void FarmSelfAoe(Spell spell,
int minHit = 3,
float overrideWidth = -1f,
List<Obj_AI_Base> minions = null)
{
if (!spell.IsReady())
{
return;
}
var spellWidth = overrideWidth > 0 ? overrideWidth : (spell.Width > 25f ? spell.Width : spell.Range);
if (minions == null)
{
minions = MinionManager.GetMinions(
spellWidth, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
}
if (minions.Count == 0)
{
return;
}
if (minHit > 1)
{
var nearest = minions.OrderBy(m => m.Distance(ObjectManager.Player)).FirstOrDefault();
if (nearest != null && nearest.Team == GameObjectTeam.Neutral)
{
minHit = 1;
}
}
if (minions.Count >= minHit)
{
spell.Cast();
}
}
示例5: Add
public static void Add(Spell spell, bool readyCheck = true)
{
try
{
if (_menu == null)
{
return;
}
_menu.AddItem(
new MenuItem(_menu.Name + "." + spell.Slot, spell.Slot.ToString().ToUpper()).SetValue(false));
if (readyCheck)
{
Functions.Add(spell.Slot.ToString(), hero => spell.IsReady() ? spell.GetDamage(hero) : 0);
}
else
{
Functions.Add(spell.Slot.ToString(), hero => spell.GetDamage(hero));
}
}
catch (Exception ex)
{
Global.Logger.AddItem(new LogItem(ex));
}
}
示例6: FarmSelfAoe
public static void FarmSelfAoe(Spell spell, List<Obj_AI_Base> minions, int minHit = 3, float overrideWidth = -1f)
{
if (!spell.IsReady() || minions.Count == 0)
{
return;
}
if (minions.Count >= minHit)
{
spell.Cast();
}
}
示例7: LineFarm
private static void LineFarm(Spell spell, List<Obj_AI_Base> minions, int min, float overrideWidth = -1f)
{
if (!spell.IsReady() || minions.Count == 0)
{
return;
}
var spellWidth = overrideWidth > 0 ? overrideWidth : spell.Width;
var totalHits = 0;
var castPos = Vector3.Zero;
var positions = (from minion in minions
let pred = spell.GetPrediction(minion)
where pred.Hitchance >= HitChance.Medium
select new Tuple<Obj_AI_Base, Vector3>(minion, pred.UnitPosition)).ToList();
if (positions.Any())
{
foreach (var position in positions)
{
var rect = new Geometry.Polygon.Rectangle(
ObjectManager.Player.Position, ObjectManager.Player.Position.Extend(position.Item2, spell.Range),
spellWidth);
var count =
positions.Select(
position2 =>
new Geometry.Polygon.Circle(position2.Item2, position2.Item1.BoundingRadius * 0.9f))
.Count(circle => circle.Points.Any(p => rect.IsInside(p)));
if (count > totalHits)
{
totalHits = count;
castPos = position.Item2;
}
if (totalHits == minions.Count)
{
break;
}
}
if (!castPos.Equals(Vector3.Zero) && totalHits >= min)
{
spell.Cast(castPos);
}
}
}
示例8: CircleFarm
private static void CircleFarm(Spell spell, List<Obj_AI_Base> minions, int min, float overrideWidth = -1f)
{
if (!spell.IsReady() || minions.Count == 0)
{
return;
}
var spellWidth = (overrideWidth > 0 ? overrideWidth : spell.Width) + minions.Average(m => m.BoundingRadius);
var points = (from minion in minions
select spell.GetPrediction(minion)
into pred
where pred.Hitchance >= HitChance.Medium
select pred.UnitPosition.To2D()).ToList();
if (points.Any())
{
var possibilities = ListExtensions.ProduceEnumeration(points).Where(p => p.Count >= min).ToList();
if (possibilities.Any())
{
var hits = 0;
var radius = float.MaxValue;
var pos = Vector3.Zero;
foreach (var possibility in possibilities)
{
var mec = MEC.GetMec(possibility);
if (mec.Radius < spellWidth)
{
if (possibility.Count > hits || possibility.Count == hits && radius > mec.Radius)
{
hits = possibility.Count;
radius = mec.Radius;
pos = mec.Center.To3D();
}
}
}
if (hits >= min && !pos.Equals(Vector3.Zero))
{
spell.Cast(pos);
}
}
}
}
示例9: ConeFarm
private static void ConeFarm(Spell spell, List<Obj_AI_Base> minions, int min, float overrideWidth = -1f)
{
if (!spell.IsReady() || minions.Count == 0)
{
return;
}
var spellWidth = overrideWidth > 0 ? overrideWidth : spell.Width;
var pred = spell.GetCircularFarmLocation(minions, spellWidth);
if (pred.MinionsHit >= min)
{
spell.Cast(pred.Position);
}
}
示例10: Farm
public static void Farm(Spell spell,
List<Obj_AI_Base> minions,
int minHit = 3,
float overrideWidth = -1f,
bool chargeMax = true)
{
if (!spell.IsReady() || minions.Count == 0)
{
return;
}
if (spell.IsSkillshot)
{
if (spell.Collision)
{
minHit = 1;
}
if (spell.Type == SkillshotType.SkillshotCircle)
{
CircleFarm(spell, minions, minHit, overrideWidth);
}
else if (spell.Type == SkillshotType.SkillshotLine)
{
LineFarm(spell, minions, minHit, overrideWidth);
}
else if (spell.Type == SkillshotType.SkillshotCone)
{
ConeFarm(spell, minions, minHit, overrideWidth);
}
}
else
{
var minion =
minions.OrderBy(m => spell.IsKillable(m))
.FirstOrDefault(
m =>
spell.IsInRange(m) && spell.GetDamage(m) > m.Health ||
m.Health - spell.GetDamage(m) > m.MaxHealth * 0.25f);
if (minion != null)
{
spell.CastOnUnit(minion);
}
}
}