|
|
|
@ -660,32 +660,11 @@ public enum CombatManager {
@@ -660,32 +660,11 @@ public enum CombatManager {
|
|
|
|
|
|
|
|
|
|
//calculate hit/miss
|
|
|
|
|
|
|
|
|
|
//int roll = ThreadLocalRandom.current().nextInt(100);
|
|
|
|
|
DeferredPowerJob dpj = null; |
|
|
|
|
|
|
|
|
|
int max = (int)atr; |
|
|
|
|
if(max < 10) |
|
|
|
|
max = 10; |
|
|
|
|
|
|
|
|
|
int min = (int)(max * 0.5f); |
|
|
|
|
if(max < min){ |
|
|
|
|
min = max - 1; |
|
|
|
|
} |
|
|
|
|
int atrRoll = ThreadLocalRandom.current().nextInt(min,max); |
|
|
|
|
int defRoll = 0; |
|
|
|
|
if(AbstractCharacter.IsAbstractCharacter(target)){ |
|
|
|
|
AbstractCharacter tar = (AbstractCharacter) target; |
|
|
|
|
max = tar.defenseRating; |
|
|
|
|
if(max < 1) |
|
|
|
|
max = 10; |
|
|
|
|
min = (int)(max * 0.5f); |
|
|
|
|
if(max < min){ |
|
|
|
|
min = max - 1; |
|
|
|
|
} |
|
|
|
|
defRoll = ThreadLocalRandom.current().nextInt(min,max); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (atrRoll > defRoll) { |
|
|
|
|
if (LandHit((int)atr,(int)defense)) { |
|
|
|
|
|
|
|
|
|
if (ac.getObjectType().equals(GameObjectType.PlayerCharacter)) |
|
|
|
|
updateAttackTimers((PlayerCharacter) ac, target, true); |
|
|
|
@ -1464,4 +1443,12 @@ public enum CombatManager {
@@ -1464,4 +1443,12 @@ public enum CombatManager {
|
|
|
|
|
((AbstractCharacter) awo).getCharItemManager().damageRandomArmor(1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static boolean LandHit(int atr, int defense){ |
|
|
|
|
int roll = ThreadLocalRandom.current().nextInt(100); |
|
|
|
|
float chance = (float)((atr-((atr+defense)*0.315))/((defense-((atr+defense)*0.315))+(atr-((atr+defense)*0.315)))); |
|
|
|
|
boolean hit = false; |
|
|
|
|
if(chance > roll) |
|
|
|
|
hit = true; |
|
|
|
|
return hit; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|