Issue Information
-
#006321
-
0 - None Assigned
-
Fixed
Issue Confirmations
-
Yes (2)No (1)
Today a Rune Knight at my server got the Ur's set and tried his hundred spear... the result was very strange, about 80k damage with the skill (which is highly spammable), then i asked him to change to a heavier weapon, he changed to a hunting spear, and did about 32k damage.... my question is, is this normal? it really doesn't seem so... could someone give me an answer please?
what is Ur's Set? can you post your item_db of that Set?
Yeah, Extreme damage with this set and Hundred Spear... 1 of my players has reported this.
2475,Urj_Greaves,Urj Greaves,5,20,,900,,32,,1,0x00000080,8,2,64,,100,1,0,{ bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7; },{},{} 2574,Urj_Manteau,Urj Manteau,5,20,,600,,20,,0,0x00000080,8,2,4,,100,1,0,{ bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10; },{},{} 2883,Urj_Seal,Urj Seal,5,20,,200,,4,,1,0x00000080,8,2,136,,100,0,0,{ bonus bMaxHPrate,2; },{},{} 15036,Urj_Plate,Urj Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5; },{},{}
Edited by InfectedX, 26 July 2012 - 03:16 AM.
It may be because of this part:
skillratio += spearwbd;
IN CS the weight bonus is add to atk_add:
ATK_ADD(weight * skill_lv)
So, following CS's logic we'd add spearwbd to atk_add:
ATK_ADD(spearwbd);
It might also be because of RE-ATK/DEF not implemented yet.
Edited by MarkZD, 26 July 2012 - 07:12 AM.
Hmmm, could be, but anyway i want to see an oficial answer, at least from a core developer or script developer...
lol nvm xD
Why it is so diferent?
Edited by InfectedX, 26 July 2012 - 07:24 AM.
About above question:
I didn't notice maluffet have changed(optimized) HS formula.
http://sourceforge.n...changeset/16487
It's the reason of beeing different, but not "so" different.
10000 - sd->inventory_data[index]->weight;
is similar to
1000 - sd->inventory_data[index]->weight / 10;
since weight is beeing divided by 10, we can remove it and replace with:
1000 * 10 - sd->inventory_data[index]->weight;
which is the same as:
10000 - sd->inventory_data[index]->weight;
Edited by MarkZD, 26 July 2012 - 07:44 AM.
but anyway i think that is where the damage becomes over powered for this skill... should it be like 1000 then? because if you see:
1000 - sd->inventory_data[index]->weight / 10;
The / is dividing the 1000, so if it has changed to 10000 it must be divided to 10, doesn't it?
but anyway i think that is where the damage becomes over powered for this skill... should it be like 1000 then? because if you see: 1000 - sd->inventory_data[index]->weight / 10;The / is dividing the 1000, so if it has changed to 10000 it must be divided to 10, doesn't it?
You're right because before the max would be 1000 when weapon weight is zero, but now it's over nine thousand(10000).
I didn't see it, maybe because it's time to sleep.
skillratio += max(10000 - sd->inventory_data[index]->weight, 0);
Should be:
skillratio += max(1000 - sd->inventory_data[index]->weight/10, 0);
Edited by MarkZD, 26 July 2012 - 07:53 AM.
Check this out, i tested this with, all stats in 1, and this formula and the HS makes me a damage arround 23 - 24k per hit that makes a total of = 115k - 120k... per HS casted.
So i decided to change the 10000 to 1000 and the damage goes down arround 4k - 5k per hit... and around 20k - 25k per HS casted... better than before....
so it should be like this... maybe?
case RK_HUNDREDSPEAR:
skillratio += 500 + (80 * skill_lv);
if( sd )
{
short index = sd->equip_index[EQI_HAND_R];
if( index >= 0 && sd->inventory_data[index]
&& sd->inventory_data[index]->type == IT_WEAPON )
skillratio += max(1000 - sd->inventory_data[index]->weight, 0);
skillratio += 50 * pc_checkskill(sd,LK_SPIRALPIERCE);
} // (1 + [(Caster’s Base Level - 100) / 200])
skillratio = skillratio * (100 + (status_get_lv(src)-100) / 2) / 100;
break;
Edited by InfectedX, 26 July 2012 - 08:02 AM.
the formula of HS is
<br />Hundred Spear<br />Variable Cast Time: (1.1 - 0.1 * Skill Level) seconds<br />Fixed Cast Time: None<br />Skill re-use Delay: 3 seconds<br />Global Skill Delay: 0.5 second<br />Spear Boomerang Activation Chance: (10 + 3 * Skill Level) %<br />Damage = ATK [{(600 + (Skill Level x 80) + (1000 - Weight of the Spear)} x (1 + [(Caster’s Base Level - 100) / 200])] %<br />*** If the spear’s weight is over 1,000, it will be set to 1,000 in the calculation.<br />Bonus damage: (Clashing Spiral skill level x ATK 50%).<br />
base on http://rathena.org/b...ebalancing-kro/
oopps..sorry guys I forgot to negate one 0....Thank you guys for the keen analysis...
I'll commit later the fix...
So the formula i posted before is not only the closer to the iro's formula but also better than the rathena's has modified... =/ unfortunately, i don't have idea if my formula is correct compared with yours taken from iro...
skillratio += max(1000 - sd->inventory_data[index]->weight/10, 0);
- he forgot to negate this part
thanks for the help infected and markzD
i always see infected and markZD helping with coding problem, if i only knew how to code src i will help also but i have no knowledge at all.. XD
- thanks malufett..
Edited by GM Takumirai, 26 July 2012 - 08:55 AM.
suppose to be
skillratio += max(10000 - sd->inventory_data[index]->weight, 0) / 10;or
skillratio += max(1000 - sd->inventory_data[index]->weight / 10, 0);
any will do...
xD no problem everybody helps as they can, don't worry, you will learn, only what you need is curiosity
lol?
This will crashes the server's compilation, so, i think is the 2nd one... but any way, i changed the 10000 to 1000 w/o changing the rest, xD and it gives a better result hahaha XD anyway, why you don't try this:skillratio += max(10000- sd->inventory_data[index]->weight,0)/10;
skillratio += max(1000 - sd->inventory_data[index]->weight, 0);
Edited by InfectedX, 26 July 2012 - 09:03 AM.
no it will not crash...and with your suggestion it will turn to negative..
oh i see, the suggested formula from some posts above suggested dividing by 10 without putting the part of the formula before between "( )", but by putting the "( )" spears like gigantic spear which weights 2000 will not turn negative the ecuation, i see now.
Fixed @ [rev='16506']
Forget this post, I didn't check changeset very well.
Edited by MarkZD, 26 July 2012 - 09:34 PM.
This:
skillratio += max(10000 - sd->inventory_data[index]->weight, 0)
Is not this:
skillratio += max(1000 - sd->inventory_data[index]->weight / 10, 0)
nor this:
skillratio += max(10000 - sd->inventory_data[index]->weight, 0) / 10;
Pay attention to the formulas, they seem similar, nevertheles they give very different results.
I think maluffet's formula is to be the right one.