forked from github/server
reduce config.h even more.
let's get all those global variables out of there.
This commit is contained in:
parent
cbb18edb8f
commit
a601a675f6
155
src/battle.c
155
src/battle.c
|
@ -76,16 +76,14 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
static FILE *bdebug;
|
|
||||||
|
|
||||||
#define TACTICS_BONUS 1 /* when undefined, we have a tactics round. else this is the bonus tactics give */
|
#define TACTICS_BONUS 1 /* when undefined, we have a tactics round. else this is the bonus tactics give */
|
||||||
#define TACTICS_MODIFIER 1 /* modifier for generals in the front/rear */
|
#define TACTICS_MODIFIER 1 /* modifier for generals in the front/rear */
|
||||||
|
|
||||||
#define CATAPULT_INITIAL_RELOAD 4 /* erster schuss in runde 1 + rng_int() % INITIAL */
|
#define CATAPULT_INITIAL_RELOAD 4 /* erster schuss in runde 1 + rng_int() % INITIAL */
|
||||||
#define CATAPULT_STRUCTURAL_DAMAGE
|
#define CATAPULT_STRUCTURAL_DAMAGE
|
||||||
|
|
||||||
#define BASE_CHANCE 70 /* 70% Basis-Überlebenschance */
|
#define BASE_CHANCE 70 /* 70% Basis-<EFBFBD>berlebenschance */
|
||||||
#define TDIFF_CHANGE 5 /* 5% höher pro Stufe */
|
#define TDIFF_CHANGE 5 /* 5% h<EFBFBD>her pro Stufe */
|
||||||
#define DAMAGE_QUOTIENT 2 /* damage += skilldiff/DAMAGE_QUOTIENT */
|
#define DAMAGE_QUOTIENT 2 /* damage += skilldiff/DAMAGE_QUOTIENT */
|
||||||
|
|
||||||
#define DEBUG_SELECT /* should be disabled if select_enemy works */
|
#define DEBUG_SELECT /* should be disabled if select_enemy works */
|
||||||
|
@ -96,7 +94,10 @@ typedef enum combatmagic {
|
||||||
} combatmagic_t;
|
} combatmagic_t;
|
||||||
|
|
||||||
/* globals */
|
/* globals */
|
||||||
|
bool battledebug = false;
|
||||||
|
|
||||||
static int obs_count = 0;
|
static int obs_count = 0;
|
||||||
|
static FILE *bdebug;
|
||||||
|
|
||||||
#define MINSPELLRANGE 1
|
#define MINSPELLRANGE 1
|
||||||
#define MAXSPELLRANGE 7
|
#define MAXSPELLRANGE 7
|
||||||
|
@ -303,11 +304,11 @@ static int dead_fighters(const fighter * df)
|
||||||
}
|
}
|
||||||
|
|
||||||
fighter *select_corpse(battle * b, fighter * af)
|
fighter *select_corpse(battle * b, fighter * af)
|
||||||
/* Wählt eine Leiche aus, der af hilft. casualties ist die Anzahl der
|
/* W<EFBFBD>hlt eine Leiche aus, der af hilft. casualties ist die Anzahl der
|
||||||
* Toten auf allen Seiten (im Array). Wenn af == NULL, wird die
|
* Toten auf allen Seiten (im Array). Wenn af == NULL, wird die
|
||||||
* Parteizugehörigkeit ignoriert, und irgendeine Leiche genommen.
|
* Parteizugeh<EFBFBD>rigkeit ignoriert, und irgendeine Leiche genommen.
|
||||||
*
|
*
|
||||||
* Untote werden nicht ausgewählt (casualties, not dead) */
|
* Untote werden nicht ausgew<EFBFBD>hlt (casualties, not dead) */
|
||||||
{
|
{
|
||||||
int si, maxcasualties = 0;
|
int si, maxcasualties = 0;
|
||||||
fighter *df;
|
fighter *df;
|
||||||
|
@ -323,7 +324,7 @@ fighter *select_corpse(battle * b, fighter * af)
|
||||||
side *s;
|
side *s;
|
||||||
for (s = b->sides; s != b->sides + b->nsides; ++s) {
|
for (s = b->sides; s != b->sides + b->nsides; ++s) {
|
||||||
for (df = s->fighters; df; df = df->next) {
|
for (df = s->fighters; df; df = df->next) {
|
||||||
/* Geflohene haben auch 0 hp, dürfen hier aber nicht ausgewählt
|
/* Geflohene haben auch 0 hp, d<EFBFBD>rfen hier aber nicht ausgew<65>hlt
|
||||||
* werden! */
|
* werden! */
|
||||||
int dead = dead_fighters(df);
|
int dead = dead_fighters(df);
|
||||||
if (!playerrace(u_race(df->unit)))
|
if (!playerrace(u_race(df->unit)))
|
||||||
|
@ -617,7 +618,7 @@ weapon_skill(const weapon_type * wtype, const unit * u, bool attacking)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* der rassen-defaultwert kann höher sein als der Talentwert von
|
/* der rassen-defaultwert kann h<EFBFBD>her sein als der Talentwert von
|
||||||
* waffenloser kampf */
|
* waffenloser kampf */
|
||||||
if (attacking) {
|
if (attacking) {
|
||||||
if (skill < u_race(u)->at_default)
|
if (skill < u_race(u)->at_default)
|
||||||
|
@ -705,7 +706,7 @@ static int CavalryBonus(const unit * u, troop enemy, int type)
|
||||||
static int
|
static int
|
||||||
weapon_effskill(troop t, troop enemy, const weapon * w, bool attacking,
|
weapon_effskill(troop t, troop enemy, const weapon * w, bool attacking,
|
||||||
bool missile)
|
bool missile)
|
||||||
/* effektiver Waffenskill während des Kampfes */
|
/* effektiver Waffenskill w<EFBFBD>hrend des Kampfes */
|
||||||
{
|
{
|
||||||
/* In dieser Runde alle die Modifier berechnen, die fig durch die
|
/* In dieser Runde alle die Modifier berechnen, die fig durch die
|
||||||
* Waffen bekommt. */
|
* Waffen bekommt. */
|
||||||
|
@ -770,16 +771,16 @@ bool missile)
|
||||||
|
|
||||||
if (t.index < tf->elvenhorses) {
|
if (t.index < tf->elvenhorses) {
|
||||||
/* Elfenpferde: Helfen dem Reiter, egal ob und welche Waffe. Das ist
|
/* Elfenpferde: Helfen dem Reiter, egal ob und welche Waffe. Das ist
|
||||||
* eleganter, und vor allem einfacher, sonst muß man noch ein
|
* eleganter, und vor allem einfacher, sonst mu<EFBFBD> man noch ein
|
||||||
* WMF_ELVENHORSE einbauen. */
|
* WMF_ELVENHORSE einbauen. */
|
||||||
skill += 2;
|
skill += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skill > 0 && !attacking && missile) {
|
if (skill > 0 && !attacking && missile) {
|
||||||
/*
|
/*
|
||||||
* Wenn ich verteidige, und nicht direkt meinem Feind gegenüberstehe,
|
* Wenn ich verteidige, und nicht direkt meinem Feind gegen<EFBFBD>berstehe,
|
||||||
* halbiert sich mein Skill: (z.B. gegen Fernkämpfer. Nahkämpfer
|
* halbiert sich mein Skill: (z.B. gegen Fernk<EFBFBD>mpfer. Nahk<EFBFBD>mpfer
|
||||||
* können mich eh nicht treffen)
|
* k<EFBFBD>nnen mich eh nicht treffen)
|
||||||
*/
|
*/
|
||||||
skill /= 2;
|
skill /= 2;
|
||||||
}
|
}
|
||||||
|
@ -815,9 +816,9 @@ static const armor_type *select_armor(troop t, bool shield)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hier ist zu beachten, ob und wie sich Zauber und Artefakte, die
|
/* Hier ist zu beachten, ob und wie sich Zauber und Artefakte, die
|
||||||
* Rüstungschutz geben, addieren.
|
* R<EFBFBD>stungschutz geben, addieren.
|
||||||
* - Artefakt "trollbelt" gibt Rüstung +1
|
* - Artefakt "trollbelt" gibt R<EFBFBD>stung +1
|
||||||
* - Zauber Rindenhaut gibt Rüstung +3
|
* - Zauber Rindenhaut gibt R<EFBFBD>stung +3
|
||||||
*/
|
*/
|
||||||
static int trollbelts(const unit *u) {
|
static int trollbelts(const unit *u) {
|
||||||
const struct resource_type *belt = rt_find("trollbelt");
|
const struct resource_type *belt = rt_find("trollbelt");
|
||||||
|
@ -835,7 +836,7 @@ int select_magicarmor(troop t)
|
||||||
return ma;
|
return ma;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sind side ds und Magier des meffect verbündet, dann return 1*/
|
/* Sind side ds und Magier des meffect verb<EFBFBD>ndet, dann return 1*/
|
||||||
bool meffect_protection(battle * b, meffect * s, side * ds)
|
bool meffect_protection(battle * b, meffect * s, side * ds)
|
||||||
{
|
{
|
||||||
if (!s->magician->alive)
|
if (!s->magician->alive)
|
||||||
|
@ -871,7 +872,7 @@ void rmfighter(fighter * df, int i)
|
||||||
assert(df->alive >= i);
|
assert(df->alive >= i);
|
||||||
assert(df->alive <= df->unit->number);
|
assert(df->alive <= df->unit->number);
|
||||||
|
|
||||||
/* erst ziehen wir die Anzahl der Personen von den Kämpfern in der
|
/* erst ziehen wir die Anzahl der Personen von den K<EFBFBD>mpfern in der
|
||||||
* Schlacht, dann von denen auf dieser Seite ab*/
|
* Schlacht, dann von denen auf dieser Seite ab*/
|
||||||
df->side->alive -= i;
|
df->side->alive -= i;
|
||||||
df->side->battle->alive -= i;
|
df->side->battle->alive -= i;
|
||||||
|
@ -1091,15 +1092,15 @@ int calculate_armor(troop dt, const weapon_type *dwtype, const weapon_type *awty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* natürliche Rüstung */
|
/* nat<EFBFBD>rliche R<>stung */
|
||||||
an = natural_armor(du);
|
an = natural_armor(du);
|
||||||
|
|
||||||
/* magische Rüstung durch Artefakte oder Sprüche */
|
/* magische R<EFBFBD>stung durch Artefakte oder Spr<70>che */
|
||||||
/* Momentan nur Trollgürtel und Werwolf-Eigenschaft */
|
/* Momentan nur Trollg<EFBFBD>rtel und Werwolf-Eigenschaft */
|
||||||
am = select_magicarmor(dt);
|
am = select_magicarmor(dt);
|
||||||
|
|
||||||
if (rule_nat_armor == 0) {
|
if (rule_nat_armor == 0) {
|
||||||
/* natürliche Rüstung ist halbkumulativ */
|
/* nat<EFBFBD>rliche R<>stung ist halbkumulativ */
|
||||||
if (ar > 0) {
|
if (ar > 0) {
|
||||||
ar += an / 2;
|
ar += an / 2;
|
||||||
}
|
}
|
||||||
|
@ -1133,7 +1134,7 @@ int calculate_armor(troop dt, const weapon_type *dwtype, const weapon_type *awty
|
||||||
res *= (1 - dwtype->magres);
|
res *= (1 - dwtype->magres);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* gegen Magie wirkt nur natürliche und magische Rüstung */
|
/* gegen Magie wirkt nur nat<EFBFBD>rliche und magische R<>stung */
|
||||||
ar = an + am;
|
ar = an + am;
|
||||||
*magres = res > 0 ? res : 0;
|
*magres = res > 0 ? res : 0;
|
||||||
}
|
}
|
||||||
|
@ -1273,7 +1274,7 @@ terminate(troop dt, troop at, int type, const char *damage, bool missile)
|
||||||
rda -= hp;
|
rda -= hp;
|
||||||
me->duration -= hp;
|
me->duration -= hp;
|
||||||
}
|
}
|
||||||
/* gibt Rüstung +effect für duration Treffer */
|
/* gibt R<EFBFBD>stung +effect f<>r duration Treffer */
|
||||||
if (me->typ == SHIELD_ARMOR) {
|
if (me->typ == SHIELD_ARMOR) {
|
||||||
rda = _max(rda - me->effect, 0);
|
rda = _max(rda - me->effect, 0);
|
||||||
me->duration--;
|
me->duration--;
|
||||||
|
@ -1296,7 +1297,7 @@ terminate(troop dt, troop at, int type, const char *damage, bool missile)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (df->person[dt.index].hp > 0) { /* Hat überlebt */
|
if (df->person[dt.index].hp > 0) { /* Hat <EFBFBD>berlebt */
|
||||||
if (bdebug) {
|
if (bdebug) {
|
||||||
fprintf(bdebug, "Damage %d, armor %d: %d -> %d HP\n",
|
fprintf(bdebug, "Damage %d, armor %d: %d -> %d HP\n",
|
||||||
da, ar, df->person[dt.index].hp + rda, df->person[dt.index].hp);
|
da, ar, df->person[dt.index].hp + rda, df->person[dt.index].hp);
|
||||||
|
@ -1702,7 +1703,7 @@ void do_combatmagic(battle * b, combatmagic_t was)
|
||||||
unit *mage = fig->unit;
|
unit *mage = fig->unit;
|
||||||
|
|
||||||
if (fig->alive <= 0)
|
if (fig->alive <= 0)
|
||||||
continue; /* fighter kann im Kampf getötet worden sein */
|
continue; /* fighter kann im Kampf get<EFBFBD>tet worden sein */
|
||||||
|
|
||||||
level = effskill(mage, SK_MAGIC, r);
|
level = effskill(mage, SK_MAGIC, r);
|
||||||
if (level > 0) {
|
if (level > 0) {
|
||||||
|
@ -1811,12 +1812,12 @@ static void do_combatspell(troop at)
|
||||||
|
|
||||||
sp = get_combatspell(caster, 1);
|
sp = get_combatspell(caster, 1);
|
||||||
if (sp == NULL) {
|
if (sp == NULL) {
|
||||||
fi->magic = 0; /* Hat keinen Kampfzauber, kämpft nichtmagisch weiter */
|
fi->magic = 0; /* Hat keinen Kampfzauber, k<EFBFBD>mpft nichtmagisch weiter */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ord = create_order(K_CAST, lang, "'%s'", spell_name(sp, lang));
|
ord = create_order(K_CAST, lang, "'%s'", spell_name(sp, lang));
|
||||||
if (!cancast(caster, sp, 1, 1, ord)) {
|
if (!cancast(caster, sp, 1, 1, ord)) {
|
||||||
fi->magic = 0; /* Kann nicht mehr Zaubern, kämpft nichtmagisch weiter */
|
fi->magic = 0; /* Kann nicht mehr Zaubern, k<EFBFBD>mpft nichtmagisch weiter */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1840,7 +1841,7 @@ static void do_combatspell(troop at)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Antimagie die Fehlschlag erhöht */
|
/* Antimagie die Fehlschlag erh<EFBFBD>ht */
|
||||||
if (rng_int() % 100 < fumblechance) {
|
if (rng_int() % 100 < fumblechance) {
|
||||||
report_failed_spell(b, caster, sp);
|
report_failed_spell(b, caster, sp);
|
||||||
pay_spell(caster, sp, level, 1);
|
pay_spell(caster, sp, level, 1);
|
||||||
|
@ -1864,7 +1865,7 @@ static void do_combatspell(troop at)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sonderattacken: Monster patzern nicht und zahlen auch keine
|
/* Sonderattacken: Monster patzern nicht und zahlen auch keine
|
||||||
* Spruchkosten. Da die Spruchstärke direkt durch den Level bestimmt
|
* Spruchkosten. Da die Spruchst<EFBFBD>rke direkt durch den Level bestimmt
|
||||||
* wird, wirkt auch keine Antimagie (wird sonst in spellpower
|
* wird, wirkt auch keine Antimagie (wird sonst in spellpower
|
||||||
* gemacht) */
|
* gemacht) */
|
||||||
|
|
||||||
|
@ -1916,7 +1917,7 @@ int skilldiff(troop at, troop dt, int dist)
|
||||||
if (strongwall_ct) {
|
if (strongwall_ct) {
|
||||||
curse *c = get_curse(df->building->attribs, strongwall_ct);
|
curse *c = get_curse(df->building->attribs, strongwall_ct);
|
||||||
if (curse_active(c)) {
|
if (curse_active(c)) {
|
||||||
/* wirkt auf alle Gebäude */
|
/* wirkt auf alle Geb<EFBFBD>ude */
|
||||||
skdiff -= curse_geteffect_int(c);
|
skdiff -= curse_geteffect_int(c);
|
||||||
is_protected = 2;
|
is_protected = 2;
|
||||||
}
|
}
|
||||||
|
@ -2021,7 +2022,7 @@ int hits(troop at, troop dt, weapon * awp)
|
||||||
}
|
}
|
||||||
|
|
||||||
skdiff = skilldiff(at, dt, dist);
|
skdiff = skilldiff(at, dt, dist);
|
||||||
/* Verteidiger bekommt eine Rüstung */
|
/* Verteidiger bekommt eine R<EFBFBD>stung */
|
||||||
armor = select_armor(dt, true);
|
armor = select_armor(dt, true);
|
||||||
if (dwp == NULL || (dwp->type->flags & WTF_USESHIELD)) {
|
if (dwp == NULL || (dwp->type->flags & WTF_USESHIELD)) {
|
||||||
shield = select_armor(dt, false);
|
shield = select_armor(dt, false);
|
||||||
|
@ -2065,7 +2066,7 @@ void damage_building(battle * b, building * bldg, int damage_abs)
|
||||||
{
|
{
|
||||||
bldg->size = _max(1, bldg->size - damage_abs);
|
bldg->size = _max(1, bldg->size - damage_abs);
|
||||||
|
|
||||||
/* Wenn Burg, dann gucken, ob die Leute alle noch in das Gebäude passen. */
|
/* Wenn Burg, dann gucken, ob die Leute alle noch in das Geb<EFBFBD>ude passen. */
|
||||||
|
|
||||||
if (bldg->type->protection) {
|
if (bldg->type->protection) {
|
||||||
side *s;
|
side *s;
|
||||||
|
@ -2123,7 +2124,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
|
||||||
switch (a->type) {
|
switch (a->type) {
|
||||||
case AT_COMBATSPELL:
|
case AT_COMBATSPELL:
|
||||||
/* Magier versuchen immer erstmal zu zaubern, erst wenn das
|
/* Magier versuchen immer erstmal zu zaubern, erst wenn das
|
||||||
* fehlschlägt, wird af->magic == 0 und der Magier kämpft
|
* fehlschl<EFBFBD>gt, wird af->magic == 0 und der Magier k<EFBFBD>mpft
|
||||||
* konventionell weiter */
|
* konventionell weiter */
|
||||||
if (numattack == 0 && af->magic > 0) {
|
if (numattack == 0 && af->magic > 0) {
|
||||||
/* wenn der magier in die potenzielle Reichweite von Attacken des
|
/* wenn der magier in die potenzielle Reichweite von Attacken des
|
||||||
|
@ -2135,7 +2136,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AT_STANDARD: /* Waffen, mag. Gegenstände, Kampfzauber */
|
case AT_STANDARD: /* Waffen, mag. Gegenst<EFBFBD>nde, Kampfzauber */
|
||||||
if (numattack > 0 || af->magic <= 0) {
|
if (numattack > 0 || af->magic <= 0) {
|
||||||
weapon *wp = ta.fighter->person[ta.index].missile;
|
weapon *wp = ta.fighter->person[ta.index].missile;
|
||||||
int melee =
|
int melee =
|
||||||
|
@ -2152,7 +2153,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
|
||||||
bool standard_attack = true;
|
bool standard_attack = true;
|
||||||
bool reload = false;
|
bool reload = false;
|
||||||
/* spezialattacken der waffe nur, wenn erste attacke in der runde.
|
/* spezialattacken der waffe nur, wenn erste attacke in der runde.
|
||||||
* sonst helden mit feuerschwertern zu mächtig */
|
* sonst helden mit feuerschwertern zu m<EFBFBD>chtig */
|
||||||
if (numattack == 0 && wp && wp->type->attack) {
|
if (numattack == 0 && wp && wp->type->attack) {
|
||||||
int dead = 0;
|
int dead = 0;
|
||||||
standard_attack = wp->type->attack(&ta, wp->type, &dead);
|
standard_attack = wp->type->attack(&ta, wp->type, &dead);
|
||||||
|
@ -2200,7 +2201,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AT_SPELL: /* Extra-Sprüche. Kampfzauber in AT_COMBATSPELL! */
|
case AT_SPELL: /* Extra-Spr<EFBFBD>che. Kampfzauber in AT_COMBATSPELL! */
|
||||||
do_extra_spell(ta, a);
|
do_extra_spell(ta, a);
|
||||||
break;
|
break;
|
||||||
case AT_NATURAL:
|
case AT_NATURAL:
|
||||||
|
@ -2285,14 +2286,14 @@ void do_attack(fighter * af)
|
||||||
|
|
||||||
assert(au && au->number);
|
assert(au && au->number);
|
||||||
/* Da das Zuschlagen auf Einheiten und nicht auf den einzelnen
|
/* Da das Zuschlagen auf Einheiten und nicht auf den einzelnen
|
||||||
* Kämpfern beruht, darf die Reihenfolge und Größe der Einheit keine
|
* K<EFBFBD>mpfern beruht, darf die Reihenfolge und Gr<EFBFBD><EFBFBD>e der Einheit keine
|
||||||
* Rolle spielen, Das tut sie nur dann, wenn jeder, der am Anfang der
|
* Rolle spielen, Das tut sie nur dann, wenn jeder, der am Anfang der
|
||||||
* Runde lebte, auch zuschlagen darf. Ansonsten ist der, der zufällig
|
* Runde lebte, auch zuschlagen darf. Ansonsten ist der, der zuf<EFBFBD>llig
|
||||||
* mit einer großen Einheit zuerst drankommt, extrem bevorteilt. */
|
* mit einer gro<EFBFBD>en Einheit zuerst drankommt, extrem bevorteilt. */
|
||||||
ta.index = af->fighting;
|
ta.index = af->fighting;
|
||||||
|
|
||||||
while (ta.index--) {
|
while (ta.index--) {
|
||||||
/* Wir suchen eine beliebige Feind-Einheit aus. An der können
|
/* Wir suchen eine beliebige Feind-Einheit aus. An der k<EFBFBD>nnen
|
||||||
* wir feststellen, ob noch jemand da ist. */
|
* wir feststellen, ob noch jemand da ist. */
|
||||||
int apr, attacks = attacks_per_round(ta);
|
int apr, attacks = attacks_per_round(ta);
|
||||||
if (!count_enemies(b, af, FIGHT_ROW, LAST_ROW, SELECT_FIND))
|
if (!count_enemies(b, af, FIGHT_ROW, LAST_ROW, SELECT_FIND))
|
||||||
|
@ -2317,7 +2318,7 @@ void do_attack(fighter * af)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Der letzte Katapultschütze setzt die
|
/* Der letzte Katapultsch<EFBFBD>tze setzt die
|
||||||
* Ladezeit neu und generiert die Meldung. */
|
* Ladezeit neu und generiert die Meldung. */
|
||||||
if (af->catmsg >= 0) {
|
if (af->catmsg >= 0) {
|
||||||
struct message *m =
|
struct message *m =
|
||||||
|
@ -2391,7 +2392,7 @@ double fleechance(unit * u)
|
||||||
{
|
{
|
||||||
double c = 0.20; /* Fluchtwahrscheinlichkeit in % */
|
double c = 0.20; /* Fluchtwahrscheinlichkeit in % */
|
||||||
attrib *a = a_find(u->attribs, &at_fleechance);
|
attrib *a = a_find(u->attribs, &at_fleechance);
|
||||||
/* Einheit u versucht, dem Getümmel zu entkommen */
|
/* Einheit u versucht, dem Get<EFBFBD>mmel zu entkommen */
|
||||||
|
|
||||||
c += (effskill(u, SK_STEALTH, 0) * 0.05);
|
c += (effskill(u, SK_STEALTH, 0) * 0.05);
|
||||||
c += horse_fleeing_bonus(u);
|
c += horse_fleeing_bonus(u);
|
||||||
|
@ -2679,7 +2680,7 @@ static void aftermath(battle * b)
|
||||||
for (s = b->sides; s != b->sides + b->nsides; ++s) {
|
for (s = b->sides; s != b->sides + b->nsides; ++s) {
|
||||||
int snumber = 0;
|
int snumber = 0;
|
||||||
fighter *df;
|
fighter *df;
|
||||||
bool relevant = false; /* Kampf relevant für diese Partei? */
|
bool relevant = false; /* Kampf relevant f<EFBFBD>r diese Partei? */
|
||||||
if (!fval(s, SIDE_HASGUARDS)) {
|
if (!fval(s, SIDE_HASGUARDS)) {
|
||||||
relevant = true;
|
relevant = true;
|
||||||
}
|
}
|
||||||
|
@ -2719,7 +2720,7 @@ static void aftermath(battle * b)
|
||||||
/* Report the casualties */
|
/* Report the casualties */
|
||||||
reportcasualties(b, df, dead);
|
reportcasualties(b, df, dead);
|
||||||
|
|
||||||
/* Zuerst dürfen die Feinde plündern, die mitgenommenen Items
|
/* Zuerst d<EFBFBD>rfen die Feinde pl<70>ndern, die mitgenommenen Items
|
||||||
* stehen in fig->run.items. Dann werden die Fliehenden auf
|
* stehen in fig->run.items. Dann werden die Fliehenden auf
|
||||||
* die leere (tote) alte Einheit gemapt */
|
* die leere (tote) alte Einheit gemapt */
|
||||||
if (!fval(df, FIG_NOLOOT)) {
|
if (!fval(df, FIG_NOLOOT)) {
|
||||||
|
@ -2754,7 +2755,7 @@ static void aftermath(battle * b)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (df->alive == 0) {
|
if (df->alive == 0) {
|
||||||
/* alle sind tot, niemand geflohen. Einheit auflösen */
|
/* alle sind tot, niemand geflohen. Einheit aufl<EFBFBD>sen */
|
||||||
df->run.number = 0;
|
df->run.number = 0;
|
||||||
df->run.hp = 0;
|
df->run.hp = 0;
|
||||||
|
|
||||||
|
@ -2816,7 +2817,7 @@ static void aftermath(battle * b)
|
||||||
|
|
||||||
/* Wir benutzen drifted, um uns zu merken, ob ein Schiff
|
/* Wir benutzen drifted, um uns zu merken, ob ein Schiff
|
||||||
* schonmal Schaden genommen hat. (moved und drifted
|
* schonmal Schaden genommen hat. (moved und drifted
|
||||||
* sollten in flags überführt werden */
|
* sollten in flags <EFBFBD>berf<EFBFBD>hrt werden */
|
||||||
|
|
||||||
for (s = b->sides; s != b->sides + b->nsides; ++s) {
|
for (s = b->sides; s != b->sides + b->nsides; ++s) {
|
||||||
fighter *df;
|
fighter *df;
|
||||||
|
@ -2837,7 +2838,7 @@ static void aftermath(battle * b)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wenn sich die Einheit auf einem Schiff befindet, wird
|
/* Wenn sich die Einheit auf einem Schiff befindet, wird
|
||||||
* dieses Schiff beschädigt. Andernfalls ein Schiff, welches
|
* dieses Schiff besch<EFBFBD>digt. Andernfalls ein Schiff, welches
|
||||||
* evt. zuvor verlassen wurde. */
|
* evt. zuvor verlassen wurde. */
|
||||||
if (ships_damaged) {
|
if (ships_damaged) {
|
||||||
if (du->ship)
|
if (du->ship)
|
||||||
|
@ -3210,8 +3211,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
|
||||||
else if (!stealthfaction) {
|
else if (!stealthfaction) {
|
||||||
s1->stealthfaction = NULL;
|
s1->stealthfaction = NULL;
|
||||||
}
|
}
|
||||||
/* Zu diesem Zeitpunkt ist attacked noch 0, da die Einheit für noch
|
/* Zu diesem Zeitpunkt ist attacked noch 0, da die Einheit f<EFBFBD>r noch
|
||||||
* keinen Kampf ausgewählt wurde (sonst würde ein fighter existieren) */
|
* keinen Kampf ausgew<EFBFBD>hlt wurde (sonst w<EFBFBD>rde ein fighter existieren) */
|
||||||
}
|
}
|
||||||
fig = (struct fighter*)calloc(1, sizeof(struct fighter));
|
fig = (struct fighter*)calloc(1, sizeof(struct fighter));
|
||||||
|
|
||||||
|
@ -3219,8 +3220,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
|
||||||
s1->fighters = fig;
|
s1->fighters = fig;
|
||||||
|
|
||||||
fig->unit = u;
|
fig->unit = u;
|
||||||
/* In einer Burg muß man a) nicht Angreifer sein, und b) drin sein, und
|
/* In einer Burg mu<EFBFBD> man a) nicht Angreifer sein, und b) drin sein, und
|
||||||
* c) noch Platz finden. d) menschanähnlich sein */
|
* c) noch Platz finden. d) menschan<EFBFBD>hnlich sein */
|
||||||
if (attack) {
|
if (attack) {
|
||||||
set_attacker(fig);
|
set_attacker(fig);
|
||||||
}
|
}
|
||||||
|
@ -3246,7 +3247,7 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
|
||||||
assert(h);
|
assert(h);
|
||||||
rest = u->hp % u->number;
|
rest = u->hp % u->number;
|
||||||
|
|
||||||
/* Effekte von Sprüchen */
|
/* Effekte von Spr<EFBFBD>chen */
|
||||||
|
|
||||||
if (u->attribs) {
|
if (u->attribs) {
|
||||||
const curse_type *speed_ct;
|
const curse_type *speed_ct;
|
||||||
|
@ -3267,7 +3268,7 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
|
||||||
/* Effekte von Artefakten */
|
/* Effekte von Artefakten */
|
||||||
strongmen = _min(fig->unit->number, trollbelts(u));
|
strongmen = _min(fig->unit->number, trollbelts(u));
|
||||||
|
|
||||||
/* Hitpoints, Attack- und Defence-Boni für alle Personen */
|
/* Hitpoints, Attack- und Defence-Boni f<EFBFBD>r alle Personen */
|
||||||
for (i = 0; i < fig->alive; i++) {
|
for (i = 0; i < fig->alive; i++) {
|
||||||
assert(i < fig->unit->number);
|
assert(i < fig->unit->number);
|
||||||
fig->person[i].hp = h;
|
fig->person[i].hp = h;
|
||||||
|
@ -3288,8 +3289,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Für alle Waffengattungen wird bestimmt, wie viele der Personen mit
|
/* F<EFBFBD>r alle Waffengattungen wird bestimmt, wie viele der Personen mit
|
||||||
* ihr kämpfen könnten, und was ihr Wert darin ist. */
|
* ihr k<EFBFBD>mpfen k<EFBFBD>nnten, und was ihr Wert darin ist. */
|
||||||
if (u_race(u)->battle_flags & BF_EQUIPMENT) {
|
if (u_race(u)->battle_flags & BF_EQUIPMENT) {
|
||||||
int oi = 0, di = 0, w = 0;
|
int oi = 0, di = 0, w = 0;
|
||||||
for (itm = u->items; itm && w != WMAX; itm = itm->next) {
|
for (itm = u->items; itm && w != WMAX; itm = itm->next) {
|
||||||
|
@ -3407,12 +3408,12 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Jetzt muß noch geschaut werden, wo die Einheit die jeweils besten
|
/* Jetzt mu<EFBFBD> noch geschaut werden, wo die Einheit die jeweils besten
|
||||||
* Werte hat, das kommt aber erst irgendwo später. Ich entscheide
|
* Werte hat, das kommt aber erst irgendwo sp<EFBFBD>ter. Ich entscheide
|
||||||
* wärend des Kampfes, welche ich nehme, je nach Gegner. Deswegen auch
|
* w<EFBFBD>rend des Kampfes, welche ich nehme, je nach Gegner. Deswegen auch
|
||||||
* keine addierten boni. */
|
* keine addierten boni. */
|
||||||
|
|
||||||
/* Zuerst mal die Spezialbehandlung gewisser Sonderfälle. */
|
/* Zuerst mal die Spezialbehandlung gewisser Sonderf<EFBFBD>lle. */
|
||||||
fig->magic = effskill(u, SK_MAGIC, 0);
|
fig->magic = effskill(u, SK_MAGIC, 0);
|
||||||
|
|
||||||
if (fig->horses) {
|
if (fig->horses) {
|
||||||
|
@ -3577,7 +3578,7 @@ battle *make_battle(region * r)
|
||||||
|
|
||||||
b->region = r;
|
b->region = r;
|
||||||
b->plane = getplane(r);
|
b->plane = getplane(r);
|
||||||
/* Finde alle Parteien, die den Kampf beobachten können: */
|
/* Finde alle Parteien, die den Kampf beobachten k<EFBFBD>nnen: */
|
||||||
for (u = r->units; u; u = u->next) {
|
for (u = r->units; u; u = u->next) {
|
||||||
if (u->number > 0) {
|
if (u->number > 0) {
|
||||||
if (!fval(u->faction, FFL_MARK)) {
|
if (!fval(u->faction, FFL_MARK)) {
|
||||||
|
@ -3766,18 +3767,18 @@ static void join_allies(battle * b)
|
||||||
|
|
||||||
for (s = b->sides; s != s_end; ++s) {
|
for (s = b->sides; s != s_end; ++s) {
|
||||||
side *se;
|
side *se;
|
||||||
/* Wenn alle attackierten noch FFL_NOAID haben, dann kämpfe nicht mit. */
|
/* Wenn alle attackierten noch FFL_NOAID haben, dann k<EFBFBD>mpfe nicht mit. */
|
||||||
if (fval(s->faction, FFL_NOAID))
|
if (fval(s->faction, FFL_NOAID))
|
||||||
continue;
|
continue;
|
||||||
if (s->faction != f) {
|
if (s->faction != f) {
|
||||||
/* Wenn wir attackiert haben, kommt niemand mehr hinzu: */
|
/* Wenn wir attackiert haben, kommt niemand mehr hinzu: */
|
||||||
if (s->bf->attacker)
|
if (s->bf->attacker)
|
||||||
continue;
|
continue;
|
||||||
/* alliiert müssen wir schon sein, sonst ist's eh egal : */
|
/* alliiert m<EFBFBD>ssen wir schon sein, sonst ist's eh egal : */
|
||||||
if (!alliedunit(u, s->faction, HELP_FIGHT))
|
if (!alliedunit(u, s->faction, HELP_FIGHT))
|
||||||
continue;
|
continue;
|
||||||
/* wenn die partei verborgen ist, oder gar eine andere
|
/* wenn die partei verborgen ist, oder gar eine andere
|
||||||
* vorgespiegelt wird, und er sich uns gegenüber nicht zu
|
* vorgespiegelt wird, und er sich uns gegen<EFBFBD>ber nicht zu
|
||||||
* erkennen gibt, helfen wir ihm nicht */
|
* erkennen gibt, helfen wir ihm nicht */
|
||||||
if (s->stealthfaction) {
|
if (s->stealthfaction) {
|
||||||
if (!allysfm(s, u->faction, HELP_FSTEALTH)) {
|
if (!allysfm(s, u->faction, HELP_FSTEALTH)) {
|
||||||
|
@ -3785,7 +3786,7 @@ static void join_allies(battle * b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* einen alliierten angreifen dürfen sie nicht, es sei denn, der
|
/* einen alliierten angreifen d<EFBFBD>rfen sie nicht, es sei denn, der
|
||||||
* ist mit einem alliierten verfeindet, der nicht attackiert
|
* ist mit einem alliierten verfeindet, der nicht attackiert
|
||||||
* hat: */
|
* hat: */
|
||||||
for (se = b->sides; se != s_end; ++se) {
|
for (se = b->sides; se != s_end; ++se) {
|
||||||
|
@ -3799,7 +3800,7 @@ static void join_allies(battle * b)
|
||||||
}
|
}
|
||||||
if (se == s_end)
|
if (se == s_end)
|
||||||
continue;
|
continue;
|
||||||
/* Wenn die Einheit belagert ist, muß auch einer der Alliierten belagert sein: */
|
/* Wenn die Einheit belagert ist, mu<EFBFBD> auch einer der Alliierten belagert sein: */
|
||||||
if (besieged(u)) {
|
if (besieged(u)) {
|
||||||
fighter *ally;
|
fighter *ally;
|
||||||
for (ally = s->fighters; ally; ally = ally->next) {
|
for (ally = s->fighters; ally; ally = ally->next) {
|
||||||
|
@ -3810,7 +3811,7 @@ static void join_allies(battle * b)
|
||||||
if (ally == NULL)
|
if (ally == NULL)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* keine Einwände, also soll er mitmachen: */
|
/* keine Einw<EFBFBD>nde, also soll er mitmachen: */
|
||||||
if (c == NULL) {
|
if (c == NULL) {
|
||||||
if (join_battle(b, u, false, &c)) {
|
if (join_battle(b, u, false, &c)) {
|
||||||
if (battledebug) {
|
if (battledebug) {
|
||||||
|
@ -3926,7 +3927,7 @@ static bool start_battle(region * r, battle ** bp)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ist ein Flüchtling aus einem andern Kampf */
|
/* ist ein Fl<EFBFBD>chtling aus einem andern Kampf */
|
||||||
if (fval(u, UFL_LONGACTION))
|
if (fval(u, UFL_LONGACTION))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -3947,7 +3948,7 @@ static bool start_battle(region * r, battle ** bp)
|
||||||
cmistake(u, ord, 234, MSG_BATTLE);
|
cmistake(u, ord, 234, MSG_BATTLE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Fehler: "Das Schiff muß erst verlassen werden" */
|
/* Fehler: "Das Schiff mu<EFBFBD> erst verlassen werden" */
|
||||||
cmistake(u, ord, 19, MSG_BATTLE);
|
cmistake(u, ord, 19, MSG_BATTLE);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
@ -4032,8 +4033,8 @@ static bool start_battle(region * r, battle ** bp)
|
||||||
freset(u2->faction, FFL_NOAID);
|
freset(u2->faction, FFL_NOAID);
|
||||||
|
|
||||||
if (c1 != NULL && c2 != NULL) {
|
if (c1 != NULL && c2 != NULL) {
|
||||||
/* Merken, wer Angreifer ist, für die Rückzahlung der
|
/* Merken, wer Angreifer ist, f<EFBFBD>r die R<>ckzahlung der
|
||||||
* Präcombataura bei kurzem Kampf. */
|
* Pr<EFBFBD>combataura bei kurzem Kampf. */
|
||||||
c1->side->bf->attacker = true;
|
c1->side->bf->attacker = true;
|
||||||
|
|
||||||
if (set_enemy(c1->side, c2->side, true) && battledebug) {
|
if (set_enemy(c1->side, c2->side, true) && battledebug) {
|
||||||
|
@ -4066,7 +4067,7 @@ static void battle_attacks(battle * b)
|
||||||
&& get_tactics(s, NULL) == b->max_tactics)) {
|
&& get_tactics(s, NULL) == b->max_tactics)) {
|
||||||
for (fig = s->fighters; fig; fig = fig->next) {
|
for (fig = s->fighters; fig; fig = fig->next) {
|
||||||
|
|
||||||
/* ist in dieser Einheit noch jemand handlungsfähig? */
|
/* ist in dieser Einheit noch jemand handlungsf<EFBFBD>hig? */
|
||||||
if (fig->fighting <= 0)
|
if (fig->fighting <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -4110,7 +4111,7 @@ static void battle_flee(battle * b)
|
||||||
unit *u = fig->unit;
|
unit *u = fig->unit;
|
||||||
troop dt;
|
troop dt;
|
||||||
int runners = 0;
|
int runners = 0;
|
||||||
/* Flucht nicht bei mehr als 600 HP. Damit Wyrme tötbar bleiben. */
|
/* Flucht nicht bei mehr als 600 HP. Damit Wyrme t<EFBFBD>tbar bleiben. */
|
||||||
int runhp = _min(600, (int)(0.9 + unit_max_hp(u) * hpflee(u->status)));
|
int runhp = _min(600, (int)(0.9 + unit_max_hp(u) * hpflee(u->status)));
|
||||||
|
|
||||||
if (u->ship && fval(u->region->terrain, SEA_REGION)) {
|
if (u->ship && fval(u->region->terrain, SEA_REGION)) {
|
||||||
|
@ -4230,7 +4231,7 @@ void do_battle(region * r)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Bevor wir die alliierten hineinziehen, sollten wir schauen, *
|
/* Bevor wir die alliierten hineinziehen, sollten wir schauen, *
|
||||||
* Ob jemand fliehen kann. Dann erübrigt sich das ganze ja
|
* Ob jemand fliehen kann. Dann er<EFBFBD>brigt sich das ganze ja
|
||||||
* vielleicht schon. */
|
* vielleicht schon. */
|
||||||
print_header(b);
|
print_header(b);
|
||||||
if (!fighting) {
|
if (!fighting) {
|
||||||
|
@ -4279,8 +4280,8 @@ void do_battle(region * r)
|
||||||
if (rule_force_leave(FORCE_LEAVE_POSTCOMBAT)) {
|
if (rule_force_leave(FORCE_LEAVE_POSTCOMBAT)) {
|
||||||
force_leave(b->region, b);
|
force_leave(b->region, b);
|
||||||
}
|
}
|
||||||
/* Hier ist das Gefecht beendet, und wir können die
|
/* Hier ist das Gefecht beendet, und wir k<EFBFBD>nnen die
|
||||||
* Hilfsstrukturen * wieder löschen: */
|
* Hilfsstrukturen * wieder l<EFBFBD>schen: */
|
||||||
|
|
||||||
if (b) {
|
if (b) {
|
||||||
free_battle(b);
|
free_battle(b);
|
||||||
|
|
19
src/battle.h
19
src/battle.h
|
@ -30,7 +30,7 @@ extern "C" {
|
||||||
#define FS_HELP 2
|
#define FS_HELP 2
|
||||||
|
|
||||||
/***** Verteidigungslinien.
|
/***** Verteidigungslinien.
|
||||||
* Eressea hat 4 Verteidigungslinien. 1 ist vorn, 5. enthält Summen
|
* Eressea hat 4 Verteidigungslinien. 1 ist vorn, 5. enth<EFBFBD>lt Summen
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define NUMROWS 5
|
#define NUMROWS 5
|
||||||
|
@ -74,7 +74,7 @@ extern "C" {
|
||||||
struct fighter *fighters;
|
struct fighter *fighters;
|
||||||
int index; /* Eintrag der Fraktion in b->matrix/b->enemies */
|
int index; /* Eintrag der Fraktion in b->matrix/b->enemies */
|
||||||
int size[NUMROWS]; /* Anzahl Personen in Reihe X. 0 = Summe */
|
int size[NUMROWS]; /* Anzahl Personen in Reihe X. 0 = Summe */
|
||||||
int nonblockers[NUMROWS]; /* Anzahl nichtblockierender Kämpfer, z.B. Schattenritter. */
|
int nonblockers[NUMROWS]; /* Anzahl nichtblockierender K<EFBFBD>mpfer, z.B. Schattenritter. */
|
||||||
int alive; /* Die Partei hat den Kampf verlassen */
|
int alive; /* Die Partei hat den Kampf verlassen */
|
||||||
int removed; /* stoned */
|
int removed; /* stoned */
|
||||||
int flee;
|
int flee;
|
||||||
|
@ -131,7 +131,7 @@ extern "C" {
|
||||||
|
|
||||||
/*** fighter::person::flags ***/
|
/*** fighter::person::flags ***/
|
||||||
#define FL_TIRED 1
|
#define FL_TIRED 1
|
||||||
#define FL_DAZZLED 2 /* durch Untote oder Dämonen eingeschüchtert */
|
#define FL_DAZZLED 2 /* durch Untote oder D<EFBFBD>monen eingesch<63>chtert */
|
||||||
#define FL_PANICED 4
|
#define FL_PANICED 4
|
||||||
#define FL_COURAGE 8 /* Helden fliehen nie */
|
#define FL_COURAGE 8 /* Helden fliehen nie */
|
||||||
#define FL_SLEEPING 16
|
#define FL_SLEEPING 16
|
||||||
|
@ -156,17 +156,17 @@ extern "C" {
|
||||||
typedef struct fighter {
|
typedef struct fighter {
|
||||||
struct fighter *next;
|
struct fighter *next;
|
||||||
struct side *side;
|
struct side *side;
|
||||||
struct unit *unit; /* Die Einheit, die hier kämpft */
|
struct unit *unit; /* Die Einheit, die hier k<EFBFBD>mpft */
|
||||||
struct building *building; /* Gebäude, in dem die Einheit evtl. steht */
|
struct building *building; /* Geb<EFBFBD>ude, in dem die Einheit evtl. steht */
|
||||||
status_t status; /* Kampfstatus */
|
status_t status; /* Kampfstatus */
|
||||||
struct weapon *weapons;
|
struct weapon *weapons;
|
||||||
struct armor *armors; /* Anzahl Rüstungen jeden Typs */
|
struct armor *armors; /* Anzahl R<EFBFBD>stungen jeden Typs */
|
||||||
int alive; /* Anzahl der noch nicht Toten in der Einheit */
|
int alive; /* Anzahl der noch nicht Toten in der Einheit */
|
||||||
int fighting; /* Anzahl der Kämpfer in der aktuellen Runde */
|
int fighting; /* Anzahl der K<EFBFBD>mpfer in der aktuellen Runde */
|
||||||
int removed; /* Anzahl Kaempfer, die nicht tot sind, aber
|
int removed; /* Anzahl Kaempfer, die nicht tot sind, aber
|
||||||
aus dem Kampf raus sind (zB weil sie
|
aus dem Kampf raus sind (zB weil sie
|
||||||
versteinert wurden). Diese werden auch
|
versteinert wurden). Diese werden auch
|
||||||
in alive noch mitgezählt! */
|
in alive noch mitgez<EFBFBD>hlt! */
|
||||||
int magic; /* Magietalent der Einheit */
|
int magic; /* Magietalent der Einheit */
|
||||||
int horses; /* Anzahl brauchbarer Pferde der Einheit */
|
int horses; /* Anzahl brauchbarer Pferde der Einheit */
|
||||||
int elvenhorses; /* Anzahl brauchbarer Elfenpferde der Einheit */
|
int elvenhorses; /* Anzahl brauchbarer Elfenpferde der Einheit */
|
||||||
|
@ -179,7 +179,7 @@ extern "C" {
|
||||||
int defence : 8; /* (Magie) Paradenbonus der Personen */
|
int defence : 8; /* (Magie) Paradenbonus der Personen */
|
||||||
int damage : 8; /* (Magie) Schadensbonus der Personen im Nahkampf */
|
int damage : 8; /* (Magie) Schadensbonus der Personen im Nahkampf */
|
||||||
int damage_rear : 8; /* (Magie) Schadensbonus der Personen im Fernkampf */
|
int damage_rear : 8; /* (Magie) Schadensbonus der Personen im Fernkampf */
|
||||||
int flags : 8; /* (Magie) Diverse Flags auf Kämpfern */
|
int flags : 8; /* (Magie) Diverse Flags auf K<EFBFBD>mpfern */
|
||||||
int speed : 8; /* (Magie) Geschwindigkeitsmultiplkator. */
|
int speed : 8; /* (Magie) Geschwindigkeitsmultiplkator. */
|
||||||
int reload : 4; /* Anzahl Runden, die die Waffe x noch laden muss.
|
int reload : 4; /* Anzahl Runden, die die Waffe x noch laden muss.
|
||||||
* dahinter steckt ein array[RL_MAX] wenn er min. eine hat. */
|
* dahinter steckt ein array[RL_MAX] wenn er min. eine hat. */
|
||||||
|
@ -224,6 +224,7 @@ extern "C" {
|
||||||
} meffect;
|
} meffect;
|
||||||
|
|
||||||
extern const troop no_troop;
|
extern const troop no_troop;
|
||||||
|
extern bool battledebug;
|
||||||
|
|
||||||
/* BEGIN battle interface */
|
/* BEGIN battle interface */
|
||||||
side * find_side(battle * b, const struct faction * f, const struct group * g, unsigned int flags, const struct faction * stealthfaction);
|
side * find_side(battle * b, const struct faction * f, const struct group * g, unsigned int flags, const struct faction * stealthfaction);
|
||||||
|
|
|
@ -102,7 +102,6 @@ struct settings global = {
|
||||||
|
|
||||||
bool lomem = false;
|
bool lomem = false;
|
||||||
FILE *logfile;
|
FILE *logfile;
|
||||||
bool battledebug = false;
|
|
||||||
int turn = -1;
|
int turn = -1;
|
||||||
|
|
||||||
const char *parameters[MAXPARAMS] = {
|
const char *parameters[MAXPARAMS] = {
|
||||||
|
|
|
@ -167,7 +167,6 @@ struct param;
|
||||||
extern const char *localenames[];
|
extern const char *localenames[];
|
||||||
extern settings global;
|
extern settings global;
|
||||||
|
|
||||||
extern bool battledebug;
|
|
||||||
extern bool sqlpatch;
|
extern bool sqlpatch;
|
||||||
extern bool lomem; /* save memory */
|
extern bool lomem; /* save memory */
|
||||||
extern int turn;
|
extern int turn;
|
||||||
|
|
|
@ -25,6 +25,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <util/filereader.h>
|
#include <util/filereader.h>
|
||||||
#include <util/language.h>
|
#include <util/language.h>
|
||||||
#include "eressea.h"
|
#include "eressea.h"
|
||||||
|
#include "battle.h"
|
||||||
#ifdef USE_CURSES
|
#ifdef USE_CURSES
|
||||||
#include "gmtool.h"
|
#include "gmtool.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue