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