Issue Information
-
#005777
-
2 - Fair
-
Fixed
Issue Confirmations
-
Yes (0)No (0)
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
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...
but the note indicates
what should we use?
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)
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
battle.c
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).
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
Fixed @ [rev='16137'] Thanks for the info
actually Ind already implemented the base level checking and damage bonuses
moved issue from Skills