summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-03-22 04:01:51 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-03-22 04:01:51 +0000
commitcc772f0b2d7475a148ecfb0ef539edadac2c2279 (patch)
tree57be9410a958a30f79aa393b4bf9a9a6be736e29
parent13126fd8573dbca5096014f4d007d0469ec24e28 (diff)
downloadhercules-cc772f0b2d7475a148ecfb0ef539edadac2c2279.tar.gz
hercules-cc772f0b2d7475a148ecfb0ef539edadac2c2279.tar.bz2
hercules-cc772f0b2d7475a148ecfb0ef539edadac2c2279.tar.xz
hercules-cc772f0b2d7475a148ecfb0ef539edadac2c2279.zip
Fixed bugreport:5357 Neutral Barrier is now working accordingly.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15753 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/battle.c6
-rw-r--r--src/map/map.c16
2 files changed, 15 insertions, 7 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 0b6812277..34e651af8 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -476,6 +476,11 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
if(sc->data[SC_TATAMIGAESHI] && (flag&(BF_MAGIC|BF_LONG)) == BF_LONG)
return 0;
+ if( sc->data[SC_NEUTRALBARRIER] && (flag&(BF_MAGIC|BF_LONG)) == (BF_MAGIC|BF_LONG) ) {
+ d->dmg_lv = ATK_MISS;
+ return 0;
+ }
+
if((sce=sc->data[SC_KAUPE]) && rnd()%100 < sce->val2)
{ //Kaupe blocks damage (skill or otherwise) from players, mobs, homuns, mercenaries.
clif_specialeffect(bl, 462, AREA);
@@ -630,7 +635,6 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
return 0;
}
-
//Probably not the most correct place, but it'll do here
//(since battle_drain is strictly for players currently)
if ((sce=sc->data[SC_BLOODLUST]) && flag&BF_WEAPON && damage > 0 &&
diff --git a/src/map/map.c b/src/map/map.c
index 5a81733dc..efd3c16e0 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -416,14 +416,18 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick)
skill_unit_move(bl,tick,3);
sc = status_get_sc(bl);
if (sc && sc->count) {
- if (sc->data[SC_CLOAKING])
- skill_check_cloaking(bl, sc->data[SC_CLOAKING]);
if (sc->data[SC_DANCING])
skill_unit_move_unit_group(skill_id2group(sc->data[SC_DANCING]->val2), bl->m, x1-x0, y1-y0);
- if (sc->data[SC_WARM])
- skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
- if (sc->data[SC_BANDING])
- skill_unit_move_unit_group(skill_id2group(sc->data[SC_BANDING]->val4), bl->m, x1-x0, y1-y0);
+ else {
+ if (sc->data[SC_CLOAKING])
+ skill_check_cloaking(bl, sc->data[SC_CLOAKING]);
+ if (sc->data[SC_WARM])
+ skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
+ if (sc->data[SC_BANDING])
+ skill_unit_move_unit_group(skill_id2group(sc->data[SC_BANDING]->val4), bl->m, x1-x0, y1-y0);
+ if (sc->data[SC_NEUTRALBARRIER_MASTER])
+ skill_unit_move_unit_group(skill_id2group(sc->data[SC_NEUTRALBARRIER_MASTER]->val2), bl->m, x1-x0, y1-y0);
+ }
/* Guild Aura Moving */
if( bl->type == BL_PC && ((TBL_PC*)bl)->state.gmaster_flag ) {
if (sc->data[SC_LEADERSHIP])