From 56c38376f23bf7b942247ef42b36ab7401397f0b Mon Sep 17 00:00:00 2001 From: skotlex Date: Sun, 25 Feb 2007 10:13:52 +0000 Subject: - 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 --- src/map/battle.c | 4 +--- src/map/clif.c | 14 -------------- src/map/guild.c | 4 ++-- src/map/pc.c | 12 ++++++++++++ 4 files changed, 15 insertions(+), 19 deletions(-) (limited to 'src/map') 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] -- cgit v1.2.3-60-g2f50