Hello, I don't know if you still need this fix, but apparently the source for Summoner skill is uncompleted, but, I can give you fix for Picky Peck skill, if you need other Summoner Skill fix, I'm not yet that far.
To fix that you need some step to fix it.
First you need a change at skill.c
Find this block of code :
case SU_BITE:
skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
if (status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
break;
case SU_PICKYPECK:
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
break;
and replace it with
case SU_PICKYPECK:
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
case SU_BITE:
skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
if (status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) * 10 + 10))
skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
break;
Second please find at battle.c
case SU_PICKYPECK:
case SU_PICKYPECK_DOUBLE_ATK:
skillratio += 100 + 100 * skill_lv;
if ((status_get_max_hp(target) / 100) <= 50)
skillratio *= 2;
break;
replace with
case SU_PICKYPECK:
case SU_PICKYPECK_DOUBLE_ATK:
skillratio += 100 + 100 * skill_lv;
if ((status_get_max_hp(target) / 100) <= 50)
skillratio *= 2;
if(sd && pc->checkskill(sd, SU_SPIRITOFLIFE))
skillratio += skillratio * status_get_hp(src) / status_get_max_hp(src);
break;
Third, find SU_PICKYPECK and SU_PICKYPECK_DOUBLE at skill_db.conf (re/pre-re)
Find
NumberOfHits: -5
and change it into
NumberOfHits: 5
Then Finally Recompile your server, and voila! Picky Peck skill is fixed!
I hope this will help you, and anybody here need this skill to work!