Author: boucman
Date: Tue Aug 2 10:25:22 2011
New Revision: 50547
URL: http://svn.gna.org/viewcvs/wesnoth?rev=50547&view=rev
Log:
apply patch #2857 : Implemented sub= and divide= for weapon special codeblocks
by Espreon
Modified:
trunk/data/campaigns/Eastern_Invasion/utils/abilities.cfg
trunk/src/unit_abilities.cpp
trunk/src/unit_abilities.hpp
Modified: trunk/data/campaigns/Eastern_Invasion/utils/abilities.cfg
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/campaigns/Eastern_Invasion/utils/abilities.cfg?rev=50547&r1=50546&r2=50547&view=diff
==============================================================================
--- trunk/data/campaigns/Eastern_Invasion/utils/abilities.cfg (original)
+++ trunk/data/campaigns/Eastern_Invasion/utils/abilities.cfg Tue Aug 2
10:25:22 2011
@@ -11,7 +11,7 @@
When this attack is used on offense, the opponent will retaliate with one less
strike than normally, to a minimum of one strike."
description_inactive= _ "Shock:
When this attack is used on offense, the opponent will retaliate with one less
strike than normally, to a minimum of one strike."
- add=-1
+ sub=1
active_on=offense
apply_to=opponent
[filter_base_value]
Modified: trunk/src/unit_abilities.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_abilities.cpp?rev=50547&r1=50546&r2=50547&view=diff
==============================================================================
--- trunk/src/unit_abilities.cpp (original)
+++ trunk/src/unit_abilities.cpp Tue Aug 2 10:25:22 2011
@@ -20,11 +20,15 @@
#include "foreach.hpp"
#include "gamestatus.hpp"
+#include "log.hpp"
#include "resources.hpp"
#include "terrain_filter.hpp"
#include "unit.hpp"
#include "team.hpp"
#include "unit_abilities.hpp"
+
+static lg::log_domain log_engine("engine");
+#define ERR_NG LOG_STREAM(err, log_engine)
@@ -805,6 +809,7 @@
bool value_is_set = false;
std::map<std::string,individual_effect> values_add;
std::map<std::string,individual_effect> values_mul;
+ std::map<std::string,individual_effect> values_div;
individual_effect set_effect;
@@ -841,11 +846,29 @@
values_add[effect_id].set(ADD,add,i->first,i->second);
}
}
+ if (const config::attribute_value *v = cfg.get("sub")) {
+ int sub = - *v;
+ std::map<std::string,individual_effect>::iterator
sub_effect = values_add.find(effect_id);
+ if(sub_effect == values_add.end() || sub >
sub_effect->second.value) {
+
values_add[effect_id].set(ADD,sub,i->first,i->second);
+ }
+ }
if (const config::attribute_value *v = cfg.get("multiply")) {
int multiply = int(v->to_double() * 100);
std::map<std::string,individual_effect>::iterator
mul_effect = values_mul.find(effect_id);
if(mul_effect == values_mul.end() || multiply >
mul_effect->second.value) {
values_mul[effect_id].set(MUL,multiply,i->first,i->second);
+ }
+ }
+ if (const config::attribute_value *v = cfg.get("divide")) {
+ if (*v == 0) {
+ ERR_NG << "division by zero with division= in
weapon special " << effect_id << "\n";
+ return;
+ }
+ int divide = int(v->to_double() * 100);
+ std::map<std::string,individual_effect>::iterator
div_effect = values_div.find(effect_id);
+ if(div_effect == values_div.end() || divide >
div_effect->second.value) {
+
values_div[effect_id].set(DIV,divide,i->first,i->second);
}
}
}
@@ -862,6 +885,11 @@
divisor *= 100;
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;
+ effect_list_.push_back(e->second);
+ }
int addition = 0;
for (e = values_add.begin(), e_end = values_add.end(); e != e_end; ++e)
{
addition += e->second.value;
Modified: trunk/src/unit_abilities.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_abilities.hpp?rev=50547&r1=50546&r2=50547&view=diff
==============================================================================
--- trunk/src/unit_abilities.hpp (original)
+++ trunk/src/unit_abilities.hpp Tue Aug 2 10:25:22 2011
@@ -26,7 +26,7 @@
{
bool filter_base_matches(const config& cfg, int def);
-enum value_modifier {NOT_USED,SET,ADD,MUL};
+enum value_modifier {NOT_USED,SET,ADD,MUL,DIV};
struct individual_effect
{
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits