From 1b201f5b2cc254116fb84a827314ff55e5efe06d Mon Sep 17 00:00:00 2001 From: malufett Date: Sun, 29 Mar 2015 09:22:44 +0800 Subject: Fixed Bug#5654 -http://hercules.ws/board/tracker/issue-5654-high-wizard-gravitational-field/ Signed-off-by: malufett --- db/pre-re/skill_db.txt | 2 +- db/re/skill_db.txt | 2 +- src/map/skill.c | 10 +++++++++- src/map/status.c | 7 +++---- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 13a08d7c4..9feec142c 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -527,7 +527,7 @@ 481,0,0,0,0,0,0,5,0,no,0,0,0,none,0, HP_MANARECHARGE,Mana Recharge 482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0, PF_DOUBLECASTING,Double Casting 483,16,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0, HW_GANBANTEIN,Ganbantein -484,9,6,2,2,0x91,0,5,1,yes,0,0,0,misc,0, HW_GRAVITATION,Gravitation Field +484,18,6,2,2,0x91,0,5,1,yes,0,0,0,misc,0, HW_GRAVITATION,Gravitation Field 485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0, WS_CARTTERMINATION,Cart Termination 486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0, WS_OVERTHRUSTMAX,Maximum Power Thrust 487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0, CG_LONGINGFREEDOM,Longing for Freedom diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 100db6997..8e4a4c022 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -527,7 +527,7 @@ 481,0,0,0,0,0,0,5,0,no,0,0,0,none,0, HP_MANARECHARGE,Mana Recharge 482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0, PF_DOUBLECASTING,Double Casting 483,16,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0, HW_GANBANTEIN,Ganbantein -484,9,6,2,2,0x91,0,5,1,yes,0,0,0,misc,0, HW_GRAVITATION,Gravitation Field +484,18,6,2,2,0x91,0,5,1,yes,0,0,0,misc,0, HW_GRAVITATION,Gravitation Field 485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0, WS_CARTTERMINATION,Cart Termination 486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0, WS_OVERTHRUSTMAX,Maximum Power Thrust 487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0, CG_LONGINGFREEDOM,Longing for Freedom diff --git a/src/map/skill.c b/src/map/skill.c index 1c910f037..3d79d99f0 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2196,7 +2196,12 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr //Trick Dead protects you from damage, but not from buffs and the like, hence it's placed here. if (sc && sc->data[SC_TRICKDEAD]) return 0; - + if ( skill_id != HW_GRAVITATION ) { + struct status_change *csc = status->get_sc(src); + if(csc && csc->data[SC_GRAVITATION] && csc->data[SC_GRAVITATION]->val3 == BCT_SELF ) + return 0; + } + dmg = battle->calc_attack(attack_type,src,bl,skill_id,skill_lv,flag&0xFFF); //Skotlex: Adjusted to the new system @@ -2530,6 +2535,9 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr case HT_LANDMINE: dmg.dmotion = clif->skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -1, type); break; + case HW_GRAVITATION: + dmg.dmotion = clif->damage(bl, bl, 0, 0, damage, 1, 4, 0); + break; case WZ_SIGHTBLASTER: dmg.dmotion = clif->skill_damage(src,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, (flag&SD_LEVEL) ? -1 : skill_lv, 5); break; diff --git a/src/map/status.c b/src/map/status.c index 3a4db3752..a7c809c6d 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1652,7 +1652,6 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin (sc->data[SC_TRICKDEAD] && skill_id != NV_TRICKDEAD) || (sc->data[SC_AUTOCOUNTER] && !flag && skill_id) || (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF && skill_id != PA_GOSPEL) - || (sc->data[SC_GRAVITATION] && sc->data[SC_GRAVITATION]->val3 == BCT_SELF && flag != 2) ) return 0; @@ -5511,8 +5510,8 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl bonus -= sc->data[SC_DEFENDER]->val4 / 10; if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_ENEMY) // needs more info bonus -= 25; - if (sc->data[SC_GRAVITATION]) - bonus -= sc->data[SC_GRAVITATION]->val2; // needs more info + if (sc->data[SC_GRAVITATION] && sc->data[SC_GRAVITATION]->val3 != BCT_SELF) + bonus -= sc->data[SC_GRAVITATION]->val2 / 10; if (sc->data[SC_JOINTBEAT]) { // needs more info if (sc->data[SC_JOINTBEAT]->val2&BREAK_WRIST) bonus -= 25; @@ -5673,7 +5672,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate += sc->data[SC_DEFENDER]->val4; if(sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_ENEMY) aspd_rate += 250; - if(sc->data[SC_GRAVITATION]) + if(sc->data[SC_GRAVITATION] && sc->data[SC_GRAVITATION]->val3 != BCT_SELF) aspd_rate += sc->data[SC_GRAVITATION]->val2; if(sc->data[SC_JOINTBEAT]) { if( sc->data[SC_JOINTBEAT]->val2&BREAK_WRIST ) -- cgit v1.2.3-70-g09d2