summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-11-27 09:21:18 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-11-27 09:21:18 +0000
commit4f59f46d78c8ca16c0acce0e5e196503aacc17c0 (patch)
tree6e1241cd51a93ebc8bda9c393b656786a9ca12f0 /src
parente8524f706aa516778e6e5e926edff2a839989ed8 (diff)
downloadhercules-4f59f46d78c8ca16c0acce0e5e196503aacc17c0.tar.gz
hercules-4f59f46d78c8ca16c0acce0e5e196503aacc17c0.tar.bz2
hercules-4f59f46d78c8ca16c0acce0e5e196503aacc17c0.tar.xz
hercules-4f59f46d78c8ca16c0acce0e5e196503aacc17c0.zip
- 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11817 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/char/char.c2
-rw-r--r--src/char_sql/char.c2
-rw-r--r--src/map/script.c6
-rw-r--r--src/map/skill.c3
4 files changed, 12 insertions, 1 deletions
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++)