summaryrefslogtreecommitdiff
path: root/src/map/clif.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/clif.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/clif.c')
-rw-r--r--src/map/clif.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index a84622d54..f4ed8d1df 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -8369,10 +8369,13 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
case 0x00: // once attack
case 0x07: // continuous attack
- if (pc_cant_act(sd) || sd->sc.option&OPTION_HIDE)
+ if( pc_cant_act(sd) || sd->sc.option&OPTION_HIDE )
return;
- if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER))
+ if( sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER) )
+ return;
+
+ if( sd->sc.data[SC_BASILICA] )
return;
if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) {
@@ -9226,8 +9229,11 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
return;
}
- if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER))
+ if( sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER) )
return;
+
+ if( sd->sc.data[SC_BASILICA] && (skillnum != HP_BASILICA || sd->sc.data[SC_BASILICA]->val4 != sd->bl.id) )
+ return; // On basilica only caster can use Basilica again to stop it.
if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris]
target_id = sd->bl.id;
@@ -9324,15 +9330,19 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, short skil
if (sd->ud.skilltimer != -1)
return;
+
if (DIFF_TICK(tick, sd->ud.canact_tick) < 0)
{
clif_skill_fail(sd, skillnum, 4, 0);
return;
}
- if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER))
+ if( sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER) )
return;
-
+
+ if( sd->sc.data[SC_BASILICA] && (skillnum != HP_BASILICA || sd->sc.data[SC_BASILICA]->val4 != sd->bl.id) )
+ return; // On basilica only caster can use Basilica again to stop it.
+
if(sd->menuskill_id)
{
if (sd->menuskill_id == SA_TAMINGMONSTER)
@@ -9402,7 +9412,7 @@ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd)
if(skill_num != sd->menuskill_id)
return;
- if (pc_cant_act(sd))
+ if( pc_cant_act(sd) )
{
sd->menuskill_id = sd->menuskill_val = 0;
return;