diff options
author | zephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-08-21 20:38:32 +0000 |
---|---|---|
committer | zephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-08-21 20:38:32 +0000 |
commit | 7d4cef5d03815911547efb37dce1c5ee9d5b05fa (patch) | |
tree | 3bb0b0e6b6d24146a0fa32008b99fd9d80cc55b3 /src/map/clif.c | |
parent | 824839bf6bfad8f389a14a1339fdf42d619514c4 (diff) | |
download | hercules-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.c | 22 |
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; |