diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-02-25 10:13:52 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-02-25 10:13:52 +0000 |
commit | 56c38376f23bf7b942247ef42b36ab7401397f0b (patch) | |
tree | 3a1a67bce5c331481cdd2931da5160b86bed735d /src | |
parent | 3f59201b9eafb42da8364672d6fe0c6b155b2812 (diff) | |
download | hercules-56c38376f23bf7b942247ef42b36ab7401397f0b.tar.gz hercules-56c38376f23bf7b942247ef42b36ab7401397f0b.tar.bz2 hercules-56c38376f23bf7b942247ef42b36ab7401397f0b.tar.xz hercules-56c38376f23bf7b942247ef42b36ab7401397f0b.zip |
- You are allowed to expel guild mates that are not online now.
- Corrected damage of BloodDrain
- Moved the "already connected" checks to pc_authok, since a dual login doesn't needs to be checked until the new connection is accepted.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9916 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/battle.c | 4 | ||||
-rw-r--r-- | src/map/clif.c | 14 | ||||
-rw-r--r-- | src/map/guild.c | 4 | ||||
-rw-r--r-- | src/map/pc.c | 12 |
4 files changed, 15 insertions, 19 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 171481d56..5060dfe28 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1367,10 +1367,8 @@ static struct Damage battle_calc_weapon_attack( case NPC_DARKNESSATTACK: case NPC_UNDEADATTACK: case NPC_TELEKINESISATTACK: - skillratio += 100*(skill_lv-1); - break; case NPC_BLOODDRAIN: - skillratio += 100*skill_lv; + skillratio += 100*(skill_lv-1); break; case RG_BACKSTAP: if(sd && sd->status.weapon == W_BOW && battle_config.backstab_bow_penalty) diff --git a/src/map/clif.c b/src/map/clif.c index a3360b76a..6b85a9667 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8034,7 +8034,6 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd) return; } else {// packet version accepted - TBL_PC* old_sd; struct block_list* bl; if( (bl=map_id2bl(account_id)) != NULL && bl->type != BL_PC ) {// non-player object already has that id @@ -8046,19 +8045,6 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd) clif_setwaitclose(fd); return; } - if( (old_sd=map_id2sd(account_id)) != NULL ){ - // if same account already connected, we disconnect the 2 sessions - //Check for characters with no connection (includes those that are using autotrade) [durf],[Skotlex] - if (old_sd->state.finalsave || !old_sd->state.auth) - ; //Previous player is not done loading. - //Or he has quit, but is not done saving on the charserver. - else if (old_sd->fd) - clif_authfail_fd(old_sd->fd, 2); // same id - else - map_quit(old_sd); - clif_authfail_fd(fd, 8); // still recognizes last connection - return; - } } CREATE(sd, TBL_PC, 1); diff --git a/src/map/guild.c b/src/map/guild.c index a06b29f8d..a4c751e64 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -807,8 +807,8 @@ int guild_expulsion(struct map_session_data *sd,int guild_id, return 0; //Expulsion permission //Can't leave inside guild castles. - if ((tsd = map_id2sd(account_id)) == NULL || - tsd->status.char_id != char_id || + if ((tsd = map_id2sd(account_id)) && + tsd->status.char_id == char_id && map[tsd->bl.m].flag.gvg_castle) return 0; diff --git a/src/map/pc.c b/src/map/pc.c index 1dd9fa7f3..558f0f0be 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -556,6 +556,7 @@ int pc_isequip(struct map_session_data *sd,int n) */ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_time, struct mmo_charstatus *st) { + TBL_PC* old_sd; int i; unsigned long tick = gettick(); @@ -572,6 +573,17 @@ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_t return 1; } + if( (old_sd=map_id2sd(sd->status.account_id)) != NULL ){ + if (old_sd->state.finalsave || !old_sd->state.auth) + ; //Previous player is not done loading, No need to kick. + else if (old_sd->fd) + clif_authfail_fd(old_sd->fd, 2); // same id + else + map_quit(old_sd); + clif_authfail_fd(sd->fd, 8); // still recognizes last connection + return 1; + } + if (map_id2sd(st->account_id) != NULL) { //Somehow a second connection has managed to go through the double-connection //check in clif_parse_WantToConnection! [Skotlex] |