Issue information

Issue ID
#8548
Status
New
Severity
None
Started
Zia
Feb 25, 2015 8:17
Last Post
Zia
Jun 22, 2015 17:42
Confirmation
N/A

Zia - Feb 25, 2015 8:17

Pain Killer does not grant the lowered aspd, damage decrease, and endure status that it should.

Here's what it should do:

[b]Skill Description[/b]
Sera attacks a target with a paralyzing poison, slowing the target's [url="http://irowiki.org/wiki/ASPD"]ASPD[/url] and decreasing the damage it receives. Targets inflicted with the Paralysis status will be under the [url="http://irowiki.org/wiki/Endure"]Endure[/url] status for the skill's duration.

[b]Note:[/b][list]
[*]The damage reduction provided is a flat reduction of (SkillLevel*200)*(HomunculusLevel/150) upto a maximum of 1000.
[*]The damage reduction is applied after all % based reductions with the exception of [url="http://irowiki.org/wiki/Mental_Strength"]Mental Strength[/url].
[*]The endure effect is lost upon receiving 7 hits.
[*]Skills that hit more than once (e.g. - Firebolt) will have the damage reduction applied to each hit.
[*]Skills that hit more than once but calculate the entire damage and then divide by number of hits (e.g. - Arrow Storm) will have the damage reduction apply only once.
[/list]
source: [url="http://irowiki.org/wiki/Pain_Killer"]http://irowiki.org/wiki/Pain_Killer[/url]


[b]Results of testing in our test server[/b]

Buff Test:
[url="http://youtu.be/ZLp85XVBS0Y"]http://youtu.be/ZLp85XVBS0Y[/url]

Damage Reduction Test:
[url="http://youtu.be/W_5jQ_7Auqk"]http://youtu.be/W_5jQ_7Auqk[/url]

This post has been edited by Zia on Feb 25, 2015 8:18

Zia - Apr 10, 2015 16:36

bump

Anisotropic Defixation - May 6, 2015 12:59

The whole block is actually wrong (status.c).[code=auto:0]case SC_PAIN_KILLER: //[Lighta] need real info val2 = 2*val1; //aspd reduction % val3 = 2*val1; //dmg reduction % if(sc->data[SC_NEEDLE_OF_PARALYZE]) sc_start(src, bl, SC_ENDURE, 100, val1, tick); //start endure for same duration break; [/code]It only applies Endure (wrong duration too) if you are affected by Needle of Paralyze, no idea where this wrong info was fished. Damage and ASPD reductions are wrong as well.

What it's supposed to do is apply level 7 Endure, with normal duration and hit limit.

Here's a ghetto solution:[code=auto:0]case SC_PAIN_KILLER: val2 = 10 * val1; // ASPD reduction % val3 = min((( 200 * val1 ) * status_get_lv(src)) / 150, 1000); // flat DMG reduction up to a maximum of 1000 [iRO Wiki] sc_start(src, bl, SC_ENDURE, 100, 7, tick); // Starts level 7 Endure break; [/code][code=auto:0]if (sc->data[SC_PAIN_KILLER]) bonus -= sc->data[SC_PAIN_KILLER]->val2; [/code][code=auto:0] if( sc->data[SC_PAIN_KILLER]) aspd_rate += sc->data[SC_PAIN_KILLER]->val2 * 10; [/code]

This post has been edited by Anisotropic Defixation on Oct 25, 2015 18:22

Zia - Jun 19, 2015 17:37

Worth a try since this report isn't getting any love at all.
I was told there's a fix like 3 months ago or so but I dunno why its not being added

This post has been edited by Zia on Jun 19, 2015 17:39

Zia - Jun 22, 2015 17:42

So I tried your fix.

Plus, I edited [b]skill_db[/b]

from

[color=#ff8c00]8021,1,6,[b]1[/b],0,0x1,0,5,1,no,0,0,0,none,0, MH_PAIN_KILLER,Pain Killer[/color]

to

[color=#008000]8021,1,6,[b]16[/b],0,0x1,0,5,1,no,0,0,0,none,0, MH_PAIN_KILLER,Pain Killer[/color]

and [b]battle.c[/b]

from

[color=#ff8c00] if(sc->data[SC_PAIN_KILLER]){[/color]
[color=#ff8c00] damage -= sc->data[SC_PAIN_KILLER]->val3/100;[/color]

to


[color=#008000] if(sc->data[SC_PAIN_KILLER]){[/color]
[color=#008000] damage -= sc->data[SC_PAIN_KILLER]->val3;[/color]
[color=#008000] damage = max(1,damage);[/color]

and it worked. buff could be cast on friendly units, lasted for 60 seconds, was only receiving 1 damage from every hit, etc.