forked from github/server
get_skill muss has_skill sein.
This commit is contained in:
parent
605aaf51e6
commit
75771acbe1
|
@ -671,13 +671,8 @@ cr_output_unit(FILE * F, const region * r,
|
||||||
pr = 1;
|
pr = 1;
|
||||||
fprintf(F, "TALENTE\n");
|
fprintf(F, "TALENTE\n");
|
||||||
}
|
}
|
||||||
#if SKILLPOINTS
|
|
||||||
fprintf(F, "%d %d;%s\n", get_skill(u, sk), esk,
|
|
||||||
add_translation(skillname(sk, NULL), skillname(sk, f->locale)));
|
|
||||||
#else
|
|
||||||
fprintf(F, "%d %d;%s\n", u->number*level_days(get_level(u, sk)), esk,
|
fprintf(F, "%d %d;%s\n", u->number*level_days(get_level(u, sk)), esk,
|
||||||
add_translation(skillname(sk, NULL), skillname(sk, f->locale)));
|
add_translation(skillname(sk, NULL), skillname(sk, f->locale)));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* spells */
|
/* spells */
|
||||||
|
|
|
@ -430,13 +430,13 @@ recruit(region * r, unit * u, strlist * S,
|
||||||
}
|
}
|
||||||
n = geti();
|
n = geti();
|
||||||
|
|
||||||
if (get_skill(u, SK_MAGIC)) {
|
if (has_skill(u, SK_MAGIC)) {
|
||||||
/* error158;de;{unit} in {region}: '{command}' - Magier arbeiten
|
/* error158;de;{unit} in {region}: '{command}' - Magier arbeiten
|
||||||
* grundsätzlich nur alleine! */
|
* grundsätzlich nur alleine! */
|
||||||
cmistake(u, S->s, 158, MSG_EVENT);
|
cmistake(u, S->s, 158, MSG_EVENT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (get_skill(u, SK_ALCHEMY)
|
if (has_skill(u, SK_ALCHEMY)
|
||||||
&& count_skill(u->faction, SK_ALCHEMY) + n >
|
&& count_skill(u->faction, SK_ALCHEMY) + n >
|
||||||
max_skill(u->faction, SK_ALCHEMY))
|
max_skill(u->faction, SK_ALCHEMY))
|
||||||
{
|
{
|
||||||
|
@ -584,7 +584,7 @@ givemen(int n, unit * u, unit * u2, const char * cmd)
|
||||||
&& u2->faction != u->faction
|
&& u2->faction != u->faction
|
||||||
&& ucontact(u2, u) == 0) {
|
&& ucontact(u2, u) == 0) {
|
||||||
error = 73;
|
error = 73;
|
||||||
} else if (u2 && (get_skill(u, SK_MAGIC) || get_skill(u2, SK_MAGIC))) {
|
} else if (u2 && (has_skill(u, SK_MAGIC) || has_skill(u2, SK_MAGIC))) {
|
||||||
error = 158;
|
error = 158;
|
||||||
} else {
|
} else {
|
||||||
if (n > u->number) n = u->number;
|
if (n > u->number) n = u->number;
|
||||||
|
@ -607,17 +607,17 @@ givemen(int n, unit * u, unit * u2, const char * cmd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (u2 && (get_skill(u, SK_ALCHEMY) || get_skill(u2, SK_ALCHEMY))) {
|
if (u2 && (has_skill(u, SK_ALCHEMY) || has_skill(u2, SK_ALCHEMY))) {
|
||||||
|
|
||||||
k = count_skill(u2->faction, SK_ALCHEMY);
|
k = count_skill(u2->faction, SK_ALCHEMY);
|
||||||
|
|
||||||
/* Falls die Zieleinheit keine Alchemisten sind, werden sie nun
|
/* Falls die Zieleinheit keine Alchemisten sind, werden sie nun
|
||||||
* welche. */
|
* welche. */
|
||||||
if (!get_skill(u2, SK_ALCHEMY) && get_skill(u, SK_ALCHEMY) > 0)
|
if (!has_skill(u2, SK_ALCHEMY) && has_skill(u, SK_ALCHEMY))
|
||||||
k += u2->number;
|
k += u2->number;
|
||||||
|
|
||||||
/* Wenn in eine Alchemisteneinheit Personen verschoben werden */
|
/* Wenn in eine Alchemisteneinheit Personen verschoben werden */
|
||||||
if (get_skill(u2, SK_ALCHEMY) && !get_skill(u, SK_ALCHEMY))
|
if (has_skill(u2, SK_ALCHEMY) && !has_skill(u, SK_ALCHEMY))
|
||||||
k += n;
|
k += n;
|
||||||
|
|
||||||
/* Wenn Parteigrenzen überschritten werden */
|
/* Wenn Parteigrenzen überschritten werden */
|
||||||
|
@ -736,7 +736,7 @@ giveunit(region * r, unit * u, unit * u2, strlist * S)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (get_skill(u, SK_MAGIC)) {
|
if (has_skill(u, SK_MAGIC)) {
|
||||||
if (count_skill(u2->faction, SK_MAGIC) + u->number >
|
if (count_skill(u2->faction, SK_MAGIC) + u->number >
|
||||||
max_skill(u2->faction, SK_MAGIC))
|
max_skill(u2->faction, SK_MAGIC))
|
||||||
{
|
{
|
||||||
|
@ -748,7 +748,7 @@ giveunit(region * r, unit * u, unit * u2, strlist * S)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (get_skill(u, SK_ALCHEMY)
|
if (has_skill(u, SK_ALCHEMY)
|
||||||
&& count_skill(u2->faction, SK_ALCHEMY) + u->number >
|
&& count_skill(u2->faction, SK_ALCHEMY) + u->number >
|
||||||
max_skill(u2->faction, SK_ALCHEMY))
|
max_skill(u2->faction, SK_ALCHEMY))
|
||||||
{
|
{
|
||||||
|
|
|
@ -370,24 +370,6 @@ live(region * r)
|
||||||
if (!is_monstrous(u)) {
|
if (!is_monstrous(u)) {
|
||||||
int effect = get_effect(u, oldpotiontype[P_FOOL]);
|
int effect = get_effect(u, oldpotiontype[P_FOOL]);
|
||||||
if (effect > 0) { /* Trank "Dumpfbackenbrot" */
|
if (effect > 0) { /* Trank "Dumpfbackenbrot" */
|
||||||
#if SKILLPOINTS
|
|
||||||
skill_t sk, ibest = NOSKILL;
|
|
||||||
int best = 0;
|
|
||||||
for (sk = 0; sk < MAXSKILLS; sk++) {
|
|
||||||
if (get_skill(u, sk) > best) {
|
|
||||||
best = get_skill(u, sk);
|
|
||||||
ibest = sk;
|
|
||||||
}
|
|
||||||
} /* bestes Talent raussuchen */
|
|
||||||
if (best > 0) {
|
|
||||||
int k = get_skill(u, ibest);
|
|
||||||
int value = min(effect, u->number) * 30;
|
|
||||||
k = min(k, value);
|
|
||||||
change_skill(u, ibest, -k);
|
|
||||||
ADDMSG(&u->faction->msgs, msg_message("dumbeffect",
|
|
||||||
"unit days skill", u, (k+29)/30, ibest));
|
|
||||||
} /* sonst Glück gehabt: wer nix weiß, kann nix vergessen... */
|
|
||||||
#else
|
|
||||||
skill * sv = u->skills, * sb = NULL;
|
skill * sv = u->skills, * sb = NULL;
|
||||||
while (sv!=u->skills+u->skill_size) {
|
while (sv!=u->skills+u->skill_size) {
|
||||||
if (sb==NULL || skill_compare(sv, sb)>0) {
|
if (sb==NULL || skill_compare(sv, sb)>0) {
|
||||||
|
@ -401,7 +383,6 @@ live(region * r)
|
||||||
ADDMSG(&u->faction->msgs, msg_message("dumbeffect",
|
ADDMSG(&u->faction->msgs, msg_message("dumbeffect",
|
||||||
"unit weeks skill", u, weeks, (skill_t)sb->id));
|
"unit weeks skill", u, weeks, (skill_t)sb->id));
|
||||||
} /* sonst Glück gehabt: wer nix weiß, kann nix vergessen... */
|
} /* sonst Glück gehabt: wer nix weiß, kann nix vergessen... */
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
age_unit(r, u);
|
age_unit(r, u);
|
||||||
|
@ -2168,7 +2149,7 @@ set_passw(void)
|
||||||
for (r2 = firstregion(u->faction); r2 != last; r2 = r2->next) {
|
for (r2 = firstregion(u->faction); r2 != last; r2 = r2->next) {
|
||||||
for (u2 = r->units; u2; u2 = u2->next) {
|
for (u2 = r->units; u2; u2 = u2->next) {
|
||||||
if(u2->faction == u->faction
|
if(u2->faction == u->faction
|
||||||
&& get_skill(u2, SK_MAGIC)) {
|
&& has_skill(u2, SK_MAGIC)) {
|
||||||
m = get_mage(u2);
|
m = get_mage(u2);
|
||||||
m->magietyp = mtyp;
|
m->magietyp = mtyp;
|
||||||
}
|
}
|
||||||
|
|
|
@ -869,7 +869,7 @@ learn_monster(unit *u)
|
||||||
* Lerntage hat. */
|
* Lerntage hat. */
|
||||||
|
|
||||||
for(sk=0;sk<MAXSKILLS;sk++)
|
for(sk=0;sk<MAXSKILLS;sk++)
|
||||||
if (get_skill(u, sk)) c++;
|
if (has_skill(u, sk)) c++;
|
||||||
|
|
||||||
if(c == 0) return;
|
if(c == 0) return;
|
||||||
|
|
||||||
|
@ -877,7 +877,7 @@ learn_monster(unit *u)
|
||||||
c = 0;
|
c = 0;
|
||||||
|
|
||||||
for (sk=0;sk<MAXSKILLS;sk++) {
|
for (sk=0;sk<MAXSKILLS;sk++) {
|
||||||
if (get_skill(u, sk)) {
|
if (has_skill(u, sk)) {
|
||||||
c++;
|
c++;
|
||||||
if(c == n) {
|
if(c == n) {
|
||||||
sprintf(buf, "%s %s", locale_string(u->faction->locale, keywords[K_STUDY]),
|
sprintf(buf, "%s %s", locale_string(u->faction->locale, keywords[K_STUDY]),
|
||||||
|
|
|
@ -177,15 +177,10 @@ improve_all(faction * f, skill_t sk, int weeks)
|
||||||
|
|
||||||
for (r = firstregion(f); r != last; r = r->next) {
|
for (r = firstregion(f); r != last; r = r->next) {
|
||||||
for (u = r->units; u; u = u->next) {
|
for (u = r->units; u; u = u->next) {
|
||||||
if (u->faction == f && get_skill(u, sk)) {
|
if (u->faction == f && has_skill(u, sk)) {
|
||||||
#if SKILLPOINTS
|
|
||||||
change_skill(u, sk, u->number * weeks * 30);
|
|
||||||
n += u->number;
|
|
||||||
#else
|
|
||||||
for (n=0;n!=weeks;++n) {
|
for (n=0;n!=weeks;++n) {
|
||||||
learn_skill(u, sk, 1.0);
|
learn_skill(u, sk, 1.0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1026,22 +1021,12 @@ godcurse(void)
|
||||||
if(is_cursed(r->attribs, C_CURSED_BY_THE_GODS, 0)) {
|
if(is_cursed(r->attribs, C_CURSED_BY_THE_GODS, 0)) {
|
||||||
unit * u;
|
unit * u;
|
||||||
for(u=r->units; u; u=u->next) {
|
for(u=r->units; u; u=u->next) {
|
||||||
#if SKILLPOINTS
|
|
||||||
skill_t sk;
|
|
||||||
for(sk=0; sk < MAXSKILLS; sk++) {
|
|
||||||
int s = get_skill(u, sk);
|
|
||||||
if (s > 0) {
|
|
||||||
change_skill(u, sk, -min(s, (30+rand()%90)*u->number));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
skill * sv = u->skills;
|
skill * sv = u->skills;
|
||||||
while (sv!=u->skills+u->skill_size) {
|
while (sv!=u->skills+u->skill_size) {
|
||||||
int weeks = 1+rand()%3;
|
int weeks = 1+rand()%3;
|
||||||
reduce_skill(u, sv, weeks);
|
reduce_skill(u, sv, weeks);
|
||||||
++sv;
|
++sv;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1091,8 +1076,7 @@ randomevents(void)
|
||||||
if (p && (p->flags & PFL_NOORCGROWTH)) continue;
|
if (p && (p->flags & PFL_NOORCGROWTH)) continue;
|
||||||
for (u = r->units; u; u = u->next) {
|
for (u = r->units; u; u = u->next) {
|
||||||
if ( (u->race == new_race[RC_ORC] || is_cursed(u->attribs, C_ORC, 0))
|
if ( (u->race == new_race[RC_ORC] || is_cursed(u->attribs, C_ORC, 0))
|
||||||
&& !get_skill(u, SK_MAGIC)
|
&& !has_skill(u, SK_MAGIC) && !has_skill(u, SK_ALCHEMY)) {
|
||||||
&& !get_skill(u, SK_ALCHEMY)) {
|
|
||||||
int increase = 0;
|
int increase = 0;
|
||||||
int num, prob;
|
int num, prob;
|
||||||
|
|
||||||
|
@ -1121,8 +1105,7 @@ randomevents(void)
|
||||||
{ SK_AUSDAUER, 0 }, { NOSKILL, 0 }
|
{ SK_AUSDAUER, 0 }, { NOSKILL, 0 }
|
||||||
};
|
};
|
||||||
for (i=0;skills[i].skill!=NOSKILL;++i) {
|
for (i=0;skills[i].skill!=NOSKILL;++i) {
|
||||||
int s = get_skill(u, skills[i].skill) / (u->number * 2);
|
int k = get_level(u, skills[i].skill);
|
||||||
int k = skill_level(skills[i].level);
|
|
||||||
change_skill(u, skills[i].skill, increase * max(k, s));
|
change_skill(u, skills[i].skill, increase * max(k, s));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1193,20 +1176,6 @@ randomevents(void)
|
||||||
dc = min(dc, peasantfood);
|
dc = min(dc, peasantfood);
|
||||||
dc = peasantfood - max(u->number - bauernblut, 0);
|
dc = peasantfood - max(u->number - bauernblut, 0);
|
||||||
dc = max(0, dc);
|
dc = max(0, dc);
|
||||||
#if SKILLPOINTS
|
|
||||||
for (sk = 0; sk != MAXSKILLS; sk++) {
|
|
||||||
if (get_skill(u, sk) && rand() % 100 < 25) {
|
|
||||||
int change = rand() % 90 + 1;
|
|
||||||
if (rand() % 100 < 60) {
|
|
||||||
change_skill(u, sk, u->number * change);
|
|
||||||
} else {
|
|
||||||
int s = get_skill(u, sk);
|
|
||||||
s = min(s, u->number * change);
|
|
||||||
change_skill(u, sk, -s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
sv = u->skills;
|
sv = u->skills;
|
||||||
while (sv!=u->skills+u->skill_size) {
|
while (sv!=u->skills+u->skill_size) {
|
||||||
if (rand() % 100 < 25) {
|
if (rand() % 100 < 25) {
|
||||||
|
@ -1216,7 +1185,6 @@ randomevents(void)
|
||||||
}
|
}
|
||||||
++sv;
|
++sv;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rsetpeasants(r, peasantfood/10);
|
rsetpeasants(r, peasantfood/10);
|
||||||
|
|
|
@ -514,10 +514,10 @@ learn(void)
|
||||||
/* Vertraute zählen nicht zu den Magiern einer Partei,
|
/* Vertraute zählen nicht zu den Magiern einer Partei,
|
||||||
* können aber nur Graue Magie lernen */
|
* können aber nur Graue Magie lernen */
|
||||||
mtyp = M_GRAU;
|
mtyp = M_GRAU;
|
||||||
if (!get_skill(u, SK_MAGIC)){
|
if (!has_skill(u, SK_MAGIC)) {
|
||||||
create_mage(u, mtyp);
|
create_mage(u, mtyp);
|
||||||
}
|
}
|
||||||
} else if (!get_skill(u, SK_MAGIC)){
|
} else if (!has_skill(u, SK_MAGIC)){
|
||||||
/* Die Einheit ist noch kein Magier */
|
/* Die Einheit ist noch kein Magier */
|
||||||
if (count_skill(u->faction, SK_MAGIC) + u->number >
|
if (count_skill(u->faction, SK_MAGIC) + u->number >
|
||||||
max_skill(u->faction, SK_MAGIC))
|
max_skill(u->faction, SK_MAGIC))
|
||||||
|
@ -570,7 +570,7 @@ learn(void)
|
||||||
}
|
}
|
||||||
if (i == SK_ALCHEMY) {
|
if (i == SK_ALCHEMY) {
|
||||||
maxalchemy = eff_skill(u, SK_ALCHEMY, r);
|
maxalchemy = eff_skill(u, SK_ALCHEMY, r);
|
||||||
if (get_skill(u, SK_ALCHEMY)==0
|
if (has_skill(u, SK_ALCHEMY)==0
|
||||||
&& count_skill(u->faction, SK_ALCHEMY) + u->number >
|
&& count_skill(u->faction, SK_ALCHEMY) + u->number >
|
||||||
max_skill(u->faction, SK_ALCHEMY)) {
|
max_skill(u->faction, SK_ALCHEMY)) {
|
||||||
sprintf(buf, "Es kann maximal %d Alchemisten pro Partei geben",
|
sprintf(buf, "Es kann maximal %d Alchemisten pro Partei geben",
|
||||||
|
@ -648,9 +648,6 @@ learn(void)
|
||||||
|
|
||||||
days = (int)((u->number * 30 + a->data.i) * multi);
|
days = (int)((u->number * 30 + a->data.i) * multi);
|
||||||
if (fval(u, FL_HUNGER)) days = days / 2;
|
if (fval(u, FL_HUNGER)) days = days / 2;
|
||||||
#if SKILLPOINTS
|
|
||||||
change_skill(u, (skill_t)i, days);
|
|
||||||
#else
|
|
||||||
while (days) {
|
while (days) {
|
||||||
if (days>=u->number*30) {
|
if (days>=u->number*30) {
|
||||||
learn_skill(u, (skill_t)i, 1.0);
|
learn_skill(u, (skill_t)i, 1.0);
|
||||||
|
@ -661,7 +658,6 @@ learn(void)
|
||||||
days = 0;
|
days = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (a) {
|
if (a) {
|
||||||
a_remove(&u->attribs, a);
|
a_remove(&u->attribs, a);
|
||||||
a = NULL;
|
a = NULL;
|
||||||
|
|
|
@ -36,23 +36,12 @@
|
||||||
static int
|
static int
|
||||||
use_skillpotion(struct unit * u, const struct item_type * itype, const char *cm)
|
use_skillpotion(struct unit * u, const struct item_type * itype, const char *cm)
|
||||||
{
|
{
|
||||||
#if SKILLPOINTS
|
|
||||||
skill_t sk;
|
|
||||||
for(sk = 0; sk != MAXSKILLS; sk++) {
|
|
||||||
int skillvalue = get_skill(u, sk)/u->number;
|
|
||||||
if(skillvalue > 0) {
|
|
||||||
int change = max(90, (skillvalue * 10)/100);
|
|
||||||
change_skill(u, sk, change);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
skill * sv = u->skills;
|
skill * sv = u->skills;
|
||||||
while (sv!=u->skills+u->skill_size) {
|
while (sv!=u->skills+u->skill_size) {
|
||||||
int i;
|
int i;
|
||||||
for (i=0;i!=3;++i) learn_skill(u, sv->id, 1.0);
|
for (i=0;i!=3;++i) learn_skill(u, sv->id, 1.0);
|
||||||
++sv;
|
++sv;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
add_message(&u->faction->msgs, new_message(u->faction,
|
add_message(&u->faction->msgs, new_message(u->faction,
|
||||||
"skillpotion_use%u:unit", u));
|
"skillpotion_use%u:unit", u));
|
||||||
|
|
||||||
|
|
|
@ -945,29 +945,6 @@ remove_troop(troop dt)
|
||||||
|
|
||||||
/* ------------------------------------------------------------- */
|
/* ------------------------------------------------------------- */
|
||||||
|
|
||||||
#if SKILLPOINTS
|
|
||||||
void
|
|
||||||
drain_exp(const struct unit *u, int n)
|
|
||||||
{
|
|
||||||
skill_t sk = (skill_t)(rand() % MAXSKILLS);
|
|
||||||
skill_t ssk;
|
|
||||||
|
|
||||||
ssk = sk;
|
|
||||||
|
|
||||||
while (get_skill(u, sk) <= 0) {
|
|
||||||
sk++;
|
|
||||||
if (sk == MAXSKILLS)
|
|
||||||
sk = 0;
|
|
||||||
if (sk == ssk) {
|
|
||||||
sk = NOSKILL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (sk != NOSKILL) {
|
|
||||||
change_skill(u, sk, -n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
/** reduces the target's exp by an equivalent of n points learning
|
/** reduces the target's exp by an equivalent of n points learning
|
||||||
* 30 points = 1 week
|
* 30 points = 1 week
|
||||||
*/
|
*/
|
||||||
|
@ -1001,7 +978,6 @@ drain_exp(struct unit *u, int n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
rel_dam(int dam, int hp)
|
rel_dam(int dam, int hp)
|
||||||
|
|
|
@ -540,9 +540,6 @@ sp_mindblast(fighter * fi, int level, int power, spell * sp)
|
||||||
if (sk != NOSKILL) {
|
if (sk != NOSKILL) {
|
||||||
/* Skill abziehen */
|
/* Skill abziehen */
|
||||||
int n = 30+rand()%61;
|
int n = 30+rand()%61;
|
||||||
#if SKILLPOINTS
|
|
||||||
change_skill(du, sk, -n);
|
|
||||||
#else
|
|
||||||
skill * sv = get_skill(du, sk);
|
skill * sv = get_skill(du, sk);
|
||||||
while (n>0) {
|
while (n>0) {
|
||||||
if (n>=30*du->number) {
|
if (n>=30*du->number) {
|
||||||
|
@ -553,7 +550,6 @@ sp_mindblast(fighter * fi, int level, int power, spell * sp)
|
||||||
n = 0;
|
n = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
--enemies;
|
--enemies;
|
||||||
} else {
|
} else {
|
||||||
troop t;
|
troop t;
|
||||||
|
|
|
@ -695,19 +695,6 @@ scale_number (unit * u, int n)
|
||||||
if (n==0 || u->number == 0) {
|
if (n==0 || u->number == 0) {
|
||||||
set_level(u, sk, 0);
|
set_level(u, sk, 0);
|
||||||
}
|
}
|
||||||
#if SKILLPOINTS
|
|
||||||
/* not necessary to scale in the new system */
|
|
||||||
else {
|
|
||||||
int sval = get_skill(u, sk);
|
|
||||||
int snew = sval / u->number * n;
|
|
||||||
remain = sval - snew / n * u->number;
|
|
||||||
snew += remain * n / u->number;
|
|
||||||
remain = (remain * n) % u->number;
|
|
||||||
if ((rand() % u->number) < remain)
|
|
||||||
++snew; /* Nachkommastellen */
|
|
||||||
set_skill(u, sk, snew);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set_number(u, n);
|
set_number(u, n);
|
||||||
|
|
|
@ -630,12 +630,6 @@ spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh,
|
||||||
effsk = effskill(u, sk);
|
effsk = effskill(u, sk);
|
||||||
sbuf += sprintf(sbuf, "%d", effsk);
|
sbuf += sprintf(sbuf, "%d", effsk);
|
||||||
|
|
||||||
#if SKILLPOINTS == 1
|
|
||||||
if (days) {
|
|
||||||
assert(u->number);
|
|
||||||
sbuf += sprintf(sbuf, " [%d]", get_skill(u, sk) / u->number);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if(u->faction->options & Pow(O_SHOWSKCHANGE)) {
|
if(u->faction->options & Pow(O_SHOWSKCHANGE)) {
|
||||||
skill *skill = get_skill(u, sk);
|
skill *skill = get_skill(u, sk);
|
||||||
int oldeff = 0;
|
int oldeff = 0;
|
||||||
|
@ -652,7 +646,6 @@ spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh,
|
||||||
sbuf += sprintf(sbuf, " (%s%hd)", (diff>0)?"+":"", diff);
|
sbuf += sprintf(sbuf, " (%s%hd)", (diff>0)?"+":"", diff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -141,21 +141,12 @@ do_shock(unit *u, char *reason)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Evt. Talenttageverlust */
|
/* Evt. Talenttageverlust */
|
||||||
#if SKILLPOINTS
|
|
||||||
if(rand()%10 < 2) {
|
|
||||||
for (sk=0; sk < MAXSKILLS; sk++) {
|
|
||||||
int n = get_skill(u, sk);
|
|
||||||
if (n!=0) set_skill(u, sk, (n*9)/10, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
for (i=0;i!=u->skill_size;++i) if (rand()%5==0) {
|
for (i=0;i!=u->skill_size;++i) if (rand()%5==0) {
|
||||||
skill * sv = u->skills+i;
|
skill * sv = u->skills+i;
|
||||||
int weeks = (sv->level * sv->level - sv->level) / 2;
|
int weeks = (sv->level * sv->level - sv->level) / 2;
|
||||||
int change = (weeks+9) / 10;
|
int change = (weeks+9) / 10;
|
||||||
reduce_skill(u, sv, change);
|
reduce_skill(u, sv, change);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Dies ist ein Hack, um das skillmod und familiar-Attribut beim Mage
|
/* Dies ist ein Hack, um das skillmod und familiar-Attribut beim Mage
|
||||||
* zu löschen wenn der Familiar getötet wird. Da sollten wir über eine
|
* zu löschen wenn der Familiar getötet wird. Da sollten wir über eine
|
||||||
|
|
|
@ -110,17 +110,9 @@ extern const struct unit u_unknown;
|
||||||
|
|
||||||
extern struct unit * udestroy;
|
extern struct unit * udestroy;
|
||||||
|
|
||||||
#if SKILLPOINTS
|
|
||||||
extern int change_skill(struct unit * u, skill_t id, int byvalue);
|
|
||||||
extern void set_skill(struct unit * u, skill_t id, int value);
|
|
||||||
extern int get_skill(const struct unit * u, skill_t id);
|
|
||||||
#define has_skill(u, id) (get_skill(u, id)>0)
|
|
||||||
#define change_level(u, sk, bylevel) set_level(u, sk, max(0,get_level(u,sk)+bylevel));
|
|
||||||
#else
|
|
||||||
extern struct skill * add_skill(struct unit * u, skill_t id);
|
extern struct skill * add_skill(struct unit * u, skill_t id);
|
||||||
extern struct skill * get_skill(const struct unit * u, skill_t id);
|
extern struct skill * get_skill(const struct unit * u, skill_t id);
|
||||||
extern boolean has_skill(const unit* u, skill_t sk);
|
extern boolean has_skill(const unit* u, skill_t sk);
|
||||||
#endif
|
|
||||||
|
|
||||||
extern void set_level(struct unit * u, skill_t id, int level);
|
extern void set_level(struct unit * u, skill_t id, int level);
|
||||||
extern int get_level(const struct unit * u, skill_t id);
|
extern int get_level(const struct unit * u, skill_t id);
|
||||||
|
|
|
@ -293,7 +293,6 @@ days2level(int days)
|
||||||
return l-1;
|
return l-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SKILLPOINTS == 0
|
|
||||||
static void
|
static void
|
||||||
change_level(unit * u, skill_t sk, int bylevel)
|
change_level(unit * u, skill_t sk, int bylevel)
|
||||||
{
|
{
|
||||||
|
@ -302,7 +301,6 @@ change_level(unit * u, skill_t sk, int bylevel)
|
||||||
if (sv==0) sv = add_skill(u, sk);
|
if (sv==0) sv = add_skill(u, sk);
|
||||||
sk_set(sv, sv->level+bylevel);
|
sk_set(sv, sv->level+bylevel);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
give_latestart_bonus(region *r, unit *u, int b)
|
give_latestart_bonus(region *r, unit *u, int b)
|
||||||
|
@ -445,7 +443,7 @@ ModifyPartei(faction * f)
|
||||||
waddnstr(win, " (", -1);
|
waddnstr(win, " (", -1);
|
||||||
for (r = firstregion(f); r != lastregion(f); r = r->next)
|
for (r = firstregion(f); r != lastregion(f); r = r->next)
|
||||||
for (u = r->units; u; u = u->next)
|
for (u = r->units; u; u = u->next)
|
||||||
if (u->faction == f && get_skill(u, SK_MAGIC)) {
|
if (u->faction == f && has_skill(u, SK_MAGIC)) {
|
||||||
if (fval(f, FL_DH))
|
if (fval(f, FL_DH))
|
||||||
waddnstr(win, ", ", -1);
|
waddnstr(win, ", ", -1);
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s(%d): %d", unitid(u), u->number, get_level(u, SK_MAGIC));
|
wprintw(win, (NCURSES_CONST char*)"%s(%d): %d", unitid(u), u->number, get_level(u, SK_MAGIC));
|
||||||
|
@ -461,7 +459,7 @@ ModifyPartei(faction * f)
|
||||||
freset(f, FL_DH);
|
freset(f, FL_DH);
|
||||||
for (r = firstregion(f); r != lastregion(f); r = r->next)
|
for (r = firstregion(f); r != lastregion(f); r = r->next)
|
||||||
for (u = r->units; u; u = u->next)
|
for (u = r->units; u; u = u->next)
|
||||||
if (u->faction == f && get_skill(u, SK_ALCHEMY)) {
|
if (u->faction == f && has_skill(u, SK_ALCHEMY)) {
|
||||||
if (fval(f, FL_DH))
|
if (fval(f, FL_DH))
|
||||||
waddnstr(win, ", ", -1);
|
waddnstr(win, ", ", -1);
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s(%d): %d", unitid(u), u->number, get_level(u, SK_ALCHEMY));
|
wprintw(win, (NCURSES_CONST char*)"%s(%d): %d", unitid(u), u->number, get_level(u, SK_ALCHEMY));
|
||||||
|
|
Loading…
Reference in New Issue