Selaa lähdekoodia

- Corrected the online_data_cleanup routine setting offline characters that are still connected to the char-server.
- Added a check in script command sc_end to properly end infinte endure
- ASC_BREAKER no longer triggers status effect cards.


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

skotlex 17 vuotta sitten
vanhempi
commit
9a56a88f4a
5 muutettua tiedostoa jossa 16 lisäystä ja 1 poistoa
  1. 4 0
      Changelog-Trunk.txt
  2. 2 0
      src/char/char.c
  3. 2 0
      src/char_sql/char.c
  4. 6 0
      src/map/script.c
  5. 2 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.
 
 2007/11/27
+	* Corrected the online_data_cleanup routine setting offline characters that
+	  are still connected to the char-server.
+	* Added a check in script command sc_end to properly end infinte endure
+	* ASC_BREAKER no longer triggers status effect cards. [Skotlex]
 	* Fixed fake_nd not being exported correctly and being unloaded when 
 	  reloading scripts. (probably fixes bugreport:444) [FlavioJS]
 2007/11/26

+ 2 - 0
src/char/char.c

@@ -3909,6 +3909,8 @@ static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int dat
 static int online_data_cleanup_sub(DBKey key, void *data, va_list ap)
 {
 	struct online_char_data *character= (struct online_char_data*)data;
+	if (character->fd != -1)
+		return 0; //Character still connected
 	if (character->server == -2) //Unknown server.. set them offline
 		set_char_offline(character->char_id, character->account_id);
 	if (character->server < 0)

+ 2 - 0
src/char_sql/char.c

@@ -3455,6 +3455,8 @@ static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int dat
 static int online_data_cleanup_sub(DBKey key, void *data, va_list ap)
 {
 	struct online_char_data *character= (struct online_char_data*)data;
+	if (character->fd != -1)
+		return 0; //Still connected
 	if (character->server == -2) //Unknown server.. set them offline
 		set_char_offline(character->char_id, character->account_id);
 	if (character->server < 0)

+ 6 - 0
src/map/script.c

@@ -8122,6 +8122,12 @@ BUILDIN_FUNC(sc_end)
 
 	if( bl )
 	{
+		if( type == SC_ENDURE )
+		{	//Required to terminate properly infinite endure.
+			struct status_change *sc = status_get_sc(bl);
+			struct status_change_entry *sce = sc?sc->data[type]:NULL;
+			if (sce) sce->val4 = 0;
+		}
 		if( type >= 0 )
 			status_change_end(bl, type, INVALID_TIMER);
 		else

+ 2 - 1
src/map/skill.c

@@ -799,7 +799,8 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	if(sd && attack_type&BF_WEAPON &&
 		skillid != WS_CARTTERMINATION &&
 		skillid != AM_DEMONSTRATION &&
-		skillid != CR_REFLECTSHIELD
+		skillid != CR_REFLECTSHIELD &&
+		skillid != ASC_BREAKER
 	){	//Trigger status effects
 		int i, type;
 		for(i=0; i < ARRAYLENGTH(sd->addeff) && sd->addeff[i].flag; i++)