Esempio n. 1
0
 private static void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (BadaoMainVariables.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo)
     {
         return;
     }
     if (Utils.GameTimeTickCount - BadaoMissFortuneVariables.Rcount <= 500)
     {
         return;
     }
     if (BadaoMissFortuneHelper.UseRCombo() && unit.IsMe &&
         target.BadaoIsValidTarget() &&
         target is AIHeroClient && BadaoMissFortuneHelper.Rdamepior() &&
         target.Health <= 0.6f * BadaoMissFortuneHelper.RDamage(target as Obj_AI_Base))
     {
         float   reactiontime = 0.5f;
         var     PredTarget   = Prediction.GetPrediction(target as Obj_AI_Base, 0.25f + Game.Ping / 1000f);
         Vector2 x1           = new Vector2();
         Vector2 x2           = new Vector2();
         Vector2 CenterPolar  = new Vector2();
         Vector2 CenterEnd    = new Vector2();
         BadaoMissFortuneHelper.RPrediction(PredTarget.UnitPosition.To2D(), target as Obj_AI_Base,
                                            out CenterPolar, out CenterEnd, out x1, out x2);
         float        dis1   = PredTarget.UnitPosition.To2D().Distance(x1);
         float        dis2   = PredTarget.UnitPosition.To2D().Distance(x2);
         AIHeroClient Target = target as AIHeroClient;
         if (PredTarget.UnitPosition.To2D().Distance(ObjectManager.Player.Position.To2D()) >= 250 &&
             (Target.HasBuffOfType(BuffType.Stun) || Target.HasBuffOfType(BuffType.Snare) ||
              (dis1 >= dis2 && (dis2 / Target.MoveSpeed >= 0.6f * 3f - reactiontime ||
                                BadaoMissFortuneHelper.RDamage(Target) * (dis2 / Target.MoveSpeed + reactiontime) / 3f >= Target.Health
                                - BadaoMissFortuneHelper.GetAADamage(Target)))))
         {
             BadaoMainVariables.R.Cast(PredTarget.UnitPosition.To2D());
             BadaoMissFortuneVariables.TargetRChanneling = target as AIHeroClient;
             BadaoMissFortuneVariables.CenterPolar       = CenterPolar;
             BadaoMissFortuneVariables.CenterEnd         = CenterEnd;
             BadaoMissFortuneVariables.Rcount            = Utils.GameTimeTickCount;
         }
         else if (PredTarget.UnitPosition.To2D().Distance(ObjectManager.Player.Position.To2D()) >= 250 &&
                  (Target.HasBuffOfType(BuffType.Stun) || Target.HasBuffOfType(BuffType.Snare) ||
                   (dis2 >= dis1 && (dis1 / Target.MoveSpeed >= 0.6f * 3f - reactiontime ||
                                     BadaoMissFortuneHelper.RDamage(Target) * (dis1 / Target.MoveSpeed + reactiontime) / 3f >= Target.Health
                                     - BadaoMissFortuneHelper.GetAADamage(Target)))))
         {
             BadaoMainVariables.R.Cast(PredTarget.UnitPosition.To2D());
             BadaoMissFortuneVariables.TargetRChanneling = target as AIHeroClient;
             BadaoMissFortuneVariables.CenterPolar       = CenterPolar;
             BadaoMissFortuneVariables.CenterEnd         = CenterEnd;
             BadaoMissFortuneVariables.Rcount            = Utils.GameTimeTickCount;
         }
     }
     if (BadaoMissFortuneHelper.UseRComboWise() && unit.IsMe &&
         target.BadaoIsValidTarget() &&
         target is AIHeroClient && BadaoMissFortuneHelper.Rdamepior() &&
         target.Health <= 0.8f * BadaoMissFortuneHelper.RDamage(target as Obj_AI_Base))
     {
         float   reactiontime = 1f;
         var     PredTarget   = Prediction.GetPrediction(target as Obj_AI_Base, 0.25f + Game.Ping / 1000f);
         Vector2 x1           = new Vector2();
         Vector2 x2           = new Vector2();
         Vector2 CenterPolar  = new Vector2();
         Vector2 CenterEnd    = new Vector2();
         BadaoMissFortuneHelper.RPrediction(PredTarget.UnitPosition.To2D(), target as Obj_AI_Base,
                                            out CenterPolar, out CenterEnd, out x1, out x2);
         float        dis1   = PredTarget.UnitPosition.To2D().Distance(x1);
         float        dis2   = PredTarget.UnitPosition.To2D().Distance(x2);
         AIHeroClient Target = target as AIHeroClient;
         if (PredTarget.UnitPosition.To2D().Distance(ObjectManager.Player.Position.To2D()) >= 250 &&
             (Target.HasBuffOfType(BuffType.Stun) || Target.HasBuffOfType(BuffType.Snare) ||
              (dis1 >= dis2 && (dis2 / Target.MoveSpeed >= 0.8f * 3f - reactiontime ||
                                BadaoMissFortuneHelper.RDamage(Target) * (dis2 / Target.MoveSpeed + reactiontime) / 3f >= Target.Health
                                - BadaoMissFortuneHelper.GetAADamage(Target)))))
         {
             BadaoMainVariables.R.Cast(PredTarget.UnitPosition.To2D());
             BadaoMissFortuneVariables.TargetRChanneling = target as AIHeroClient;
             BadaoMissFortuneVariables.CenterPolar       = CenterPolar;
             BadaoMissFortuneVariables.CenterEnd         = CenterEnd;
             BadaoMissFortuneVariables.Rcount            = Utils.GameTimeTickCount;
         }
         else if (PredTarget.UnitPosition.To2D().Distance(ObjectManager.Player.Position.To2D()) >= 250 &&
                  (Target.HasBuffOfType(BuffType.Stun) || Target.HasBuffOfType(BuffType.Snare) ||
                   (dis2 >= dis1 && (dis1 / Target.MoveSpeed >= 0.8f * 3f - reactiontime ||
                                     BadaoMissFortuneHelper.RDamage(Target) * (dis1 / Target.MoveSpeed + reactiontime) / 3f >= Target.Health
                                     - BadaoMissFortuneHelper.GetAADamage(Target)))))
         {
             BadaoMainVariables.R.Cast(PredTarget.UnitPosition.To2D());
             BadaoMissFortuneVariables.TargetRChanneling = target as AIHeroClient;
             BadaoMissFortuneVariables.CenterPolar       = CenterPolar;
             BadaoMissFortuneVariables.CenterEnd         = CenterEnd;
             BadaoMissFortuneVariables.Rcount            = Utils.GameTimeTickCount;
         }
     }
 }