diff --git a/Base/AssAI.cs b/Base/AssAI.cs
index 9bee5aa7..7f550c0c 100644
--- a/Base/AssAI.cs
+++ b/Base/AssAI.cs
@@ -25,30 +25,10 @@ public static void TeleportIfTooFar(Projectile projectile, Vector2 desiredCenter
}
}
- //Credit to Itorius
- ///
- /// Uses ray tracking as an alternative to Collision.CanHitLine
- ///
- public static bool CheckLineOfSight(Vector2 center, Vector2 target)
- {
- Ray ray = new Ray(new Vector3(center, 0), new Vector3(target - center, 0));
-
- List tiles = new List();
- Utils.PlotTileLine(center, target, 42, (i, j) =>
- {
- tiles.Add(i * 16 > center.X ? new Vector2(i, j + 1) * 16 : new Vector2(i, j) * 16);
- return true;
- });
-
- return tiles
- .Where(tile => WorldGen.SolidTile((int)(tile.X / 16), (int)(tile.Y / 16)))
- .All(tile => new BoundingBox(new Vector3(tile - new Vector2(2), 0), new Vector3(tile + new Vector2(20), 0)).Intersects(ray) == null);
- }
-
///
/// Finds target in range of relativeCenter. Returns index of target
///
- public static int FindTarget(Entity ent, Vector2 relativeCenter, float range = 300f, bool ignoreTiles = false, bool useSlowLOS = false)
+ public static int FindTarget(Entity ent, Vector2 relativeCenter, float range, bool ignoreTiles = false)
{
int targetIndex = -1;
float distanceFromTarget = 10000000f;
@@ -63,7 +43,7 @@ public static int FindTarget(Entity ent, Vector2 relativeCenter, float range = 3
float between = Vector2.DistanceSquared(npc.Center, relativeCenter);
if ((between < range && Vector2.DistanceSquared(relativeCenter, targetCenter) > between && between < distanceFromTarget) || targetIndex == -1)
{
- if (ignoreTiles || (useSlowLOS ? CheckLineOfSight(relativeCenter, npc.Center) : Collision.CanHitLine(ent.position, ent.width, ent.height, npc.position, npc.width, npc.height)))
+ if (ignoreTiles || Collision.CanHitLine(ent.position, ent.width, ent.height, npc.position, npc.width, npc.height))
{
distanceFromTarget = between;
targetCenter = npc.Center;
diff --git a/Projectiles/Minions/Drones/BasicLaserDrone.cs b/Projectiles/Minions/Drones/BasicLaserDrone.cs
index 477bc4cb..eacefcc0 100644
--- a/Projectiles/Minions/Drones/BasicLaserDrone.cs
+++ b/Projectiles/Minions/Drones/BasicLaserDrone.cs
@@ -148,7 +148,7 @@ protected override void CustomAI()
//Main.NewText("Counter: " + Counter);
#region Handle State
- int targetIndex = AssAI.FindTarget(projectile, projectile.Center, range: 1000, ignoreTiles: true);
+ int targetIndex = AssAI.FindTarget(projectile, projectile.Center, 1000, ignoreTiles: true);
if (targetIndex != -1)
{
if (AI_STATE == STATE_IDLE) AI_STATE = STATE_TARGET_FOUND;
@@ -302,7 +302,7 @@ private int FindClosestTargetBelow(int range = 1000)
float between = Vector2.Distance(npc.Center, projectile.Center);
if (((between < range &&
Vector2.Distance(player.Center, targetCenter) > between && between < distanceFromTarget) || targetIndex == -1) &&
- projectile.Bottom.Y < npc.Top.Y + 40 && AssAI.CheckLineOfSight(projectile.Center, npc.Center))
+ projectile.Bottom.Y < npc.Top.Y + 40 && Collision.CanHitLine(projectile.Center, 1, 1, npc.position, npc.width, npc.height))
{
distanceFromTarget = between;
targetCenter = npc.Center;
diff --git a/Projectiles/Minions/Drones/HeavyLaserDrone.cs b/Projectiles/Minions/Drones/HeavyLaserDrone.cs
index 271d5953..ab970de4 100644
--- a/Projectiles/Minions/Drones/HeavyLaserDrone.cs
+++ b/Projectiles/Minions/Drones/HeavyLaserDrone.cs
@@ -406,7 +406,7 @@ private int FindClosestHorizontalTarget()
float between = Vector2.Distance(npc.Center, player.Center);
if (((between < range &&
Vector2.Distance(player.Center, targetCenter) > between && between < distanceFromTarget) || targetIndex == -1) &&
- AssAI.CheckLineOfSight(player.Center, npc.Center))
+ Collision.CanHitLine(player.Center, 1, 1, npc.position, npc.width, npc.height))
{
distanceFromTarget = between;
targetCenter = npc.Center;
diff --git a/Projectiles/Minions/Drones/MissileDrone.cs b/Projectiles/Minions/Drones/MissileDrone.cs
index 9873ed56..9c40bc2b 100644
--- a/Projectiles/Minions/Drones/MissileDrone.cs
+++ b/Projectiles/Minions/Drones/MissileDrone.cs
@@ -150,7 +150,7 @@ protected override void CustomAI()
if (Counter > AttackDelay)
{
Counter = 0;
- int targetIndex = AssAI.FindTarget(projectile, projectile.Center, range: 900, useSlowLOS: true);
+ int targetIndex = AssAI.FindTarget(projectile, projectile.Center, 900);
if (targetIndex != -1)
{
Vector2 aboveCheck = new Vector2(0, -16 * 8);
@@ -180,7 +180,7 @@ protected override void CustomAI()
if (AI_STATE == STATE_FIRING)
{
- int targetIndex = AssAI.FindTarget(projectile, projectile.Center, 900, useSlowLOS: true);
+ int targetIndex = AssAI.FindTarget(projectile, projectile.Center, 900);
if (targetIndex != -1)
{
diff --git a/Projectiles/Minions/Drones/MissileDroneRocket.cs b/Projectiles/Minions/Drones/MissileDroneRocket.cs
index 68ea7bd7..14df5e45 100644
--- a/Projectiles/Minions/Drones/MissileDroneRocket.cs
+++ b/Projectiles/Minions/Drones/MissileDroneRocket.cs
@@ -195,7 +195,7 @@ public override void AI()
int targetIndex;
if (projectile.ai[0] > 60)
{
- targetIndex = AssAI.FindTarget(projectile, projectile.Center, range: 1200f, ignoreTiles: true);
+ targetIndex = AssAI.FindTarget(projectile, projectile.Center, 1200, ignoreTiles: true);
if (targetIndex != -1)
{
if (FirstTarget == -1) FirstTarget = targetIndex;
diff --git a/Projectiles/Pets/PetDestroyer.cs b/Projectiles/Pets/PetDestroyer.cs
index b1c095ac..3c505f83 100644
--- a/Projectiles/Pets/PetDestroyer.cs
+++ b/Projectiles/Pets/PetDestroyer.cs
@@ -195,7 +195,7 @@ public override void AI()
AssAI.ZephyrfishAI(projectile, parent: parent, velocityFactor: 1f, random: false, swapSides: 1, offsetX: offsetX, offsetY: offsetY);
- int targetIndex = AssAI.FindTarget(projectile, projectile.Center, range: 500f);
+ int targetIndex = AssAI.FindTarget(projectile, projectile.Center, 500);
if (Main.myPlayer == projectile.owner)
{
diff --git a/Projectiles/Pets/PetGolemHeadProj.cs b/Projectiles/Pets/PetGolemHeadProj.cs
index 4d410e76..8ec64144 100644
--- a/Projectiles/Pets/PetGolemHeadProj.cs
+++ b/Projectiles/Pets/PetGolemHeadProj.cs
@@ -119,7 +119,7 @@ protected override void CustomAI()
{
if (Main.myPlayer == projectile.owner)
{
- int targetIndex = AssAI.FindTarget(projectile, projectile.Center, range: 600f);
+ int targetIndex = AssAI.FindTarget(projectile, projectile.Center, 600);
if (targetIndex != -1 && !Collision.SolidCollision(projectile.position, projectile.width, projectile.height))
{
if (Counter == AttackDelay) Counter += AttackDelay;
diff --git a/Projectiles/Pets/PetPlanteraProj.cs b/Projectiles/Pets/PetPlanteraProj.cs
index 84279ee3..db4cd5e2 100644
--- a/Projectiles/Pets/PetPlanteraProj.cs
+++ b/Projectiles/Pets/PetPlanteraProj.cs
@@ -76,12 +76,12 @@ public override void AI()
}
#region Handle State
- int targetIndex = AssAI.FindTarget(projectile, player.Center); //check for player surrounding
+ int targetIndex = AssAI.FindTarget(projectile, player.Center, 300); //check for player surrounding
if (targetIndex == -1)
{
if (AI_STATE == STATE_ATTACK)
{
- targetIndex = AssAI.FindTarget(projectile, player.Center, range: 400f, useSlowLOS: false); //check for player surrounding
+ targetIndex = AssAI.FindTarget(projectile, player.Center, 400); //check for player surrounding
if (targetIndex == -1)
{
AI_STATE = STATE_IDLE;
diff --git a/README.md b/README.md
index b2aa65f4..586b0d62 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,6 @@ Small sample of the contents:

Credits for code:
- * Itorius for *CheckLineOfSight*
* IDGCaptainRussia for *DrawTether*
* Muzuwi for *CircleUI*
* jopojelly for *PremultiplyTexture*