wesnoth-cvs-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Wesnoth-cvs-commits] wesnoth/src unit.cpp


From: ott
Subject: [Wesnoth-cvs-commits] wesnoth/src unit.cpp
Date: Fri, 22 Apr 2005 16:58:35 -0400

CVSROOT:        /cvsroot/wesnoth
Module name:    wesnoth
Branch:         
Changes by:     ott <address@hidden>    05/04/22 20:58:35

Modified files:
        src            : unit.cpp 

Log message:
        Be more careful in calculating negative % HP modifiers (eg. quick).

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/unit.cpp.diff?tr1=1.141&tr2=1.142&r1=text&r2=text

Patches:
Index: wesnoth/src/unit.cpp
diff -u wesnoth/src/unit.cpp:1.141 wesnoth/src/unit.cpp:1.142
--- wesnoth/src/unit.cpp:1.141  Thu Apr 21 20:49:16 2005
+++ wesnoth/src/unit.cpp        Fri Apr 22 20:58:35 2005
@@ -1,4 +1,4 @@
-/* $Id: unit.cpp,v 1.141 2005/04/21 20:49:16 gruikya Exp $ */
+/* $Id: unit.cpp,v 1.142 2005/04/22 20:58:35 ott Exp $ */
 /*
    Copyright (C) 2003 by David White <address@hidden>
    Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -1049,7 +1049,15 @@
                                //a percentage on the end means increase by 
that many percent
                                if(increase_total[increase_total.size()-1] == 
'%') {
                                        const std::string 
inc(increase_total.begin(),increase_total.end()-1);
-                                       maxHitpoints_ += 
(maxHitpoints_*atoi(inc.c_str()))/100;
+                                       //work around implementation-defined 
integer division
+                                       //involving negative numbers
+                                       int increment = atoi(inc.c_str());
+                                       int sign = 1;
+                                       if (increment < 0) {
+                                               increment = -increment;
+                                               sign = -1;
+                                       }
+                                       maxHitpoints_ += 
((maxHitpoints_*increment)/100) * sign;
                                } else {
                                        maxHitpoints_ += 
atoi(increase_total.c_str());
                                }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]