/** * Level up an homunculus skill * @param hd * @param skill_id */ void hom_skillup(struct homun_data *hd, uint16 skill_id) { short idx = 0; nullpo_retv(hd); if (hd->homunculus.vaporize) return; if ((idx = hom_skill_get_index(skill_id)) < 0) return; if (hd->homunculus.skillpts > 0 && hd->homunculus.hskill[idx].id && hd->homunculus.hskill[idx].flag == SKILL_FLAG_PERMANENT && //Don't allow raising while you have granted skills. [Skotlex] hd->homunculus.hskill[idx].lv < hom_skill_tree_get_max(skill_id, hd->homunculus.class_) ) { hd->homunculus.hskill[idx].lv++; hd->homunculus.skillpts-- ; status_calc_homunculus(hd, SCO_NONE); if (hd->master) { clif_homskillup(hd->master, skill_id); clif_hominfo(hd->master,hd,0); clif_homskillinfoblock(hd->master); } } }
void merc_hom_skillup(struct homun_data *hd,int skillnum) { int i = 0 ; nullpo_retv(hd); if(hd->homunculus.vaporize) return; i = skillnum - HM_SKILLBASE; if(hd->homunculus.skillpts > 0 && hd->homunculus.hskill[i].id && hd->homunculus.hskill[i].flag == SKILL_FLAG_PERMANENT && //Don't allow raising while you have granted skills. [Skotlex] hd->homunculus.hskill[i].lv < merc_skill_tree_get_max(skillnum, hd->homunculus.class_) ) { hd->homunculus.hskill[i].lv++; hd->homunculus.skillpts-- ; status_calc_homunculus(hd,0); if (hd->master) { clif_homskillup(hd->master, skillnum); clif_hominfo(hd->master,hd,0); clif_homskillinfoblock(hd->master); } } }