Browse Source

hit roll formula added

lakebane-strongholds
FatBoy-DOTC 4 months ago
parent
commit
2370123c72
  1. 26
      src/engine/gameManager/CombatManager.java
  2. 38
      src/engine/gameManager/PowersManager.java

26
src/engine/gameManager/CombatManager.java

@ -646,24 +646,32 @@ public enum CombatManager {
//Get hit chance //Get hit chance
int chance; //int chance;
float dif = atr - defense; float dif = atr - defense;
if (dif > 100) //if (dif > 100)
chance = 94; // chance = 94;
else if (dif < -100) //else if (dif < -100)
chance = 4; // chance = 4;
else //else
chance = (int) ((0.45 * dif) + 49); // chance = (int) ((0.45 * dif) + 49);
errorTrack = 5; errorTrack = 5;
//calculate hit/miss //calculate hit/miss
int roll = ThreadLocalRandom.current().nextInt(100); //int roll = ThreadLocalRandom.current().nextInt(100);
DeferredPowerJob dpj = null; DeferredPowerJob dpj = null;
if (roll < chance) { int atrRoll = ThreadLocalRandom.current().nextInt(ac.level * 10,(int)atr);
int defRoll = 0;
if(AbstractCharacter.IsAbstractCharacter(target)){
AbstractCharacter tar = (AbstractCharacter) target;
defRoll = ThreadLocalRandom.current().nextInt(tar.level * 10,tar.defenseRating);
}
if (atrRoll < defRoll) {
if (ac.getObjectType().equals(GameObjectType.PlayerCharacter)) if (ac.getObjectType().equals(GameObjectType.PlayerCharacter))
updateAttackTimers((PlayerCharacter) ac, target, true); updateAttackTimers((PlayerCharacter) ac, target, true);

38
src/engine/gameManager/PowersManager.java

@ -2241,28 +2241,34 @@ public enum PowersManager {
defense = 0f; defense = 0f;
// Get hit chance // Get hit chance
if (pc.getDebug(16)) { //if (pc.getDebug(16)) {
String smsg = "ATR: " + atr + ", Defense: " + defense; // String smsg = "ATR: " + atr + ", Defense: " + defense;
ChatManager.chatSystemInfo(pc, smsg); // ChatManager.chatSystemInfo(pc, smsg);
} //}
int chance; //int chance;
if (atr > defense || defense == 0) //if (atr > defense || defense == 0)
chance = 94; // chance = 94;
else { //else {
float dif = atr / defense; // float dif = atr / defense;
if (dif <= 0.8f) // if (dif <= 0.8f)
chance = 4; // chance = 4;
else // else
chance = ((int) (450 * (dif - 0.8f)) + 4); // chance = ((int) (450 * (dif - 0.8f)) + 4);
} //}
// calculate hit/miss // calculate hit/miss
int roll = ThreadLocalRandom.current().nextInt(100); //int roll = ThreadLocalRandom.current().nextInt(100);
boolean disable = true; boolean disable = true;
if (roll < chance) { int atrRoll = ThreadLocalRandom.current().nextInt(pc.level * 10,(int)atr);
int defRoll = 0;
if(AbstractCharacter.IsAbstractCharacter(awo)){
AbstractCharacter tar = (AbstractCharacter) awo;
defRoll = ThreadLocalRandom.current().nextInt(tar.level * 10,tar.defenseRating);
}
if (atrRoll < defRoll) {
// Hit, check if dodge kicked in // Hit, check if dodge kicked in
if (awo instanceof AbstractCharacter) { if (awo instanceof AbstractCharacter) {
AbstractCharacter tarAc = (AbstractCharacter) awo; AbstractCharacter tarAc = (AbstractCharacter) awo;

Loading…
Cancel
Save