forked from github/server
First test to remove items from code: AXE and RUSTY_AXE are out.
Rewriting the rust-spell. Now affecting armor as well (with lower chance)
This commit is contained in:
parent
b04b01814b
commit
6b87faf047
|
@ -61,7 +61,6 @@ enum {
|
|||
WP_SPEAR,
|
||||
WP_GREATSWORD,
|
||||
WP_SWORD,
|
||||
WP_AXE,
|
||||
WP_LANCE,
|
||||
WP_RUSTY_SWORD,
|
||||
WP_RUSTY_GREATSWORD,
|
||||
|
@ -128,16 +127,12 @@ static weapondata weapontable[WP_MAX + 1] =
|
|||
{0.00, "2d8+3", "2d8+3", I_GREATSWORD, SK_SWORD, -1, -2, false, false, { RL_NONE, 0}, CUT },
|
||||
/* Schwert */
|
||||
{0.00, "1d9+2", "1d9+2", I_SWORD, SK_SWORD, 0, 0, false, false, { RL_NONE, 0}, CUT },
|
||||
/* Kriegsaxt */
|
||||
{0.00, "2d6+4", "2d6+4", I_AXE, SK_SWORD, 1, -2, false, false, { RL_NONE, 0}, CUT },
|
||||
/* Lanze */
|
||||
{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 */
|
||||
|
|
|
@ -314,8 +314,6 @@ sp_combatrosthauch(fighter * fi, int level, double power, spell * sp)
|
|||
/* da n min(force, x), sollte force maximal auf 0 sinken */
|
||||
assert(force >= 0);
|
||||
|
||||
/* Eisenwaffen: I_SWORD, I_GREATSWORD, I_AXE, I_HALBERD (50%) */
|
||||
|
||||
if (df->weapons) {
|
||||
int w;
|
||||
for (w=0;df->weapons[w].type!=NULL;++w) {
|
||||
|
|
|
@ -980,10 +980,6 @@ static t_item itemdata[MAXITEMS] = {
|
|||
{"Bihänder", "Bihänder", "Bihänder", "Bihänder"},
|
||||
IS_PRODUCT, SK_WEAPONSMITH, 4, {2, 0, 0, 0, 0, 0}, 200, 0, 0, NULL
|
||||
},
|
||||
{ /* I_AXE 36 */
|
||||
{"Kriegsaxt", "Kriegsäxte", "Kriegsaxt", "Kriegsäxte"},
|
||||
IS_PRODUCT, SK_WEAPONSMITH, 3, {1, 1, 0, 0, 0, 0}, 200, 0, 0, NULL
|
||||
},
|
||||
{ /* I_LAENSWORD 38 */
|
||||
{"Laenschwert", "Laenschwerter", "Laenschwert", "Laenschwerter"},
|
||||
IS_PRODUCT, SK_WEAPONSMITH, 8, {0, 0, 0, 0, 1, 0}, 100, 0, 0, NULL
|
||||
|
@ -1122,10 +1118,6 @@ static t_item itemdata[MAXITEMS] = {
|
|||
{"Rostiger Zweihänder", "Rostige Zweihänder", "Rostiger Zweihänder", "Rostige Zweihänder"},
|
||||
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"},
|
||||
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"},
|
||||
IS_PRODUCT, SK_WEAPONSMITH, 3, {1, 1, 0, 0, 0, 0}, 200, 0, 0, NULL
|
||||
|
|
|
@ -304,7 +304,6 @@ enum {
|
|||
I_DRAGONHEAD,
|
||||
I_CHASTITY_BELT, /* bleibt */
|
||||
I_GREATSWORD,
|
||||
I_AXE,
|
||||
I_LAENSWORD,
|
||||
I_LAEN,
|
||||
I_SHIELD,
|
||||
|
@ -345,7 +344,6 @@ enum {
|
|||
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 ! */
|
||||
};
|
||||
|
@ -379,7 +377,6 @@ enum {
|
|||
R_DRAGONHEAD,
|
||||
R_CHASTITY_BELT,
|
||||
R_GREATSWORD,
|
||||
R_AXE,
|
||||
R_EOGSWORD,
|
||||
R_EOG,
|
||||
R_SHIELD,
|
||||
|
|
|
@ -1287,75 +1287,85 @@ patzer_ents(castorder *co)
|
|||
* Gebiet: Gwyrrd
|
||||
* Wirkung:
|
||||
* Zerstört zwischen Stufe und Stufe*10 Eisenwaffen
|
||||
* Eisenwaffen: I_SWORD, I_GREATSWORD, I_AXE, I_HALBERD
|
||||
*
|
||||
* Flag:
|
||||
* (FARCASTING | SPELLLEVEL | UNITSPELL | TESTCANSEE | TESTRESISTANCE)
|
||||
*/
|
||||
/* Syntax: ZAUBER [REGION x y] [STUFE 2] "Rosthauch" 1111 2222 3333 */
|
||||
|
||||
typedef struct iron_weapon {
|
||||
const struct item_type * type;
|
||||
const struct item_type * rusty;
|
||||
float chance;
|
||||
struct iron_weapon * next;
|
||||
} iron_weapon;
|
||||
|
||||
static iron_weapon * ironweapons = NULL;
|
||||
|
||||
void
|
||||
add_ironweapon(const struct item_type * type, const struct item_type * rusty, float chance)
|
||||
{
|
||||
iron_weapon * iweapon = malloc(sizeof(iron_weapon));
|
||||
iweapon->type = type;
|
||||
iweapon->rusty = rusty;
|
||||
iweapon->chance = chance;
|
||||
iweapon->next = ironweapons;
|
||||
ironweapons = iweapon;
|
||||
}
|
||||
|
||||
static int
|
||||
sp_rosthauch(castorder *co)
|
||||
{
|
||||
unit *u;
|
||||
int ironweapon;
|
||||
int i, n;
|
||||
int n;
|
||||
int success = 0;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int force = (int)co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
||||
if (ironweapons==NULL) {
|
||||
add_ironweapon(it_find("sword"), it_find("rustysword"), 1.0);
|
||||
add_ironweapon(it_find("axe"), it_find("rustyaxe"), 1.0);
|
||||
add_ironweapon(it_find("greatsword"), it_find("rustygreatsword"), 1.0);
|
||||
add_ironweapon(it_find("halberd"), it_find("rustyhalberd"), 0.5f);
|
||||
#ifndef NO_RUSTY_ARMOR
|
||||
add_ironweapon(it_find("shield"), it_find("rustyshield"), 0.5f);
|
||||
add_ironweapon(it_find("chainmail"), it_find("rustychainmail"), 0.2f);
|
||||
#endif
|
||||
}
|
||||
|
||||
force = rand()%((int)(force * 10)) + force;
|
||||
|
||||
/* fuer jede Einheit */
|
||||
for (n = 0; n < pa->length; n++) {
|
||||
static const item_type * it_halberd = NULL;
|
||||
if (it_halberd==NULL) it_halberd = it_find("halberd");
|
||||
unit *u = pa->param[n]->data.u;
|
||||
int ironweapon = 0;
|
||||
iron_weapon * iweapon = ironweapons;
|
||||
|
||||
if (force<=0) break;
|
||||
if (pa->param[n]->flag & (TARGET_RESISTS|TARGET_NOTFOUND)) continue;
|
||||
|
||||
if(pa->param[n]->flag == TARGET_RESISTS
|
||||
|| pa->param[n]->flag == TARGET_NOTFOUND)
|
||||
continue;
|
||||
|
||||
u = pa->param[n]->data.u;
|
||||
|
||||
/* Eisenwaffen: I_SWORD, I_GREATSWORD, I_AXE, I_HALBERD (50% Chance)*/
|
||||
ironweapon = 0;
|
||||
|
||||
i = min(get_item(u, I_SWORD), (int)force);
|
||||
for (;iweapon!=NULL;iweapon=iweapon->next) {
|
||||
item ** ip = i_find(&u->items, iweapon->type);
|
||||
if (ip) {
|
||||
int i = min((*ip)->number, force);
|
||||
if (iweapon->chance<1.0) {
|
||||
i = (int)(i*iweapon->chance);
|
||||
}
|
||||
if (i>0) {
|
||||
change_item(u, I_SWORD, -i);
|
||||
change_item(u, I_RUSTY_SWORD, i);
|
||||
force -= i;
|
||||
ironweapon += i;
|
||||
i_change(ip, iweapon->type, -i);
|
||||
if (iweapon->rusty) {
|
||||
i_change(&u->items, iweapon->rusty, i);
|
||||
}
|
||||
i = min(get_item(u, I_GREATSWORD), (int)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), (int)force);
|
||||
if (i > 0){
|
||||
change_item(u, I_AXE, -i);
|
||||
change_item(u, I_RUSTY_AXE, i);
|
||||
force -= i;
|
||||
ironweapon += i;
|
||||
}
|
||||
i = min(i_get(u->items, it_halberd), (int)force);
|
||||
if (i > 0){
|
||||
if(rand()%100 < 50){
|
||||
i_change(&u->items, it_halberd, -i);
|
||||
i_change(&u->items, olditemtype[I_RUSTY_HALBERD], i);
|
||||
force -= i;
|
||||
ironweapon += i;
|
||||
}
|
||||
if (force<=0) break;
|
||||
}
|
||||
|
||||
if (ironweapon) {
|
||||
if (ironweapon>0) {
|
||||
/* {$mage mage} legt einen Rosthauch auf {target}. {amount} Waffen
|
||||
* wurden vom Rost zerfressen */
|
||||
ADDMSG(&mage->faction->msgs, msg_message(
|
||||
|
|
|
@ -9,14 +9,14 @@
|
|||
<startup race="dwarf">
|
||||
<item name="axe" amount="1"/>
|
||||
<item name="chainmail" amount="1"/>
|
||||
<skill name="sk_sword" level="1"/>
|
||||
<skill name="sk_melee" level="1"/>
|
||||
</startup>
|
||||
<startup race="elf">
|
||||
<item name="fairyboot" amount="1"/>
|
||||
</startup>
|
||||
<startup race="uruk">
|
||||
<skill name="sk_spear" level="4"/>
|
||||
<skill name="sk_sword" level="4"/>
|
||||
<skill name="sk_melee" level="4"/>
|
||||
<skill name="sk_crossbow" level="4"/>
|
||||
<skill name="sk_catapult" level="4"/>
|
||||
<skill name="sk_bow" level="4"/>
|
||||
|
|
|
@ -54,6 +54,32 @@
|
|||
</item>
|
||||
</resource>
|
||||
|
||||
<resource name="axe">
|
||||
<item weight="200">
|
||||
<construction skill="sk_weaponsmithing" minskill="3" reqsize="1">
|
||||
<requirement type="log" quantity="1"/>
|
||||
<requirement type="iron" quantity="1"/>
|
||||
</construction>
|
||||
<weapon cut="true" skill="sk_melee" offmod="1" defmod="-2">
|
||||
<damage type="rider" value="2d6+4"/>
|
||||
<damage type="footman" value="2d6+4"/>
|
||||
</weapon>
|
||||
</item>
|
||||
</resource>
|
||||
|
||||
<resource name="rustyaxe">
|
||||
<item weight="200">
|
||||
<construction skill="sk_weaponsmithing" minskill="3" reqsize="1">
|
||||
<requirement type="log" quantity="1"/>
|
||||
<requirement type="iron" quantity="1"/>
|
||||
</construction>
|
||||
<weapon cut="true" skill="sk_melee" offmod="0" defmod="-3">
|
||||
<damage type="rider" value="2d6"/>
|
||||
<damage type="footman" value="2d6"/>
|
||||
</weapon>
|
||||
</item>
|
||||
</resource>
|
||||
|
||||
<resource name="mallorncrossbow">
|
||||
<item weight="100">
|
||||
<construction skill="sk_weaponsmithing" minskill="5" reqsize="1">
|
||||
|
|
Loading…
Reference in New Issue