diff --git a/src/common/items/weapons.c b/src/common/items/weapons.c index 4cbdd2821..aa53eea7a 100644 --- a/src/common/items/weapons.c +++ b/src/common/items/weapons.c @@ -73,6 +73,9 @@ enum { WP_HALBERD, WP_LANCE, WP_RUSTY_SWORD, + WP_RUSTY_GREATSWORD, + WP_RUSTY_AXE, + WP_RUSTY_HALBERD, WP_NONE, WP_MAX }; @@ -144,6 +147,12 @@ static weapondata weapontable[WP_MAX + 1] = {0.00, "1d5", "2d6+5", I_LANCE, SK_SPEAR, 0, -2, false, false, { RL_NONE, 0}, PIERCE }, /* Rostiges Schwert */ {0.00, "1d9", "1d9", I_RUSTY_SWORD, SK_SWORD, -1, -1, false, false, { RL_NONE, 0}, CUT }, + /* Rostiger Zweihänder */ + {0.00, "2d8", "2d8", I_RUSTY_GREATSWORD, SK_SWORD, -2, -3, false, false, { RL_NONE, 0}, CUT }, + /* Rostige Axt */ + {0.00, "2d6", "2d6", I_RUSTY_AXE, SK_SWORD, 0, -3, false, false, { RL_NONE, 0}, CUT }, + /* Rostige Hellebarde */ + {0.00, "2d6", "2d6", I_RUSTY_HALBERD, SK_SPEAR, -2, 1, false, false, { RL_NONE, 0}, CUT }, /* Unbewaffnet */ {0.00, "1d5+0", "1d6+0", I_WOOD, SK_SWORD, 0, 0, false, false, { RL_NONE, 0}, BASH }, /* Dummy */ @@ -272,7 +281,7 @@ init_oldweapons(void) item_type * itype = olditemtype[weapontable[w].item]; int minskill = 1, wflags = WTF_NONE; weapon_mod * modifiers = NULL; - int (*attack)(const troop *, int * deaths, int row) = NULL; + boolean (*attack)(const troop *, int * deaths, int row) = NULL; switch (w) { case WP_RUNESWORD: diff --git a/src/common/kernel/item.c b/src/common/kernel/item.c index 64ae6a171..683293272 100644 --- a/src/common/kernel/item.c +++ b/src/common/kernel/item.c @@ -1218,6 +1218,18 @@ t_item itemdata[MAXITEMS] = { { /* I_SPHERE_OF_INVISIBILITY */ {"Sphäre der Unsichtbarkeit", "Sphären der Unsichtbarkeit", "", ""}, G_M, IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 100, 0, 0, NULL + }, + { /* I_RUSTY_GREATSWORD */ + {"Rostiger Zweihänder", "Rostige Zweihänder", "Rostiger Zweihänder", "Rostige Zweihänder"}, G_M, + IS_PRODUCT, SK_WEAPONSMITH, 4, {2, 0, 0, 0, 0, 0}, 200, 0, 0, NULL + }, + { /* I_RUSTY_AXE */ + {"Rostige Kriegsaxt", "Rostige Kriegsäxte", "Rostige Kriegsaxt", "Rostige Kriegsäxte"}, G_F, + IS_PRODUCT, SK_WEAPONSMITH, 3, {1, 1, 0, 0, 0, 0}, 200, 0, 0, NULL + }, + { /* I_RUSTY_HALBERD */ + {"Rostige Hellebarde", "Rostige Hellebarden", "Rostige Hellebarde", "Rostige Hellebarden"}, G_F, + IS_PRODUCT, SK_WEAPONSMITH, 3, {1, 1, 0, 0, 0, 0}, 200, 0, 0, NULL } }; diff --git a/src/common/kernel/item.h b/src/common/kernel/item.h index 17b786851..ef1c7f61e 100644 --- a/src/common/kernel/item.h +++ b/src/common/kernel/item.h @@ -123,7 +123,7 @@ typedef struct item_type { /* --- functions --- */ int (*use)(struct unit * user, const struct item_type * itype, int amount, const char * cmd); int (*useonother)(struct unit * user, int targetno, const struct item_type * itype, int amount, const char * cmd); - int (*give)(const struct unit * src, const struct unit * dest, const struct item_type * itm, int number, const char * cmd); + boolean (*give)(const struct unit * src, const struct unit * dest, const struct item_type * itm, int number, const char * cmd); struct item_type * next; } item_type; @@ -372,6 +372,9 @@ enum { I_RUSTY_CHAIN_MAIL, I_SACK_OF_CONSERVATION, I_SPHERE_OF_INVISIBILITY, + I_RUSTY_GREATSWORD, + I_RUSTY_AXE, + I_RUSTY_HALBERD, MAX_ITEMS /* do not use outside item.c ! */ }; diff --git a/src/common/kernel/spell.c b/src/common/kernel/spell.c index c1a36ea0d..71e7142c4 100644 --- a/src/common/kernel/spell.c +++ b/src/common/kernel/spell.c @@ -1338,18 +1338,21 @@ sp_rosthauch(castorder *co) i = min(get_item(u, I_SWORD), force); if (i > 0){ change_item(u, I_SWORD, -i); + change_item(u, I_RUSTY_SWORD, i); force -= i; ironweapon += i; } i = min(get_item(u, I_GREATSWORD), force); if (i > 0){ change_item(u, I_GREATSWORD, -i); + change_item(u, I_RUSTY_GREATSWORD, i); force -= i; ironweapon += i; } i = min(get_item(u, I_AXE), force); if (i > 0){ change_item(u, I_AXE, -i); + change_item(u, I_RUSTY_AXE, i); force -= i; ironweapon += i; } @@ -1357,6 +1360,7 @@ sp_rosthauch(castorder *co) if (i > 0){ if(rand()%100 < 50){ change_item(u, I_HALBERD, -i); + change_item(u, I_RUSTY_HALBERD, i); force -= i; ironweapon += i; } diff --git a/src/res/de/strings.xml b/src/res/de/strings.xml index 546daa628..9a62b6a84 100644 --- a/src/res/de/strings.xml +++ b/src/res/de/strings.xml @@ -2011,7 +2011,6 @@ WERWESEN - Adler @@ -4019,9 +4018,8 @@ unheilverkündend über der Region auftürmt. Der magische Regen wird alles Erz rosten lassen. Seine Kraft reicht nicht aus, um Rüstungen unbrauchbar - zu machen, jedoch werden Eisenwaffen so - unbrauchbar schartig und rostig, dass man sie - wegwerfen muss. Die Zerstörungskraft des Regens + zu machen, jedoch werden Eisenwaffen schartig und + rostig. Die Zerstörungskraft des Regens ist von der investierten Kraft des Magiers abhängig. Für jede Stufe können bis zu 10 Eisenwaffen betroffen werden. Ein Ring der Macht @@ -4031,8 +4029,7 @@ thunderstorm that affects a whole region. The magic rain will let rust any ore. Its power is not strong enough to destroy armors, but any iron - weapons will get so rusty that they won't be - usable any more. The exact number of weapons + weapons will get rusty. The exact number of weapons affected by the rain depends on the ammount of power invested by the mage. Up to ten weapons can be destroyed per level - a Ring Of Power increases @@ -5292,6 +5289,18 @@ Mallornbäume mallorn trees + + ALLIANZ + ALLIANCE + + + AUSSTOSSEN + KICK + + + AUFNEHEMEN + JOIN +