Hercules Elf Bot - May 20, 2012 13:53
Originally posted by [b]seisuke[/b]
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;
[b][color=#ff0000]heal = 8 * skilllv;[/color][/b]
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 [url="http://irowiki.org/wiki/Drain_Life"]http://irowiki.org/wiki/Drain_Life[/url]
Hercules Elf Bot - May 20, 2012 14:44
Originally posted by [b]malufett[/b]
also the skill ratio is wrong...
[CODE]skillratio = 200 * skill_lv + sstatus->int_;[/CODE]
200% per skill level? + 150%(from int)?
[quote]the description says 500% + 100% per skill level + 15% from int[/quote]
but the note indicates
[quote]Damage formula is believed to be: [(INT + SkillLv * 200) * BaseLv/100] (% MATK)[/quote]
what should we use?
Hercules Elf Bot - May 20, 2012 15:22
Originally posted by [b]seisuke[/b]
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)
Hercules Elf Bot - May 20, 2012 21:58
Originally posted by [b]Rytech[/b]
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
[CODE]
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;
[/CODE]
battle.c
[CODE]
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;
[/CODE]
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).
Hercules Elf Bot - May 21, 2012 17:07
Originally posted by [b]malufett[/b]
Fixed @ [rev='16137'] Thanks for the info
actually Ind already implemented the base level checking and damage bonuses