diff --git a/res/e3a/races.xml b/res/e3a/races.xml
index 0e5166d42..d5139298b 100644
--- a/res/e3a/races.xml
+++ b/res/e3a/races.xml
@@ -747,7 +747,7 @@
-
+
diff --git a/res/eressea/races.xml b/res/eressea/races.xml
index d34d2bb28..530b7298f 100644
--- a/res/eressea/races.xml
+++ b/res/eressea/races.xml
@@ -981,7 +981,7 @@
-
+
diff --git a/scripts/eressea/xmas2004.lua b/scripts/eressea/xmas2004.lua
index a52c4418e..9b32d7a33 100644
--- a/scripts/eressea/xmas2004.lua
+++ b/scripts/eressea/xmas2004.lua
@@ -1,12 +1,18 @@
function use_snowman(u, amount)
- if u.region.terrain == "glacier" then
- local man = unit.create(u.faction, u.region)
- man.race = "snowman"
- man.number = amount
- u:add_item("snowman", -amount)
- return 0
- end
- return -4
+ local have = u:get_item("snowman")
+ if have0 and u.region.terrain == "glacier" then
+ local man = unit.create(u.faction, u.region)
+ man.race = "snowman"
+ man.number = amount
+ if u:add_item("snowman", -amount)~= nil then
+ return -1
+ end
+ return 0
+ end
+ return -4
end
local self = {}
diff --git a/src/give.c b/src/give.c
index 7a17b2da3..f64bf0a51 100644
--- a/src/give.c
+++ b/src/give.c
@@ -750,6 +750,7 @@ void give_cmd(unit * u, order * ord)
msg_feedback(u, ord, "race_noregroup", "race", u_race(u)));
return;
}
+ n = _min(u->number, n);
msg = u2 ? give_men(n, u, u2, ord) : disband_men(n, u, ord);
if (msg) {
ADDMSG(&u->faction->msgs, msg);
diff --git a/src/kernel/config.c b/src/kernel/config.c
index 451143f82..0db12308d 100644
--- a/src/kernel/config.c
+++ b/src/kernel/config.c
@@ -81,6 +81,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#endif
/* external libraries */
+#include
#include
#include
@@ -2132,6 +2133,16 @@ bool has_limited_skills(const struct unit * u)
}
}
+static int read_ext(attrib * a, void *owner, struct storage *store)
+{
+ int len;
+
+ READ_INT(store, &len);
+ store->api->r_bin(store->handle, NULL, (size_t)len);
+ return AT_READ_OK;
+}
+
+
void attrib_init(void)
{
/* Alle speicherbaren Attribute müssen hier registriert werden */
@@ -2178,6 +2189,7 @@ void attrib_init(void)
at_register(&at_germs);
at_deprecate("xontormiaexpress", a_readint); /* required for old datafiles */
+ at_deprecate("lua", read_ext); /* required for old datafiles */
}
void kernel_init(void)
diff --git a/src/spells.c b/src/spells.c
index b459b077f..908b6fbec 100644
--- a/src/spells.c
+++ b/src/spells.c
@@ -4701,7 +4701,7 @@ int sp_gooddreams(castorder * co)
}
/* ------------------------------------------------------------- */
-/* Name:
+/* Name: Seelenkopie / Doppelganger
* Stufe: 9
* Kategorie:
* Wirkung:
diff --git a/src/util/attrib.c b/src/util/attrib.c
index 7dc067cc4..d344cdc07 100644
--- a/src/util/attrib.c
+++ b/src/util/attrib.c
@@ -299,7 +299,7 @@ int a_read(struct storage *store, attrib ** attribs, void *owner)
na = a_new(at);
}
else {
- const void * kv;
+ const void * kv = 0;
cb_find_prefix(&cb_deprecated, zText, strlen(zText) + 1, &kv, 1, 0);
if (kv) {
cb_get_kv(kv, &reader, sizeof(reader));