Author: alarantalara
Date: Fri Mar 23 04:06:39 2012
New Revision: 53615

URL: http://svn.gna.org/viewcvs/wesnoth?rev=53615&view=rev
Log:
use floats to calculate multplier effects in order to avoid errors when more 
than 3-4 multiply effects are applied

Modified:
    trunk/src/unit_abilities.cpp

Modified: trunk/src/unit_abilities.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_abilities.cpp?rev=53615&r1=53614&r2=53615&view=diff
==============================================================================
--- trunk/src/unit_abilities.cpp (original)
+++ trunk/src/unit_abilities.cpp Fri Mar 23 04:06:39 2012
@@ -882,17 +882,15 @@
                effect_list_.push_back(set_effect);
        }
 
-       int multiplier = 1;
-       int divisor = 1;
+       float multiplier = 1.0f;
+       float divisor = 1.0f;
        std::map<std::string,individual_effect>::const_iterator e, e_end;
        for (e = values_mul.begin(), e_end = values_mul.end(); e != e_end; ++e) 
{
-               multiplier *= e->second.value;
-               divisor *= 100;
+               multiplier *= e->second.value/100.0f;           
                effect_list_.push_back(e->second);
        }
        for (e = values_div.begin(), e_end = values_div.end(); e != e_end; ++e) 
{
-               multiplier *= 100;
-               divisor *= e->second.value;
+               divisor *= e->second.value/100.0f;
                effect_list_.push_back(e->second);
        }
        int addition = 0;
@@ -901,7 +899,7 @@
                effect_list_.push_back(e->second);
        }
 
-       composite_value_ = (value_set + addition) * multiplier / divisor;
+       composite_value_ = int((value_set + addition) * multiplier / divisor);
 }
 
 } // end namespace unit_abilities


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to