summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-02-25 10:13:52 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-02-25 10:13:52 +0000
commit56c38376f23bf7b942247ef42b36ab7401397f0b (patch)
tree3a1a67bce5c331481cdd2931da5160b86bed735d /src
parent3f59201b9eafb42da8364672d6fe0c6b155b2812 (diff)
downloadhercules-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.c4
-rw-r--r--src/map/clif.c14
-rw-r--r--src/map/guild.c4
-rw-r--r--src/map/pc.c12
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]