summaryrefslogtreecommitdiff
path: root/src/map/battle.c
diff options
context:
space:
mode:
authorzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-08-21 20:38:32 +0000
committerzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-08-21 20:38:32 +0000
commit7d4cef5d03815911547efb37dce1c5ee9d5b05fa (patch)
tree3bb0b0e6b6d24146a0fa32008b99fd9d80cc55b3 /src/map/battle.c
parent824839bf6bfad8f389a14a1339fdf42d619514c4 (diff)
downloadhercules-7d4cef5d03815911547efb37dce1c5ee9d5b05fa.tar.gz
hercules-7d4cef5d03815911547efb37dce1c5ee9d5b05fa.tar.bz2
hercules-7d4cef5d03815911547efb37dce1c5ee9d5b05fa.tar.xz
hercules-7d4cef5d03815911547efb37dce1c5ee9d5b05fa.zip
- Big update to Basilica, implementing official behavior.
* Basilica caster cannot walk. * On Basilica area, only caster can use Basilica again to stop it. * On Basilica no one can use skills. (Previous bug on eA because you can use support skills on it, also caster). * Only Pressure can bypass Basilica protection. * Any enemy of the caster bounce 2 cells back from basilica, except Boss type. (Bugreport 2099). * Any monster can target you on basilica and try to attack you, also with skills, but damage is reduced to 0, except Boss. Notes: - Basilica Cell stuff is not used anymore... is it required? - Still need to add a check previous to cast basilica because if there are mobs, items, npcs, walls, skills around the caster (7x7 i think) the skill should fail. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13106 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/battle.c')
-rw-r--r--src/map/battle.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index bc99e3793..23a548ec6 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -300,8 +300,12 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
sc = status_get_sc(bl);
- if (sc && sc->count) {
+ if( sc && sc->count )
+ {
//First, sc_*'s that reduce damage to 0.
+ if( sc->data[SC_BASILICA] && !(status_get_mode(src)&MD_BOSS) && skill_num != PA_PRESSURE )
+ return 0; // Basilica reduces damage to 0 except Pressure
+
if( sc->data[SC_SAFETYWALL] && (flag&(BF_SHORT|BF_MAGIC))==BF_SHORT )
{
struct skill_unit_group *group = (struct skill_unit_group *)sc->data[SC_SAFETYWALL]->val3;
@@ -3052,12 +3056,6 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
nullpo_retr(0, target);
m = target->m;
- if (flag&BCT_ENEMY && !map_flag_gvg(m) && !(status_get_mode(src)&MD_BOSS))
- { //No offensive stuff while in Basilica.
- if (map_getcell(m,src->x,src->y,CELL_CHKBASILICA) ||
- map_getcell(m,target->x,target->y,CELL_CHKBASILICA))
- return -1;
- }
//t_bl/s_bl hold the 'master' of the attack, while src/target are the actual
//objects involved.