public override void OnCreate(GameObject obj) { if (obj == null) { _castStartPos = Caster.Position; _castEndPos = _castStartPos.ExtendVector3(CastArgs.End, SpellData.Range); } else { } }
public override void OnSpellDetection(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { _startPos = Caster.ServerPosition; _endPos = _startPos.ExtendVector3(CastArgs.End, SpellData.Range); }
private static void CastW(Obj_AI_Base target, Vector3 from, Vector3 to) { var positions = new List<Vector3>(); for (var i = 1; i < 11; i++) { positions.Add(from.ExtendVector3(to, 42 * i)); } var best = positions.OrderByDescending(p => p.Distance(target.Position)) .FirstOrDefault( p => !p.IsWall() && p.Distance(Player.Position) < W.Range && p.Distance(target.Position) > 350); if (best != null && best.IsValid()) { W.Cast(best); } }