diff options
-rw-r--r-- | Changelog-Trunk.txt | 4 | ||||
-rw-r--r-- | src/char/char.c | 2 | ||||
-rw-r--r-- | src/char_sql/char.c | 2 | ||||
-rw-r--r-- | src/map/script.c | 6 | ||||
-rw-r--r-- | src/map/skill.c | 3 |
5 files changed, 16 insertions, 1 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 71f6a91a4..374502f11 100644 --- a/Changelog-Trunk.txt +++ b/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 diff --git a/src/char/char.c b/src/char/char.c index be2f3dafa..fe8698896 100644 --- a/src/char/char.c +++ b/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) diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 4dbe2ee2f..da7dadb86 100644 --- a/src/char_sql/char.c +++ b/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) diff --git a/src/map/script.c b/src/map/script.c index 4198fdd55..3ee1f04c1 100644 --- a/src/map/script.c +++ b/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 diff --git a/src/map/skill.c b/src/map/skill.c index 2e18aee59..efb9c6ee9 100644 --- a/src/map/skill.c +++ b/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++) |