private static void FindMostViableTarget(LockOnHelper.LockOnMode context, ref int targetVar) { targetVar = -1; if (LockOnHelper.UseMode != context || !LockOnHelper.CanUseLockonSystem()) { return; } List <int> t1_1 = new List <int>(); int t1_2 = -1; Utils.Swap <List <int> >(ref t1_1, ref LockOnHelper._targets); Utils.Swap <int>(ref t1_2, ref LockOnHelper._pickedTarget); LockOnHelper.RefreshTargets(Main.MouseWorld, 2000f); LockOnHelper.GetClosestTarget(Main.MouseWorld); Utils.Swap <List <int> >(ref t1_1, ref LockOnHelper._targets); Utils.Swap <int>(ref t1_2, ref LockOnHelper._pickedTarget); if (t1_2 >= 0) { targetVar = t1_1[t1_2]; } t1_1.Clear(); }
public static void Update() { LockOnHelper._canLockOn = false; if (!LockOnHelper.CanUseLockonSystem()) { LockOnHelper.SetActive(false); } else { if (--LockOnHelper._lifeTimeArrowDisplay < 0) { LockOnHelper._lifeTimeArrowDisplay = 0; } LockOnHelper.FindMostViableTarget(LockOnHelper.LockOnMode.ThreeDS, ref LockOnHelper._threeDSTarget); LockOnHelper.FindMostViableTarget(LockOnHelper.LockOnMode.TargetClosest, ref LockOnHelper._targetClosestTarget); if (PlayerInput.Triggers.JustPressed.LockOn && !PlayerInput.WritingText) { LockOnHelper._lifeTimeCounter = 40; LockOnHelper._lifeTimeArrowDisplay = 30; LockOnHelper.HandlePressing(); } if (!LockOnHelper._enabled) { return; } if (LockOnHelper.UseMode == LockOnHelper.LockOnMode.FocusTarget && PlayerInput.Triggers.Current.LockOn) { if (LockOnHelper._lifeTimeCounter <= 0) { LockOnHelper.SetActive(false); return; } --LockOnHelper._lifeTimeCounter; } NPC aimedTarget = LockOnHelper.AimedTarget; if (!LockOnHelper.ValidTarget(aimedTarget)) { LockOnHelper.SetActive(false); } if (LockOnHelper.UseMode == LockOnHelper.LockOnMode.TargetClosest) { LockOnHelper.SetActive(false); LockOnHelper.SetActive(LockOnHelper.CanEnable()); } if (!LockOnHelper._enabled) { return; } Player p = Main.player[Main.myPlayer]; Vector2 predictedPosition = LockOnHelper.PredictedPosition; bool flag = false; if (LockOnHelper.ShouldLockOn(p) && (ItemID.Sets.LockOnIgnoresCollision[p.inventory[p.selectedItem].type] || Collision.CanHit(p.Center, 0, 0, predictedPosition, 0, 0) || (Collision.CanHitLine(p.Center, 0, 0, predictedPosition, 0, 0) || Collision.CanHit(p.Center, 0, 0, aimedTarget.Center, 0, 0)) || Collision.CanHitLine(p.Center, 0, 0, aimedTarget.Center, 0, 0))) { flag = true; } if (!flag) { return; } LockOnHelper._canLockOn = true; } }