From 173bf91342ad63e3718c1d5727f4bc8f9be0a90d Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 31 Jan 2024 01:48:49 -0500 Subject: [PATCH] Tactical Switcher --- src/main/java/noppes/npcs/ai/CombatHandler.java | 15 +++++++++++++++ .../noppes/npcs/entity/EntityNPCInterface.java | 13 ++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) 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; - } }