|
@@ -1795,7 +1795,7 @@ int charcommand_heal(const int fd, struct map_session_data* sd, const char* comm
|
|
}
|
|
}
|
|
|
|
|
|
if ( ( hp == 0 && sp == 0 )
|
|
if ( ( hp == 0 && sp == 0 )
|
|
- || ( hp > 2147483647 || sp > 2147483647 ) ) { // Prevent overflow. [Paradox924X]
|
|
|
|
|
|
+ || ( hp > INT_MAX && sp > INT_MAX ) ) { // Prevent overflow. [Paradox924X]
|
|
if (!status_percent_heal(&pl_sd->bl, 100, 100))
|
|
if (!status_percent_heal(&pl_sd->bl, 100, 100))
|
|
clif_displaymessage(fd, msg_txt(157)); // HP and SP are already with the good value.
|
|
clif_displaymessage(fd, msg_txt(157)); // HP and SP are already with the good value.
|
|
else
|
|
else
|
|
@@ -1807,37 +1807,63 @@ int charcommand_heal(const int fd, struct map_session_data* sd, const char* comm
|
|
return 0;
|
|
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);
|
|
|
|
|
|
+ // Prevent overflow. [Paradox924X]
|
|
|
|
+ if ( hp < -INT_MAX && sp < -INT_MAX ) {
|
|
|
|
+ status_damage(NULL, &pl_sd->bl, INT_MAX, INT_MAX, 0, 0);
|
|
|
|
+ clif_damage(&pl_sd->bl,&pl_sd->bl, gettick(), 0, 0, INT_MAX, 0 , 4, 0);
|
|
clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ // Prevent overflow. [Paradox924X]
|
|
|
|
+ if ( hp > INT_MAX ) {
|
|
|
|
+ if (!status_percent_heal(&pl_sd->bl, 100, 0))
|
|
|
|
+ clif_displaymessage(fd, msg_txt(157)); // HP and SP have already been recovered.
|
|
|
|
+ else
|
|
|
|
+ clif_displaymessage(fd, msg_txt(17)); // HP, SP recovered.
|
|
|
|
+ return 0;
|
|
|
|
+ } else if ( hp < -INT_MAX ) {
|
|
|
|
+ status_damage(NULL, &pl_sd->bl, INT_MAX, 0, 0, 0);
|
|
|
|
+ clif_damage(&pl_sd->bl,&pl_sd->bl, gettick(), 0, 0, INT_MAX, 0, 4, 0);
|
|
|
|
+ clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Prevent overflow. [Paradox924X]
|
|
|
|
+ if ( sp > INT_MAX ) {
|
|
|
|
+ status_heal(&pl_sd->bl, 0, INT_MAX, 0);
|
|
|
|
+ clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
|
|
+ return 0;
|
|
|
|
+ } else if ( sp < -INT_MAX ) {
|
|
|
|
+ status_damage(NULL, &pl_sd->bl, 0, INT_MAX, 0, 0);
|
|
|
|
+ clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
if(hp > 0 && sp >= 0) {
|
|
if(hp > 0 && sp >= 0) {
|
|
- if(!status_heal(&pl_sd->bl, hp, sp, 2))
|
|
|
|
|
|
+ if( !status_heal(&pl_sd->bl, hp, sp, 2) )
|
|
clif_displaymessage(fd, msg_txt(157)); // HP and SP are already with the good value.
|
|
clif_displaymessage(fd, msg_txt(157)); // HP and SP are already with the good value.
|
|
else
|
|
else
|
|
{
|
|
{
|
|
clif_displaymessage(pl_sd->fd, msg_txt(17)); // HP, SP recovered.
|
|
clif_displaymessage(pl_sd->fd, msg_txt(17)); // HP, SP recovered.
|
|
- if (pl_sd->fd != fd)
|
|
|
|
|
|
+ if ( pl_sd->fd != fd )
|
|
clif_displaymessage(fd, msg_txt(17)); // HP, SP recovered.
|
|
clif_displaymessage(fd, msg_txt(17)); // HP, SP recovered.
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- if(hp < 0 && sp <= 0) {
|
|
|
|
|
|
+ if( hp < 0 && sp <= 0 ) {
|
|
status_damage(NULL, &pl_sd->bl, -hp, -sp, 0, 0);
|
|
status_damage(NULL, &pl_sd->bl, -hp, -sp, 0, 0);
|
|
clif_damage(&pl_sd->bl,&pl_sd->bl, gettick(), 0, 0, -hp, 0 , 4, 0);
|
|
clif_damage(&pl_sd->bl,&pl_sd->bl, gettick(), 0, 0, -hp, 0 , 4, 0);
|
|
clif_displaymessage(pl_sd->fd, msg_txt(156)); // HP or/and SP modified.
|
|
clif_displaymessage(pl_sd->fd, msg_txt(156)); // HP or/and SP modified.
|
|
- if (pl_sd->fd != fd)
|
|
|
|
|
|
+ if ( pl_sd->fd != fd )
|
|
clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
clif_displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
//Opposing signs.
|
|
//Opposing signs.
|
|
- if (hp) {
|
|
|
|
- if (hp > 0)
|
|
|
|
|
|
+ if ( hp ) {
|
|
|
|
+ if ( hp > 0 )
|
|
status_heal(&pl_sd->bl, hp, 0, 2);
|
|
status_heal(&pl_sd->bl, hp, 0, 2);
|
|
else {
|
|
else {
|
|
status_damage(NULL, &pl_sd->bl, -hp, 0, 0, 0);
|
|
status_damage(NULL, &pl_sd->bl, -hp, 0, 0, 0);
|
|
@@ -1845,8 +1871,8 @@ int charcommand_heal(const int fd, struct map_session_data* sd, const char* comm
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (sp) {
|
|
|
|
- if (sp > 0)
|
|
|
|
|
|
+ if ( sp ) {
|
|
|
|
+ if ( sp > 0 )
|
|
status_heal(&pl_sd->bl, 0, sp, 2);
|
|
status_heal(&pl_sd->bl, 0, sp, 2);
|
|
else
|
|
else
|
|
status_damage(NULL, &pl_sd->bl, 0, -sp, 0, 0);
|
|
status_damage(NULL, &pl_sd->bl, 0, -sp, 0, 0);
|