Apfel, Nuss und Mandelkern (und Kekse) fleigen raus aus dem Source.

Burgen fliegen aus dem Source.

XML reader unterstützt jetzt auch Gebäude mit mehreren Ausbaustufen.
This commit is contained in:
Enno Rehling 2005-10-03 20:59:11 +00:00
parent 23d7205a8b
commit 5dfc2f08b6
14 changed files with 92 additions and 109 deletions

View File

@ -240,9 +240,7 @@ findbuilding(int i)
/** Building: Fortification */
enum {
B_SITE,
#if LARGE_CASTLES
B_TRADEPOST,
#endif
B_FORTIFICATION,
B_TOWER,
B_CASTLE,
@ -277,9 +275,7 @@ castle_name(int bsize)
{
const char * fname[MAXBUILDINGS] = {
"site",
#if LARGE_CASTLES
"tradepost",
#endif
"fortification",
"tower",
"castle",
@ -302,42 +298,6 @@ castle_name(int bsize)
return fname[i];
}
static requirement castle_req[] = {
{ R_STONE, 1, 0.5 },
{ NORESOURCE, 0, 0.0 },
};
#if LARGE_CASTLES
static construction castle_bld[MAXBUILDINGS] = {
{ SK_BUILDING, 1, 2, 1, castle_req, &castle_bld[1] },
{ SK_BUILDING, 1, 8, 1, castle_req, &castle_bld[2] },
{ SK_BUILDING, 2, 40, 1, castle_req, &castle_bld[3] },
{ SK_BUILDING, 3, 200, 1, castle_req, &castle_bld[4] },
{ SK_BUILDING, 4, 1000, 1, castle_req, &castle_bld[5] },
{ SK_BUILDING, 5, 5000, 1, castle_req, &castle_bld[6] },
{ SK_BUILDING, 6, -1, 1, castle_req, NULL }
};
#else
static construction castle_bld[MAXBUILDINGS] = {
{ SK_BUILDING, 1, 2, 1, castle_req, &castle_bld[1] },
{ SK_BUILDING, 2, 8, 1, castle_req, &castle_bld[2] },
{ SK_BUILDING, 3, 40, 1, castle_req, &castle_bld[3] },
{ SK_BUILDING, 4, 200, 1, castle_req, &castle_bld[4] },
{ SK_BUILDING, 5, 1000, 1, castle_req, &castle_bld[5] },
{ SK_BUILDING, 6, -1, 1, castle_req, NULL }
};
#endif
building_type bt_castle = {
"castle",
BTF_NONE,
1, 4, -1,
0, 0, 0, 1.0,
NULL,
&castle_bld[0],
castle_name
};
#if WDW_PYRAMID
static requirement wdw_pyramid_req[][] = {
{{R_STONE, 100, 0}, {R_WOOD, 100, 0}, {R_IRON, 100, 0}, {NORESOURCE, 0, 0.0 }},
@ -452,7 +412,6 @@ register_buildings(void)
{
register_function((pf_generic)init_smithy, "init_smithy");
register_function((pf_generic)castle_name, "castle_name");
bt_register(&bt_castle);
#if WDW_PYRAMID
register_function((pf_generic)wdw_pyramid_name, "wdw_pyramid_name");

View File

@ -2810,7 +2810,6 @@ plagues(region * r, boolean ismagic)
/* Lohn bei den einzelnen Burgstufen für Normale Typen, Orks, Bauern,
* Modifikation für Städter. */
#if LARGE_CASTLES
static const int wagetable[7][4] = {
{10, 10, 11, -7}, /* Baustelle */
{10, 10, 11, -5}, /* Handelsposten */
@ -2820,16 +2819,6 @@ static const int wagetable[7][4] = {
{14, 12, 15, 1}, /* Festung */
{15, 13, 16, 2} /* Zitadelle */
};
#else
static const int wagetable[7][4] = {
{10, 10, 11, -5}, /* Baustelle */
{11, 11, 12, -3}, /* Befestigung */
{12, 11, 13, -1}, /* Turm */
{13, 12, 14, 0}, /* Burg */
{14, 12, 15, 1}, /* Festung */
{15, 13, 16, 2} /* Zitadelle */
};
#endif
int
wage(const region *r, const unit *u, boolean img)

View File

@ -992,27 +992,6 @@ static t_item itemdata[MAXITEMS] = {
{"Mallorn", "Mallorn", "Mallorn", "Mallorn"},
IS_RESOURCE, SK_LUMBERJACK, 2, {0, 0, 0, 0, 0, 0}, 500, 0, 0, NULL
},
{ /* I_KEKS 46 *//* Item für Questenzwecke */
{"Keks", "Kekse", "Keks", "Kekse"},
IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 0, 0, 0, NULL
},
{ /* I_APFEL 47 *//* Item für Questenzwecke */
{"Apfel", "Äpfel", "Apfel", "Äpfel"},
IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 0, 0, 0, NULL
},
{ /* I_NUSS 48 *//* Item für Questenzwecke */
{"Nuß", "Nüsse", "Nuß", "Nüsse"},
IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 0, 0, 0, NULL
},
{ /* I_MANDELKERN 49 *//* Item für Questenzwecke */
{"Mandelkern", "Mandelkerne", "Mandelkern", "Mandelkerne"},
IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 0, 0, 0, NULL
},
{ /* I_AMULETT_DES_TREFFENS 58 */
{"Amulett des Treffens", "Amulette des Treffens",
"Amulett des Treffens", "Amulette des Treffens"},
IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 0, 0, 0, NULL
},
{ /* I_DRACHENBLUT 59 */
{"Drachenblut", "Drachenblut", "Drachenblut", "Drachenblut"},
IS_MAGIC, 0, 0, {0, 0, 0, 0, 0, 0}, 100, 0, 0, NULL

View File

@ -307,18 +307,6 @@ enum {
I_SHIELD,
I_LANCE,
I_MALLORN,
I_KEKS,
I_APFEL,
I_NUSS,
I_MANDELKERN,
#ifdef COMPATIBILITY
I_STAB_DES_SCHICKSALS,
I_STAB_DER_VERDAMMNIS,
I_STAB_DES_TODES,
I_STAB_DES_CHAOS,
I_STECKEN_DER_MACHT,
#endif
I_AMULETT_DES_TREFFENS,
I_DRACHENBLUT,
I_FEENSTIEFEL,
I_BIRTHDAYAMULET,
@ -341,6 +329,13 @@ enum {
I_SACK_OF_CONSERVATION,
I_SPHERE_OF_INVISIBILITY,
I_RUSTY_HALBERD,
#ifdef COMPATIBILITY
I_STAB_DES_SCHICKSALS,
I_STAB_DER_VERDAMMNIS,
I_STAB_DES_TODES,
I_STAB_DES_CHAOS,
I_STECKEN_DER_MACHT,
#endif
MAX_ITEMS /* do not use outside item.c ! */
};
@ -376,11 +371,6 @@ enum {
R_SHIELD,
R_LANCE,
R_MALLORN,
R_KEKS,
R_APFEL,
R_NUSS,
R_MANDELKERN,
R_AMULETT_DES_TREFFENS,
R_DRACHENBLUT,
R_FEENSTIEFEL,
R_BIRTHDAYAMULET,

View File

@ -159,7 +159,8 @@ xml_readconstruction(xmlXPathContextPtr xpath, xmlNodePtr * nodeTab, int nodeNr,
int m;
assert(*consPtr==NULL);
con = *consPtr = calloc(sizeof(construction), 1);
*consPtr = con = calloc(sizeof(construction), 1);
consPtr = &con->improvement;
property = xmlGetProp(node, BAD_CAST "skill");
assert(property!=NULL);

View File

@ -705,7 +705,7 @@ gm_addquest(const char * email, const char * name, short radius, unsigned int fl
for (i=0;i<=I_INCENSE;++i) {
a_add((attrib**)&a->data.v, make_atgmcreate(olditemtype[i]));
}
for (i=I_LAENSWORD;i!=I_KEKS;++i) {
for (i=I_LAENSWORD;i!=I_DRACHENBLUT;++i) {
a_add((attrib**)&a->data.v, make_atgmcreate(olditemtype[i]));
}
@ -770,7 +770,7 @@ gm_addfaction(const char * email, plane * p, region * r)
for (i=0;i<=I_INCENSE;++i) {
a_add((attrib**)&a->data.v, make_atgmcreate(olditemtype[i]));
}
for (i=I_LAENSWORD;i!=I_KEKS;++i) {
for (i=I_LAENSWORD;i!=I_DRACHENBLUT;++i) {
a_add((attrib**)&a->data.v, make_atgmcreate(olditemtype[i]));
}

View File

@ -18,7 +18,6 @@
#define IMMUN_GEGEN_ANGRIFF 8
#define RESOURCE_CONVERSION 1
#define NEW_RESOURCEGROWTH 1
#define LARGE_CASTLES 1
#define REDUCED_PEASANTGROWTH 1
#define RACE_ADJUSTMENTS 1
#define TEACHDIFFERENCE 2
@ -37,14 +36,14 @@
auf die Hälfte */
#define ASTRAL_ITEM_RESTRICTIONS /* keine grossen dinge im astralraum */
#define MUSEUM_MODULE
#define ARENA_MODULE
#define SCORE_MODULE
#define WORMHOLE_MODULE
#define XECMD_MODULE
#define NEW_DAEMONHUNGER_RULE
#define NEW_COMBATSKILLS_RULE
#define ROW_FACTOR 3 /* factor for combat row advancement rule */
#define HEROES
#define SCORE_MODULE
#define MUSEUM_MODULE
#define ARENA_MODULE
#define WORMHOLE_MODULE
#define XECMD_MODULE

View File

@ -18,7 +18,6 @@
#define IMMUN_GEGEN_ANGRIFF 8
#define RESOURCE_CONVERSION 1
#define NEW_RESOURCEGROWTH 1
#define LARGE_CASTLES 1
#define REDUCED_PEASANTGROWTH 1
#define RACE_ADJUSTMENTS 1
#define TEACHDIFFERENCE 2
@ -28,12 +27,18 @@
#define RESOURCE_QUANTITY 0.5
#define RECRUITFRACTION 40 /* 100/RECRUITFRACTION% */
#define CHANGED_CROSSBOWS 1
#define NEWATSROI 0
#define COMBAT_TURNS 5
#define PEASANTS_DO_NOT_STARVE 0
#define NEW_MIGRATION 1
#define ASTRAL_HUNGER
#define NEWATSROI 0
#define HUNGER_REDUCES_SKILL /* Hunger reduziert den Talentwert
auf die Hälfte */
#define ASTRAL_ITEM_RESTRICTIONS /* keine grossen dinge im astralraum */
#define NEW_DAEMONHUNGER_RULE
#define NEW_COMBATSKILLS_RULE
#define ROW_FACTOR 3 /* factor for combat row advancement rule */
#define HEROES
#define SCORE_MODULE

View File

@ -18,7 +18,6 @@
#define IMMUN_GEGEN_ANGRIFF 8
#define RESOURCE_CONVERSION 1
#define NEW_RESOURCEGROWTH 1
#define LARGE_CASTLES 1
#define REDUCED_PEASANTGROWTH 1
#define RACE_ADJUSTMENTS 1
#define TEACHDIFFERENCE 2

View File

@ -18,7 +18,6 @@
#define IMMUN_GEGEN_ANGRIFF 8
#define RESOURCE_CONVERSION 1
#define NEW_RESOURCEGROWTH 1
#define LARGE_CASTLES 1
#define REDUCED_PEASANTGROWTH 1
#define RACE_ADJUSTMENTS 1
#define TEACHDIFFERENCE 2

View File

@ -402,7 +402,7 @@ update_gms(void)
for (k=0;keys[k];++k) {
add_key((attrib**)&permissions->data.v, atoi36(keys[k]));
}
for (i=I_LAENSWORD;i!=I_KEKS;++i) {
for (i=I_LAENSWORD;i!=I_DRACHENBLUT;++i) {
attrib * a = a_find((attrib*)permissions->data.v, &at_gmcreate);
while (a && a->data.v!=(void*)olditemtype[i]) a=a->nexttype;
if (!a) a_add((attrib**)&permissions->data.v, make_atgmcreate(olditemtype[i]));

View File

@ -160,8 +160,8 @@ block_create(short x1, short y1, int size, char chaotisch, int special, char ter
newblock[x][y] = terrain_create(local_climate);
vset_erase(&fringe, (void *) c);
for (d = 0; d != MAXDIRECTIONS; ++d) {
int dx = x+delta_x[d];
int dy = y+delta_y[d];
short dx = x+delta_x[d];
short dy = y+delta_y[d];
if (dx >= 0 && dx < BLOCKSIZE && dy >= 0 && dy < BLOCKSIZE && newblock[dx][dy] == T_OCEAN)
vset_add(&fringe, (void *) (((short) (dx) << 16) +
((short) (dy) & 0xFFFF)));

View File

@ -6,18 +6,21 @@
<building name="genericbuilding" maxsize="1" nobuild="yes"/>
<building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="artsculpture" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="blessedstonecircle" maxcapacity="3" maxsize="100" nobuild="yes" magic="yes" magres="60" magresbonus="30" auraregen="1.50">
<construction skill="sk_building" minskill="2" reqsize="100" maxsize="100">
<requirement type="log" recycle="0.5" quantity="500"/>
<requirement type="stone" recycle="0.5" quantity="500"/>
</construction>
</building>
<building name="stonecircle" maxsize="100">
<construction skill="sk_building" minskill="2" reqsize="100" maxsize="100">
<requirement type="log" recycle="0.5" quantity="500"/>
<requirement type="stone" recycle="0.5" quantity="500"/>
</construction>
</building>
<building name="inn" capacity="1">
<maintenance type="money" amount="5" variable="yes" vital="yes"/>
<construction skill="sk_building" minskill="2" reqsize="10">
@ -27,6 +30,7 @@
<requirement type="money" quantity="2000"/>
</construction>
</building>
<building name="tunnel" capacity="1" maxsize="100">
<maintenance type="stone" recycle="0.5" amount="2"/>
<maintenance type="money" amount="100" vital="yes"/>
@ -37,6 +41,7 @@
<requirement type="money" quantity="30000"/>
</construction>
</building>
<building name="caravan" capacity="1" maxsize="10">
<maintenance type="horse" amount="2"/>
<maintenance type="money" amount="3000" vital="yes"/>
@ -47,6 +52,7 @@
<requirement type="money" quantity="5000"/>
</construction>
</building>
<building name="dam" capacity="1" maxsize="50">
<maintenance type="log" recycle="0.5" amount="3"/>
<maintenance type="money" amount="1000" vital="yes"/>
@ -57,6 +63,7 @@
<requirement type="money" quantity="25000"/>
</construction>
</building>
<building name="monument" capacity="1">
<construction skill="sk_building" minskill="4" reqsize="1">
<requirement type="log" recycle="0.5" quantity="1"/>
@ -65,6 +72,7 @@
<requirement type="money" quantity="400"/>
</construction>
</building>
<building name="stables" capacity="1">
<maintenance type="money" amount="150" vital="yes"/>
<construction skill="sk_building" minskill="2" reqsize="1">
@ -74,6 +82,7 @@
<requirement type="money" quantity="100"/>
</construction>
</building>
<building name="sawmill" capacity="1">
<maintenance type="money" amount="250" vital="yes"/>
<construction skill="sk_building" minskill="3" reqsize="1">
@ -83,6 +92,7 @@
<requirement type="money" quantity="200"/>
</construction>
</building>
<building name="smithy" capacity="1">
<function name="init" value="init_smithy"/>
<maintenance type="money" amount="300" vital="yes"/>
@ -94,6 +104,7 @@
<requirement type="money" quantity="200"/>
</construction>
</building>
<building name="magictower" maxcapacity="2" maxsize="50" magic="yes" magres="40" fumblebonus="10" auraregen="1.75">
<maintenance type="money" amount="1000" vital="yes"/>
<construction skill="sk_building" minskill="5" reqsize="50" maxsize="50">
@ -105,6 +116,7 @@
<requirement type="money" quantity="25000"/>
</construction>
</building>
<building name="academy" maxcapacity="25" maxsize="25">
<maintenance type="money" amount="1000" vital="yes"/>
<construction skill="sk_building" minskill="3" reqsize="25" maxsize="25">
@ -114,6 +126,7 @@
<requirement type="money" quantity="12500"/>
</construction>
</building>
<building name="harbour" capacity="1" maxcapacity="25" maxsize="25">
<maintenance type="money" amount="250" vital="yes"/>
<construction skill="sk_building" minskill="3" reqsize="25" maxsize="25">
@ -122,6 +135,7 @@
<requirement type="money" quantity="6250"/>
</construction>
</building>
<building name="quarry" capacity="1">
<maintenance type="money" amount="250" vital="yes"/>
<construction skill="sk_building" minskill="2" reqsize="1">
@ -131,6 +145,7 @@
<requirement type="money" quantity="250"/>
</construction>
</building>
<building name="mine" capacity="1">
<maintenance type="money" amount="500" vital="yes"/>
<construction skill="sk_building" minskill="4" reqsize="1">
@ -140,6 +155,7 @@
<requirement type="money" quantity="250"/>
</construction>
</building>
<building name="lighthouse" capacity="1" maxcapacity="4">
<maintenance type="money" amount="100" vital="yes"/>
<construction skill="sk_building" minskill="3" reqsize="1">
@ -149,6 +165,7 @@
<requirement type="money" quantity="100"/>
</construction>
</building>
<building name="pyramid" capacity="1" maxcapacity="10000" nodestroy="yes">
<construction skill="sk_building" minskill="10" reqsize="1">
<requirement type="iron" quantity="100"/>
@ -156,5 +173,31 @@
<requirement type="stone" quantity="100"/>
</construction>
</building>
<building name="castle" capacity="1" maxcapacity="4">
<function name="name" value="castle_name"/>
<construction skill="sk_building" minskill="1" maxsize="2" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
<construction skill="sk_building" minskill="1" maxsize="8" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
<construction skill="sk_building" minskill="2" maxsize="40" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
<construction skill="sk_building" minskill="3" maxsize="200" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
<construction skill="sk_building" minskill="4" maxsize="1000" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
<construction skill="sk_building" minskill="5" maxsize="5000" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
<construction skill="sk_building" minskill="6" reqsize="1">
<requirement type="stone" quantity="1" recycle="0.5"/>
</construction>
</building>
</buildings>

View File

@ -2,7 +2,6 @@
<resources>
<resource name="mistletoe">
<!-- Sets the chance of escape in a fight to 100 percent -->
<function name="change" value="changeitem"/>
<item notlost="yes" weight="0">
<function name="use" value="usemistletoe"/>
</item>
@ -14,6 +13,27 @@
</item>
</resource>
<resource name="aog">
<!-- Amulett des Treffens -->
<item notlost="yes" weight="0"/>
</resource>
<resource name="almond">
<item weight="0"/>
</resource>
<resource name="apple">
<item weight="0"/>
</resource>
<resource name="nut">
<item weight="0"/>
</resource>
<resource name="cookie">
<item weight="0"/>
</resource>
<resource name="snowball">
<!-- xmas gimmik -->
<item notlost="yes" weight="0">