diff options
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/map/status.c b/src/map/status.c index 2017a12fc..16eec43c1 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -6990,13 +6990,15 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr data) case SC_BLEEDING: if (--(sce->val4) >= 0) { - int flag; + int flag, hp = rand()%600 + 200; map_freeblock_lock(); - status_fix_damage(NULL, bl, rand()%600 + 200, 0); + status_fix_damage(NULL, bl, sd||hp<status->hp?hp:status->hp-1, 0); flag = !sc->data[type]; map_freeblock_unlock(); - if (flag) return 0; //SC already ended. - sc_timer_next(10000 + tick, status_change_timer, bl->id, data); + if( !flag ) { + if( status->hp == 1 ) break; + sc_timer_next(10000 + tick, status_change_timer, bl->id, data); + } return 0; } break; |