* Bugfix MACHE

This commit is contained in:
Enno Rehling 2002-03-10 10:09:16 +00:00
parent a9c1340f1e
commit c78c5efafb
4 changed files with 36 additions and 140 deletions

View File

@ -543,23 +543,21 @@ cr_output_unit(FILE * F, const region * r,
{ {
/* print faction information */ /* print faction information */
const faction * sf = visible_faction(f,u); const faction * sf = visible_faction(f,u);
const attrib *atyp = a_find(u->faction->attribs, &at_raceprefix);
const attrib *a = a_find(u->attribs, &at_group);
if (a) {
const attrib *agrp = a_find(((const group*)a->data.v)->attribs, &at_raceprefix);
if (agrp) atyp = agrp;
}
if (u->faction == f || omniscient(f)) { if (u->faction == f || omniscient(f)) {
const attrib *a_otherfaction = a_find(u->attribs, &at_otherfaction); const attrib *a_otherfaction = a_find(u->attribs, &at_otherfaction);
/* my own faction, full info */ /* my own faction, full info */
const attrib * a = a_find(u->attribs, &at_group);
const attrib * ap = 0; const attrib * ap = 0;
if (a) { if (a) {
const group * g = (const group*)a->data.v; const group * g = (const group*)a->data.v;
ap = a_find(g->attribs, &at_raceprefix); ap = a_find(g->attribs, &at_raceprefix);
fprintf(F, "%d;gruppe\n", g->gid); fprintf(F, "%d;gruppe\n", g->gid);
} }
if (ap==NULL) {
ap = a_find(u->faction->attribs, &at_raceprefix);
}
if (ap) {
const char * name = (const char*)ap->data.v;
fprintf(F, "\"%s\";typprefix\n", add_translation(name, LOC(f->locale, name)));
}
fprintf(F, "%d;Partei\n", u->faction->no); fprintf(F, "%d;Partei\n", u->faction->no);
if (sf!=u->faction) fprintf(F, "%d;Verkleidung\n", sf->no); if (sf!=u->faction) fprintf(F, "%d;Verkleidung\n", sf->no);
if (fval(u, FL_PARTEITARNUNG)) if (fval(u, FL_PARTEITARNUNG))
@ -567,7 +565,6 @@ cr_output_unit(FILE * F, const region * r,
if (a_otherfaction) if (a_otherfaction)
fprintf(F, "%d;Anderepartei\n", a_otherfaction->data.i); fprintf(F, "%d;Anderepartei\n", a_otherfaction->data.i);
} else { } else {
const attrib * a = a_find(u->attribs, &at_group);
if (fval(u, FL_PARTEITARNUNG)) { if (fval(u, FL_PARTEITARNUNG)) {
/* faction info is hidden */ /* faction info is hidden */
fprintf(F, "%d;Parteitarnung\n", i2b(fval(u, FL_PARTEITARNUNG))); fprintf(F, "%d;Parteitarnung\n", i2b(fval(u, FL_PARTEITARNUNG)));
@ -578,19 +575,13 @@ cr_output_unit(FILE * F, const region * r,
fprintf(F, "1;Verraeter\n"); fprintf(F, "1;Verraeter\n");
} }
} }
if (a) { }
const attrib *agrp = a_find(((const group*)a->data.v)->attribs, &at_raceprefix); if (atyp) {
if (agrp==NULL) { const char * name = (const char*)atyp->data.v;
agrp = a_find(u->faction->attribs, &at_raceprefix); fprintf(F, "\"%s\";typprefix\n", add_translation(name, LOC(f->locale, name)));
}
if (agrp) {
const char * name = (const char*)agrp->data.v;
fprintf(F, "\"%s\";typprefix\n", add_translation(name, LOC(f->locale, name)));
}
}
} }
} }
if(u->faction != f && a_fshidden if (u->faction != f && a_fshidden
&& a_fshidden->data.ca[0] == 1 && effskill(u, SK_STEALTH) >= 6) { && a_fshidden->data.ca[0] == 1 && effskill(u, SK_STEALTH) >= 6) {
fprintf(F, "-1;Anzahl\n"); fprintf(F, "-1;Anzahl\n");
} else { } else {

View File

@ -1858,7 +1858,7 @@ create_item(unit * u, const item_type * itype, int want)
else { else {
const potion_type * ptype = resource2potion(itype->rtype); const potion_type * ptype = resource2potion(itype->rtype);
if (ptype!=NULL) create_potion(u, ptype, want); if (ptype!=NULL) create_potion(u, ptype, want);
else if (itype->construction) manufacture(u, itype, want); else if (itype->construction && itype->construction->materials) manufacture(u, itype, want);
else cmistake(u, findorder(u, u->thisorder), 125, MSG_PRODUCE); else cmistake(u, findorder(u, u->thisorder), 125, MSG_PRODUCE);
} }
} }

View File

@ -1474,7 +1474,11 @@ init_olditems(void)
if (itemdata[i].benutze_funktion) { if (itemdata[i].benutze_funktion) {
itype->use = use_olditem; itype->use = use_olditem;
} }
itype->construction = con; if (con->materials) {
itype->construction = con;
} else {
free(con);
}
olditemtype[i] = itype; olditemtype[i] = itype;
oldresourcetype[item2res(i)] = rtype; oldresourcetype[item2res(i)] = rtype;
} }

View File

@ -132,128 +132,28 @@ verify_owners(boolean bOnce)
if (fun == 0) a_add(&global.attribs, make_key(atoi36(magic))); \ if (fun == 0) a_add(&global.attribs, make_key(atoi36(magic))); \
} \ } \
} }
#if 0
static void int
fix_vertrautenmagie(void) warn_items(void)
{ {
region *r; boolean found = 0;
for(r=regions; r; r=r->next) { region * r;
unit *u; for (r=regions;r;r=r->next) {
for(u=r->units;u;u=u->next) { unit * u;
sc_mage *m = get_mage(u); for (u=r->units;u;u=u->next) {
if (m != NULL) { item * itm;
for (itm=u->items;itm;itm=itm->next) {
/* Vertraute und Monster haben alle Magiegebiet M_GRAU */ if (itm->number>100000) {
if (m->magietyp != M_GRAU) continue; found = 1;
log_error(("Einheit %s hat %u %s\n",
switch(u->race) { unitid(u), itm->number,
case new_race[RC_PSEUDODRAGON]: resourcename(itm->type->rtype, 0)));
if(!getspell(u, SPL_FLEE)) addspell(u, SPL_FLEE);
if(!getspell(u, SPL_SLEEP)) addspell(u, SPL_SLEEP);
if(!getspell(u, SPL_FRIGHTEN)) addspell(u, SPL_FRIGHTEN);
break;
case new_race[RC_NYMPH]:
if(!getspell(u, SPL_SEDUCE)) addspell(u, SPL_SEDUCE);
if(!getspell(u, SPL_CALM_MONSTER)) addspell(u, SPL_CALM_MONSTER);
if(!getspell(u, SPL_SONG_OF_CONFUSION)) addspell(u, SPL_SONG_OF_CONFUSION);
if(!getspell(u, SPL_DENYATTACK)) addspell(u, SPL_DENYATTACK);
break;
case new_race[RC_UNICORN]:
if(!getspell(u, SPL_RESISTMAGICBONUS)) addspell(u, SPL_RESISTMAGICBONUS);
if(!getspell(u, SPL_SONG_OF_PEACE)) addspell(u, SPL_SONG_OF_PEACE);
if(!getspell(u, SPL_CALM_MONSTER)) addspell(u, SPL_CALM_MONSTER);
if(!getspell(u, SPL_HERO)) addspell(u, SPL_HERO);
if(!getspell(u, SPL_HEALINGSONG)) addspell(u, SPL_HEALINGSONG);
if(!getspell(u, SPL_DENYATTACK)) addspell(u, SPL_DENYATTACK);
break;
case new_race[RC_WRAITH]:
if(!getspell(u, SPL_STEALAURA)) addspell(u, SPL_STEALAURA);
if(!getspell(u, SPL_FRIGHTEN)) addspell(u, SPL_FRIGHTEN);
if(!getspell(u, SPL_SUMMONUNDEAD)) addspell(u, SPL_SUMMONUNDEAD);
break;
case new_race[RC_IMP]:
if(!getspell(u, SPL_STEALAURA)) addspell(u, SPL_STEALAURA);
break;
case new_race[RC_DREAMCAT]:
if(!getspell(u, SPL_ILL_SHAPESHIFT)) addspell(u, SPL_ILL_SHAPESHIFT);
if(!getspell(u, SPL_TRANSFERAURA_TRAUM)) addspell(u, SPL_TRANSFERAURA_TRAUM);
break;
case new_race[RC_FEY]:
if(!getspell(u, SPL_DENYATTACK)) addspell(u, SPL_DENYATTACK);
if(!getspell(u, SPL_CALM_MONSTER)) addspell(u, SPL_CALM_MONSTER);
if(!getspell(u, SPL_SEDUCE)) addspell(u, SPL_SEDUCE);
break;
/* kein break, ein Wyrm hat alle Drachensprüche */
case new_race[RC_WYRM]:
if(!getspell(u, SPL_WYRMODEM)) addspell(u, SPL_WYRMODEM);
case new_race[RC_DRAGON]:
if(!getspell(u, SPL_DRAGONODEM)) addspell(u, SPL_DRAGONODEM);
case new_race[RC_FIREDRAGON]:
case new_race[RC_SEASERPENT]:
if(!getspell(u, SPL_FIREDRAGONODEM)) addspell(u, SPL_FIREDRAGONODEM);
break;
} }
} }
} }
} }
return found;
} }
#endif
#if 0
static void
addunitsilver(unit * u, int count, int mode)
{
if (mode)
change_money(u, count * u->number);
else
u->money = count * u->number;
}
static void
addunititems(unit * u, int count, char item, int mode)
{
if (mode)
change_item(u, item, count * u->number);
else
set_item(u, item, count * u->number);
}
static void
addfactionsilver(faction * f, int count, int mode)
{
unit * u;
for (u=f->units;u;u=u->nextF) {
addunitsilver(u, count, mode);
}
}
static void
addfactionitems(faction * f, int count, char item, int mode)
{
unit * u;
for (u=f->units;u;u=u->nextF) {
addunititems(u, count, item, mode);
}
}
static void
showallspells(void)
{
faction * f;
for (f=factions;f;f=f->next) {
if (f->no==MONSTER_FACTION) continue;
a_removeall(&f->attribs, &at_seenspell);
}
}
static void
add_magrathea(void)
{
unit * tans = ufindhash(atoi36("tans"));
if (tans) u_setfaction(tans, findfaction(999));
}
#endif
#ifdef XMAS1999 #ifdef XMAS1999
#include "race.h" #include "race.h"
@ -2682,7 +2582,7 @@ warn_password(void)
ADDMSG(&f->msgs, msg_message("msg_errors", "string", ADDMSG(&f->msgs, msg_message("msg_errors", "string",
"Dein Passwort enthält Zeichen, die bei der Nachsendung " "Dein Passwort enthält Zeichen, die bei der Nachsendung "
"von Reports Probleme bereiten können. Bitte wähle ein neues " "von Reports Probleme bereiten können. Bitte wähle ein neues "
"Passwort, bevorzugt nur aus Buchstaben un Zahlen bestehend.")); "Passwort, bevorzugt nur aus Buchstaben und Zahlen bestehend."));
} }
f = f->next; f = f->next;
} }
@ -2750,6 +2650,7 @@ korrektur(void)
do_once("fquc", fix_questcoors()); do_once("fquc", fix_questcoors());
do_once("fsee", fix_seeds()); do_once("fsee", fix_seeds());
do_once("orc2", orc_conversion2()); do_once("orc2", orc_conversion2());
do_once("witm", warn_items());
warn_password(); warn_password();
/* seems something fishy is going on, do this just /* seems something fishy is going on, do this just