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

  • #005777

  • 2 - Fair

  • Fixed

Issue Confirmations

  • Yes (0)No (0)
Photo

[Drain Life] - Warlock

Posted by Hercules Bot on 20 May 2012 - 01:53 PM

Originally posted by seisuke
Just noticed that Drain Life does not drain the correct amount of life. The skript on rAthena looks like this:

WL_DRAINLIFE:
{
int heal = skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
int rate = 70 + 4 * skilllv + ( sd ? sd->status.job_level : 50 ) / 5;

heal = 8 * skilllv;
if( status_get_lv(src) > 100 ) heal = heal * status_get_lv(src) / 100; // Base level bonus.

if( bl->type == BL_SKILL )
heal = 0; // Don't absorb heal from Ice Walls or other skill units.

if( heal && rnd()%100 < rate )
{
status_heal(src, heal, 0, 0);
clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1);
}
}

at the marked line, the drainlife heal is set to 8*skilllvl resulting in a 40 hp heal at lvl five. As far as I know the skill should heal depending on damage done. see http://irowiki.org/wiki/Drain_Life

Originally posted by malufett
also the skill ratio is wrong...
skillratio = 200 * skill_lv + sstatus->int_;
200% per skill level? + 150%(from int)?

the description says 500% + 100% per skill level + 15% from int


but the note indicates

Damage formula is believed to be: [(INT + SkillLv * 200) * BaseLv/100] (% MATK)


what should we use?

Originally posted by seisuke
acually I'm just a warlock player who wants to have a useful drainlife spell on my server. But let's see:

from the description on the iRO wiki I gather that only the heal should be influenced by baselevel. That already seems to be cosidert with the " if( status_get_lv(src) > 100 ) heal = heal * status_get_lv(src) / 100; // Base level bonus. " line. the other formula seems to raise the damage according to baselevel which would further raise the heal based on baselevel.

Thus I'd say the damage formula should be the first one.
"500% + 100% per skill level + 15% from int" (Though I'm not really sure why the damage has to be further increased by int)

Originally posted by Rytech
Drain Life
Fixed Cast Time: 1 second
Variable Cast Time: 4 seconds
Skill re-use Delay: 2 seconds
HP Leech: (5 + 5 * Skill Level) %
Success Chance: (70 + 5 * Skill Level) %
MATK [{( Skill Level x 200 ) + ( Caster’s INT ) } x ( Caster’s Base Level / 100 )] %

skill.c
case WL_DRAINLIFE:
  {
   int heal = skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
   int rate = 70 + 5 * skilllv;
   heal = heal * (5 + 5 * skilllv) / 100;
   if( bl->type == BL_SKILL )
    heal = 0; // Don't absorb heal from Ice Walls or other skill units.
   if( heal && rand()%100 < rate )
   {
    status_heal(src, heal, 0, 0);
    clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1);
   }
  }
  break;

battle.c
	 case WL_DRAINLIFE:
	  skillratio = 200 * skill_lv + sstatus->int_;
	  //if( re_baselv_bonus == 1 && s_level >= 100 )
	   skillratio = skillratio * s_level / 100; // Base level bonus.
	  break;

There's the fix. I would add it but im working on some major updates for the Royal Guard and cant get to my other computer that has the rAthena files on it. Also for the battle.c I commited out the line for the config and base level checks since rAthena doesent support it yet (will add it in the future once its ready).

Originally posted by malufett
Fixed @ [rev='16137'] Thanks for the info

actually Ind already implemented the base level checking and damage bonuses

moved issue from Skills