summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 2da269239..343f7cbf7 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -6825,11 +6825,15 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
case SC_DPOISON:
//Lose 10/15% of your life as long as it doesn't brings life below 25%
- if (status->hp > status->max_hp>>2)
- {
+ if (status->hp > status->max_hp>>2) {
int diff = status->max_hp*(bl->type==BL_PC?10:15)/100;
if (status->hp - diff < status->max_hp>>2)
diff = status->hp - (status->max_hp>>2);
+ if( val2 && bl->type == BL_MOB ) {
+ struct block_list* src = map_id2bl(val2);
+ if( src )
+ mob_log_damage((TBL_MOB*)bl,src,diff);
+ }
status_zap(bl, diff, 0);
}
// fall through
@@ -9151,6 +9155,11 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
case SC_DPOISON:
if (--(sce->val3) > 0) {
if (!sc->data[SC_SLOWPOISON]) {
+ if( sce->val2 && bl->type == BL_MOB ) {
+ struct block_list* src = map_id2bl(sce->val2);
+ if( src )
+ mob_log_damage((TBL_MOB*)bl,src,sce->val4);
+ }
map_freeblock_lock();
status_zap(bl, sce->val4, 0);
if (sc->data[type]) { // Check if the status still last ( can be dead since then ).