summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt5
-rw-r--r--src/map/skill.c5
-rw-r--r--src/map/skill.h1
-rw-r--r--src/map/unit.c2
4 files changed, 12 insertions, 1 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 8a1f139ac..8b8eed076 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/11/20
+ * 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). [Skotlex]
* Fixed itemskill variable being cleared before parsing the skill, this
causes auto-casted teleport to fail to skip the skill menu. It is now
cleared on castend_pos/id directly. [Skotlex]
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);