summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-20 18:02:08 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-20 18:02:08 +0000
commit99f319c197d5e783eef978859535287b45c9f989 (patch)
treebbb4923460a5d9616a83f98ffd8f4dada9f88feb
parent386421a953a51e90fa56da5e294ecdac58647549 (diff)
downloadhercules-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
-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);