summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/chrif.c4
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/skill.c2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/map/chrif.c b/src/map/chrif.c
index 404685339..190038805 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -1076,7 +1076,6 @@ int chrif_disconnectplayer(int fd){
case 3: //server overpopulated
clif_authfail_fd(sd->fd, 4);
-
break;
case 4: //out of time payd for .. (avail)
@@ -1087,8 +1086,7 @@ int chrif_disconnectplayer(int fd){
clif_authfail_fd(sd->fd, 15);
break;
}
-
-return 0;
+ return 0;
}
/*==========================================
diff --git a/src/map/map.c b/src/map/map.c
index 02d3bbdeb..1ea7498f5 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -1695,6 +1695,8 @@ int map_quit(struct map_session_data *sd) {
unit_remove_map(&sd->bl, 0);
if (sd->pd && sd->pd->bl.prev != NULL)
unit_remove_map(&sd->pd->bl, 0);
+ if (sd->hd && sd->hd->bl.prev != NULL)
+ unit_remove_map(&sd->hd->bl, 0);
}
}
diff --git a/src/map/skill.c b/src/map/skill.c
index a1e7a3e01..5e5cee3ac 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -4096,10 +4096,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
i = ((!md || md->special_state.ai == 2) && !map_flag_vs(src->m))?
BCT_ENEMY:BCT_ALL;
clif_skill_nodamage(src, src, skillid, -1, 1);
+ map_delblock(src); //Required to prevent chain-self-destructions hitting back.
map_foreachinrange(skill_area_sub, bl,
skill_get_splash(skillid, skilllv), BL_CHAR,
src, skillid, skilllv, tick, flag|i,
skill_castend_damage_id);
+ map_addblock(src);
status_damage(src, src, sstatus->max_hp,0,0,1);
break;