Inquisetor90
-
Content Count
4 -
Joined
-
Last visited
Posts posted by Inquisetor90
-
-
RE_LVL_MDMOD(150);
Replace that withRE_LVL_DMOD(150);
I forgotten that the RE_LVL_MDMOD relied on the md.damage variable instead of wd.damage.
-
The skill_db.txt change was correct.
So we'll move onto /src/map/battle.c (link provided but this including the matching line numbers can change at any time).
First Step:
Remove the part I just bolded in red out. You can ctrl+f that.case RK_DRAGONBREATH:case RK_DRAGONBREATH_WATER:md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv;RE_LVL_MDMOD(150);if (sd) md.damage = md.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100;md.flag |= BF_LONG|BF_WEAPON;break;Ok, now in
struct Damage battle_calc_weapon_attack(Under the booleanif (flag.hit && !flag.infdef) //No need to do the math for plants{ //Hitting attackIn the switch statement//Constant/misc additions from skillsswitch (skill_id) { <-- line 4679case KO_MAKIBISHI:wd.damage = 20 * skill_lv;break;case KO_SETSUDAN:if( tsc && tsc->data[sC_SOULLINK] ){ATK_ADDRATE(200*tsc->data[sC_SOULLINK]->val1);status_change_end(target,SC_SOULLINK,INVALID_TIMER);}break; <-- line 4763case RK_DRAGONBREATH:case RK_DRAGONBREATH_WATER:wd.damage = ((status_get_hp(src)/50) + (status_get_max_sp(src) / 4)) * skill_lv;RE_LVL_MDMOD(150);if (sd) wd.damage = wd.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100;break;} <--line 4764#ifndef RENEWAL//Div fix.damage_div_fix(wd.damage, wd.div_);The blue bit is what you add. Like I said this is only a temporary fix (not even perfect) as I don't know how size/ele/race codes will modify it by putting it there.
The skill_db.txt already states that dragon breath has a range of 9 hence it should be ranged/LONG skill without needed to change it in the source. Otherwise alternatively change that to -9 (that's what AC_SHOWER looks like) and see whether it'll work. -
Related to Bug issue 8029
In /db/re/skill_db.txt you set RK_DRAGONBREATH as weapon from misc. I wonder whether md.damage (a misc damage variable) has anything to do with it?
Note that there is no wd.damage variable in /src/map/battle.c for RK_DRAGONBREATH. The damage of RK_DRAGONBREATH is determined by the variable md.damage.
Also note that wd.damage and md.damage exists in two different functions.This in the function battle_calc_misc_attack
https://github.com/HerculesWS/Hercules/blob/master/src/map/battle.ccase RK_DRAGONBREATH:case RK_DRAGONBREATH_WATER:md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv;RE_LVL_MDMOD(150);if (sd) md.damage = md.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100;md.flag |= BF_LONG|BF_WEAPON;break;End of this function hasreturn md;A lot of skills that I checked with in this very function were labelled as misc in /db/re/skill_db.txt instead of weapon. Examples include CR_ACIDDEMONSTRATION, NJ_ZENYNAGE, trap skills .etc.
Maybe we should test this out by changing NJ_ZENYNAGE in /db/re/skill_db.txt from misc to weapon and see whether it still works._____________
My suggestion:
Move dragon breath coding in battle.c to battle_calc_weapon_attack from battle_calc_misc_attack function and rename md.damage as wd.damage instead. Also, I think md.flag would become wd.flag.
Michieru's Renewal Update
in Repository News
Posted · Edited by Inquisetor90
Ok, good luck testing it with regards to the following!
Damage - Hopefully it does over 10000 damage now with all stats at 120 for a RK.
Size
Racial (test with hydra and thara frog cards.)
Elemental
Defense
Flee/Hit
Perfect Dodge
Range (Test with defending aura, horn card and pneuma).
Base level (100% at level 150)