more config.h removal.

freset/fset/fval must die!
This commit is contained in:
Enno Rehling 2016-11-17 17:06:31 +01:00
parent 476c655cd3
commit 6c9e1fb345
10 changed files with 102 additions and 102 deletions

View File

@ -905,14 +905,6 @@ int wage(const region * r, const faction * f, const race * rc, int in_turn)
return default_wage(r, f, rc, in_turn);
}
int lovar(double xpct_x2)
{
int n = (int)(xpct_x2 * 500) + 1;
if (n == 0)
return 0;
return (rng_int() % n + rng_int() % n) / 1000;
}
void kernel_init(void)
{
register_reports();

View File

@ -56,7 +56,6 @@ struct param;
const char * game_name(void);
int game_id(void);
int lovar(double xpct_x2);
/* returns a value between [0..xpct_2], generated with two dice */
void init_locale(struct locale *lang);

View File

@ -117,7 +117,7 @@ extern "C" {
float healing;
double maxaura; /* Faktor auf Maximale Aura */
double regaura; /* Faktor auf Regeneration */
double recruit_multi; /* Faktor für Bauernverbrauch */
double recruit_multi; /* Faktor f<EFBFBD>r Bauernverbrauch */
int index;
int recruitcost;
int maintenance;
@ -132,8 +132,8 @@ extern "C" {
int armor;
int at_default; /* Angriffsskill Unbewaffnet (default: -2) */
int df_default; /* Verteidigungsskill Unbewaffnet (default: -2) */
int at_bonus; /* Verändert den Angriffsskill (default: 0) */
int df_bonus; /* Verändert den Verteidigungskill (default: 0) */
int at_bonus; /* Ver<EFBFBD>ndert den Angriffsskill (default: 0) */
int df_bonus; /* Ver<EFBFBD>ndert den Verteidigungskill (default: 0) */
struct param *parameters; // additional properties, for an example see natural_armor
const struct spell *precombatspell;
signed char *study_speed; /* study-speed-bonus in points/turn (0=30 Tage) */
@ -190,20 +190,20 @@ extern "C" {
#define RCF_LEARN (1<<6) /* Lernt automatisch wenn struct faction == 0 */
#define RCF_FLY (1<<7) /* kann fliegen */
#define RCF_SWIM (1<<8) /* kann schwimmen */
#define RCF_WALK (1<<9) /* kann über Land gehen */
#define RCF_WALK (1<<9) /* kann <EFBFBD>ber Land gehen */
#define RCF_NOLEARN (1<<10) /* kann nicht normal lernen */
#define RCF_NOTEACH (1<<11) /* kann nicht lehren */
#define RCF_HORSE (1<<12) /* Einheit ist Pferd, sozusagen */
#define RCF_DESERT (1<<13) /* 5% Chance, das Einheit desertiert */
#define RCF_ILLUSIONARY (1<<14) /* (Illusion & Spell) Does not drop items. */
#define RCF_ABSORBPEASANTS (1<<15) /* Tötet und absorbiert Bauern */
#define RCF_ABSORBPEASANTS (1<<15) /* T<EFBFBD>tet und absorbiert Bauern */
#define RCF_NOHEAL (1<<16) /* Einheit kann nicht geheilt werden */
#define RCF_NOWEAPONS (1<<17) /* Einheit kann keine Waffen benutzen */
#define RCF_SHAPESHIFT (1<<18) /* Kann TARNE RASSE benutzen. */
#define RCF_SHAPESHIFTANY (1<<19) /* Kann TARNE RASSE "string" benutzen. */
#define RCF_UNDEAD (1<<20) /* Undead. */
#define RCF_DRAGON (1<<21) /* Drachenart (für Zauber) */
#define RCF_COASTAL (1<<22) /* kann in Landregionen an der Küste sein */
#define RCF_DRAGON (1<<21) /* Drachenart (f<EFBFBD>r Zauber) */
#define RCF_COASTAL (1<<22) /* kann in Landregionen an der K<EFBFBD>ste sein */
#define RCF_UNARMEDGUARD (1<<23) /* kann ohne Waffen bewachen */
#define RCF_CANSAIL (1<<24) /* Einheit darf Schiffe betreten */
#define RCF_INVISIBLE (1<<25) /* not visible in any report */
@ -213,16 +213,16 @@ extern "C" {
#define RCF_ATTACK_MOVED (1<<29) /* may attack if it has moved */
/* Economic flags */
#define ECF_KEEP_ITEM (1<<1) /* gibt Gegenstände weg */
#define GIVEPERSON (1<<2) /* übergibt Personen */
#define GIVEUNIT (1<<3) /* Einheiten an andere Partei übergeben */
#define GETITEM (1<<4) /* nimmt Gegenstände an */
#define ECF_KEEP_ITEM (1<<1) /* gibt Gegenst<EFBFBD>nde weg */
#define GIVEPERSON (1<<2) /* <EFBFBD>bergibt Personen */
#define GIVEUNIT (1<<3) /* Einheiten an andere Partei <EFBFBD>bergeben */
#define GETITEM (1<<4) /* nimmt Gegenst<EFBFBD>nde an */
#define ECF_REC_ETHEREAL (1<<7) /* Rekrutiert aus dem Nichts */
#define ECF_REC_UNLIMITED (1<<8) /* Rekrutiert ohne Limit */
/* Battle-Flags */
#define BF_EQUIPMENT (1<<0) /* Kann Ausrüstung benutzen */
#define BF_NOBLOCK (1<<1) /* Wird in die Rückzugsberechnung nicht einbezogen */
#define BF_EQUIPMENT (1<<0) /* Kann Ausr<EFBFBD>stung benutzen */
#define BF_NOBLOCK (1<<1) /* Wird in die R<EFBFBD>ckzugsberechnung nicht einbezogen */
#define BF_RES_PIERCE (1<<2) /* Halber Schaden durch PIERCE */
#define BF_RES_CUT (1<<3) /* Halber Schaden durch CUT */
#define BF_RES_BASH (1<<4) /* Halber Schaden durch BASH */
@ -232,10 +232,10 @@ extern "C" {
const char *racename(const struct locale *lang, const struct unit *u,
const race * rc);
#define playerrace(rc) (!fval((rc), RCF_NPC))
#define dragonrace(rc) (fval(rc, RCF_DRAGON))
#define humanoidrace(rc) (fval((rc), RCF_UNDEAD) || (rc)==get_race(RC_DRACOID) || playerrace(rc))
#define illusionaryrace(rc) (fval(rc, RCF_ILLUSIONARY))
#define playerrace(rc) (!((rc)->flags & RCF_NPC))
#define dragonrace(rc) ((rc)->flags & RCF_DRAGON)
#define humanoidrace(rc) (((rc)->flags & RCF_UNDEAD) || (rc)==get_race(RC_DRACOID) || playerrace(rc))
#define illusionaryrace(rc) ((rc)->flags & RCF_ILLUSIONARY)
bool allowed_dragon(const struct region *src,
const struct region *target);

View File

@ -51,8 +51,8 @@ extern "C" {
int minskill; /* min. skill to sail this (crew) */
int sumskill; /* min. sum of crew+captain */
int at_bonus; /* Verändert den Angriffsskill (default: 0) */
int df_bonus; /* Verändert den Verteidigungskill (default: 0) */
int at_bonus; /* Ver<EFBFBD>ndert den Angriffsskill (default: 0) */
int df_bonus; /* Ver<EFBFBD>ndert den Verteidigungskill (default: 0) */
float tac_bonus;
struct terrain_type ** coasts; /* coast that this ship can land on */
@ -70,12 +70,12 @@ extern "C" {
#define NOSHIP NULL
#define SF_DRIFTED 1<<0
#define SF_MOVED 1<<1
#define SF_DAMAGED 1<<2 /* for use in combat */
#define SF_SELECT 1<<3 /* previously FL_DH */
#define SF_FISHING 1<<4 /* was on an ocean, can fish */
#define SF_FLYING 1<<5 /* the ship can fly */
#define SF_DRIFTED (1<<0)
#define SF_MOVED (1<<1)
#define SF_DAMAGED (1<<2) /* for use in combat */
#define SF_SELECT (1<<3) /* previously FL_DH */
#define SF_FISHING (1<<4) /* was on an ocean, can fish */
#define SF_FLYING (1<<5) /* the ship can fly */
#define SFL_SAVEMASK (SF_FLYING)
#define INCOME_FISHING 10

View File

@ -446,7 +446,7 @@ report_effect(region * r, unit * mage, message * seen, message * unseen)
* Vertrauten sehen, und durch den Vertrauten zaubern, allerdings nur
* mit seiner halben Stufe. Je nach Vertrautem erhaelt der Magier
* evtl diverse Skillmodifikationen. Der Typ des Vertrauten ist
* zufaellig bestimmt, wird aber durch Magiegebiet und Rasse beeinflußt.
* zufaellig bestimmt, wird aber durch Magiegebiet und Rasse beeinflu<EFBFBD>t.
* "Tierische" Vertraute brauchen keinen Unterhalt.
*
* Ein paar Moeglichkeiten:
@ -1599,7 +1599,7 @@ static int sp_create_stonegolem(castorder * co)
}
/* ------------------------------------------------------------- */
/* Name: Große Duerre
/* Name: Gro<EFBFBD>e Duerre
* Stufe: 17
* Kategorie: Region, negativ
* Gebiet: Gwyrrd
@ -1907,7 +1907,7 @@ static int sp_treewalkexit(castorder * co)
return 0;
}
/* Koordinaten setzen und Region loeschen fuer Überpruefung auf
/* Koordinaten setzen und Region loeschen fuer <EFBFBD>berpruefung auf
* Gueltigkeit */
rt = pa->param[0]->data.r;
tax = rt->x;
@ -2194,7 +2194,7 @@ static int sp_ironkeeper(castorder * co)
setstatus(keeper, ST_AVOID); /* kaempft nicht */
setguard(keeper, true);
fset(keeper, UFL_ISNEW);
/* Parteitarnen, damit man nicht sofort weiß, wer dahinter steckt */
/* Parteitarnen, damit man nicht sofort wei<EFBFBD>, wer dahinter steckt */
if (rule_stealth_anon()) {
fset(keeper, UFL_ANON_FACTION);
}
@ -2572,7 +2572,7 @@ void patzer_fumblecurse(const castorder * co)
*
* Wirkung:
* In einer Wueste, Sumpf oder Gletscher gezaubert kann innerhalb der
* naechsten 6 Runden ein bis 6 Dracheneinheiten bis Groeße Wyrm
* naechsten 6 Runden ein bis 6 Dracheneinheiten bis Groe<EFBFBD>e Wyrm
* entstehen.
*
* Mit Stufe 12-15 erscheinen Jung- oder normaler Drachen, mit Stufe
@ -2817,7 +2817,7 @@ static int change_hitpoints(unit * u, int value)
hp += value;
/* Jede Person benötigt mindestens 1 HP */
/* Jede Person ben<EFBFBD>tigt mindestens 1 HP */
if (hp < u->number) {
if (hp < 0) { /* Einheit tot */
hp = 0;
@ -3764,7 +3764,7 @@ static int sp_rallypeasantmob(castorder * co)
* Gebiet: Cerddor
* Wirkung:
* Wiegelt 60% bis 90% der Bauern einer Region auf. Bauern werden ein
* großer Mob, der zur Monsterpartei gehoert und die Region bewacht.
* gro<EFBFBD>er Mob, der zur Monsterpartei gehoert und die Region bewacht.
* Regionssilber sollte auch nicht durch Unterhaltung gewonnen werden
* koennen.
*
@ -4025,7 +4025,7 @@ static int sp_recruit(castorder * co)
return 0;
}
/* Immer noch zuviel auf niedrigen Stufen. Deshalb die Rekrutierungskosten
* mit einfliessen lassen und dafuer den Exponenten etwas groeßer.
* mit einfliessen lassen und dafuer den Exponenten etwas groe<EFBFBD>er.
* Wenn die Rekrutierungskosten deutlich hoeher sind als der Faktor,
* ist das Verhaeltniss von ausgegebene Aura pro Bauer bei Stufe 2
* ein mehrfaches von Stufe 1, denn in beiden Faellen gibt es nur 1
@ -4056,7 +4056,7 @@ static int sp_recruit(castorder * co)
}
/* ------------------------------------------------------------- */
/* Name: Wanderprediger - Große Anwerbung
/* Name: Wanderprediger - Gro<EFBFBD>e Anwerbung
* Stufe: 14
* Gebiet: Cerddor
* Wirkung:
@ -4112,8 +4112,8 @@ static int sp_bigrecruit(castorder * co)
* Gebiet: Cerddor
* Wirkung:
* Erliegt die Einheit dem Zauber, so wird sie dem Magier alles
* erzaehlen, was sie ueber die gefragte Region weiß. Ist in der Region
* niemand ihrer Partei, so weiß sie nichts zu berichten. Auch kann
* erzaehlen, was sie ueber die gefragte Region wei<EFBFBD>. Ist in der Region
* niemand ihrer Partei, so wei<EFBFBD> sie nichts zu berichten. Auch kann
* sie nur das erzaehlen, was sie selber sehen koennte.
* Flags:
* (UNITSPELL | TESTCANSEE)
@ -4176,7 +4176,7 @@ static int sp_pump(castorder * co)
* Stufe: 6
* Gebiet: Cerddor
* Wirkung:
* Betoert eine Einheit, so das sie ihm den groeßten Teil ihres Bargelds
* Betoert eine Einheit, so das sie ihm den groe<EFBFBD>ten Teil ihres Bargelds
* und 50% ihres Besitzes schenkt. Sie behaelt jedoch immer soviel, wie
* sie zum ueberleben braucht. Wirkt gegen Magieresistenz.
* _min(Stufe*1000$, u->money - maintenace)
@ -4333,7 +4333,7 @@ static int sp_headache(castorder * co)
if (target->number == 0 || pa->param[0]->flag == TARGET_NOTFOUND)
return 0;
/* finde das groeßte Talent: */
/* finde das groe<EFBFBD>te Talent: */
for (i = 0; i != target->skill_size; ++i) {
skill *sv = target->skills + i;
if (smax == NULL || skill_compare(sv, smax) > 0) {
@ -4479,7 +4479,7 @@ int sp_puttorest(castorder * co)
return co->level;
}
/* Name: Traumschloeßchen
/* Name: Traumschloe<EFBFBD>chen
* Stufe: 3
* Kategorie: Region, Gebaeude, positiv
* Gebiet: Illaun
@ -4514,7 +4514,7 @@ int sp_icastle(castorder * co)
b = new_building(bt_illusion, r, mage->faction->locale);
/* Groeße festlegen. */
/* Groe<EFBFBD>e festlegen. */
if (type == bt_illusion) {
b->size = (rng_int() % (int)((power * power) + 1) * 10);
}
@ -4692,7 +4692,7 @@ int sp_baddreams(castorder * co)
* Kategorie:
* Wirkung:
* Dieser Zauber ermoeglicht es dem Traeumer, den Schlaf aller aliierten
* Einheiten in der Region so zu beeinflussen, daß sie fuer einige Zeit
* Einheiten in der Region so zu beeinflussen, da<EFBFBD> sie fuer einige Zeit
* einen Bonus von 1 Talentstufe in allen Talenten
* bekommen. Der Zauber wirkt erst im Folgemonat.
* Flags:

View File

@ -10,7 +10,6 @@
without prior permission by the authors of Eressea.
*/
#include <platform.h>
#include <kernel/config.h>
#include "combatspells.h"
/* kernel includes */
@ -81,7 +80,7 @@ static const char *spell_damage(int sp)
{
switch (sp) {
case 0:
/* meist tödlich 20-65 HP */
/* meist t<EFBFBD>dlich 20-65 HP */
return "5d10+15";
case 1:
/* sehr variabel 4-48 HP */
@ -90,7 +89,7 @@ static const char *spell_damage(int sp)
/* leicht verwundet 4-18 HP */
return "2d8+2";
case 3:
/* fast immer tödlich 30-50 HP */
/* fast immer t<EFBFBD>dlich 30-50 HP */
return "5d5+25";
case 4:
/* verwundet 11-26 HP */
@ -382,11 +381,11 @@ int sp_combatrosthauch(struct castorder * co)
ql_free(fgs);
if (k == 0) {
/* keine Waffen mehr da, die zerstört werden könnten */
/* keine Waffen mehr da, die zerst<EFBFBD>rt werden k<>nnten */
message *msg = msg_message("rust_effect_1", "mage", fi->unit);
message_all(b, msg);
msg_release(msg);
fi->magic = 0; /* kämpft nichtmagisch weiter */
fi->magic = 0; /* k<EFBFBD>mpft nichtmagisch weiter */
level = 0;
}
else {
@ -453,7 +452,7 @@ int sp_speed(struct castorder * co)
allies =
count_allies(fi->side, FIGHT_ROW, BEHIND_ROW, SELECT_ADVANCE, ALLY_ANY);
/* maximal 2*allies Versuche ein Opfer zu finden, ansonsten bestände
/* maximal 2*allies Versuche ein Opfer zu finden, ansonsten best<EFBFBD>nde
* die Gefahr eine Endlosschleife*/
allies *= 2;
@ -546,7 +545,7 @@ int sp_mindblast_temp(struct castorder * co)
assert(dt.fighter);
du = dt.fighter->unit;
if (fval(du, UFL_MARK)) {
if (du->flags & UFL_MARK) {
/* not this one again */
continue;
}
@ -564,7 +563,7 @@ int sp_mindblast_temp(struct castorder * co)
}
force -= du->number;
}
fset(du, UFL_MARK);
du->flags |= UFL_MARK;
reset = 1;
enemies -= du->number;
}
@ -572,7 +571,7 @@ int sp_mindblast_temp(struct castorder * co)
if (reset) {
unit *u;
for (u = b->region->units; u; u = u->next) {
freset(u, UFL_MARK);
u->flags &= ~UFL_MARK;
}
}
@ -612,7 +611,7 @@ int sp_mindblast(struct castorder * co)
assert(dt.fighter);
du = dt.fighter->unit;
if (fval(du, UFL_MARK)) {
if (du->flags & UFL_MARK) {
/* not this one again */
continue;
}
@ -640,7 +639,7 @@ int sp_mindblast(struct castorder * co)
else {
/* only works against humanoids, don't try others. but do remove them
* from 'force' once or we may never terminate. */
fset(du, UFL_MARK);
du->flags |= UFL_MARK;
reset = 1;
}
enemies -= du->number;
@ -649,7 +648,7 @@ int sp_mindblast(struct castorder * co)
if (reset) {
unit *u;
for (u = b->region->units; u; u = u->next) {
freset(u, UFL_MARK);
u->flags &= ~UFL_MARK;
}
}
@ -866,8 +865,8 @@ static fighter *summon_allies(const fighter *fi, const race *rc, int number) {
u->hp = u->number * unit_max_hp(u);
if (fval(mage, UFL_ANON_FACTION)) {
fset(u, UFL_ANON_FACTION);
if (mage->flags & UFL_ANON_FACTION) {
u->flags |= UFL_ANON_FACTION;
}
a = a_new(&at_unitdissolve);
@ -932,8 +931,8 @@ int sp_shadowknights(struct castorder * co)
u->hp = u->number * unit_max_hp(u);
if (fval(mage, UFL_ANON_FACTION)) {
fset(u, UFL_ANON_FACTION);
if (mage->flags & UFL_ANON_FACTION) {
u->flags |= UFL_ANON_FACTION;
}
a = a_new(&at_unitdissolve);
@ -1016,7 +1015,7 @@ int sp_chaosrow(struct castorder * co)
continue;
if (power <= 0.0)
break;
/* force sollte wegen des _max(0,x) nicht unter 0 fallen können */
/* force sollte wegen des _max(0,x) nicht unter 0 fallen k<EFBFBD>nnen */
if (is_magic_resistant(mage, df->unit, 0))
continue;
@ -1068,7 +1067,7 @@ int sp_chaosrow(struct castorder * co)
}
/* Gesang der Furcht (Kampfzauber) */
/* Panik (Präkampfzauber) */
/* Panik (Pr<EFBFBD>kampfzauber) */
int sp_flee(struct castorder * co)
{
@ -1114,13 +1113,13 @@ int sp_flee(struct castorder * co)
if (force < 0)
break;
if (df->person[n].flags & FL_PANICED) { /* bei SPL_SONG_OF_FEAR möglich */
if (df->person[n].flags & FL_PANICED) { /* bei SPL_SONG_OF_FEAR m<EFBFBD>glich */
df->person[n].attack -= 1;
--force;
++panik;
}
else if (!(df->person[n].flags & FL_COURAGE)
|| !fval(u_race(df->unit), RCF_UNDEAD)) {
|| !(u_race(df->unit)->flags & RCF_UNDEAD)) {
if (!is_magic_resistant(mage, df->unit, 0)) {
df->person[n].flags |= FL_PANICED;
++panik;
@ -1165,7 +1164,7 @@ int sp_hero(struct castorder * co)
allies =
count_allies(fi->side, FIGHT_ROW, BEHIND_ROW, SELECT_ADVANCE, ALLY_ANY);
/* maximal 2*allies Versuche ein Opfer zu finden, ansonsten bestände
/* maximal 2*allies Versuche ein Opfer zu finden, ansonsten best<EFBFBD>nde
* die Gefahr eine Endlosschleife*/
allies *= 2;
@ -1222,7 +1221,7 @@ int sp_berserk(struct castorder * co)
allies =
count_allies(fi->side, FIGHT_ROW, BEHIND_ROW - 1, SELECT_ADVANCE, ALLY_ANY);
/* maximal 2*allies Versuche ein Opfer zu finden, ansonsten bestände
/* maximal 2*allies Versuche ein Opfer zu finden, ansonsten best<EFBFBD>nde
* die Gefahr eine Endlosschleife*/
allies *= 2;
@ -1419,7 +1418,7 @@ int sp_reeling_arrows(struct castorder * co)
}
/* Magier weicht dem Kampf aus. Wenn er sich bewegen kann, zieht er in
* eine Nachbarregion, wobei ein NACH berücksichtigt wird. Ansonsten
* eine Nachbarregion, wobei ein NACH ber<EFBFBD>cksichtigt wird. Ansonsten
* bleibt er stehen und nimmt nicht weiter am Kampf teil. */
int sp_denyattack(struct castorder * co)
{
@ -1432,17 +1431,16 @@ int sp_denyattack(struct castorder * co)
region *r = b->region;
message *m;
/* Fliehende Einheiten verlassen auf jeden Fall Gebäude und Schiffe. */
if (!fval(r->terrain, SEA_REGION)) {
/* Fliehende Einheiten verlassen auf jeden Fall Geb<EFBFBD>ude und Schiffe. */
if (!(r->terrain->flags & SEA_REGION)) {
leave(mage, false);
}
/* und bewachen nicht */
setguard(mage, false);
/* irgendwie den langen befehl sperren */
/* fset(fi, FIG_ATTACKED); */
/* wir tun so, als wäre die Person geflohen */
fset(fi, FIG_NOLOOT);
/* wir tun so, als w<EFBFBD>re die Person geflohen */
fi->flags |= FIG_NOLOOT;
fi->run.hp = mage->hp;
fi->run.number = mage->number;
/* fighter leeren */
@ -1480,7 +1478,7 @@ int sp_armorshield(struct castorder * co)
message_all(b, m);
msg_release(m);
/* gibt Rüstung +effect für duration Treffer */
/* gibt R<EFBFBD>stung +effect f<>r duration Treffer */
switch (sp->id) {
case SPL_ARMORSHIELD:
@ -1539,7 +1537,7 @@ int sp_fumbleshield(struct castorder * co)
message_all(b, m);
msg_release(m);
/* der erste Zauber schlägt mit 100% fehl */
/* der erste Zauber schl<EFBFBD>gt mit 100% fehl */
switch (sp->id) {
case SPL_DRAIG_FUMBLESHIELD:
@ -1605,7 +1603,7 @@ int sp_reanimate(struct castorder * co)
&& u_race(tf->unit) != get_race(RC_DAEMON)
&& (chance(c))) {
assert(tf->alive < tf->unit->number);
/* t.fighter->person[].hp beginnt mit t.index = 0 zu zählen,
/* t.fighter->person[].hp beginnt mit t.index = 0 zu z<EFBFBD>hlen,
* t.fighter->alive ist jedoch die Anzahl lebender in der Einheit,
* also sind die hp von t.fighter->alive
* t.fighter->hitpoints[t.fighter->alive-1] und der erste Tote
@ -1668,7 +1666,7 @@ static int heal_fighters(quicklist * fgs, int *power, bool heal_monsters)
break;
/* Untote kann man nicht heilen */
if (df->unit->number == 0 || fval(u_race(df->unit), RCF_NOHEAL))
if (df->unit->number == 0 || (u_race(df->unit)->flags & RCF_NOHEAL))
continue;
/* wir heilen erstmal keine Monster */
@ -1711,8 +1709,8 @@ int sp_healing(struct castorder * co)
message *msg;
bool use_item = has_ao_healing(mage);
/* bis zu 11 Personen pro Stufe (einen HP müssen sie ja noch
* haben, sonst wären sie tot) nnen geheilt werden */
/* bis zu 11 Personen pro Stufe (einen HP m<EFBFBD>ssen sie ja noch
* haben, sonst w<EFBFBD>ren sie tot) k<EFBFBD>nnen geheilt werden */
if (use_item) {
healhp *= 2;
@ -1758,7 +1756,7 @@ int sp_undeadhero(struct castorder * co)
int force = (int)get_force(power, 0);
double c = 0.50 + 0.02 * power;
/* Liste aus allen Kämpfern */
/* Liste aus allen K<EFBFBD>mpfern */
fgs = fighters(b, fi->side, FIGHT_ROW, AVOID_ROW, FS_ENEMY | FS_HELP);
scramble_fighters(fgs);
@ -1776,7 +1774,7 @@ int sp_undeadhero(struct castorder * co)
if (df->alive + df->run.number < du->number) {
int j = 0;
/* Wieviele Untote können wir aus dieser Einheit wecken? */
/* Wieviele Untote k<EFBFBD>nnen wir aus dieser Einheit wecken? */
for (n = df->alive + df->run.number; n != du->number; n++) {
if (chance(c)) {
++j;
@ -1818,8 +1816,8 @@ int sp_undeadhero(struct castorder * co)
}
/* inherit stealth from magician */
if (fval(mage, UFL_ANON_FACTION)) {
fset(u, UFL_ANON_FACTION);
if (mage->flags & UFL_ANON_FACTION) {
u->flags |= UFL_ANON_FACTION;
}
/* transfer dead people to new unit, set hitpoints to those of old unit */

View File

@ -1,5 +1,4 @@
#include <platform.h>
#include <kernel/config.h>
#include "flyingship.h"
#include <kernel/build.h>
@ -27,8 +26,8 @@
* Stufe: 6
*
* Wirkung:
* Laeßt ein Schiff eine Runde lang fliegen. Wirkt nur auf Boote
* bis Kapazität 50.
* Lae<EFBFBD>t ein Schiff eine Runde lang fliegen. Wirkt nur auf Boote
* bis Kapazit<EFBFBD>t 50.
* Kombinierbar mit "Guenstige Winde", aber nicht mit "Sturmwind".
*
* Flag:
@ -81,18 +80,20 @@ int sp_flying_ship(castorder * co)
/* melden, 1x pro Partei */
for (u = r->units; u; u = u->next)
freset(u->faction, FFL_SELECT);
u->faction->flags &= ~FFL_SELECT;
for (u = r->units; u; u = u->next) {
/* das sehen natuerlich auch die Leute an Land */
if (!fval(u->faction, FFL_SELECT)) {
fset(u->faction, FFL_SELECT);
if (!m)
if (!(u->faction->flags & FFL_SELECT)) {
u->faction->flags |= FFL_SELECT;
if (!m) {
m = msg_message("flying_ship_result", "mage ship", mage, sh);
}
add_message(&u->faction->msgs, m);
}
}
if (m)
if (m) {
msg_release(m);
}
return cast_level;
}
@ -120,7 +121,7 @@ static int flyingship_age(curse * c)
{
ship *sh = (ship *)c->data.v;
if (sh && c->duration == 1) {
freset(sh, SF_FLYING);
sh->flags &= ~SF_FLYING;
return 1;
}
return 0;

View File

@ -28,6 +28,14 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <float.h>
#include <ctype.h>
int lovar(double xpct_x2)
{
int n = (int)(xpct_x2 * 500) + 1;
if (n == 0)
return 0;
return (rng_int() % n + rng_int() % n) / 1000;
}
/* NormalRand aus python, random.py geklaut, dort ist Referenz auf
* den Algorithmus. mu = Mittelwert, sigma = Standardabweichung.
* http://de.wikipedia.org/wiki/Standardabweichung#Diskrete_Gleichverteilung.2C_W.C3.BCrfel

View File

@ -23,13 +23,14 @@ extern "C" {
#endif
/* in dice.c: */
extern int dice_rand(const char *str);
extern int dice(int count, int value);
int dice_rand(const char *str);
int dice(int count, int value);
/* in rand.c: */
extern double normalvariate(double mu, double sigma);
extern int ntimespprob(int n, double p, double mod);
extern bool chance(double x);
int lovar(double xpct_x2);
double normalvariate(double mu, double sigma);
int ntimespprob(int n, double p, double mod);
bool chance(double x);
/* a random source that generates numbers in [0, 1).
By calling the random_source_inject... functions you can set a special random source,

1
tolua Submodule

@ -0,0 +1 @@
Subproject commit de289b60c5009b6ac8e786f39432c08eadbb69b7