From 4c735df7d013901c5fc79984bd2206d2109f53d8 Mon Sep 17 00:00:00 2001 From: malufett Date: Mon, 10 Feb 2014 15:01:51 +0800 Subject: Fixed Bug#7929 -http://hercules.ws/board/tracker/issue-7929-overbrand-and-mapflags/?gopid=21542#entry21542 Fixed Bug#7966 -http://hercules.ws/board/tracker/issue-7966-over-brand/ Signed-off-by: malufett --- db/pre-re/skill_db.txt | 3 +- db/re/skill_db.txt | 3 +- src/map/battle.c | 85 ++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 80 insertions(+), 11 deletions(-) diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index d401b1b08..d5e5fc513 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -874,7 +874,7 @@ 2314,1,6,1,-1,0,0,1,1,no,0,0,0,weapon,0, LG_RAGEBURST,Rage Burst 2315,0,6,4,0,0x2,3,3,1,yes,0,0,0,none,2, LG_SHIELDSPELL,Shield Spell 2316,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0, LG_EXEEDBREAK,Exceed Break -2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7, LG_OVERBRAND,Over Brand //CHECK I know the splash is needed somehow for the strange AoE it gives. +2317,2,6,2,-1,0x2,0,5,1,yes,0,0,0,weapon,0, LG_OVERBRAND,Over Brand 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0, LG_PRESTIGE,Prestige 2319,0,6,4,0,0x1,3,5,1,no,0,0,0,weapon,0, LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID. 2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0, LG_MOONSLASHER,Moon Slasher @@ -883,6 +883,7 @@ 2323,0,8,4,2,0x2,1:1:2:2:3,5,-5,yes,0,0,0,weapon,0, LG_EARTHDRIVE,Earth Drive 2324,3,8,1,-1,0,0,5,3,yes,0,0,0,weapon,0, LG_HESPERUSLIT,Hesperus Lit 2325,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0, LG_INSPIRATION,Inspiration +2519,1,6,1,-1,0x2,0,5,1,yes,0,0,0,weapon,3:4:5:6:7, LG_OVERBRAND_BRANDISH,Over Brand //**** // SR Sura diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index d7d0fe63c..6a3f83e5e 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -886,7 +886,7 @@ 2314,1,6,1,-1,0,0,1,1,no,0,0,0,weapon,0, LG_RAGEBURST,Rage Burst 2315,0,6,4,0,0x2,3,3,1,yes,0,0,0,none,2, LG_SHIELDSPELL,Shield Spell 2316,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0, LG_EXEEDBREAK,Exceed Break -2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7, LG_OVERBRAND,Over Brand //CHECK I know the splash is needed somehow for the strange AoE it gives. +2317,2,6,2,-1,0x2,0,5,1,yes,0,0,0,weapon,0, LG_OVERBRAND,Over Brand 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0, LG_PRESTIGE,Prestige 2319,0,6,4,0,0x1,3,5,1,no,0,0,0,weapon,0, LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID. 2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0, LG_MOONSLASHER,Moon Slasher @@ -895,6 +895,7 @@ 2323,0,8,4,2,0x2,1:1:2:2:3,5,-5,yes,0,0,0,weapon,0, LG_EARTHDRIVE,Earth Drive 2324,3,8,1,-1,0,0,5,3,yes,0,0,0,weapon,0, LG_HESPERUSLIT,Hesperus Lit 2325,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0, LG_INSPIRATION,Inspiration +2519,1,6,1,-1,0x2,0,5,1,yes,0,0,0,weapon,3:4:5:6:7, LG_OVERBRAND_BRANDISH,Over Brand //**** // SR Sura diff --git a/src/map/battle.c b/src/map/battle.c index 8ad54f413..c57ff950e 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3409,11 +3409,36 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list ad.damage = battle->calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, ad.damage, 0, ad.flag); #endif if(sd) { + uint16 skill; //Damage bonuses if ((i = pc->skillatk_bonus(sd, skill_id))) ad.damage += ad.damage*i/100; - - if( (i = battle->adjust_skill_damage(src->m,skill_id)) ) + switch(skill_id){ + case WL_CHAINLIGHTNING_ATK: + skill = WL_CHAINLIGHTNING; + break; + case AB_DUPLELIGHT_MAGIC: + skill = AB_DUPLELIGHT; + break; + case WL_TETRAVORTEX_FIRE: + case WL_TETRAVORTEX_WATER: + case WL_TETRAVORTEX_WIND: + case WL_TETRAVORTEX_GROUND: + skill = WL_TETRAVORTEX; + break; + case WL_SUMMON_ATK_FIRE: + case WL_SUMMON_ATK_WIND: + case WL_SUMMON_ATK_WATER: + case WL_SUMMON_ATK_GROUND: + skill = WL_RELEASE; + break; + case WM_REVERBERATION_MAGIC: + skill = WM_REVERBERATION; + break; + default: + skill = skill_id; + } + if( (i = battle->adjust_skill_damage(src->m,skill)) ) MATK_RATE(i); //Ignore Defense? @@ -3849,10 +3874,18 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } #endif md.damage = battle->calc_cardfix(BF_MISC, src, target, nk, s_ele, 0, md.damage, 0, md.flag); - - if (sd && (i = pc->skillatk_bonus(sd, skill_id))) - md.damage += md.damage*i/100; - + if(skill_id){ + uint16 skill; + switch(skill_id){ + case GN_HELLS_PLANT_ATK: + skill = GN_HELLS_PLANT; + break; + default: + skill = skill_id; + } + if (sd && (i = pc->skillatk_bonus(sd, skill))) + md.damage += md.damage*i/100; + } if( (i = battle->adjust_skill_damage(src->m,skill_id)) ) md.damage = md.damage * i / 100; @@ -4694,9 +4727,43 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list ATK_ADDRATE(50); break; } - - if( (i = battle->adjust_skill_damage(src->m,skill_id)) ) - ATK_RATE(i); + if( skill_id ){ + uint16 skill; + switch(skill_id){ + case AB_DUPLELIGHT_MELEE: + skill = AB_DUPLELIGHT; + break; + case LG_OVERBRAND_BRANDISH: + case LG_OVERBRAND_PLUSATK: + skill = LG_OVERBRAND; + break; + case WM_SEVERE_RAINSTORM_MELEE: + skill = WM_SEVERE_RAINSTORM; + break; + case WM_REVERBERATION_MELEE: + skill = WM_REVERBERATION; + break; + case GN_CRAZYWEED_ATK: + skill = GN_CRAZYWEED; + break; + case GN_SLINGITEM_RANGEMELEEATK: + skill = GN_SLINGITEM; + break; + case RL_R_TRIP_PLUSATK: + skill = RL_R_TRIP; + break; + case RL_B_FLICKER_ATK: + skill = RL_FLICKER; + break; + case RL_GLITTERING_GREED_ATK: + skill = RL_GLITTERING_GREED; + break; + default: + skill = skill_id; + } + if( (i = battle->adjust_skill_damage(src->m,skill)) ) + ATK_RATE(i); + } if( sd ) { if (skill_id && (i = pc->skillatk_bonus(sd, skill_id))) -- cgit v1.2.3-60-g2f50