From 7779074bd2adce4259c00781f9a7197f7e809495 Mon Sep 17 00:00:00 2001 From: ultramage Date: Wed, 28 May 2008 11:00:55 +0000 Subject: [PATCH] Fixed stat values displaying incorrectly when increasing them past 255 (wraparound, ack packet only has 1 byte). Reordered the packets so that a status update for the increased stat is sent immediately after the buggy ack packet. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12737 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 3 +++ src/map/clif.c | 2 +- src/map/pc.c | 10 +++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index dd6514e849..8bb94c81cd 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,9 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2008/05/28 + * Fixed stat values displaying incorrectly when increasing them + past 255 (wraparound, ack packet only has 1 byte) [ultramage] 2008/05/26 * Updating configure script: [FlavioJS] - fixed memory manager using the argument of the last enable/disable option (any option) diff --git a/src/map/clif.c b/src/map/clif.c index 71742011d4..fab7605aed 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2612,7 +2612,7 @@ int clif_statusupack(struct map_session_data *sd,int type,int ok,int val) WFIFOW(fd,0)=0xbc; WFIFOW(fd,2)=type; WFIFOB(fd,4)=ok; - WFIFOB(fd,5)=val; + WFIFOB(fd,5)=cap_value(val,0,UCHAR_MAX); WFIFOSET(fd,packet_len(0xbc)); return 0; diff --git a/src/map/pc.c b/src/map/pc.c index c980164184..8f0bb9b632 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4493,13 +4493,13 @@ int pc_statusup(struct map_session_data *sd,int type) } sd->status.status_point-=need; - if(need!=pc_need_status_point(sd,type)){ - clif_updatestatus(sd,type-SP_STR+SP_USTR); - } - clif_updatestatus(sd,SP_STATUSPOINT); - clif_updatestatus(sd,type); status_calc_pc(sd,0); + + if( need != pc_need_status_point(sd,type) ) + clif_updatestatus(sd,type-SP_STR+SP_USTR); + clif_updatestatus(sd,SP_STATUSPOINT); clif_statusupack(sd,type,1,val); + clif_updatestatus(sd,type); // send after the 'ack' to override the value return 0; }