Code:
public static double getMaxHit(Player player) {
double maxHit = 0.0D;
int strengthLevel = player.getSkills().getLevel(Skills.STRENGTH);
double prayerMultiplier = 1.0D;
double itemMultiplier = 1.0D;
double specialMultiplier = 1.0D;
int optionBonus = 0;
if (player.getAttackOption().name().contains("AGGRESSIVE")) {
optionBonus = 3;
} else if (player.getAttackOption().name().contains("CONTROLLED")) {
optionBonus = 1;
}
if (player.isPrayerActive(PrayerConstants.BURST_OF_STRENGTH)) {
prayerMultiplier = 1.05D;
} else if (player.isPrayerActive(PrayerConstants.SUPERHUMAN_STRENGTH)) {
prayerMultiplier = 1.1D;
} else if (player.isPrayerActive(PrayerConstants.ULTIMATE_STRENGTH)) {
prayerMultiplier = 1.15D;
} else if (player.isPrayerActive(PrayerConstants.CHIVALRY)) {
prayerMultiplier = 1.18D;
} else if (player.isPrayerActive(PrayerConstants.PIETY)) {
prayerMultiplier = 1.23D;
}
if (usingVoidMelee(player)) {
itemMultiplier = 1.10D;
}
for (Item item : OBSIDIAN_WEAPONS) {
if (player.getEquipment().contains(11128) && player.getEquipment().contains(item.getId())) {
itemMultiplier = 1.20D;
}
}
double effectiveStrength = Math.floor(strengthLevel * prayerMultiplier * itemMultiplier) + optionBonus;
if (player.usingSpecial) {
switch (player.getEquipment().get(Equipment.SLOT_WEAPON).getId()) {
case 11802:
specialMultiplier = 1.375D;
break;
case 11804:
specialMultiplier = 1.21D;
break;
case 3204:
case 3101:
case 11806:
case 11808:
specialMultiplier = 1.10D;
break;
case 5698:
case 1215:
case 5680:
case 1305:
specialMultiplier = 1.15D;
break;
case 12809:
specialMultiplier = 1.25D;
break;
case 1434:
specialMultiplier = 1.45D;
break;
case 13265:
case 13267:
case 13269:
case 13271:
specialMultiplier = 0.85D;
break;
}
}
double baseDamage = (1.3 + ((effectiveStrength / 10) + (player.getBonus(Equipment.STRENGTH_BONUS) / 80) + (effectiveStrength
* player.getBonus(Equipment.STRENGTH_BONUS) / 640)));
maxHit = Math.floor(baseDamage * specialMultiplier);
if (usingDharoks(player)) {
int count = player.getSkills().getLevelForExperience(player.getSkills().getExperience(Skills.HITPOINTS))
- player.getSkills().getLevel(Skills.HITPOINTS);
for (int i = 0; i < count; i++) {
if (i < 98)
maxHit += maxHit * .01;
}
}
player.getActionSender().sendMessage("[max_hit= " + maxHit + "]");
return maxHit;
}
Range:
Code:
public static double getMaxHit(Player player) {
double maxHit;
int rangeLevel = player.getSkills().getLevel(Skills.RANGE);
double specialMultiplier = 1.0D;
double prayerMultiplier = 1.0D;
double itemMultiplier = 1.0D;
int optionBonus = 0;
if (player.isPrayerActive(PrayerConstants.SHARP_EYE)) {
prayerMultiplier = 1.05D;
} else if (player.isPrayerActive(PrayerConstants.HAWK_EYE)) {
prayerMultiplier = 1.10D;
} else if (player.isPrayerActive(PrayerConstants.EAGLE_EYE)) {
prayerMultiplier = 1.15D;
}
if (usingVoidRange(player)) {
itemMultiplier = 1.20D;
}
if (player.getAttackOption().name().contains("ACCURATE")) {
optionBonus = 3;
}
double effectiveStrength = Math.floor(rangeLevel * prayerMultiplier * itemMultiplier) + optionBonus;
double baseDamage = 1.3 + Math.floor((effectiveStrength / 10) + (player.getBonus(Equipment.RANGE_BONUS) / 80)
+ ((effectiveStrength * player.getBonus(Equipment.RANGE_BONUS)) / 640));
if (player.usingSpecial) {
if (player.getEquipment().contains(11235)) {
if (player.getEquipment().contains(11212)) {
specialMultiplier = 1.50D;
} else {
specialMultiplier = 1.30D;
}
}
switch (player.getEquipment().get(Equipment.SLOT_ARROWS).getId()) {
case 9243:
case 9245:
specialMultiplier = 1.15D;
break;
case 9236:
specialMultiplier = 1.25D;
break;
case 9244:
specialMultiplier = 1.45D;
break;
}
}
maxHit = Math.floor(baseDamage * specialMultiplier);
return Math.floor(maxHit);
}