Ver Fonte

* Skill through items will not be blocked when 90% overweight. (bugreport:3246)
* Now you can drop items when hiding.
* Now you can't logout when hiding, cloaking or chase walking.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13892 54d463be-8e91-2dee-dedb-b68131a5f0ec

Inkfish há 16 anos atrás
pai
commit
94583ef92f
3 ficheiros alterados com 21 adições e 16 exclusões
  1. 4 0
      Changelog-Trunk.txt
  2. 5 5
      src/map/clif.c
  3. 12 11
      src/map/skill.c

+ 4 - 0
Changelog-Trunk.txt

@@ -3,6 +3,10 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+09/06/15
+	* Skill through items will not be blocked when 90% overweight. (bugreport:3246) [Inkfish]
+	* Now you can drop items when hiding. [Inkfish]
+	* Now you can't logout when hiding, cloaking or chase walking. [Inkfish]
 09/06/14
 	* Fixed a crash due to group being redeleted when players are performing an ensemble and one of the partner's sp run out. [Inkfish]
 09/06/13

+ 5 - 5
src/map/clif.c

@@ -8303,9 +8303,9 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd)
 	WFIFOW(fd,0) = 0x18b;
 
 	/*	Rovert's prevent logout option fixed [Valaris]	*/
-	if (!sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] &&
-		(!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout)
-	) {
+	if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] &&
+		(!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
+	{
 		set_eof(fd);
 		WFIFOW(fd,2)=0;
 	} else {
@@ -8648,7 +8648,8 @@ void clif_parse_Restart(int fd, struct map_session_data *sd)
 		break;
 	case 0x01:
 		/*	Rovert's Prevent logout option - Fixed [Valaris]	*/
-		if (!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout)
+		if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] &&
+			(!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
 		{	//Send to char-server for character selection.
 			chrif_charselectreq(sd, session[fd]->client_addr);
 		} else {
@@ -8901,7 +8902,6 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd)
 			break;
 
 		if (sd->sc.count && (
-			sd->sc.data[SC_HIDING] ||
 			sd->sc.data[SC_AUTOCOUNTER] ||
 			sd->sc.data[SC_BLADESTOP] ||
 			(sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM)

+ 12 - 11
src/map/skill.c

@@ -8114,11 +8114,6 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
 		return 1;
 	}
 
-	if(pc_is90overweight(sd)) {
-		clif_skill_fail(sd,skill,9,0);
-		return 0;
-	}
-
 	if( sd->menuskill_id == AM_PHARMACY )
 	{
 		switch( skill )
@@ -8164,6 +8159,12 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
 		return 1;
 	}
 
+	if( pc_is90overweight(sd) )
+	{
+		clif_skill_fail(sd,skill,9,0);
+		return 0;
+	}
+
 	switch( skill )
 	{ // Turn off check.
 	case BS_MAXIMIZE:		case NV_TRICKDEAD:	case TF_HIDING:			case AS_CLOAKING:		case CR_AUTOGUARD:
@@ -8600,12 +8601,6 @@ int skill_check_condition_castend(struct map_session_data* sd, short skill, shor
 		return 1;
 	}
 
-	if( pc_is90overweight(sd) )
-	{
-		clif_skill_fail(sd,skill,9,0);
-		return 0;
-	}
-
 	if( sd->menuskill_id == AM_PHARMACY )
 	{ // Cast start or cast end??
 		switch( skill )
@@ -8623,6 +8618,12 @@ int skill_check_condition_castend(struct map_session_data* sd, short skill, shor
 	if( sd->skillitem == skill ) // Casting finished (Item skill or Hocus-Pocus)
 		return 1;
 
+	if( pc_is90overweight(sd) )
+	{
+		clif_skill_fail(sd,skill,9,0);
+		return 0;
+	}
+
 	// perform skill-specific checks (and actions)
 	switch( skill )
 	{