Jump to content

  •  

Bug Tracker Migration

June 3rd
Good news everyone! The staff has decided that it is time to slowly kill off this Bug Tracker. We will begin the process of slowly migrating from this Bug Tracker over to our Github Issues which can be found here: https://github.com/HerculesWS/Hercules/issues

Over the next couple of days, I will be closing off any opportunity to create new reports. However, I still will keep the opportunity to reply to existing Bug Reports. Doing this will allow us to slowly fix any bug reports we have listed here so that we can easily migrate over to our Issue Tracker.

Update - June 7th 2015: Creating new bug posts has been disabled. Please use our https://github.com/HerculesWS/Hercules/issues tracker to post bugs. Users are still able to reply to existing bug posts.

- Administration

Issue Information

  • #008548

  • 0 - None Assigned

  • New

Issue Confirmations

  • Yes (0)No (0)
Photo

Homunculus Sera Skill - Pain Killer: Does not buff or work at all

Posted by Zia on 25 February 2015 - 08:17 AM

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

Here's what it should do:

Skill Description
Sera attacks a target with a paralyzing poison, slowing the target's ASPD and decreasing the damage it receives. Targets inflicted with the Paralysis status will be under the Endure status for the skill's duration.

Note:
  • 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 Mental Strength.
  • 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.
source: http://irowiki.org/wiki/Pain_Killer


Results of testing in our test server

Buff Test:


Damage Reduction Test:

The whole block is actually wrong (status.c).
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;
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:
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;
if (sc->data[SC_PAIN_KILLER])
    bonus -= sc->data[SC_PAIN_KILLER]->val2;
if( sc->data[SC_PAIN_KILLER])
    aspd_rate += sc->data[SC_PAIN_KILLER]->val2 * 10;

Edited by Anisotropic Defixation, 25 October 2015 - 06:22 PM.


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

Edited by Zia, 19 June 2015 - 05:39 PM.


So I tried your fix.

Plus, I edited skill_db

from

8021,1,6,1,0,0x1,0,5,1,no,0,0,0,none,0,  MH_PAIN_KILLER,Pain Killer

to

8021,1,6,16,0,0x1,0,5,1,no,0,0,0,none,0,  MH_PAIN_KILLER,Pain Killer

and battle.c

from

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

to


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

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