forked from github/server
- Bei der Berechnung des Talentunterschieds für Lerne/Lehre werden
item_modifications nicht mehr berücksichtigt.
This commit is contained in:
parent
6458ff490d
commit
5de27cf583
4 changed files with 25 additions and 10 deletions
|
@ -291,7 +291,7 @@ teach(region * r, unit * u)
|
||||||
for (i=0;teachskill[i]!=NOSKILL;++i) if (sk==teachskill[i]) break;
|
for (i=0;teachskill[i]!=NOSKILL;++i) if (sk==teachskill[i]) break;
|
||||||
sk = teachskill[i];
|
sk = teachskill[i];
|
||||||
}
|
}
|
||||||
if (sk != NOSKILL && eff_skill(u, sk, r) > eff_skill(student, sk, r)) {
|
if (sk != NOSKILL && eff_skill_study(u, sk, r)-TEACHDIFFERENCE > eff_skill_study(student, sk, r)) {
|
||||||
teaching -= teach_unit(u, student, teaching, sk, true, &academy);
|
teaching -= teach_unit(u, student, teaching, sk, true, &academy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,7 +304,7 @@ teach(region * r, unit * u)
|
||||||
if (igetkeyword(student->thisorder, student->faction->locale) == K_STUDY) {
|
if (igetkeyword(student->thisorder, student->faction->locale) == K_STUDY) {
|
||||||
/* Input ist nun von student->thisorder !! */
|
/* Input ist nun von student->thisorder !! */
|
||||||
sk = getskill(student->faction->locale);
|
sk = getskill(student->faction->locale);
|
||||||
if (sk != NOSKILL && eff_skill(u, sk, r)-TEACHDIFFERENCE >= eff_skill(student, sk, r)) {
|
if (sk != NOSKILL && eff_skill_study(u, sk, r)-TEACHDIFFERENCE >= eff_skill(student, sk, r)) {
|
||||||
teaching -= teach_unit(u, student, teaching, sk, true, &academy);
|
teaching -= teach_unit(u, student, teaching, sk, true, &academy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,7 +407,7 @@ teach(region * r, unit * u)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* u is teacher, u2 is student */
|
/* u is teacher, u2 is student */
|
||||||
if (eff_skill(u2, sk, r) > eff_skill(u, sk, r)-TEACHDIFFERENCE) {
|
if (eff_skill_study(u2, sk, r) > eff_skill_study(u, sk, r)-TEACHDIFFERENCE) {
|
||||||
add_message(&u->faction->msgs,
|
add_message(&u->faction->msgs,
|
||||||
msg_error(u, u->thisorder, "teach_asgood", "student", u2));
|
msg_error(u, u->thisorder, "teach_asgood", "student", u2));
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -633,7 +633,7 @@ spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh,
|
||||||
int diff;
|
int diff;
|
||||||
|
|
||||||
if(skill->old > 0) {
|
if(skill->old > 0) {
|
||||||
oldeff = skill->old + get_modifier(u, sk, skill->old, u->region);
|
oldeff = skill->old + get_modifier(u, sk, skill->old, u->region, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
oldeff = max(0, oldeff);
|
oldeff = max(0, oldeff);
|
||||||
|
|
|
@ -963,8 +963,7 @@ item_modification(const unit *u, skill_t sk, int val)
|
||||||
/* Presseausweis: *2 Spionage, 0 Tarnung */
|
/* Presseausweis: *2 Spionage, 0 Tarnung */
|
||||||
if(sk == SK_SPY && get_item(u, I_PRESSCARD) >= u->number) {
|
if(sk == SK_SPY && get_item(u, I_PRESSCARD) >= u->number) {
|
||||||
val = val * 2;
|
val = val * 2;
|
||||||
}
|
} else if(sk == SK_STEALTH) {
|
||||||
if(sk == SK_STEALTH) {
|
|
||||||
#if NEWATSROI == 1
|
#if NEWATSROI == 1
|
||||||
if(get_item(u, I_RING_OF_INVISIBILITY)
|
if(get_item(u, I_RING_OF_INVISIBILITY)
|
||||||
+ 100 * get_item(u, I_SPHERE_OF_INVISIBILITY) >= u->number) {
|
+ 100 * get_item(u, I_SPHERE_OF_INVISIBILITY) >= u->number) {
|
||||||
|
@ -1031,7 +1030,7 @@ att_modification(const unit *u, skill_t sk)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
get_modifier(const unit * u, skill_t sk, int level, const region * r)
|
get_modifier(const unit *u, skill_t sk, int level, const region *r, boolean noitem)
|
||||||
{
|
{
|
||||||
int bskill = level;
|
int bskill = level;
|
||||||
int skill = bskill;
|
int skill = bskill;
|
||||||
|
@ -1042,7 +1041,9 @@ get_modifier(const unit * u, skill_t sk, int level, const region * r)
|
||||||
skill += rc_skillmod(u->race, r, sk);
|
skill += rc_skillmod(u->race, r, sk);
|
||||||
skill += att_modification(u, sk);
|
skill += att_modification(u, sk);
|
||||||
|
|
||||||
|
if(noitem == false) {
|
||||||
skill = item_modification(u, sk, skill);
|
skill = item_modification(u, sk, skill);
|
||||||
|
}
|
||||||
skill = skillmod(u->attribs, u, r, sk, skill, SMF_ALWAYS);
|
skill = skillmod(u->attribs, u, r, sk, skill, SMF_ALWAYS);
|
||||||
|
|
||||||
if (fspecial(u->faction, FS_TELEPATHY)) {
|
if (fspecial(u->faction, FS_TELEPATHY)) {
|
||||||
|
@ -1072,7 +1073,19 @@ eff_skill(const unit * u, skill_t sk, const region * r)
|
||||||
{
|
{
|
||||||
int level = get_level(u, sk);
|
int level = get_level(u, sk);
|
||||||
if (level>0) {
|
if (level>0) {
|
||||||
int mlevel = level + get_modifier(u, sk, level, r);
|
int mlevel = level + get_modifier(u, sk, level, r, false);
|
||||||
|
|
||||||
|
if (mlevel>0) return mlevel;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
eff_skill_study(const unit * u, skill_t sk, const region * r)
|
||||||
|
{
|
||||||
|
int level = get_level(u, sk);
|
||||||
|
if (level>0) {
|
||||||
|
int mlevel = level + get_modifier(u, sk, level, r, true);
|
||||||
|
|
||||||
if (mlevel>0) return mlevel;
|
if (mlevel>0) return mlevel;
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,7 +120,9 @@ extern int get_level(const struct unit * u, skill_t id);
|
||||||
extern void transfermen(struct unit * u, struct unit * u2, int n);
|
extern void transfermen(struct unit * u, struct unit * u2, int n);
|
||||||
|
|
||||||
extern int eff_skill(const struct unit * u, skill_t sk, const struct region * r);
|
extern int eff_skill(const struct unit * u, skill_t sk, const struct region * r);
|
||||||
extern int get_modifier(const struct unit * u, skill_t sk, int lvl, const struct region * r);
|
extern int eff_skill_study(const struct unit * u, skill_t sk, const struct region * r);
|
||||||
|
|
||||||
|
extern int get_modifier(const struct unit * u, skill_t sk, int lvl, const struct region * r, boolean noitem);
|
||||||
|
|
||||||
#undef DESTROY
|
#undef DESTROY
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue