羅剎破凰擊源碼修改
本帖最後由 盧卡斯 於 2015-2-8 07:51 PM 編輯由於官方版本的羅剎破凰擊 HP bonus 部份為無視抗人,
但是在Rathena/Hercules/3ceam/SEAR 中,羅剎破凰擊 HP bonus 部份均為有視抗人。
故現在希望可以藉修改源碼以修復此問題。
已考慮過的解決方法,
1. 在skill.c 的 case SR_GATEOFHELL 中新增status_zap 的function 以達到直接把對方的HP吸取而忽略抗人,但傷害顯示方式便會有別於官方。
2. 在使用技能時再觸發另一技能,SR_GATEOFHELL_BONUS,然後在skill_db中設置成無視抗人的屬性,傷害顯示方式一樣是有別於官方。
故暫時排除以上兩個方法。
希望有人能提供可行的解決方法,不要求閣下提供完整的源碼diff (如果有當然最好)
以下為羅剎破凰擊相關的源碼,
skill.c case SR_GATEOFHELL:
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
break;case SR_GATEOFHELL:
if( sd->spiritball > 0 )
sd->spiritball_old = require.spiritball;
break;case SR_GATEOFHELL:
if( sc && sc->data && sc->data->val1 == SR_FALLENEMPIRE )
req.sp -= req.sp * 10 / 100;
break;battle.c if (skill_id == SR_GATEOFHELL) {
if (skill_lv < 5)
return BF_SHORT;
else
return BF_LONG;
} case SR_GATEOFHELL:
case KO_BAKURETSU:
wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
break;case SR_GATEOFHELL:
if( sc && sc->data && sc->data->val1 == SR_FALLENEMPIRE )
skillratio += 700 * skill_lv;
else
skillratio += 400 * skill_lv;
RE_LVL_DMOD(100);
break;case SR_GATEOFHELL: {
struct status_data *sstatus = status_get_status_data(src);
ATK_ADD(wd.damage, wd.damage2, sstatus->max_hp - status_get_hp(src));
if(sc && sc->data && sc->data->val1 == SR_FALLENEMPIRE) {
ATK_ADD(wd.damage, wd.damage2, (sstatus->max_sp * (1 + skill_lv * 2 / 10)) + 40 * status_get_lv(src));
} else
ATK_ADD(wd.damage, wd.damage2, (sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src));
}
頁:
[1]