summaryrefslogtreecommitdiff
path: root/src/map/unit.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/unit.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/unit.c')
-rw-r--r--src/map/unit.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/map/unit.c b/src/map/unit.c
index 521907c99..fb1fe0113 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -218,11 +218,6 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr data)
else
i = status_get_speed(bl);
- if( md && map_getcell(bl->m,x,y,CELL_CHKBASILICA) ) {
- skill_blown(bl,bl,2,unit_getdir(bl),0);
- clif_fixpos(bl);
- }
-
if(i > 0)
ud->walktimer = add_timer(tick+i,unit_walktoxy_timer,id,i);
else if(ud->state.running) {
@@ -1013,6 +1008,10 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
if (sc && sc->data[SC_RUN])
casttime = 0;
break;
+ case HP_BASILICA:
+ if( sc && sc->data[SC_BASILICA] )
+ casttime = 0; // No Casting time on basilica cancel
+ break;
case KN_CHARGEATK:
{
unsigned int k = (distance_bl(src,target)-1)/3; //+100% every 3 cells of distance
@@ -1124,11 +1123,12 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh
if (sc && !sc->count)
sc = NULL;
- if(sd) {
- if (skillnotok(skill_num, sd) || !skill_check_condition(sd, skill_num, skill_lv,0))
- return 0;
- }
-
+ if( sd )
+ {
+ if( skillnotok(skill_num, sd) || !skill_check_condition(sd, skill_num, skill_lv,0) )
+ return 0;
+ }
+
if (!status_check_skilluse(src, NULL, skill_num, 0))
return 0;