allow reading the configuration from a different directory (-c dir).

This commit is contained in:
Enno Rehling 2014-07-23 08:10:14 +02:00
parent af73c6dcdf
commit 51207167c8
3 changed files with 3869 additions and 3741 deletions

View File

@ -198,7 +198,8 @@ void get_food(region * r)
int get = 0;
if (v->number <= c) {
get = lifestyle(v);
} else {
}
else {
get = lifestyle(v) * c / v->number;
}
if (get) {
@ -326,7 +327,8 @@ void get_food(region * r)
if (peasantfood >= hungry) {
peasantfood -= hungry;
hungry = 0;
} else {
}
else {
hungry -= peasantfood;
peasantfood = 0;
}
@ -339,7 +341,8 @@ void get_food(region * r)
/* demons who don't feed are hungry */
if (hunger(hungry, u))
fset(u, UFL_HUNGER);
} else {
}
else {
/* no damage, but set the hungry-flag */
fset(u, UFL_HUNGER);
}
@ -362,7 +365,8 @@ static void age_unit(region * r, unit * u)
if (--u->age <= 0) {
remove_unit(&r->units, u);
}
} else {
}
else {
++u->age;
if (u->number > 0 && u_race(u)->age) {
u_race(u)->age(u);
@ -623,7 +627,8 @@ static void horses(region * r)
if (horses > 0) {
if (is_cursed(r->attribs, C_CURSED_BY_THE_GODS, 0)) {
rsethorses(r, (int)(horses * 0.9F));
} else if (maxhorses) {
}
else if (maxhorses) {
int i;
double growth =
(RESOURCE_QUANTITY * HORSEGROWTH * 200 * (maxhorses -
@ -817,7 +822,8 @@ growing_trees(region * r, const int current_season, const int last_weeks_season)
}
}
} else if (current_season == SEASON_SPRING) {
}
else if (current_season == SEASON_SPRING) {
if (is_cursed(r->attribs, C_CURSED_BY_THE_GODS, 0))
return;
@ -941,7 +947,8 @@ void demographics(void)
if (plant_rules == 0) { /* E1 */
growing_trees(r, current_season, last_weeks_season);
growing_herbs(r, current_season, last_weeks_season);
} else { /* E3 */
}
else { /* E3 */
growing_trees_e3(r, current_season, last_weeks_season);
}
}
@ -982,7 +989,8 @@ static int modify(int i)
if (c >= 1) {
return (c + rng_int() % c);
} else {
}
else {
return (i);
}
}
@ -1118,7 +1126,8 @@ int leave_cmd(unit * u, struct order *ord)
if (!slipthru(r, u, u->building)) {
ADDMSG(&u->faction->msgs, msg_feedback(u, u->thisorder, "entrance_besieged",
"building", u->building));
} else {
}
else {
leave(u, true);
}
return 0;
@ -1152,14 +1161,17 @@ int quit_cmd(unit * u, struct order *ord)
if (f2 == NULL) {
cmistake(u, ord, 66, MSG_EVENT);
return 0;
} else if (!u->faction->alliance
}
else if (!u->faction->alliance
|| u->faction->alliance != f2->alliance) {
cmistake(u, ord, 315, MSG_EVENT);
return 0;
} else if (!alliedfaction(NULL, f, f2, HELP_MONEY)) {
}
else if (!alliedfaction(NULL, f, f2, HELP_MONEY)) {
cmistake(u, ord, 316, MSG_EVENT);
return 0;
} else {
}
else {
variant var;
var.i = f2_id;
a_add(&f->attribs, object_create("quit", TINTEGER, var));
@ -1167,7 +1179,8 @@ int quit_cmd(unit * u, struct order *ord)
}
}
fset(f, FFL_QUIT);
} else {
}
else {
char buffer[64];
write_order(ord, buffer, sizeof(buffer));
cmistake(u, ord, 86, MSG_EVENT);
@ -1260,7 +1273,8 @@ int enter_ship(unit * u, struct order *ord, int id, int report)
u_set_ship(u, sh);
fset(u, UFL_ENTER);
return 1;
} else if (report) {
}
else if (report) {
cmistake(u, ord, 150, MSG_MOVE);
}
return 0;
@ -1308,7 +1322,8 @@ int enter_building(unit * u, order * ord, int id, int report)
fset(u, UFL_ENTER);
u_set_building(u, b);
return 1;
} else if (report) {
}
else if (report) {
cmistake(u, ord, 150, MSG_MOVE);
}
return 0;
@ -1498,7 +1513,8 @@ void quit(void)
}
}
destroyfaction(f);
} else {
}
else {
++f->age;
if (f->age + 1 < NewbieImmunity()) {
ADDMSG(&f->msgs, msg_message("newbieimmunity", "turns",
@ -1558,7 +1574,8 @@ int ally_cmd(unit * u, struct order *ord)
if (keyword == P_NOT || not_kw == P_NOT) {
/* Wir helfen der Partei gar nicht... */
return 0;
} else {
}
else {
sf = calloc(1, sizeof(ally));
sf->faction = f;
sf->status = 0;
@ -1702,7 +1719,8 @@ int prefix_cmd(unit * u, struct order *ord)
if (a) {
group *g = (group *)a->data.v;
a_removeall(&g->attribs, &at_raceprefix);
} else {
}
else {
a_removeall(&u->faction->attribs, &at_raceprefix);
}
return 0;
@ -1710,9 +1728,11 @@ int prefix_cmd(unit * u, struct order *ord)
if (findtoken(in->names, s, &var) == E_TOK_NOMATCH) {
return 0;
} else if (race_prefixes[var.i] == NULL) {
}
else if (race_prefixes[var.i] == NULL) {
cmistake(u, ord, 299, MSG_EVENT);
} else {
}
else {
ap = &u->faction->attribs;
if (fval(u, UFL_GROUP)) {
attrib *a = a_find(u->attribs, &at_group);
@ -1729,7 +1749,8 @@ static cmp_building_cb get_cmp_region_owner(void)
{
if (rule_region_owners()) {
return &cmp_current_owner;
} else {
}
else {
return &cmp_wage;
}
}
@ -1783,7 +1804,8 @@ int display_cmd(unit * u, struct order *ord)
const char *d = getstrtoken();
if (d == NULL || *d == 0) {
usetprivate(u, NULL);
} else {
}
else {
usetprivate(u, d);
}
}
@ -1884,13 +1906,15 @@ rename_building(unit * u, order * ord, building * b, const char *name)
ADDMSG(&owner->faction->msgs,
msg_message("renamed_building_seen",
"building renamer region", b, u, u->region));
} else {
}
else {
ADDMSG(&owner->faction->msgs,
msg_message("renamed_building_notseen",
"building region", b, u->region));
}
}
} else {
}
else {
if (owner != u) {
cmistake(u, ord, 148, MSG_PRODUCE);
return -1;
@ -1950,7 +1974,8 @@ int name_cmd(struct unit *u, struct order *ord)
if (f->age < 10) {
cmistake(u, ord, 248, MSG_EVENT);
break;
} else {
}
else {
const struct locale *lang = locales;
for (; lang; lang = nextlocale(lang)) {
const char *fdname = LOC(lang, "factiondefault");
@ -1967,11 +1992,13 @@ int name_cmd(struct unit *u, struct order *ord)
if (cansee(f, r, u, 0)) {
ADDMSG(&f->msgs,
msg_message("renamed_faction_seen", "unit region", u, r));
} else {
}
else {
ADDMSG(&f->msgs, msg_message("renamed_faction_notseen", "", r));
}
s = &f->name;
} else {
}
else {
s = &u->faction->name;
}
break;
@ -1984,7 +2011,8 @@ int name_cmd(struct unit *u, struct order *ord)
if (!sh) {
cmistake(u, ord, 20, MSG_EVENT);
break;
} else {
}
else {
const struct locale *lang = locales;
for (; lang; lang = nextlocale(lang)) {
const char *sdname = LOC(lang, sh->type->_name);
@ -2012,13 +2040,15 @@ int name_cmd(struct unit *u, struct order *ord)
if (cansee(uo->faction, r, u, 0)) {
ADDMSG(&uo->faction->msgs,
msg_message("renamed_ship_seen", "ship renamer region", sh, u, r));
} else {
}
else {
ADDMSG(&uo->faction->msgs,
msg_message("renamed_ship_notseen", "ship region", sh, r));
}
}
s = &sh->name;
} else {
}
else {
if (!u->ship) {
cmistake(u, ord, 144, MSG_PRODUCE);
break;
@ -2039,7 +2069,8 @@ int name_cmd(struct unit *u, struct order *ord)
ADDMSG(&u->faction->msgs, msg_feedback(u, ord,
"feedback_unit_not_found", ""));
break;
} else {
}
else {
const char *udefault = LOC(u2->faction->locale, "unitdefault");
size_t udlen = strlen(udefault);
size_t unlen = strlen(u2->name);
@ -2051,12 +2082,14 @@ int name_cmd(struct unit *u, struct order *ord)
if (cansee(u2->faction, r, u, 0)) {
ADDMSG(&u2->faction->msgs, msg_message("renamed_seen",
"renamer renamed region", u, u2, r));
} else {
}
else {
ADDMSG(&u2->faction->msgs, msg_message("renamed_notseen",
"renamed region", u2, r));
}
s = &u2->name;
} else {
}
else {
s = &u->name;
}
break;
@ -2087,7 +2120,8 @@ int name_cmd(struct unit *u, struct order *ord)
group *g = (group *)a->data.v;
s = &g->name;
break;
} else {
}
else {
cmistake(u, ord, 109, MSG_EVENT);
break;
}
@ -2116,7 +2150,8 @@ deliverMail(faction * f, region * r, unit * u, const char *s, unit * receiver)
if (!receiver) { /* BOTSCHAFT an PARTEI */
ADDMSG(&f->msgs,
msg_message("regionmessage", "region sender string", r, u, s));
} else { /* BOTSCHAFT an EINHEIT */
}
else { /* BOTSCHAFT an EINHEIT */
ADDMSG(&f->msgs,
msg_message("unitmessage", "region unit sender string", r,
receiver, u, s));
@ -2131,7 +2166,8 @@ mailunit(region * r, unit * u, int n, struct order *ord, const char *s)
if (u2 && cansee(u->faction, r, u2, 0)) {
deliverMail(u2->faction, r, u, s, u2);
/* now done in prepare_mail_cmd */
} else {
}
else {
/* Immer eine Meldung - sonst koennte man so getarnte EHs enttarnen:
* keine Meldung -> EH hier. */
ADDMSG(&u->faction->msgs,
@ -2173,7 +2209,8 @@ int mail_cmd(unit * u, struct order *ord)
if (!s[0]) {
cmistake(u, ord, 30, MSG_MESSAGE);
break;
} else {
}
else {
ADDMSG(&r->msgs, msg_message("mail_result", "unit message", u, s));
return 0;
}
@ -2227,7 +2264,8 @@ int mail_cmd(unit * u, struct order *ord)
if (!s[0]) {
cmistake(u, ord, 30, MSG_MESSAGE);
break;
} else {
}
else {
attrib *a = a_find(u2->attribs, &at_eventhandler);
if (a != NULL) {
event_arg args[3];
@ -2310,8 +2348,7 @@ int mail_cmd(unit * u, struct order *ord)
cont = 1;
break;
}
}
while (cont);
} while (cont);
cmistake(u, ord, 149, MSG_MESSAGE);
return 0;
}
@ -2341,12 +2378,14 @@ int email_cmd(unit * u, struct order *ord)
if (!s[0]) {
cmistake(u, ord, 85, MSG_EVENT);
} else {
}
else {
faction *f = u->faction;
if (set_email(&f->email, (const char *)s) != 0) {
log_error("Invalid email address for faction %s: %s\n", itoa36(f->no), s);
ADDMSG(&f->msgs, msg_message("changemail_invalid", "value", s));
} else {
}
else {
ADDMSG(&f->msgs, msg_message("changemail", "value", f->email));
}
}
@ -2368,7 +2407,8 @@ int password_cmd(unit * u, struct order *ord)
for (i = 0; i < 6; i++)
pwbuf[i] = (char)(97 + rng_int() % 26);
pwbuf[6] = 0;
} else {
}
else {
char *c;
strlcpy(pwbuf, (const char *)s, 31);
@ -2384,7 +2424,8 @@ int password_cmd(unit * u, struct order *ord)
if (!pwok) {
cmistake(u, ord, 283, MSG_EVENT);
u->faction->passw = _strdup(itoa36(rng_int()));
} else {
}
else {
u->faction->passw = _strdup(pwbuf);
}
ADDMSG(&u->faction->msgs, msg_message("changepasswd",
@ -2405,14 +2446,17 @@ int send_cmd(unit * u, struct order *ord)
if (option == -1) {
cmistake(u, ord, 135, MSG_EVENT);
} else {
}
else {
if (getparam(u->faction->locale) == P_NOT) {
if (option == O_COMPRESS || option == O_BZIP2) {
cmistake(u, ord, 305, MSG_EVENT);
} else {
}
else {
u->faction->options = u->faction->options & ~(1 << option);
}
} else {
}
else {
u->faction->options = u->faction->options | (1 << option);
if (option == O_COMPRESS)
u->faction->options &= ~(1 << O_BZIP2);
@ -2539,7 +2583,8 @@ static bool display_race(faction * f, unit * u, const race * rc)
if (size > 1) {
*bufp++ = '.';
--size;
} else
}
else
WARN_STATIC_BUFFER();
/* b_damage : Schaden */
@ -2620,7 +2665,8 @@ static bool display_race(faction * f, unit * u, const race * rc)
if (size > 1) {
*bufp++ = '.';
--size;
} else
}
else
WARN_STATIC_BUFFER();
*bufp = 0;
@ -2661,7 +2707,8 @@ static void reshow(unit * u, struct order *ord, const char *s, param_t p)
if (ptype != NULL) {
if (display_potion(u->faction, u, ptype))
break;
} else {
}
else {
if (display_item(u->faction, u, itype))
break;
}
@ -2814,7 +2861,8 @@ int status_cmd(unit * u, struct order *ord)
case P_HELP:
if (getparam(u->faction->locale) == P_NOT) {
fset(u, UFL_NOAID);
} else {
}
else {
freset(u, UFL_NOAID);
}
break;
@ -2822,7 +2870,8 @@ int status_cmd(unit * u, struct order *ord)
if (param[0]) {
add_message(&u->faction->msgs,
msg_feedback(u, ord, "unknown_status", ""));
} else {
}
else {
setstatus(u, ST_FIGHT);
}
}
@ -2866,7 +2915,8 @@ int combatspell_cmd(unit * u, struct order *ord)
* Kampfzauber */
unset_combatspell(u, sp);
return 0;
} else {
}
else {
/* KAMPFZAUBER "<Spruchname>" setzt diesen Kampfzauber */
set_combatspell(u, sp, ord, level);
}
@ -2903,7 +2953,8 @@ void update_guards(void)
if (fval(u, UFL_GUARD)) {
if (can_start_guarding(u) != E_GUARD_OK) {
setguard(u, GUARD_NONE);
} else {
}
else {
attrib *a = a_find(u->attribs, &at_guard);
if (a && a->data.i == (int)guard_flags(u)) {
/* this is really rather not necessary */
@ -2928,25 +2979,32 @@ int guard_on_cmd(unit * u, struct order *ord)
if (fval(u->region->terrain, SEA_REGION)) {
cmistake(u, ord, 2, MSG_EVENT);
} else {
}
else {
if (fval(u, UFL_MOVED)) {
cmistake(u, ord, 187, MSG_EVENT);
} else if (fval(u_race(u), RCF_ILLUSIONARY)
}
else if (fval(u_race(u), RCF_ILLUSIONARY)
|| u_race(u) == get_race(RC_SPELL)) {
cmistake(u, ord, 95, MSG_EVENT);
} else {
}
else {
/* Monster der Monsterpartei dürfen immer bewachen */
if (is_monsters(u->faction)) {
guard(u, GUARD_ALL);
} else {
}
else {
int err = can_start_guarding(u);
if (err == E_GUARD_OK) {
guard(u, GUARD_ALL);
} else if (err == E_GUARD_UNARMED) {
}
else if (err == E_GUARD_UNARMED) {
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "unit_unarmed", ""));
} else if (err == E_GUARD_FLEEING) {
}
else if (err == E_GUARD_FLEEING) {
cmistake(u, ord, 320, MSG_EVENT);
} else if (err == E_GUARD_NEWBIE) {
}
else if (err == E_GUARD_NEWBIE) {
cmistake(u, ord, 304, MSG_EVENT);
}
}
@ -3035,7 +3093,8 @@ void renumber_factions(void)
}
if (*rn && (*rn)->want == want) {
ADDMSG(&f->msgs, msg_message("renumber_inuse", "id", want));
} else {
}
else {
struct renum *r = calloc(sizeof(struct renum), 1);
r->next = *rn;
r->attrib = a;
@ -3082,15 +3141,20 @@ void restack_units(void)
if (!v || v->faction != u->faction || v->region != r) {
cmistake(u, ord, 258, MSG_EVENT);
} else if (v->building != u->building || v->ship != u->ship) {
}
else if (v->building != u->building || v->ship != u->ship) {
cmistake(u, ord, 259, MSG_EVENT);
} else if (u->building && building_owner(u->building)==u) {
}
else if (u->building && building_owner(u->building) == u) {
cmistake(u, ord, 260, MSG_EVENT);
} else if (u->ship && ship_owner(u->ship)==u) {
}
else if (u->ship && ship_owner(u->ship) == u) {
cmistake(u, ord, 260, MSG_EVENT);
} else if (v == u) {
}
else if (v == u) {
cmistake(u, ord, 10, MSG_EVENT);
} else {
}
else {
switch (p) {
case P_AFTER:
*up = u->next;
@ -3102,9 +3166,11 @@ void restack_units(void)
case P_BEFORE:
if (v->ship && ship_owner(v->ship) == v) {
cmistake(v, ord, 261, MSG_EVENT);
} else if (v->building && building_owner(v->building)==v) {
}
else if (v->building && building_owner(v->building) == v) {
cmistake(v, ord, 261, MSG_EVENT);
} else {
}
else {
unit **vp = &r->units;
while (*vp != v)
vp = &(*vp)->next;
@ -3162,7 +3228,8 @@ int renumber_cmd(unit * u, order * ord)
s = getstrtoken();
if (s == NULL || *s == 0) {
i = newunitid();
} else {
}
else {
i = atoi36((const char *)s);
if (i <= 0 || i > MAX_UNIT_NR) {
cmistake(u, ord, 114, MSG_EVENT);
@ -3204,7 +3271,8 @@ int renumber_cmd(unit * u, order * ord)
s = getstrtoken();
if (s == NULL || *s == 0) {
i = newcontainerid();
} else {
}
else {
i = atoi36((const char *)s);
if (i <= 0 || i > MAX_CONTAINER_NR) {
cmistake(u, ord, 114, MSG_EVENT);
@ -3232,7 +3300,8 @@ int renumber_cmd(unit * u, order * ord)
s = getstrtoken();
if (*s == 0) {
i = newcontainerid();
} else {
}
else {
i = atoi36((const char *)s);
if (i <= 0 || i > MAX_CONTAINER_NR) {
cmistake(u, ord, 114, MSG_EVENT);
@ -3313,7 +3382,8 @@ static building *age_building(building * b)
ADDMSG(&r->msgs,
msg_message("astralshield_activate", "region unit", r, mage));
}
} else if (mage != NULL) {
}
else if (mage != NULL) {
int sk = effskill(mage, SK_MAGIC);
c->duration = _max(c->duration, sk / 2);
c->vigour = _max(c->vigour, sk);
@ -3364,10 +3434,12 @@ static void age_region(region * r)
region_set_morale(r, r->land->morale + 1, turn);
}
}
} else if (r->land->morale > maxmorale) {
}
else if (r->land->morale > maxmorale) {
region_set_morale(r, r->land->morale - 1, turn);
}
} else if (r->land->morale > MORALE_DEFAULT) {
}
else if (r->land->morale > MORALE_DEFAULT) {
region_set_morale(r, r->land->morale - 1, turn);
}
}
@ -3539,7 +3611,8 @@ void new_units(void)
msg_feedback(u, makeord,
"too_many_units_in_alliance",
"allowed", maxunits(u->faction)));
} else {
}
else {
ADDMSG(&u->faction->msgs,
msg_feedback(u, makeord,
"too_many_units_in_faction",
@ -3605,7 +3678,8 @@ void check_long_orders(unit * u)
for (ord = u->orders; ord; ord = ord->next) {
if (getkeyword(ord) == NOKEYWORD) {
cmistake(u, ord, 22, MSG_EVENT);
} else if (is_long(ord)) {
}
else if (is_long(ord)) {
keyword_t longorder = getkeyword(ord);
if (otherorder != MAXKEYWORDS) {
switch (longorder) {
@ -3617,7 +3691,8 @@ void check_long_orders(unit * u)
case K_BUY:
if (otherorder == K_SELL) {
otherorder = K_BUY;
} else {
}
else {
cmistake(u, ord, 52, MSG_EVENT);
}
break;
@ -3629,7 +3704,8 @@ void check_long_orders(unit * u)
default:
cmistake(u, ord, 52, MSG_EVENT);
}
} else {
}
else {
otherorder = longorder;
}
}
@ -3647,7 +3723,8 @@ void update_long_order(unit * u)
if (hunger) {
/* Hungernde Einheiten führen NUR den default-Befehl aus */
set_order(&u->thisorder, default_order(u->faction->locale));
} else {
}
else {
check_long_orders(u);
}
/* check all orders for a potential new long order this round: */
@ -3668,11 +3745,13 @@ void update_long_order(unit * u)
/* Über dieser Zeile nur Befehle, die auch eine idle Faction machen darf */
if (idle(u->faction)) {
set_order(&u->thisorder, default_order(u->faction->locale));
} else {
}
else {
set_order(&u->thisorder, copy_order(ord));
}
break;
} else {
}
else {
keyword_t keyword = getkeyword(ord);
switch (keyword) {
/* Wenn gehandelt wird, darf kein langer Befehl ausgeführt
@ -3733,7 +3812,8 @@ use_item(unit * u, const item_type * itype, int amount, struct order *ord)
return EUNUSABLE;
}
return itype->use(u, itype, amount, ord);
} else {
}
else {
if (itype->useonother == NULL) {
return EUNUSABLE;
}
@ -3843,7 +3923,8 @@ static void remove_exclusive(order ** ordp)
*ordp = ord->next;
ord->next = NULL;
free_order(ord);
} else {
}
else {
ordp = &ord->next;
}
}
@ -3880,7 +3961,8 @@ void defaultorders(void)
}
if (new_order)
addlist(&u->old_orders, new_order);
} else
}
else
ordp = &ord->next;
}
}
@ -3986,11 +4068,13 @@ int use_cmd(unit * u, struct order *ord)
/* BENUTZE ALLES Yanxspirit */
n = INT_MAX;
t = getstrtoken();
} else {
}
else {
/* BENUTZE Yanxspirit */
n = 1;
}
} else {
}
else {
/* BENUTZE 42 Yanxspirit */
t = getstrtoken();
}
@ -4021,7 +4105,8 @@ int pay_cmd(unit * u, struct order *ord)
{
if (!u->building) {
cmistake(u, ord, 6, MSG_EVENT);
} else {
}
else {
param_t p;
init_tokens(ord);
skip_token();
@ -4030,7 +4115,8 @@ int pay_cmd(unit * u, struct order *ord)
unit *owner = building_owner(u->building);
if (owner->no != u->no) {
cmistake(u, ord, 1222, MSG_EVENT);
} else {
}
else {
u->building->flags |= BLD_DONTPAY;
}
}
@ -4090,7 +4176,8 @@ int claim_cmd(unit * u, struct order *ord)
n = atoi((const char *)t);
if (n == 0) {
n = 1;
} else {
}
else {
t = getstrtoken();
}
itype = finditemtype(t, u->faction->locale);
@ -4102,7 +4189,8 @@ int claim_cmd(unit * u, struct order *ord)
i_change(iclaim, itype, -n);
i_change(&u->items, itype, n);
}
} else {
}
else {
cmistake(u, ord, 43, MSG_PRODUCE);
}
return 0;
@ -4275,15 +4363,18 @@ void process(void)
&& r_insectstalled(r)
&& !is_cursed(u->attribs, C_KAELTESCHUTZ, 0)) {
ord = NULL;
} else if (LongHunger(u)) {
}
else if (LongHunger(u)) {
cmistake(u, ord, 224, MSG_MAGIC);
ord = NULL;
} else if (fval(u, UFL_LONGACTION)) {
}
else if (fval(u, UFL_LONGACTION)) {
/* this message was already given in laws.update_long_order
cmistake(u, ord, 52, MSG_PRODUCE);
*/
ord = NULL;
} else if (fval(r->terrain, SEA_REGION)
}
else if (fval(r->terrain, SEA_REGION)
&& u_race(u) != get_race(RC_AQUARIAN)
&& !(u_race(u)->flags & RCF_SWIM)) {
/* error message disabled by popular demand */
@ -4327,7 +4418,8 @@ void process(void)
if (g->members == 0) {
*gp = g->next;
free_group(g);
} else
}
else
gp = &g->next;
}
}
@ -4371,7 +4463,8 @@ int siege_cmd(unit * u, order * ord)
if (eff_skill(u, SK_CATAPULT, r) >= 1) {
katapultiere = d;
d *= eff_skill(u, SK_CATAPULT, r);
} else {
}
else {
d = 0;
}
@ -4407,7 +4500,8 @@ int siege_cmd(unit * u, order * ord)
/* send message to the entire region */
ADDMSG(&r->msgs, msg_message("siege_catapults",
"unit building destruction", u, b, d));
} else {
}
else {
/* send message to the entire region */
ADDMSG(&r->msgs, msg_message("siege", "unit building", u, b));
}
@ -4650,7 +4744,8 @@ int writepasswd(void)
F = fopen(zText, "w");
if (!F) {
perror(zText);
} else {
}
else {
faction *f;
log_info("writing passwords...");
@ -4697,10 +4792,23 @@ void update_subscriptions(void)
fclose(F);
}
const char *confpath = 0;
int init_data(const char *filename, const char *catalog)
{
char filepath[MAX_PATH], catpath[MAX_PATH];
int l;
if (confpath) {
if (filename) {
_snprintf(filepath, sizeof(filepath), "%s/%s", confpath, filename);
filename = filepath;
}
if (catalog) {
_snprintf(catpath, sizeof(catpath), "%s/%s", confpath, catalog);
catalog = catpath;
}
}
l = read_xml(filename, catalog);
init_locales();
if (l)

View File

@ -41,6 +41,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <wctype.h>
#include <iniparser.h>
extern const char *confpath;
static const char *logfile = "eressea.log";
static const char *luafile = 0;
static const char *inifile = "eressea.ini";
@ -60,8 +61,9 @@ static void parse_config(const char *filename)
#endif
/* excerpt from [config] (the rest is used in bindings.c) */
game_name = iniparser_getstring(d, "config:game", game_name);
} else {
log_warning("could not open configuration file %s\n", filename);
}
else {
log_error("could not open configuration file %s\n", filename);
}
global.inifile = d;
}
@ -101,25 +103,33 @@ static int parse_args(int argc, char **argv, int *exitcode)
for (i = 1; i != argc; ++i) {
if (argv[i][0] != '-') {
luafile = argv[i];
} else if (argv[i][1] == '-') { /* long format */
}
else if (argv[i][1] == '-') { /* long format */
if (strcmp(argv[i] + 2, "version") == 0) {
printf("\n%s PBEM host\n"
"Copyright (C) 1996-2005 C. Schlittchen, K. Zedel, E. Rehling, H. Peters.\n\n"
"Compilation: " __DATE__ " at " __TIME__ "\nVersion: %d.%d.%d\n\n",
global.gamename, VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD);
#ifdef USE_CURSES
} else if (strcmp(argv[i] + 2, "color") == 0) {
}
else if (strcmp(argv[i] + 2, "color") == 0) {
/* force the editor to have colors */
force_color = 1;
#endif
} else if (strcmp(argv[i] + 2, "help") == 0) {
}
else if (strcmp(argv[i] + 2, "help") == 0) {
return usage(argv[0], NULL);
} else {
}
else {
return usage(argv[0], argv[i]);
}
} else {
}
else {
const char *arg;
switch (argv[i][1]) {
case 'c':
i = get_arg(argc, argv, 2, i, &confpath, 0);
break;
case 'f':
i = get_arg(argc, argv, 2, i, &luafile, 0);
break;
@ -241,17 +251,27 @@ extern void bind_monsters(struct lua_State *L);
int main(int argc, char **argv)
{
int err, result = 0;
char inipath[MAX_PATH];
int err = 0;
lua_State *L;
setup_signal_handler();
parse_config(inifile);
log_open(logfile);
err = parse_args(argc, argv, &result);
if (err) {
return result;
/* parse args once to read config file location */
if (parse_args(argc, argv, &err) != 0) {
return err;
}
/* ini file sets defaults for arguments*/
if (confpath) {
_snprintf(inipath, sizeof(inipath), "%s/%s", confpath, inifile);
parse_config(inipath);
}
else {
parse_config(inifile);
}
/* parse arguments again, to override ini file */
parse_args(argc, argv, &err);
log_open(logfile);
locale_init();
#ifdef CRTDBG