|
@@ -3941,10 +3941,10 @@ static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,s
|
|
|
|
|
|
if (sd && sd->sc.getSCE(SC_SEVENWIND)) { // Mild Wind applies element to status ATK as well as weapon ATK [helvetica]
|
|
|
wd->statusAtk = battle_attr_fix(src, target, wd->statusAtk, right_element, tstatus->def_ele, tstatus->ele_lv);
|
|
|
- wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk, left_element, tstatus->def_ele, tstatus->ele_lv);
|
|
|
+ wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk2, left_element, tstatus->def_ele, tstatus->ele_lv);
|
|
|
} else { // status atk is considered neutral on normal attacks [helvetica]
|
|
|
wd->statusAtk = battle_attr_fix(src, target, wd->statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
|
|
|
- wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
|
|
|
+ wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk2, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
|
|
|
}
|
|
|
|
|
|
// Check critical
|
|
@@ -6802,18 +6802,16 @@ static void battle_calc_attack_left_right_hands(struct Damage* wd, struct block_
|
|
|
if (sd) {
|
|
|
int skill;
|
|
|
|
|
|
- if (!is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id)) {
|
|
|
- wd->damage = wd->damage2;
|
|
|
- wd->damage2 = 0;
|
|
|
- } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
|
|
|
+ if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
|
|
|
skill = pc_checkskill(sd,TF_DOUBLE);
|
|
|
wd->damage2 = (int64)wd->damage * (1 + (skill * 2))/100;
|
|
|
#ifdef RENEWAL
|
|
|
- } else if(is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id) && sd->status.weapon != W_KATAR) { //Dual-wield
|
|
|
+ } else if(is_attack_left_handed(src, skill_id) && sd->status.weapon != W_KATAR) { //Dual-wield
|
|
|
#else
|
|
|
- } else if(is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id)) { //Dual-wield
|
|
|
+ } else if(is_attack_left_handed(src, skill_id)) { //Dual-wield
|
|
|
#endif
|
|
|
- if (wd->damage) {
|
|
|
+ // If you only have a weapon in the left hand, then your main hand damage will be identical to an unarmed attack
|
|
|
+ if (is_attack_right_handed(src, skill_id) && wd->damage) {
|
|
|
if( (sd->class_&MAPID_BASEMASK) == MAPID_THIEF ) {
|
|
|
skill = pc_checkskill(sd,AS_RIGHT);
|
|
|
ATK_RATER(wd->damage, 50 + (skill * 10))
|
|
@@ -6825,6 +6823,7 @@ static void battle_calc_attack_left_right_hands(struct Damage* wd, struct block_
|
|
|
if(wd->damage < 1)
|
|
|
wd->damage = 1;
|
|
|
}
|
|
|
+ // Left hand damage will always be adjusted, even if you don't have a weapon in the main hand
|
|
|
if (wd->damage2) {
|
|
|
if( (sd->class_&MAPID_BASEMASK) == MAPID_THIEF) {
|
|
|
skill = pc_checkskill(sd,AS_LEFT);
|