|
|
@@ -768,13 +768,15 @@ public class Enemy : MoveCharacter
|
|
|
switch (searchState)
|
|
|
{
|
|
|
case SearchState.NoTarget:
|
|
|
- if (targetCharacter == PlayersInput.instance[0])
|
|
|
+ Character character0 = PlayersInput.instance[0];
|
|
|
+ Character character1 = PlayersInput.instance[1];
|
|
|
+ if (character0.beTargetCharacter.Exists(t => t == this))
|
|
|
{
|
|
|
- PlayersInput.instance[0].beTargetCharacter.Remove(this);
|
|
|
+ character0.beTargetCharacter.Remove(this);
|
|
|
}
|
|
|
- if (targetCharacter == PlayersInput.instance[1])
|
|
|
+ if (character1.beTargetCharacter.Exists(t => t == this))
|
|
|
{
|
|
|
- PlayersInput.instance[1].beTargetCharacter.Remove(this);
|
|
|
+ character1.beTargetCharacter.Remove(this);
|
|
|
}
|
|
|
targetCharacter = null;
|
|
|
break;
|
|
|
@@ -793,13 +795,17 @@ public class Enemy : MoveCharacter
|
|
|
|
|
|
if (targetCharacter != null)
|
|
|
{
|
|
|
- if (targetCharacter == PlayersInput.instance[0])
|
|
|
+ Character character0 = PlayersInput.instance[0];
|
|
|
+ Character character1 = PlayersInput.instance[1];
|
|
|
+ if (targetCharacter == character0
|
|
|
+ && !character0.beTargetCharacter.Exists(t => t == this))
|
|
|
{
|
|
|
- PlayersInput.instance[0].beTargetCharacter.Add(this);
|
|
|
+ character0.beTargetCharacter.Add(this);
|
|
|
}
|
|
|
- if (targetCharacter == PlayersInput.instance[1])
|
|
|
+ if (targetCharacter == character1
|
|
|
+ && !character1.beTargetCharacter.Exists(t => t == this))
|
|
|
{
|
|
|
- PlayersInput.instance[1].beTargetCharacter.Add(this);
|
|
|
+ character1.beTargetCharacter.Add(this);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -881,14 +887,22 @@ public class Enemy : MoveCharacter
|
|
|
if (distance0 <= distance1)
|
|
|
{
|
|
|
targetCharacter = PlayersInput.instance[0];
|
|
|
- PlayersInput.instance[0].beTargetCharacter.Add(this);
|
|
|
+ if (!PlayersInput.instance[0].beTargetCharacter.Exists(t => t == this))
|
|
|
+ {
|
|
|
+ PlayersInput.instance[0].beTargetCharacter.Add(this);
|
|
|
+ }
|
|
|
+
|
|
|
distance = distance0;
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
targetCharacter = PlayersInput.instance[1];
|
|
|
- PlayersInput.instance[1].beTargetCharacter.Add(this);
|
|
|
+ if (!PlayersInput.instance[1].beTargetCharacter.Exists(t => t == this))
|
|
|
+ {
|
|
|
+ PlayersInput.instance[1].beTargetCharacter.Add(this);
|
|
|
+ }
|
|
|
+
|
|
|
distance = distance1;
|
|
|
}
|
|
|
}
|