diff options
Diffstat (limited to 'src/map/charcommand.c')
-rw-r--r-- | src/map/charcommand.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/map/charcommand.c b/src/map/charcommand.c index b38f1611f..f3590e08d 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -1794,7 +1794,8 @@ int charcommand_heal(const int fd, struct map_session_data* sd, const char* comm return -1; } - if (hp == 0 && sp == 0) { + if ( ( hp == 0 && sp == 0 ) + || ( hp > 2147483647 || sp > 2147483647 ) ) { // Prevent overflow. [Paradox924X] if (!status_percent_heal(&pl_sd->bl, 100, 100)) clif_displaymessage(fd, msg_txt(157)); // HP and SP are already with the good value. else @@ -1805,6 +1806,13 @@ int charcommand_heal(const int fd, struct map_session_data* sd, const char* comm } return 0; } + + if ( hp < -2147483647 || sp < -2147483647 ) { // Prevent overflow. [Paradox924X] + status_damage(NULL, &pl_sd->bl, 2147483647, 2147483647, 0, 0); + clif_damage(&pl_sd->bl,&pl_sd->bl, gettick(), 0, 0, 2147483647, 0 , 4, 0); + clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified. + return 0; + } if(hp > 0 && sp >= 0) { if(!status_heal(&pl_sd->bl, hp, sp, 2)) |