diff --git a/src/main/java/noppes/npcs/ai/CombatHandler.java b/src/main/java/noppes/npcs/ai/CombatHandler.java index 9cd564e8f..3be793d98 100644 --- a/src/main/java/noppes/npcs/ai/CombatHandler.java +++ b/src/main/java/noppes/npcs/ai/CombatHandler.java @@ -132,4 +132,19 @@ public class CombatHandler { return threatLevel; } + + public boolean shouldChangeTarget(double chance) { + // Assuming randomNum is a random number between 0 and 100 + double randomNum = Math.random() * 100; // Generates a random number between 0 and 100 + return randomNum <= chance; + } + + public boolean shouldSwitchTactically(EntityLivingBase originalTarget, EntityLivingBase newTarget) { + // Implement your Tactical Switcher conditions here + // Example: Switch if the new target has a higher threat level + float currentThreat = calculateThreatLevel(originalTarget); + float newThreat = calculateThreatLevel(newTarget); + + return newThreat > currentThreat; + } } diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 316ce4b8a..34af20de2 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -535,7 +535,12 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti } break; case Stubborn: - if (closerTargetFound && shouldChangeTarget(5.0)) { + if (closerTargetFound && combatHandler.shouldChangeTarget(5.0)) { + setAttackTarget(attackingEntity); + } + break; + case Tactical: + if (attackingEntity != getAttackTarget() && combatHandler.shouldSwitchTactically(getAttackTarget(), attackingEntity)) { setAttackTarget(attackingEntity); } break; @@ -1927,10 +1932,4 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti } protected void updateLeashedState(){} - - private boolean shouldChangeTarget(double chance) { - // Assuming randomNum is a random number between 0 and 100 - double randomNum = Math.random() * 100; // Generates a random number between 0 and 100 - return randomNum <= chance; - } }