|
|
|
@ -8,8 +8,11 @@ import engine.server.MBServerStatics;
@@ -8,8 +8,11 @@ import engine.server.MBServerStatics;
|
|
|
|
|
import org.pmw.tinylog.Logger; |
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.math.RoundingMode; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
|
|
|
|
|
|
|
public class PlayerCombatStats { |
|
|
|
@ -33,6 +36,221 @@ public class PlayerCombatStats {
@@ -33,6 +36,221 @@ public class PlayerCombatStats {
|
|
|
|
|
public float healthRegen; |
|
|
|
|
public float manaRegen; |
|
|
|
|
public float staminaRegen; |
|
|
|
|
public static final Map<Float, Float> HIT_VALUE_MAP = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
static { |
|
|
|
|
HIT_VALUE_MAP.put(0.40f, 0f); |
|
|
|
|
HIT_VALUE_MAP.put(0.41f, 1f); |
|
|
|
|
HIT_VALUE_MAP.put(0.42f, 1f); |
|
|
|
|
HIT_VALUE_MAP.put(0.43f, 1f); |
|
|
|
|
HIT_VALUE_MAP.put(0.44f, 2f); |
|
|
|
|
HIT_VALUE_MAP.put(0.45f, 2f); |
|
|
|
|
HIT_VALUE_MAP.put(0.46f, 2f); |
|
|
|
|
HIT_VALUE_MAP.put(0.47f, 3f); |
|
|
|
|
HIT_VALUE_MAP.put(0.48f, 3f); |
|
|
|
|
HIT_VALUE_MAP.put(0.49f, 4f); |
|
|
|
|
HIT_VALUE_MAP.put(0.50f, 4f); |
|
|
|
|
HIT_VALUE_MAP.put(0.51f, 5f); |
|
|
|
|
HIT_VALUE_MAP.put(0.52f, 5f); |
|
|
|
|
HIT_VALUE_MAP.put(0.53f, 6f); |
|
|
|
|
HIT_VALUE_MAP.put(0.54f, 7f); |
|
|
|
|
HIT_VALUE_MAP.put(0.55f, 7f); |
|
|
|
|
HIT_VALUE_MAP.put(0.56f, 8f); |
|
|
|
|
HIT_VALUE_MAP.put(0.57f, 9f); |
|
|
|
|
HIT_VALUE_MAP.put(0.58f, 9f); |
|
|
|
|
HIT_VALUE_MAP.put(0.59f, 10f); |
|
|
|
|
HIT_VALUE_MAP.put(0.60f, 11f); |
|
|
|
|
HIT_VALUE_MAP.put(0.61f, 11f); |
|
|
|
|
HIT_VALUE_MAP.put(0.62f, 12f); |
|
|
|
|
HIT_VALUE_MAP.put(0.63f, 13f); |
|
|
|
|
HIT_VALUE_MAP.put(0.64f, 13f); |
|
|
|
|
HIT_VALUE_MAP.put(0.65f, 14f); |
|
|
|
|
HIT_VALUE_MAP.put(0.66f, 15f); |
|
|
|
|
HIT_VALUE_MAP.put(0.67f, 15f); |
|
|
|
|
HIT_VALUE_MAP.put(0.68f, 16f); |
|
|
|
|
HIT_VALUE_MAP.put(0.69f, 17f); |
|
|
|
|
HIT_VALUE_MAP.put(0.70f, 17f); |
|
|
|
|
HIT_VALUE_MAP.put(0.71f, 18f); |
|
|
|
|
HIT_VALUE_MAP.put(0.72f, 19f); |
|
|
|
|
HIT_VALUE_MAP.put(0.73f, 20f); |
|
|
|
|
HIT_VALUE_MAP.put(0.74f, 20f); |
|
|
|
|
HIT_VALUE_MAP.put(0.75f, 21f); |
|
|
|
|
HIT_VALUE_MAP.put(0.76f, 22f); |
|
|
|
|
HIT_VALUE_MAP.put(0.77f, 23f); |
|
|
|
|
HIT_VALUE_MAP.put(0.78f, 24f); |
|
|
|
|
HIT_VALUE_MAP.put(0.79f, 24f); |
|
|
|
|
HIT_VALUE_MAP.put(0.80f, 25f); |
|
|
|
|
HIT_VALUE_MAP.put(0.81f, 26f); |
|
|
|
|
HIT_VALUE_MAP.put(0.82f, 27f); |
|
|
|
|
HIT_VALUE_MAP.put(0.83f, 28f); |
|
|
|
|
HIT_VALUE_MAP.put(0.84f, 29f); |
|
|
|
|
HIT_VALUE_MAP.put(0.85f, 30f); |
|
|
|
|
HIT_VALUE_MAP.put(0.86f, 31f); |
|
|
|
|
HIT_VALUE_MAP.put(0.87f, 32f); |
|
|
|
|
HIT_VALUE_MAP.put(0.88f, 33f); |
|
|
|
|
HIT_VALUE_MAP.put(0.89f, 34f); |
|
|
|
|
HIT_VALUE_MAP.put(0.90f, 35f); |
|
|
|
|
HIT_VALUE_MAP.put(0.91f, 36f); |
|
|
|
|
HIT_VALUE_MAP.put(0.92f, 37f); |
|
|
|
|
HIT_VALUE_MAP.put(0.93f, 38f); |
|
|
|
|
HIT_VALUE_MAP.put(0.94f, 39f); |
|
|
|
|
HIT_VALUE_MAP.put(0.95f, 40f); |
|
|
|
|
HIT_VALUE_MAP.put(0.96f, 42f); |
|
|
|
|
HIT_VALUE_MAP.put(0.97f, 44f); |
|
|
|
|
HIT_VALUE_MAP.put(0.98f, 46f); |
|
|
|
|
HIT_VALUE_MAP.put(0.99f, 48f); |
|
|
|
|
HIT_VALUE_MAP.put(1.00f, 50f); |
|
|
|
|
HIT_VALUE_MAP.put(1.01f, 52f); |
|
|
|
|
HIT_VALUE_MAP.put(1.02f, 54f); |
|
|
|
|
HIT_VALUE_MAP.put(1.03f, 56f); |
|
|
|
|
HIT_VALUE_MAP.put(1.04f, 58f); |
|
|
|
|
HIT_VALUE_MAP.put(1.05f, 60f); |
|
|
|
|
HIT_VALUE_MAP.put(1.06f, 61f); |
|
|
|
|
HIT_VALUE_MAP.put(1.07f, 62f); |
|
|
|
|
HIT_VALUE_MAP.put(1.08f, 63f); |
|
|
|
|
HIT_VALUE_MAP.put(1.09f, 64f); |
|
|
|
|
HIT_VALUE_MAP.put(1.10f, 65f); |
|
|
|
|
HIT_VALUE_MAP.put(1.11f, 66f); |
|
|
|
|
HIT_VALUE_MAP.put(1.12f, 67f); |
|
|
|
|
HIT_VALUE_MAP.put(1.13f, 68f); |
|
|
|
|
HIT_VALUE_MAP.put(1.14f, 69f); |
|
|
|
|
HIT_VALUE_MAP.put(1.15f, 70f); |
|
|
|
|
HIT_VALUE_MAP.put(1.16f, 70f); |
|
|
|
|
HIT_VALUE_MAP.put(1.17f, 71f); |
|
|
|
|
HIT_VALUE_MAP.put(1.18f, 71f); |
|
|
|
|
HIT_VALUE_MAP.put(1.19f, 72f); |
|
|
|
|
HIT_VALUE_MAP.put(1.20f, 72f); |
|
|
|
|
HIT_VALUE_MAP.put(1.21f, 73f); |
|
|
|
|
HIT_VALUE_MAP.put(1.22f, 73f); |
|
|
|
|
HIT_VALUE_MAP.put(1.23f, 74f); |
|
|
|
|
HIT_VALUE_MAP.put(1.24f, 74f); |
|
|
|
|
HIT_VALUE_MAP.put(1.25f, 75f); |
|
|
|
|
HIT_VALUE_MAP.put(1.26f, 75f); |
|
|
|
|
HIT_VALUE_MAP.put(1.27f, 76f); |
|
|
|
|
HIT_VALUE_MAP.put(1.28f, 76f); |
|
|
|
|
HIT_VALUE_MAP.put(1.29f, 77f); |
|
|
|
|
HIT_VALUE_MAP.put(1.30f, 77f); |
|
|
|
|
HIT_VALUE_MAP.put(1.31f, 78f); |
|
|
|
|
HIT_VALUE_MAP.put(1.32f, 78f); |
|
|
|
|
HIT_VALUE_MAP.put(1.33f, 79f); |
|
|
|
|
HIT_VALUE_MAP.put(1.34f, 79f); |
|
|
|
|
HIT_VALUE_MAP.put(1.35f, 80f); |
|
|
|
|
HIT_VALUE_MAP.put(1.36f, 80f); |
|
|
|
|
HIT_VALUE_MAP.put(1.37f, 81f); |
|
|
|
|
HIT_VALUE_MAP.put(1.38f, 81f); |
|
|
|
|
HIT_VALUE_MAP.put(1.39f, 81f); |
|
|
|
|
HIT_VALUE_MAP.put(1.40f, 82f); |
|
|
|
|
HIT_VALUE_MAP.put(1.41f, 82f); |
|
|
|
|
HIT_VALUE_MAP.put(1.42f, 82f); |
|
|
|
|
HIT_VALUE_MAP.put(1.43f, 83f); |
|
|
|
|
HIT_VALUE_MAP.put(1.44f, 83f); |
|
|
|
|
HIT_VALUE_MAP.put(1.45f, 83f); |
|
|
|
|
HIT_VALUE_MAP.put(1.46f, 84f); |
|
|
|
|
HIT_VALUE_MAP.put(1.47f, 84f); |
|
|
|
|
HIT_VALUE_MAP.put(1.48f, 84f); |
|
|
|
|
HIT_VALUE_MAP.put(1.49f, 85f); |
|
|
|
|
HIT_VALUE_MAP.put(1.50f, 85f); |
|
|
|
|
HIT_VALUE_MAP.put(1.51f, 85f); |
|
|
|
|
HIT_VALUE_MAP.put(1.52f, 86f); |
|
|
|
|
HIT_VALUE_MAP.put(1.53f, 86f); |
|
|
|
|
HIT_VALUE_MAP.put(1.54f, 86f); |
|
|
|
|
HIT_VALUE_MAP.put(1.55f, 86f); |
|
|
|
|
HIT_VALUE_MAP.put(1.56f, 87f); |
|
|
|
|
HIT_VALUE_MAP.put(1.57f, 87f); |
|
|
|
|
HIT_VALUE_MAP.put(1.58f, 87f); |
|
|
|
|
HIT_VALUE_MAP.put(1.59f, 87f); |
|
|
|
|
HIT_VALUE_MAP.put(1.60f, 88f); |
|
|
|
|
HIT_VALUE_MAP.put(1.61f, 88f); |
|
|
|
|
HIT_VALUE_MAP.put(1.62f, 88f); |
|
|
|
|
HIT_VALUE_MAP.put(1.63f, 88f); |
|
|
|
|
HIT_VALUE_MAP.put(1.64f, 89f); |
|
|
|
|
HIT_VALUE_MAP.put(1.65f, 89f); |
|
|
|
|
HIT_VALUE_MAP.put(1.66f, 89f); |
|
|
|
|
HIT_VALUE_MAP.put(1.67f, 89f); |
|
|
|
|
HIT_VALUE_MAP.put(1.68f, 90f); |
|
|
|
|
HIT_VALUE_MAP.put(1.69f, 90f); |
|
|
|
|
HIT_VALUE_MAP.put(1.70f, 90f); |
|
|
|
|
HIT_VALUE_MAP.put(1.71f, 90f); |
|
|
|
|
HIT_VALUE_MAP.put(1.72f, 91f); |
|
|
|
|
HIT_VALUE_MAP.put(1.73f, 91f); |
|
|
|
|
HIT_VALUE_MAP.put(1.74f, 91f); |
|
|
|
|
HIT_VALUE_MAP.put(1.75f, 91f); |
|
|
|
|
HIT_VALUE_MAP.put(1.76f, 91f); |
|
|
|
|
HIT_VALUE_MAP.put(1.77f, 92f); |
|
|
|
|
HIT_VALUE_MAP.put(1.78f, 92f); |
|
|
|
|
HIT_VALUE_MAP.put(1.79f, 92f); |
|
|
|
|
HIT_VALUE_MAP.put(1.80f, 92f); |
|
|
|
|
HIT_VALUE_MAP.put(1.81f, 92f); |
|
|
|
|
HIT_VALUE_MAP.put(1.82f, 93f); |
|
|
|
|
HIT_VALUE_MAP.put(1.83f, 93f); |
|
|
|
|
HIT_VALUE_MAP.put(1.84f, 93f); |
|
|
|
|
HIT_VALUE_MAP.put(1.85f, 93f); |
|
|
|
|
HIT_VALUE_MAP.put(1.86f, 93f); |
|
|
|
|
HIT_VALUE_MAP.put(1.87f, 93f); |
|
|
|
|
HIT_VALUE_MAP.put(1.88f, 94f); |
|
|
|
|
HIT_VALUE_MAP.put(1.89f, 94f); |
|
|
|
|
HIT_VALUE_MAP.put(1.90f, 94f); |
|
|
|
|
HIT_VALUE_MAP.put(1.91f, 94f); |
|
|
|
|
HIT_VALUE_MAP.put(1.92f, 94f); |
|
|
|
|
HIT_VALUE_MAP.put(1.93f, 94f); |
|
|
|
|
HIT_VALUE_MAP.put(1.94f, 95f); |
|
|
|
|
HIT_VALUE_MAP.put(1.95f, 95f); |
|
|
|
|
HIT_VALUE_MAP.put(1.96f, 95f); |
|
|
|
|
HIT_VALUE_MAP.put(1.97f, 95f); |
|
|
|
|
HIT_VALUE_MAP.put(1.98f, 95f); |
|
|
|
|
HIT_VALUE_MAP.put(1.99f, 95f); |
|
|
|
|
HIT_VALUE_MAP.put(2.00f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.01f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.02f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.03f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.04f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.05f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.06f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.07f, 96f); |
|
|
|
|
HIT_VALUE_MAP.put(2.08f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.09f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.10f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.11f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.12f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.13f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.14f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.15f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.16f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.17f, 97f); |
|
|
|
|
HIT_VALUE_MAP.put(2.18f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.19f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.20f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.21f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.22f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.23f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.24f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.25f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.26f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.27f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.28f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.29f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.30f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.31f, 98f); |
|
|
|
|
HIT_VALUE_MAP.put(2.32f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.33f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.34f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.35f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.36f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.37f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.38f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.39f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.40f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.41f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.42f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.43f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.44f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.45f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.46f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.47f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.48f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.49f, 99f); |
|
|
|
|
HIT_VALUE_MAP.put(2.50f, 100f); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public PlayerCombatStats(PlayerCharacter pc) { |
|
|
|
|
this.owner = pc; |
|
|
|
@ -634,4 +852,15 @@ public class PlayerCombatStats {
@@ -634,4 +852,15 @@ public class PlayerCombatStats {
|
|
|
|
|
this.defense = (int) defense; |
|
|
|
|
} // PERFECT DO NOT TOUCH
|
|
|
|
|
|
|
|
|
|
public static float getHitChance(int atr,int def){ |
|
|
|
|
float key = atr / def; |
|
|
|
|
BigDecimal bd = new BigDecimal(key).setScale(2, RoundingMode.HALF_UP); |
|
|
|
|
key = bd.floatValue(); |
|
|
|
|
if(key < 0.40f) |
|
|
|
|
return 0.0f; |
|
|
|
|
if(key > 2.50f) |
|
|
|
|
return 100.0f; |
|
|
|
|
return HIT_VALUE_MAP.get(key); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|