forked from MagicBane/Server
generic range method added, mob spell casting cleanup
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user