diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 3df63e4968..fd703456b4 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -66,6 +66,8 @@ // 0x08000 - skill that can be used to target while under SC__MANHOLE effect // 0x10000 - skill that affects hidden targets // 0x20000 - skill that affects SC_GLOOMYDAY_SK +// 0x40000 - skill that is affected by SC_DANCEWITHWUG +// 0x80000 - skill blocked by RA_WUGBITE // 17 Name // 18 Description 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill @@ -136,7 +138,7 @@ 48,-1,8,0,-1,0,0,10,2,no,0,0,0,weapon,0,0x0, TF_DOUBLE,Double Attack 49,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, TF_MISS,Improve Dodge 50,1,6,1,0,1,0,10,1,no,0,0,0,weapon,0,0x0, TF_STEAL,Steal -51,1,6,4,0,1,0,10,1,no,0,0,0,none,0,0x4064, TF_HIDING,Hiding +51,1,6,4,0,1,0,10,1,no,0,0,0,none,0,0x84064, TF_HIDING,Hiding 52,-2,6,1,5,0,0,10,1,no,0,0,0,weapon,0,0x0, TF_POISON,Envenom 53,9,6,16,5,0x1,0,1,1,no,0,0,0,weapon,0,0x0, TF_DETOXIFY,Detoxify // @@ -238,7 +240,7 @@ 132,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, AS_RIGHT,Righthand Mastery 133,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, AS_LEFT,Lefthand Mastery 134,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, AS_KATAR,Katar Mastery -135,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x60, AS_CLOAKING,Cloaking +135,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x80060, AS_CLOAKING,Cloaking 136,1,8,1,-1,0,0,10,-8,no,0,0,0,weapon,0,0x0, AS_SONICBLOW,Sonic Blow 137,3:4:5:6:7,6,1,-1,0x2,1,5,1,no,0,0,0,weapon,0,0x4, AS_GRIMTOOTH,Grimtooth 138,1,6,16,5,0x1,0,10,1,no,0,0x400,0,weapon,0,0x0, AS_ENCHANTPOISON,Enchant Poison @@ -959,7 +961,7 @@ 2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0, GC_WEAPONCRUSH,Weapon Crush 2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, GC_VENOMPRESSURE,Venom Pressure 2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0, GC_POISONSMOKE,Poison Smoke -2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40, GC_CLOAKINGEXCEED,Cloaking Exceed +2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x80040, GC_CLOAKINGEXCEED,Cloaking Exceed 2034,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,0,0x0, GC_PHANTOMMENACE,Phantom Menace 2035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, GC_HALLUCINATIONWALK,Hallucination Walk 2036,0,6,4,-1,0x2,1:1:1:1:2,5,1,no,0,0,0,weapon,0,0x0, GC_ROLLINGCUTTER,Rolling Cutter @@ -1001,12 +1003,12 @@ 2239,3,6,2,0,0x42,3,5,1,no,0,0x80,3,misc,0,0x2800, RA_CLUSTERBOMB,Cluster Bomb 2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, RA_WUGMASTERY,Warg Mastery 2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000, RA_WUGRIDER,Warg Rider -2242,0,6,4,-1,0x42,1,1,0,no,0,0,0,weapon,0,0x2000, RA_WUGDASH,Warg Dash -2243,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike -2244,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x80, RA_WUGBITE,Warg Bite +2242,0,6,4,-1,0x42,1,1,1,no,0,0,0,weapon,0,0x42000, RA_WUGDASH,Warg Dash +2243,9,6,1,0,0x98,0,5,1,no,0,0,0,weapon,0,0x42000, RA_WUGSTRIKE,Warg Strike +2244,9,6,1,0,0x98,0,5,1,no,0,0,0,weapon,0,0x40080, RA_WUGBITE,Warg Bite 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_TOOTHOFWUG,Tooth of Warg 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0x40000,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen -2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x42, RA_CAMOUFLAGE,Camouflage +2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x80042, RA_CAMOUFLAGE,Camouflage 2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RA_RESEARCHTRAP,Research Trap 2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_MAGENTATRAP,Magenta Trap 2250,3,6,2,1,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_COBALTTRAP,Cobalt Trap diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 2aec2db69f..233b86c48b 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -66,6 +66,8 @@ // 0x08000 - skill that can be used to target while under SC__MANHOLE effect // 0x10000 - skill that affects hidden targets // 0x20000 - skill that affects SC_GLOOMYDAY_SK +// 0x40000 - skill that is affected by SC_DANCEWITHWUG +// 0x80000 - skill blocked by RA_WUGBITE // 17 Name // 18 Description 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill @@ -136,7 +138,7 @@ 48,-1,8,0,-1,0,0,10,2,no,0,0,0,weapon,0,0x0, TF_DOUBLE,Double Attack 49,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, TF_MISS,Improve Dodge 50,1,6,1,0,1,0,10,1,no,0,0,0,weapon,0,0x0, TF_STEAL,Steal -51,1,6,4,0,1,0,10,1,no,0,0,0,none,0,0x4064, TF_HIDING,Hiding +51,1,6,4,0,1,0,10,1,no,0,0,0,none,0,0x84064, TF_HIDING,Hiding 52,-2,6,1,5,0,0,10,1,no,0,0,0,weapon,0,0x0, TF_POISON,Envenom 53,9,6,16,5,0x1,0,1,1,no,0,0,0,weapon,0,0x0, TF_DETOXIFY,Detoxify // @@ -238,7 +240,7 @@ 132,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, AS_RIGHT,Righthand Mastery 133,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, AS_LEFT,Lefthand Mastery 134,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, AS_KATAR,Katar Mastery -135,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x60, AS_CLOAKING,Cloaking +135,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x80060, AS_CLOAKING,Cloaking 136,1,8,1,-1,0,0,10,-8,no,0,0,0,weapon,0,0x0, AS_SONICBLOW,Sonic Blow 137,3:4:5:6:7,6,1,-1,0x2,1,5,1,no,0,0,0,weapon,0,0x4, AS_GRIMTOOTH,Grimtooth 138,1,6,16,5,0x1,0,10,1,no,0,0x400,0,weapon,0,0x0, AS_ENCHANTPOISON,Enchant Poison @@ -959,7 +961,7 @@ 2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0, GC_WEAPONCRUSH,Weapon Crush 2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, GC_VENOMPRESSURE,Venom Pressure 2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0, GC_POISONSMOKE,Poison Smoke -2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40, GC_CLOAKINGEXCEED,Cloaking Exceed +2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x80040, GC_CLOAKINGEXCEED,Cloaking Exceed 2034,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,0,0x0, GC_PHANTOMMENACE,Phantom Menace 2035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, GC_HALLUCINATIONWALK,Hallucination Walk 2036,0,6,4,-1,0x2,1:1:1:1:2,5,1,no,0,0,0,weapon,0,0x0, GC_ROLLINGCUTTER,Rolling Cutter @@ -1001,12 +1003,12 @@ 2239,3,6,2,0,0x42,3,5,1,no,0,0x80,3,misc,0,0x2800, RA_CLUSTERBOMB,Cluster Bomb 2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, RA_WUGMASTERY,Warg Mastery 2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000, RA_WUGRIDER,Warg Rider -2242,0,6,4,-1,0x42,1,1,1,no,0,0,0,weapon,0,0x2000, RA_WUGDASH,Warg Dash -2243,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike -2244,9,6,1,0,0x40,0,5,1,no,0,0,0,weapon,0,0x80, RA_WUGBITE,Warg Bite +2242,0,6,4,-1,0x42,1,1,1,no,0,0,0,weapon,0,0x42000, RA_WUGDASH,Warg Dash +2243,9,6,1,0,0x98,0,5,1,no,0,0,0,weapon,0,0x42000, RA_WUGSTRIKE,Warg Strike +2244,9,6,1,0,0x98,0,5,1,no,0,0,0,weapon,0,0x40080, RA_WUGBITE,Warg Bite 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_TOOTHOFWUG,Tooth of Warg 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0x40000,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen -2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x42, RA_CAMOUFLAGE,Camouflage +2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x80042, RA_CAMOUFLAGE,Camouflage 2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, RA_RESEARCHTRAP,Research Trap 2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_MAGENTATRAP,Magenta Trap 2250,3,6,2,1,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000, RA_COBALTTRAP,Cobalt Trap diff --git a/src/map/battle.c b/src/map/battle.c index 1c08bdd339..fd7905795b 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2850,6 +2850,21 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block #endif } + switch(skill_id) { + case RA_WUGDASH: + case RA_WUGSTRIKE: + case RA_WUGBITE: + if (sd) { + skill = pc_checkskill(sd, RA_TOOTHOFWUG); + + ATK_ADD(wd.damage, wd.damage2, 30 * skill); +#ifdef RENEWAL + ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 30 * skill); +#endif + } + break; + } + if (sc) { // Status change considered as masteries uint8 i; @@ -3749,13 +3764,9 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s break; case RA_WUGDASH:// ATK 300% skillratio += 200; - if (sc && sc->data[SC_DANCEWITHWUG]) - skillratio += 10 * sc->data[SC_DANCEWITHWUG]->val1 * (2 + battle_calc_chorusbonus(sd)); break; case RA_WUGSTRIKE: skillratio += -100 + 200 * skill_lv; - if (sc && sc->data[SC_DANCEWITHWUG]) - skillratio += 10 * sc->data[SC_DANCEWITHWUG]->val1 * (2 + battle_calc_chorusbonus(sd)); break; case RA_WUGBITE: skillratio += 300 + 200 * skill_lv; @@ -4249,19 +4260,6 @@ static int64 battle_calc_skill_constant_addition(struct Damage wd, struct block_ atk = 40 * pc_checkskill(sd, RA_RESEARCHTRAP); break; #endif - case RA_WUGDASH: - if (sd && sd->weight) - atk = (sd->weight / 8) + (30 * pc_checkskill(sd,RA_TOOTHOFWUG)); - if (sc && sc->data[SC_DANCEWITHWUG]) - atk += 10 * sc->data[SC_DANCEWITHWUG]->val1 * (2 + battle_calc_chorusbonus(sd)); - break; - case RA_WUGSTRIKE: - case RA_WUGBITE: - if(sd) - atk = 30 * pc_checkskill(sd, RA_TOOTHOFWUG); - if (sc && sc->data[SC_DANCEWITHWUG]) - atk += 10 * sc->data[SC_DANCEWITHWUG]->val1 * (2 + battle_calc_chorusbonus(sd)); - break; case GC_COUNTERSLASH: atk = sstatus->agi * 2 + (sd ? sd->status.job_level * 4 : 0); break; @@ -4402,7 +4400,16 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_GLOOMYDAY_SK]->val2); RE_ALLATK_ADDRATE(wd, sc->data[SC_GLOOMYDAY_SK]->val2); } - + if (sc->data[SC_DANCEWITHWUG]) { + if (inf3&INF3_SC_DANCEWITHWUG) { + ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_DANCEWITHWUG]->val1 * 10 * battle_calc_chorusbonus(sd)); + RE_ALLATK_ADDRATE(wd, sc->data[SC_DANCEWITHWUG]->val1 * 10 * battle_calc_chorusbonus(sd)); + } + ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_DANCEWITHWUG]->val1 * 2 * battle_calc_chorusbonus(sd)); +#ifdef RENEWAL + ATK_ADDRATE(wd.equipAtk, wd.equipAtk2, sc->data[SC_DANCEWITHWUG]->val1 * 2 * battle_calc_chorusbonus(sd)); +#endif + } if(sc->data[SC_ZENKAI] && sstatus->rhw.ele == sc->data[SC_ZENKAI]->val2) { ATK_ADD(wd.damage, wd.damage2, 200); #ifdef RENEWAL @@ -5228,7 +5235,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl if (sd) { //monsters, homuns and pets have their damage computed directly wd.damage = wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.masteryAtk; wd.damage2 = wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.masteryAtk2; - if(wd.flag&BF_LONG) //Long damage rate addition doesn't use weapon + equip attack + if(wd.flag&BF_LONG && (skill_id != RA_WUGBITE && skill_id != RA_WUGSTRIKE)) //Long damage rate addition doesn't use weapon + equip attack ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.long_attack_atk_rate); //Custom fix for "a hole" in renewal attack calculation [exneval] ATK_ADDRATE(wd.damage, wd.damage2, 6); diff --git a/src/map/skill.c b/src/map/skill.c index 889943229d..71030f75df 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -20219,6 +20219,9 @@ int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id) { case SC_KAGEHUMI: if( inf3&INF3_KAGEHUMI_BL) return 1; + case SC_BITE: + if (inf3&INF3_BITE_BLOCK) + return 1; break; } diff --git a/src/map/skill.h b/src/map/skill.h index 9427ed024c..8b9aa178ba 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -96,6 +96,8 @@ enum e_skill_inf3 { INF3_USABLE_MANHOLE = 0x08000, // Skill that can be used to target while under SC__MANHOLE effect INF3_HIT_HIDING = 0x10000, // Skill that affects hidden targets INF3_SC_GLOOMYDAY_SK = 0x20000, // Skill that affects SC_GLOOMYDAY_SK + INF3_SC_DANCEWITHWUG = 0x40000, // Skill that is affected by SC_DANCEWITHWUG + INF3_BITE_BLOCK = 0x80000, // Skill blocked by RA_WUGBITE }; /// Walk intervals at which chase-skills are attempted to be triggered. diff --git a/src/map/status.c b/src/map/status.c index a863463e81..05b43fc41a 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1996,6 +1996,7 @@ bool status_check_skilluse(struct block_list *src, struct block_list *target, ui (sc->data[SC_MARIONETTE] && skill_id != CG_MARIONETTE) || // Only skill you can use is marionette again to cancel it (sc->data[SC_MARIONETTE2] && skill_id == CG_MARIONETTE) || // Cannot use marionette if you are being buffed by another (sc->data[SC_STASIS] && skill_block_check(src, SC_STASIS, skill_id)) || + (sc->data[SC_BITE] && skill_block_check(src, SC_BITE, skill_id)) || (sc->data[SC_KAGEHUMI] && skill_block_check(src, SC_KAGEHUMI, skill_id)) )) return false;