summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-25 18:57:37 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-25 18:57:37 +0000
commitf4f7fdc5781d376ca2abaf78b4eef6b87ffdd6a6 (patch)
treed6c60818f83969c9c871771f0f418fd50f64074d
parent9fee4761bb79fe4d5665ed93e790cb430c0822b0 (diff)
downloadhercules-f4f7fdc5781d376ca2abaf78b4eef6b87ffdd6a6.tar.gz
hercules-f4f7fdc5781d376ca2abaf78b4eef6b87ffdd6a6.tar.bz2
hercules-f4f7fdc5781d376ca2abaf78b4eef6b87ffdd6a6.tar.xz
hercules-f4f7fdc5781d376ca2abaf78b4eef6b87ffdd6a6.zip
Fixed bugreport:5813 LG_SHIELDSPELL damage formula in physical and magic is now in official. Thanks Rytech.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16150 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/battle.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 4ba8003e8..02fe69beb 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -2190,17 +2190,14 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
skillratio += -100 + 15 * 200;
RE_LVL_DMOD();
break;
- case LG_SHIELDSPELL:
- if( wflag&1 ) {
- skillratio += 200;
- if( sd ) {
- struct item_data *shield_data = sd->inventory_data[sd->equip_index[EQI_HAND_L]];
- if( shield_data )
- skillratio *= shield_data->def;
- } else
- skillratio *= 9;
+ case LG_SHIELDSPELL:// [(Caster’s Base Level x 4) + (Shield DEF x 10) + (Caster’s VIT x 2)] %
+ if( sd ) {
+ struct item_data *shield_data = sd->inventory_data[sd->equip_index[EQI_HAND_L]];
+ skillratio = status_get_lv(src) * 4 + status_get_vit(src) * 2;
+ if( shield_data )
+ skillratio += shield_data->def * 10;
} else
- skillratio += (sd) ? sd->shieldmdef * 20 : 1000;
+ skillratio += 2400; //2500%
break;
case LG_MOONSLASHER:
skillratio += -100 + (120 * skill_lv + ((sd) ? pc_checkskill(sd,LG_OVERBRAND) : 5) * 80);
@@ -3448,6 +3445,12 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
skillratio = (skillratio + 200) * skill_lv;
RE_LVL_DMOD();
break;
+ case LG_SHIELDSPELL:// [(Caster’s Base Level x 4) + (Shield MDEF x 100) + (Caster’s INT x 2)] %
+ if( sd ) {
+ skillratio = status_get_lv(src) * 4 + sd->shieldmdef * 100 + status_get_int(src) * 2;
+ } else
+ skillratio += 1900; //2000%
+ break;
case WM_METALICSOUND:
skillratio += 120 * skill_lv + 60 * ( sd? pc_checkskill(sd, WM_LESSON) : 10 ) - 100;
break;