I'll be brief. I've been trying to implement the Multi-Hit Critical for certain skills since kRO have implemented it a while ago but i've got some erros that i don't know how to fix.
I followed this pull from rathena and tried to reproduce it in Hercules source. Everything looks pretty fine unless this part bellow. Seens like they have a check for every BDT.
// crit check is next since crits always hit on official [helvetica]
if (is_attack_critical(wd, src, target, skill_id, skill_lv, true))
wd.type = DMG_CRITICAL;
if (is_attack_critical(wd, src, target, skill_id, skill_lv, true)) {
if (wd.type&DMG_MULTI_HIT)
wd.type = DMG_MULTI_HIT_CRITICAL;
else
wd.type = DMG_CRITICAL;
}
So i tried to add the "is_attack_critical" function just to make it work but still getting some errors.
Can anyone Support me?
Bellow you can check everything i've add to my source:
Skill.c
else if (strcmpi(type, "IgnoreDefCards") == 0) {
if (on) {
sk->nk |= NK_NO_CARDFIX_DEF;
} else {
sk->nk &= ~NK_NO_CARDFIX_DEF;
}
} else if (strcmpi(type, "SkillCanCritical") == 0) {
Hi guys. how are you doing?
I'll be brief. I've been trying to implement the Multi-Hit Critical for certain skills since kRO have implemented it a while ago but i've got some erros that i don't know how to fix.
I followed this pull from rathena and tried to reproduce it in Hercules source. Everything looks pretty fine unless this part bellow. Seens like they have a check for every BDT.
So i tried to add the "is_attack_critical" function just to make it work but still getting some errors.
Can anyone Support me?
Bellow you can check everything i've add to my source:
Skill.c
else if (strcmpi(type, "IgnoreDefCards") == 0) {
if (on) {
sk->nk |= NK_NO_CARDFIX_DEF;
} else {
sk->nk &= ~NK_NO_CARDFIX_DEF;
}
} else if (strcmpi(type, "SkillCanCritical") == 0) {
if (on) {
sk->nk |= NK_CRITICAL;
} else {
sk->nk &= ~NK_CRITICAL;
}
}
Skill.h
enum e_skill_nk {
NK_NONE = 0x00,
NK_NO_DAMAGE = 0x01,
NK_SPLASH = 0x02|0x04, // 0x4 = splash & split
NK_SPLASH_ONLY = 0x02,
NK_SPLASHSPLIT = 0x04,
NK_NO_CARDFIX_ATK = 0x08,
NK_NO_ELEFIX = 0x10,
NK_IGNORE_DEF = 0x20,
NK_IGNORE_FLEE = 0x40,
NK_NO_CARDFIX_DEF = 0x80,
NK_CRITICAL = 0x100, // Multi-Hit Critical
};
Battle.h
enum battle_dmg_type {
BDT_NORMAL = 0, // Normal attack
//BDT_PICKUP = 1, // Pick up item
//BDT_SITDOWN = 2, // Sit down
//BDT_STANDUP = 3, // Stand up
BDT_ENDURE = 4, // Damage (endure)
BDT_SPLASH = 5, // Splash
BDT_SKILL = 6, // Skill
//BDT_REPEAT = 7, // (repeat damage?)
BDT_MULTIHIT = 8, // Multi-hit damage
BDT_MULTIENDURE = 9, // Multi-hit damage (endure)
BDT_CRIT = 10, // Critical hit
BDT_PDODGE = 11, // Lucky dodge
//BDT_TOUCH = 12, // (touch skill?)
BDT_MULTI_HIT_CRITICAL = 13, // Multi-Hit Critical
};
Also, i've added the clif.c and skill_db flags.
Thanks in advance
Share this post
Link to post
Share on other sites