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 boolean
if (flag.hit && !flag.infdef) //No need to do the math for plants
{ //Hitting attack
In the switch statement
//Constant/misc additions from skills
switch (skill_id) { <-- line 4679
case 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 4763
case 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.