hit roll formula added
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user