diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-11-20 18:02:08 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-11-20 18:02:08 +0000 |
commit | 99f319c197d5e783eef978859535287b45c9f989 (patch) | |
tree | bbb4923460a5d9616a83f98ffd8f4dada9f88feb /src | |
parent | 386421a953a51e90fa56da5e294ecdac58647549 (diff) | |
download | hercules-99f319c197d5e783eef978859535287b45c9f989.tar.gz hercules-99f319c197d5e783eef978859535287b45c9f989.tar.bz2 hercules-99f319c197d5e783eef978859535287b45c9f989.tar.xz hercules-99f319c197d5e783eef978859535287b45c9f989.zip |
- You now can't use other skills while a skill-induced "window" is up (teleport, refining, etc). However, be warned that we aren't quite sure how the server will clear this out if you decide to hit cancel on the window, so skill-blockage is likely to happen (temporary solution: whenever you change maps or warp the state is reset server-side).
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9276 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/skill.c | 5 | ||||
-rw-r--r-- | src/map/skill.h | 1 | ||||
-rw-r--r-- | src/map/unit.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index acef1a96d..610fc5790 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -852,6 +852,9 @@ int skillnotok (int skillid, struct map_session_data *sd) if (battle_config.gm_skilluncond && pc_isGM(sd) >= battle_config.gm_skilluncond) return 0; // gm's can do anything damn thing they want + if(sd->menuskill_id && skillid != sd->menuskill_id) + return 1; //Can't use skills while a menu is open. + // Check skill restrictions [Celest] if(!map_flag_vs(m) && skill_get_nocast (skillid) & 1) return 1; @@ -8309,7 +8312,7 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t case GD_BATTLEORDER: case GD_REGENERATION: case GD_RESTORE: - //Emergency Recall is handled on skill_notok + //Emergency Recall is handled on skillnotok if (!agit_flag) { clif_skill_fail(sd,skill,0,0); return 0; diff --git a/src/map/skill.h b/src/map/skill.h index 50781bfbd..952448d74 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -157,6 +157,7 @@ int skill_get_splash( int id , int lv ); int skill_get_hp( int id ,int lv );
int skill_get_mhp( int id ,int lv );
int skill_get_sp( int id ,int lv );
+int skill_get_state(int id);
int skill_get_zeny( int id ,int lv );
int skill_get_num( int id ,int lv );
int skill_get_cast( int id ,int lv );
diff --git a/src/map/unit.c b/src/map/unit.c index 15571bc99..81aa1c3b9 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1620,6 +1620,8 @@ int unit_remove_map(struct block_list *bl, int clrtype) { guild_reply_invite(sd,sd->guild_invite,0); if(sd->guild_alliance>0) guild_reply_reqalliance(sd,sd->guild_alliance_account,0); + if(sd->menuskill_id) + sd->menuskill_id = sd->menuskill_lv = 0; pc_delinvincibletimer(sd); |