Browse Source

- The on-place function won't be invoked on setting ground skills if the group's tick is greater than the current tick. As Buuyo pointed out, this should fix Sanctuary and Gospel taking effect inmediately instead of after "x" amount of ms as they should.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7601 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 years ago
parent
commit
10cda8e929
2 changed files with 9 additions and 1 deletions
  1. 4 0
      Changelog-Trunk.txt
  2. 5 1
      src/map/skill.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2006/07/10
 2006/07/10
+	* The on-place function won't be invoked on setting ground skills if the
+	  group's tick is greater than the current tick. As Buuyo pointed out, this
+	  should fix Sanctuary and Gospel taking effect inmediately instead of after
+	  "x" amount of ms as they should. [Skotlex]
 	* Added login-char packet 0x2737. Sets all characters offline (login-server
 	* Added login-char packet 0x2737. Sets all characters offline (login-server
 	  side). [Skotlex]
 	  side). [Skotlex]
 	* Cleaned up char server "set all offline" implementation to remove only
 	* Cleaned up char server "set all offline" implementation to remove only

+ 5 - 1
src/map/skill.c

@@ -6445,7 +6445,11 @@ struct skill_unit_group *skill_unitsetting (struct block_list *src, int skillid,
 	group->state.magic_power = (flag&2 || (sc && sc->data[SC_MAGICPOWER].timer != -1)); //Store the magic power flag. [Skotlex]
 	group->state.magic_power = (flag&2 || (sc && sc->data[SC_MAGICPOWER].timer != -1)); //Store the magic power flag. [Skotlex]
 	group->state.ammo_consume = (sd && sd->state.arrow_atk); //Store if this skill needs to consume ammo.
 	group->state.ammo_consume = (sd && sd->state.arrow_atk); //Store if this skill needs to consume ammo.
 	group->state.song_dance = (unit_flag&(UF_DANCE|UF_SONG)); //Signals if this is a song/dance (does not counts duets)
 	group->state.song_dance = (unit_flag&(UF_DANCE|UF_SONG)); //Signals if this is a song/dance (does not counts duets)
-	
+
+  	//if tick is greater than current, do not invoke onplace function just yet. [Skotlex]
+	if (DIFF_TICK(group->tick, gettick()) > 100)
+		active_flag = 0;
+
 	if(skillid==HT_TALKIEBOX ||
 	if(skillid==HT_TALKIEBOX ||
 	   skillid==RG_GRAFFITI){
 	   skillid==RG_GRAFFITI){
 		group->valstr=(char *) aMallocA(MESSAGE_SIZE*sizeof(char));
 		group->valstr=(char *) aMallocA(MESSAGE_SIZE*sizeof(char));