I wanted to know the damage formula for level 5 shield boomerang (without considering the defence of who takes it), because the skill description isn't clear enought.
By the description, shield weight and refine rate improves the 250% of ATK damage (at level 5). But how?
I've searched on google only to realize that there are other people wanting to know that. I've managed (maybe) to solve this by looking at the code of eathena (found in
http://code.google.com/p/eathena-project...txt&r=4172 at battle.c).
I don't know if it's the correct formula, but appears that it's something like:
damage = (ATK * 250%) + (shield.weight/10) + (10 * refine),
where by ATK I mean pure Atk (without Atk modifiers, e.g,
Pirate Dagger etc.).
Based on this (look at the reference code bellow):
Quote:ATK_ADD(10*sd->status.inventory[index].refine);
and
Quote:ATK_ADD(sd->inventory_data[index]->weight/10);
For exemple, with 265 atk and + 4 shield (130 weight) we should have: damage = (265 * 2.5) + (130/10) + (10 * 4) = 715.5.
Testing with some monsters shows that it's pretty accurate, e.g, in poring it does 714 damage, and he haves 1 vit
. Remeber that shield boomerang ignores size modifiers.
It's nice to know that formula, because with it you realize that it's better (with respect to damage of shield boomerang) to have a + 10 guard (30 weight) than a + 4 shield (130 weight), wich gives 103 and 53 added damage, respectively.
But here's the question: when I tryed shield boomerang with 266 atk and + 4 Cross Shield (200 weight, increase by 30% the damage of shield boomerang) on poring, it does 1131 damage while by the formula: damage = [(266 * 2.5) * 1.3] + (200/10) + (10 * 4) = 924.5. So what's the correct way to calculate the 30% increase, or if it's wrong, what is the correct formula?
For curiosity and reference, here is the code:
lines 1332 - 1345
Code:
case CR_SHIELDBOOMERANG:
case PA_SHIELDCHAIN:
...
if (index >= 0 && sd->inventory_data[index] &&
sd->inventory_data[index]->type == 5)
ATK_ADD(sd->inventory_data[index]->weight/10);
break;
}
and lines 1943 - 1949
Code:
if (skill_num == CR_SHIELDBOOMERANG ||
skill_num == PA_SHIELDCHAIN) { //Refine bonus applies after
cards and elements.
short index= sd->equip_index[8];
if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == 5)
ATK_ADD(10*sd->status.inventory[index].refine);
}