Browse Source

generic range method added, mob spell casting cleanup

master
FatBoy-DOTC 2 years ago
parent
commit
b000c9b60f
  1. 15
      src/engine/ai/MobileFSM.java
  2. 24
      src/engine/ai/utilities/CombatUtilities.java

15
src/engine/ai/MobileFSM.java

@ -1667,7 +1667,7 @@ public class MobileFSM {
} }
} }
int random = ThreadLocalRandom.current().nextInt(eligiblePowers.size() *2); int random = ThreadLocalRandom.current().nextInt(eligiblePowers.size());
int powerToken = 0; int powerToken = 0;
int powerRank = 0; int powerRank = 0;
Map<Integer, Integer> entries = eligiblePowers; Map<Integer, Integer> entries = eligiblePowers;
@ -1678,7 +1678,7 @@ public class MobileFSM {
powerToken = entry.getKey(); powerToken = entry.getKey();
powerRank = entry.getValue(); powerRank = entry.getValue();
PowersBase mobPower = PowersManager.getPowerByToken(powerToken); PowersBase mobPower = PowersManager.getPowerByToken(powerToken);
if (CombatUtilities.inRangeToCast2D(mob, mob.getCombatTarget(), mobPower)) { if (CombatUtilities.inRange2D(mob, mob.getCombatTarget(), mobPower.getRange())) {
//PowersManager.useMobPower(mob,(AbstractCharacter)mob.getCombatTarget(),mobPower,powerRank); //PowersManager.useMobPower(mob,(AbstractCharacter)mob.getCombatTarget(),mobPower,powerRank);
PerformActionMsg msg = new PerformActionMsg(); PerformActionMsg msg = new PerformActionMsg();
if(mobPower.isHarmful() == false || mobPower.targetSelf == true){ if(mobPower.isHarmful() == false || mobPower.targetSelf == true){
@ -1712,16 +1712,7 @@ public class MobileFSM {
for (Mob mob1 : mobCamp.zoneMobSet) { for (Mob mob1 : mobCamp.zoneMobSet) {
if (mob1.getMobBase().getFlags().contains(Enum.MobFlagType.RESPONDSTOCALLSFORHELP)) { if (mob1.getMobBase().getFlags().contains(Enum.MobFlagType.RESPONDSTOCALLSFORHELP)) {
if (mob1.getState() == STATE.Awake) { if (mob1.getState() == STATE.Awake) {
Vector3fImmutable loc1 = mob.getLoc(); if (CombatUtilities.inRange2D(mob, mob1, mob.getAggroRange()) == true) {
Vector3fImmutable loc2 = mob1.getLoc();
double sum = 0;
double x = loc1.x - loc2.x;
sum += x * x;
double z = loc1.z - loc2.z;
sum += z * z;
double dist = sqrt(sum);
double aggroRange = mob.getAggroRange();
if (dist <= aggroRange) {
MovementUtilities.moveToLocation(mob1, mob.getLoc(), 0); MovementUtilities.moveToLocation(mob1, mob.getLoc(), 0);
} }
} }

24
src/engine/ai/utilities/CombatUtilities.java

@ -33,6 +33,7 @@ import java.util.concurrent.ThreadLocalRandom;
import static engine.math.FastMath.sqr; import static engine.math.FastMath.sqr;
import static java.lang.Math.pow; import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
public class CombatUtilities { public class CombatUtilities {
@ -82,18 +83,17 @@ public class CombatUtilities {
} }
} }
public static boolean inRangeToCast2D(Mob agent,AbstractWorldObject target, PowersBase power) { public static boolean inRange2D(AbstractWorldObject entity1, AbstractWorldObject entity2, double range){
Vector3fImmutable loc1 = entity1.getLoc();
if (Float.isNaN(agent.getLoc().x)) Vector3fImmutable loc2 = entity2.getLoc();
return false; double sum = 0;
try { double x = loc1.x - loc2.x;
Vector3fImmutable sl = agent.getLoc(); sum += x * x;
Vector3fImmutable tl = target.getLoc(); double z = loc1.z - loc2.z;
float range = power.getRange(); sum += z * z;
range += CombatManager.calcHitBox(target) + CombatManager.calcHitBox(agent); if(sqrt(sum) <= range){
return !(sl.distanceSquared2D(tl) > sqr(range)); return true;
} catch (Exception e) { } else {
Logger.error(e.toString());
return false; return false;
} }
} }

Loading…
Cancel
Save