diff --git a/.travis.yml b/.travis.yml
index 3d824ab3a..b94f25302 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,3 +11,6 @@ script:
os:
- linux
- osx
+notifications:
+ slack:
+ secure: F89aXLWaE125PaJIlETv12jT4EfH6wLXJmGCPZzrN3OcLn2ahDWqjwuzR7lOEDf2nAISmeMPyDZMhEHXLNHAE5qP6lg9yliYQw5hzGmDK9m1xUq/pPEne/b2Y7K3my1mkRZ6n3asbHgSmBWAfCIk1JN8R5Rv+rmbLuWLc+zofts=
diff --git a/conf/e2/config.xml b/conf/e2/config.xml
index 435bd5005..0ff1d67ee 100644
--- a/conf/e2/config.xml
+++ b/conf/e2/config.xml
@@ -90,7 +90,7 @@
-
+
diff --git a/res/core/de/strings.xml b/res/core/de/strings.xml
index 351a7e376..aa5b94309 100644
--- a/res/core/de/strings.xml
+++ b/res/core/de/strings.xml
@@ -2212,12 +2212,6 @@
Schaden
-
-
- Deine Partei hat letzte Runde keinen Zug
- abgegeben!
-
-
Schneemann
diff --git a/res/core/en/strings.xml b/res/core/en/strings.xml
index e68915f06..d80c742b9 100644
--- a/res/core/en/strings.xml
+++ b/res/core/en/strings.xml
@@ -1660,10 +1660,6 @@
-
- No orders were received for your faction!
-
-
Mistelzweig
diff --git a/res/core/fr/strings.xml b/res/core/fr/strings.xml
index 0fe39c99b..8acc1d89f 100644
--- a/res/core/fr/strings.xml
+++ b/res/core/fr/strings.xml
@@ -2051,7 +2051,4 @@
côte ouest
-
- Aucun ordre reçu pour votre faction !
-
diff --git a/res/core/messages.xml b/res/core/messages.xml
index 0afc458c2..259e73318 100644
--- a/res/core/messages.xml
+++ b/res/core/messages.xml
@@ -392,6 +392,7 @@
+
"Die natürliche Widerstandskraft gegen Verzauberung ist gestärkt. ($int36($id))"
@@ -1182,7 +1183,25 @@
"$unit($unit) drowns in $region($region)."
-
+
+
+
+
+
+ "$unit($unit) nimmt Schaden durch den Giftelementar in $region($region)."
+ "$unit($unit) is taking poison damage in $region($region)."
+
+
+
+
+
+
+
+ "$unit($unit) stirbt am Schaden durch den Giftelementar in $region($region)."
+ "$unit($unit) dies from poison damage taken in $region($region)."
+
+
+
@@ -7100,9 +7119,16 @@
"$unit($unit) in $region($region): '$order($command)' - Your faction must be at least $int($turns) weeks old to give something to another faction."
-
-
-
+
+
+ Deine Partei hat letzte Runde keinen Zug
+ abgegeben!
+ No orders were received for your faction!
+ Aucun ordre reçu pour votre faction !
+
+
+
+
"Bitte sende die Befehle nächste Runde ein, wenn du weiterspielen möchtest."
"Please send in orders for the next turn if you want to continue playing."
diff --git a/scripts/tests/common.lua b/scripts/tests/common.lua
index b4800761f..fb1a29965 100644
--- a/scripts/tests/common.lua
+++ b/scripts/tests/common.lua
@@ -26,7 +26,6 @@ module("tests.common", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
eressea.settings.set("rules.economy.food", "4")
@@ -961,7 +960,6 @@ module("tests.report", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("rules.economy.food", "4")
end
diff --git a/scripts/tests/e2/guard.lua b/scripts/tests/e2/guard.lua
index 1afd011e9..b1c9d9c4f 100644
--- a/scripts/tests/e2/guard.lua
+++ b/scripts/tests/e2/guard.lua
@@ -4,7 +4,6 @@ module("tests.e2.guard", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
eressea.settings.set("rules.economy.food", "4")
diff --git a/scripts/tests/e2/movement.lua b/scripts/tests/e2/movement.lua
index ef62873d8..7e20e41ca 100644
--- a/scripts/tests/e2/movement.lua
+++ b/scripts/tests/e2/movement.lua
@@ -4,7 +4,6 @@ module("tests.e2.movement", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
end
diff --git a/scripts/tests/e2/shiplanding.lua b/scripts/tests/e2/shiplanding.lua
index 2d9225b8d..a46a7da37 100644
--- a/scripts/tests/e2/shiplanding.lua
+++ b/scripts/tests/e2/shiplanding.lua
@@ -4,7 +4,6 @@ module("tests.e2.shiplanding", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
end
diff --git a/scripts/tests/e3/spells.lua b/scripts/tests/e3/spells.lua
index 7afe96d8e..c4f0aadaf 100644
--- a/scripts/tests/e3/spells.lua
+++ b/scripts/tests/e3/spells.lua
@@ -5,7 +5,6 @@ module("tests.e3.spells", package.seeall, lunit.testcase)
function setup()
eressea.game.reset()
eressea.settings.set("magic.fumble.enable", "0")
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("rules.peasants.growth", "0")
end
diff --git a/scripts/tests/movement.lua b/scripts/tests/movement.lua
index e27831cc8..110b5b2a2 100644
--- a/scripts/tests/movement.lua
+++ b/scripts/tests/movement.lua
@@ -4,7 +4,6 @@ module("tests.movement", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("rules.ships.storms", "0")
conf = [[{
diff --git a/scripts/tests/orders.lua b/scripts/tests/orders.lua
index 98115f644..d9443c9c4 100644
--- a/scripts/tests/orders.lua
+++ b/scripts/tests/orders.lua
@@ -16,7 +16,6 @@ function setup()
u = _G.unit.create(f, r, 1)
u:clear_orders()
eressea.settings.set("rules.economy.food", "4")
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
end
diff --git a/scripts/tests/pool.lua b/scripts/tests/pool.lua
index 3ee3d54db..bf32eda87 100644
--- a/scripts/tests/pool.lua
+++ b/scripts/tests/pool.lua
@@ -6,7 +6,6 @@ function setup()
eressea.game.reset()
eressea.config.reset()
eressea.settings.set("rules.economy.food", "0")
- eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("rules.magic.playerschools", "")
conf = [[{
diff --git a/src/battle.c b/src/battle.c
index 9608a382e..f97c39a2a 100644
--- a/src/battle.c
+++ b/src/battle.c
@@ -4206,8 +4206,6 @@ static void battle_flee(battle * b)
default:
if ((fig->person[dt.index].flags & FL_HIT) == 0)
continue;
- if (b->turn <= 1)
- continue;
if (fig->person[dt.index].hp <= runhp)
break;
if (fig->person[dt.index].flags & FL_PANICED) {
diff --git a/src/creport.c b/src/creport.c
index 42a440c8a..38e63e299 100644
--- a/src/creport.c
+++ b/src/creport.c
@@ -264,6 +264,7 @@ cr_output_curses(FILE * F, const faction * viewer, const void *obj, objtype_t ty
fprintf(F, "\"%s\"\n", buf);
msg_release(msg);
}
+ a = a->next;
}
else if (a->type == &at_effect && self) {
effect_data *data = (effect_data *)a->data.v;
@@ -276,8 +277,11 @@ cr_output_curses(FILE * F, const faction * viewer, const void *obj, objtype_t ty
fprintf(F, "\"%d %s\"\n", data->value, translate(key,
LOC(default_locale, key)));
}
+ a = a->next;
+ }
+ else {
+ a = a->nexttype;
}
- a = a->next;
}
}
diff --git a/src/kernel/curse.c b/src/kernel/curse.c
index a667bec18..af63681e6 100644
--- a/src/kernel/curse.c
+++ b/src/kernel/curse.c
@@ -517,12 +517,9 @@ static curse *make_curse(unit * mage, attrib ** ap, const curse_type * ct,
break;
case CURSETYP_UNIT:
- {
c->data.i = men;
break;
}
-
- }
return c;
}
diff --git a/src/laws.c b/src/laws.c
index b165511e4..6a18dc84e 100755
--- a/src/laws.c
+++ b/src/laws.c
@@ -113,7 +113,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
/* - exported global symbols ----------------------------------- */
-static int RemoveNMRNewbie(void)
+static bool RemoveNMRNewbie(void)
{
static int value = -1;
static int gamecookie = -1;
@@ -122,17 +122,7 @@ static int RemoveNMRNewbie(void)
value = get_param_int(global.parameters, "nmr.removenewbie", 0);
gamecookie = global.cookie;
}
- return value;
-}
-
-static void checkorders(void)
-{
- faction *f;
-
- log_info(" - Warne spaete Spieler...");
- for (f = factions; f; f = f->next)
- if (!is_monsters(f) && turn - f->lastorders == NMRTimeout() - 1)
- ADDMSG(&f->msgs, msg_message("turnreminder", ""));
+ return value!=0;
}
static void age_unit(region * r, unit * u)
@@ -735,6 +725,45 @@ void immigration(void)
}
}
+static void nmr_warnings(void)
+{
+ faction *f, *fa;
+#define FRIEND (HELP_GUARD|HELP_MONEY)
+ for (f = factions; f; f = f->next) {
+ if (!fval(f, FFL_NOIDLEOUT) && turn > f->lastorders) {
+ ADDMSG(&f->msgs, msg_message("nmr_warning", ""));
+ if (turn - f->lastorders == NMRTimeout() - 1) {
+ ADDMSG(&f->msgs, msg_message("nmr_warning_final", ""));
+ }
+ if ((turn - f->lastorders) >= 2) {
+ message *msg = NULL;
+ for (fa = factions; fa; fa = fa->next) {
+ int warn = 0;
+ if (get_param_int(global.parameters, "rules.alliances", 0) != 0) {
+ if (f->alliance && f->alliance == fa->alliance) {
+ warn = 1;
+ }
+ }
+ else if (alliedfaction(NULL, f, fa, FRIEND)
+ && alliedfaction(NULL, fa, f, FRIEND)) {
+ warn = 1;
+ }
+ if (warn) {
+ if (msg == NULL) {
+ msg =
+ msg_message("warn_dropout", "faction turns", f,
+ turn - f->lastorders);
+ }
+ add_message(&fa->msgs, msg);
+ }
+ }
+ if (msg != NULL)
+ msg_release(msg);
+ }
+ }
+ }
+}
+
void demographics(void)
{
region *r;
@@ -810,7 +839,6 @@ void demographics(void)
remove_empty_units();
immigration();
- checkorders();
}
/* ------------------------------------------------------------- */
@@ -4371,6 +4399,7 @@ void init_processor(void)
}
p = 10;
+ add_proc_global(p, nmr_warnings, "NMR Warnings");
add_proc_global(p, new_units, "Neue Einheiten erschaffen");
p += 10;
diff --git a/src/reports.c b/src/reports.c
index 51ce2c53b..128815f71 100644
--- a/src/reports.c
+++ b/src/reports.c
@@ -1834,39 +1834,6 @@ int write_reports(faction * f, time_t ltime)
return 0;
}
-static void nmr_warnings(void)
-{
- faction *f, *fa;
-#define FRIEND (HELP_GUARD|HELP_MONEY)
- for (f = factions; f; f = f->next) {
- if (!fval(f, FFL_NOIDLEOUT) && (turn - f->lastorders) >= 2) {
- message *msg = NULL;
- for (fa = factions; fa; fa = fa->next) {
- int warn = 0;
- if (get_param_int(global.parameters, "rules.alliances", 0) != 0) {
- if (f->alliance && f->alliance == fa->alliance) {
- warn = 1;
- }
- }
- else if (alliedfaction(NULL, f, fa, FRIEND)
- && alliedfaction(NULL, fa, f, FRIEND)) {
- warn = 1;
- }
- if (warn) {
- if (msg == NULL) {
- msg =
- msg_message("warn_dropout", "faction turns", f,
- turn - f->lastorders);
- }
- add_message(&fa->msgs, msg);
- }
- }
- if (msg != NULL)
- msg_release(msg);
- }
- }
-}
-
static void report_donations(void)
{
region *r;
@@ -1945,7 +1912,6 @@ int reports(void)
if (verbosity >= 1) {
log_printf(stdout, "Writing reports for turn %d:", turn);
}
- nmr_warnings();
report_donations();
remove_empty_units();
diff --git a/src/spells.c b/src/spells.c
index 401f0ac9e..b7e1e6868 100644
--- a/src/spells.c
+++ b/src/spells.c
@@ -2820,9 +2820,9 @@ static int dc_age(struct curse *c)
if (curse_active(c))
while (*up != NULL) {
unit *u = *up;
+ int hp;
double damage = c->effect * u->number;
- freset(u->faction, FFL_SELECT);
if (u->number <= 0 || target_resists_magic(mage, u, TYP_UNIT, 0)) {
up = &u->next;
continue;
@@ -2830,8 +2830,9 @@ static int dc_age(struct curse *c)
/* Reduziert durch Magieresistenz */
damage *= (1.0 - magic_resistance(u));
- change_hitpoints(u, -(int)damage);
+ hp = change_hitpoints(u, -(int)damage);
+ ADDMSG(&u->faction->msgs, msg_message((hp>0)?"poison_damage":"poison_death", "region unit", r, u));
if (*up == u)
up = &u->next;
}
diff --git a/src/spells/unitcurse.c b/src/spells/unitcurse.c
index bd332ebf5..80ebe56bb 100644
--- a/src/spells/unitcurse.c
+++ b/src/spells/unitcurse.c
@@ -302,7 +302,7 @@ static struct curse_type ct_oldrace = {
};
static struct curse_type ct_magicresistance = {
- "magicresistance", CURSETYP_UNIT, CURSE_SPREADMODULO, M_MEN, cinfo_simple
+ "magicresistance", CURSETYP_UNIT, CURSE_SPREADMODULO, M_MEN, cinfo_unit
};
/* ------------------------------------------------------------- */
diff --git a/src/util/attrib.h b/src/util/attrib.h
index 11bc92bd1..38055331f 100644
--- a/src/util/attrib.h
+++ b/src/util/attrib.h
@@ -90,8 +90,8 @@ extern "C" {
#define AT_READ_OK 0
#define AT_READ_FAIL -1
-#define AT_AGE_REMOVE 0 /* remove the attribute after calling age() */
-#define AT_AGE_KEEP 1 /* keep the attribute for another turn */
+#define AT_AGE_KEEP 0 /* keep the attribute for another turn */
+#define AT_AGE_REMOVE 1 /* remove the attribute after calling age() */
#ifdef __cplusplus
}