This commit is contained in:
Enno Rehling 2014-03-06 19:14:16 -08:00
commit 804b8192ea
5 changed files with 60 additions and 40 deletions

1
.gitattributes vendored
View File

@ -1,3 +1,4 @@
*.[hc] text
*.json text *.json text
*.xml text *.xml text
*.py text *.py text

View File

@ -65,7 +65,7 @@ void spy_message(int spy, const unit * u, const unit * target)
target, str)); target, str));
if (spy > 20) { if (spy > 20) {
sc_mage *mage = get_mage(target); sc_mage *mage = get_mage(target);
/* bei Magiern Zaubersprüche und Magiegebiet */ /* for mages, spells and magic school */
if (mage) { if (mage) {
ADDMSG(&u->faction->msgs, msg_message("spyreport_mage", "target type", ADDMSG(&u->faction->msgs, msg_message("spyreport_mage", "target type",
target, magic_school[mage->magietyp])); target, magic_school[mage->magietyp]));
@ -74,7 +74,7 @@ void spy_message(int spy, const unit * u, const unit * target)
if (spy > 6) { if (spy > 6) {
faction *fv = visible_faction(u->faction, target); faction *fv = visible_faction(u->faction, target);
if (fv && fv != target->faction) { if (fv && fv != target->faction) {
/* wahre Partei */ /* true faction */
ADDMSG(&u->faction->msgs, msg_message("spyreport_faction", ADDMSG(&u->faction->msgs, msg_message("spyreport_faction",
"target faction", target, target->faction)); "target faction", target, target->faction));
ql_set_insert(&u->faction->seen_factions, target->faction); ql_set_insert(&u->faction->seen_factions, target->faction);
@ -138,9 +138,9 @@ int spy_cmd(unit * u, struct order *ord)
cmistake(u, u->thisorder, 39, MSG_EVENT); cmistake(u, u->thisorder, 39, MSG_EVENT);
return 0; return 0;
} }
/* Die Grundchance für einen erfolgreichen Spionage-Versuch ist 10%. /* Die Grundchance fuer einen erfolgreichen Spionage-Versuch ist 10%.
* Für jeden Talentpunkt, den das Spionagetalent das Tarnungstalent * Fuer jeden Talentpunkt, den das Spionagetalent das Tarnungstalent
* des Opfers übersteigt, erhöht sich dieses um 5%*/ * des Opfers uebersteigt, erhoeht sich dieses um 5%*/
spy = eff_skill(u, SK_SPY, r) - eff_skill(target, SK_STEALTH, r); spy = eff_skill(u, SK_SPY, r) - eff_skill(target, SK_STEALTH, r);
spychance = 0.1 + MAX(spy * 0.05, 0.0); spychance = 0.1 + MAX(spy * 0.05, 0.0);
@ -160,8 +160,8 @@ int spy_cmd(unit * u, struct order *ord)
observe = MIN(observe, 0); observe = MIN(observe, 0);
} }
/* Anschließend wird - unabhängig vom Erfolg - gewürfelt, ob der /* Anschliessend wird - unabhaengig vom Erfolg - gewuerfelt, ob der
* Spionageversuch bemerkt wurde. Die Wahrscheinlich dafür ist (100 - * Spionageversuch bemerkt wurde. Die Wahrscheinlich dafuer ist (100 -
* SpionageSpion*5 + WahrnehmungOpfer*2)%. */ * SpionageSpion*5 + WahrnehmungOpfer*2)%. */
observechance = 1.0 - (eff_skill(u, SK_SPY, r) * 0.05) observechance = 1.0 - (eff_skill(u, SK_SPY, r) * 0.05)
+ (eff_skill(target, SK_PERCEPTION, r) * 0.02); + (eff_skill(target, SK_PERCEPTION, r) * 0.02);
@ -238,7 +238,7 @@ int setstealth_cmd(unit * u, struct order *ord)
trace = findrace(s, u->faction->locale); trace = findrace(s, u->faction->locale);
if (trace) { if (trace) {
/* Dämonen können sich nur als andere Spielerrassen tarnen */ /* demons can cloak as other player-races */
if (u_race(u) == new_race[RC_DAEMON]) { if (u_race(u) == new_race[RC_DAEMON]) {
race_t allowed[] = { RC_DWARF, RC_ELF, RC_ORC, RC_GOBLIN, RC_HUMAN, race_t allowed[] = { RC_DWARF, RC_ELF, RC_ORC, RC_GOBLIN, RC_HUMAN,
RC_TROLL, RC_DAEMON, RC_INSECT, RC_HALFLING, RC_CAT, RC_AQUARIAN, RC_TROLL, RC_DAEMON, RC_INSECT, RC_HALFLING, RC_CAT, RC_AQUARIAN,
@ -256,7 +256,7 @@ int setstealth_cmd(unit * u, struct order *ord)
return 0; return 0;
} }
/* Singdrachen können sich nur als Drachen tarnen */ /* Singdrachen koennen sich nur als Drachen tarnen */
if (u_race(u) == new_race[RC_SONGDRAGON] if (u_race(u) == new_race[RC_SONGDRAGON]
|| u_race(u) == new_race[RC_BIRTHDAYDRAGON]) { || u_race(u) == new_race[RC_BIRTHDAYDRAGON]) {
if (trace == new_race[RC_SONGDRAGON] || trace == new_race[RC_FIREDRAGON] if (trace == new_race[RC_SONGDRAGON] || trace == new_race[RC_FIREDRAGON]
@ -268,7 +268,7 @@ int setstealth_cmd(unit * u, struct order *ord)
return 0; return 0;
} }
/* Dämomen und Illusionsparteien können sich als andere race tarnen */ /* Daemomen und Illusionsparteien koennen sich als andere race tarnen */
if (u_race(u)->flags & RCF_SHAPESHIFT) { if (u_race(u)->flags & RCF_SHAPESHIFT) {
if (playerrace(trace)) { if (playerrace(trace)) {
u->irace = trace; u->irace = trace;

View File

@ -86,7 +86,7 @@ magic_t getmagicskill(const struct locale * lang)
} }
/* ------------------------------------------------------------- */ /* ------------------------------------------------------------- */
/* Vertraute und Kröten sind keine Migranten */ /* familiars and toads are not migrants */
bool is_migrant(unit * u) bool is_migrant(unit * u)
{ {
if (u_race(u) == u->faction->race) if (u_race(u) == u->faction->race)
@ -131,7 +131,7 @@ int study_cost(unit * u, skill_t sk)
case SK_ALCHEMY: case SK_ALCHEMY:
return 200; return 200;
case SK_MAGIC: /* Die Magiekosten betragen 50+Summe(50*Stufe) */ case SK_MAGIC: /* Die Magiekosten betragen 50+Summe(50*Stufe) */
/* 'Stufe' ist dabei die nächste zu erreichende Stufe */ /* 'Stufe' ist dabei die naechste zu erreichende Stufe */
stufe = 1 + get_level(u, SK_MAGIC); stufe = 1 + get_level(u, SK_MAGIC);
return k * (1 + ((stufe + 1) * stufe / 2)); return k * (1 + ((stufe + 1) * stufe / 2));
default: default:
@ -181,10 +181,10 @@ teach_unit(unit * teacher, unit * student, int nteaching, skill_t sk,
int n; int n;
/* learning sind die Tage, die sie schon durch andere Lehrer zugute /* learning sind die Tage, die sie schon durch andere Lehrer zugute
* geschrieben bekommen haben. Total darf dies nicht über 30 Tage pro Mann * geschrieben bekommen haben. Total darf dies nicht ueber 30 Tage pro Mann
* steigen. * steigen.
* *
* n ist die Anzahl zusätzlich gelernter Tage. n darf max. die Differenz * n ist die Anzahl zusaetzlich gelernter Tage. n darf max. die Differenz
* von schon gelernten Tagen zum MAX(30 Tage pro Mann) betragen. */ * von schon gelernten Tagen zum MAX(30 Tage pro Mann) betragen. */
if (magic_lowskill(student)) { if (magic_lowskill(student)) {
@ -219,36 +219,36 @@ teach_unit(unit * teacher, unit * student, int nteaching, skill_t sk,
teach->teachers[index] = NULL; teach->teachers[index] = NULL;
teach->value += n; teach->value += n;
/* Solange Akademien größenbeschränkt sind, sollte Lehrer und /* Solange Akademien groessenbeschraenkt sind, sollte Lehrer und
* Student auch in unterschiedlichen Gebäuden stehen rfen */ * Student auch in unterschiedlichen Gebaeuden stehen duerfen */
if (btype == bt_find("academy") if (btype == bt_find("academy")
&& student->building && student->building->type == bt_find("academy")) { && student->building && student->building->type == bt_find("academy")) {
int j = study_cost(student, sk); int j = study_cost(student, sk);
j = MAX(50, j * 2); j = MAX(50, j * 2);
/* kann Einheit das zahlen? */ /* kann Einheit das zahlen? */
if (get_pooled(student, oldresourcetype[R_SILVER], GET_DEFAULT, j) >= j) { if (get_pooled(student, oldresourcetype[R_SILVER], GET_DEFAULT, j) >= j) {
/* Jeder Schüler zusätzlich +10 Tage wenn in Uni. */ /* Jeder Schueler zusaetzlich +10 Tage wenn in Uni. */
teach->value += (n / 30) * 10; /* learning erhöhen */ teach->value += (n / 30) * 10; /* learning erhoehen */
/* Lehrer zusätzlich +1 Tag pro Schüler. */ /* Lehrer zusaetzlich +1 Tag pro Schueler. */
if (academy) if (academy)
*academy += n; *academy += n;
} /* sonst nehmen sie nicht am Unterricht teil */ } /* sonst nehmen sie nicht am Unterricht teil */
} }
/* Teaching ist die Anzahl Leute, denen man noch was beibringen kann. Da /* Teaching ist die Anzahl Leute, denen man noch was beibringen kann. Da
* hier nicht n verwendet wird, werden die Leute gezählt und nicht die * hier nicht n verwendet wird, werden die Leute gezaehlt und nicht die
* effektiv gelernten Tage. -> FALSCH ? (ENNO) * effektiv gelernten Tage. -> FALSCH ? (ENNO)
* *
* Eine Einheit A von 11 Mann mit Talent 0 profitiert vom ersten Lehrer B * Eine Einheit A von 11 Mann mit Talent 0 profitiert vom ersten Lehrer B
* also 10x30=300 tage, und der zweite Lehrer C lehrt für nur noch 1x30=30 * also 10x30=300 tage, und der zweite Lehrer C lehrt fuer nur noch 1x30=30
* Tage (damit das Maximum von 11x30=330 nicht überschritten wird). * Tage (damit das Maximum von 11x30=330 nicht ueberschritten wird).
* *
* Damit es aber in der Ausführung nicht auf die Reihenfolge drauf ankommt, * Damit es aber in der Ausfuehrung nicht auf die Reihenfolge drauf ankommt,
* darf der zweite Lehrer C keine weiteren Einheiten D mehr lehren. Also * darf der zweite Lehrer C keine weiteren Einheiten D mehr lehren. Also
* wird student 30 Tage gutgeschrieben, aber teaching sinkt auf 0 (300-11x30 <= * wird student 30 Tage gutgeschrieben, aber teaching sinkt auf 0 (300-11x30 <=
* 0). * 0).
* *
* Sonst träte dies auf: * Sonst traete dies auf:
* *
* A: lernt B: lehrt A C: lehrt A D D: lernt * A: lernt B: lehrt A C: lehrt A D D: lernt
* *
@ -258,11 +258,11 @@ teach_unit(unit * teacher, unit * student, int nteaching, skill_t sk,
* Ist C aber vor B dran, lehrt C 300 tage an A, und 0 tage an D, * Ist C aber vor B dran, lehrt C 300 tage an A, und 0 tage an D,
* und B lehrt auch 0 tage an A. * und B lehrt auch 0 tage an A.
* *
* Deswegen darf C D nie lehren dürfen. * Deswegen darf C D nie lehren duerfen.
* *
* -> Das ist wirr. wer hat das entworfen? * -> Das ist wirr. wer hat das entworfen?
* Besser wäre, man macht erst vorab alle zuordnungen, und dann * Besser waere, man macht erst vorab alle zuordnungen, und dann
* die Talentänderung (enno). * die Talentaenderung (enno).
*/ */
nteaching = MAX(0, nteaching - student->number * 30); nteaching = MAX(0, nteaching - student->number * 30);
@ -303,7 +303,7 @@ int teach_cmd(unit * u, struct order *ord)
if ((i = get_effect(u, oldpotiontype[P_FOOL])) > 0) { /* Trank "Dumpfbackenbrot" */ if ((i = get_effect(u, oldpotiontype[P_FOOL])) > 0) { /* Trank "Dumpfbackenbrot" */
i = MIN(i, u->number * TEACHNUMBER); i = MIN(i, u->number * TEACHNUMBER);
/* Trank wirkt pro Schüler, nicht pro Lehrer */ /* Trank wirkt pro Schueler, nicht pro Lehrer */
teaching -= i * 30; teaching -= i * 30;
change_effect(u, oldpotiontype[P_FOOL], -i); change_effect(u, oldpotiontype[P_FOOL], -i);
j = teaching / 30; j = teaching / 30;
@ -434,7 +434,7 @@ int teach_cmd(unit * u, struct order *ord)
|| alliedunit(u2, u->faction, HELP_GUARD); || alliedunit(u2, u->faction, HELP_GUARD);
/* Neuen Befehl zusammenbauen. TEMP-Einheiten werden automatisch in /* Neuen Befehl zusammenbauen. TEMP-Einheiten werden automatisch in
* ihre neuen Nummern übersetzt. */ * ihre neuen Nummern uebersetzt. */
if (zOrder[0]) if (zOrder[0])
strcat(zOrder, " "); strcat(zOrder, " ");
strcat(zOrder, unitid(u2)); strcat(zOrder, unitid(u2));
@ -560,7 +560,7 @@ int learn_cmd(unit * u, order * ord)
cmistake(u, ord, 771, MSG_EVENT); cmistake(u, ord, 771, MSG_EVENT);
return 0; return 0;
} }
/* Hack: Talente mit Malus -99 können nicht gelernt werden */ /* Hack: Talente mit Malus -99 koennen nicht gelernt werden */
if (u_race(u)->bonus[sk] == -99) { if (u_race(u)->bonus[sk] == -99) {
cmistake(u, ord, 771, MSG_EVENT); cmistake(u, ord, 771, MSG_EVENT);
return 0; return 0;
@ -574,7 +574,7 @@ int learn_cmd(unit * u, order * ord)
} }
} }
/* snotlings können Talente nur bis T8 lernen */ /* snotlings koennen Talente nur bis T8 lernen */
if (u_race(u) == new_race[RC_SNOTLING]) { if (u_race(u) == new_race[RC_SNOTLING]) {
if (get_level(u, sk) >= 8) { if (get_level(u, sk) >= 8) {
cmistake(u, ord, 308, MSG_EVENT); cmistake(u, ord, 308, MSG_EVENT);
@ -588,9 +588,9 @@ int learn_cmd(unit * u, order * ord)
teach = (teaching_info *) a->data.v; teach = (teaching_info *) a->data.v;
} }
/* keine kostenpflichtigen Talente für Migranten. Vertraute sind /* keine kostenpflichtigen Talente fuer Migranten. Vertraute sind
* keine Migranten, wird in is_migrant abgefangen. Vorsicht, * keine Migranten, wird in is_migrant abgefangen. Vorsicht,
* studycost darf hier noch nicht durch Akademie erhöht sein */ * studycost darf hier noch nicht durch Akademie erhoeht sein */
if (studycost > 0 && !ExpensiveMigrants() && is_migrant(u)) { if (studycost > 0 && !ExpensiveMigrants() && is_migrant(u)) {
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "error_migrants_nolearn", ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "error_migrants_nolearn",
"")); ""));
@ -612,8 +612,8 @@ int learn_cmd(unit * u, order * ord)
return 0; return 0;
} }
if (is_familiar(u)) { if (is_familiar(u)) {
/* Vertraute zählen nicht zu den Magiern einer Partei, /* Vertraute zaehlen nicht zu den Magiern einer Partei,
* können aber nur Graue Magie lernen */ * koennen aber nur Graue Magie lernen */
mtyp = M_GRAY; mtyp = M_GRAY;
if (!is_mage(u)) if (!is_mage(u))
create_mage(u, mtyp); create_mage(u, mtyp);
@ -628,12 +628,12 @@ int learn_cmd(unit * u, order * ord)
mtyp = getmagicskill(u->faction->locale); mtyp = getmagicskill(u->faction->locale);
if (mtyp == M_NONE || mtyp == M_GRAY) { if (mtyp == M_NONE || mtyp == M_GRAY) {
/* wurde kein Magiegebiet angegeben, wird davon /* wurde kein Magiegebiet angegeben, wird davon
* ausgegangen, daß das normal gelernt werden soll */ * ausgegangen, dass das normal gelernt werden soll */
if (u->faction->magiegebiet != 0) { if (u->faction->magiegebiet != 0) {
mtyp = u->faction->magiegebiet; mtyp = u->faction->magiegebiet;
} else { } else {
/* Es wurde kein Magiegebiet angegeben und die Partei /* Es wurde kein Magiegebiet angegeben und die Partei
* hat noch keins gewählt. */ * hat noch keins gewaehlt. */
mtyp = getmagicskill(u->faction->locale); mtyp = getmagicskill(u->faction->locale);
if (mtyp == M_NONE) { if (mtyp == M_NONE) {
cmistake(u, ord, 178, MSG_MAGIC); cmistake(u, ord, 178, MSG_MAGIC);
@ -658,7 +658,7 @@ int learn_cmd(unit * u, order * ord)
} else { } else {
/* ist schon ein Magier und kein Vertrauter */ /* ist schon ein Magier und kein Vertrauter */
if (u->faction->magiegebiet == 0) { if (u->faction->magiegebiet == 0) {
/* die Partei hat noch kein Magiegebiet gewählt. */ /* die Partei hat noch kein Magiegebiet gewaehlt. */
mtyp = getmagicskill(u->faction->locale); mtyp = getmagicskill(u->faction->locale);
if (mtyp == M_NONE) { if (mtyp == M_NONE) {
mtyp = getmagicskill(u->faction->locale); mtyp = getmagicskill(u->faction->locale);
@ -779,7 +779,7 @@ int learn_cmd(unit * u, order * ord)
} }
fset(u, UFL_LONGACTION | UFL_NOTMOVING); fset(u, UFL_LONGACTION | UFL_NOTMOVING);
/* Anzeigen neuer Tränke */ /* Anzeigen neuer Traenke */
/* Spruchlistenaktualiesierung ist in Regeneration */ /* Spruchlistenaktualiesierung ist in Regeneration */
if (sk == SK_ALCHEMY) { if (sk == SK_ALCHEMY) {

View File

@ -339,7 +339,7 @@ summary *make_summary(void)
} }
} }
/* Alles zählen */ /* count everything */
for (r = regions; r; r = r->next) { for (r = regions; r; r = r->next) {
s->pferde += rhorses(r); s->pferde += rhorses(r);

19
todo.md Normal file
View File

@ -0,0 +1,19 @@
## Eliminate non-ascii characters from the code
In Linux, file *.c will output this:
study.c: C source, ISO-8859 text
summary.c: C source, ISO-8859 text
test_eressea.c: C source, ASCII text
Let's make all the source files ASCII. In a lot of cases, that means
rewriting German comments to be English, which is also great.
## remove platform.h, use rtl.h
In Atlantis, I use a header called rtl.h to polyfill functions like
_strdup and _snprintf. I would like that to be a reusable library that
Eressea can use, and eliminate the hacks in platform.h in favor of
autoconf-style detections done by CMake (already happening for a few
things).