forked from github/server
ageing für das at_leftship attribut verhinder, dass Einheiten die ein Schiff verlassen haben in der Folgewoche immer noch im Report stehen.
Kosmetischer Fix an der Schock-Meldung. Weniger Aufrufe von invisible() wenn Einheiten garkeinen Ring haben.
This commit is contained in:
parent
c3b5c4d198
commit
3db6b2a9fd
|
@ -1032,9 +1032,8 @@ cansee(const faction * f, const region * r, const unit * u, int modifier)
|
|||
/* und es muss niemand aus f in der region sein, wenn sie vom Turm
|
||||
* erblickt wird */
|
||||
{
|
||||
int n;
|
||||
boolean cansee = false;
|
||||
unit *u2;
|
||||
int stealth, rings;
|
||||
unit *u2 = r->units;
|
||||
static const item_type * itype_grail;
|
||||
static boolean init;
|
||||
|
||||
|
@ -1060,30 +1059,36 @@ cansee(const faction * f, const region * r, const unit * u, int modifier)
|
|||
if (leftship(u)) return true;
|
||||
if (itype_grail!=NULL && i_get(u->items, itype_grail)) return true;
|
||||
|
||||
n = eff_stealth(u, r) - modifier;
|
||||
for (u2 = r->units; u2; u2 = u2->next) {
|
||||
if (u2->faction == f) {
|
||||
int o;
|
||||
while (u2 && u2->faction != f) u2 = u2->next;
|
||||
if (u2==NULL) return false;
|
||||
|
||||
if (getguard(u) || usiege(u) || u->building || u->ship) {
|
||||
cansee = true;
|
||||
break;
|
||||
}
|
||||
/* simple visibility, just gotta have a unit in the region to see 'em */
|
||||
if (getguard(u) || usiege(u) || u->building || u->ship) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (invisible(u, u2) >= u->number) continue;
|
||||
stealth = eff_stealth(u, r) - modifier;
|
||||
|
||||
rings = invisible(u, NULL);
|
||||
while (u2) {
|
||||
if (rings<u->number || invisible(u, u2) < u->number) {
|
||||
int observation = eff_skill(u2, SK_OBSERVATION, r);
|
||||
|
||||
o = eff_skill(u2, SK_OBSERVATION, r);
|
||||
#ifdef NIGHTEYES
|
||||
if (u2->enchanted == SP_NIGHT_EYES && o < NIGHT_EYE_TALENT)
|
||||
o = NIGHT_EYE_TALENT;
|
||||
if (u2->enchanted == SP_NIGHT_EYES && o < NIGHT_EYE_TALENT)
|
||||
observation = NIGHT_EYE_TALENT;
|
||||
#endif
|
||||
if (o >= n) {
|
||||
cansee = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (observation >= stealth) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/* find next unit in our faction */
|
||||
do {
|
||||
u2=u2->next;
|
||||
} while (u2 && u2->faction != f);
|
||||
}
|
||||
return cansee;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1646,7 +1646,7 @@ readfaction(FILE * F)
|
|||
|
||||
i = f->options = ri(F);
|
||||
|
||||
if ((i & Pow(O_REPORT))==0 && (i & Pow(O_COMPUTER))==0) {
|
||||
if ((i & ((1<<O_REPORT)|(1<<O_COMPUTER)))==0 && f->no!=MONSTER_FACTION) {
|
||||
/* Kein Report eingestellt, Fehler */
|
||||
f->options = f->options | Pow(O_REPORT) | Pow(O_ZUGVORLAGE);
|
||||
}
|
||||
|
|
|
@ -547,8 +547,16 @@ set_level(unit * u, skill_t sk, int value)
|
|||
sk_set(add_skill(u, sk), value);
|
||||
}
|
||||
|
||||
static int
|
||||
leftship_age(struct attrib * a)
|
||||
{
|
||||
/* must be aged, so it doesn't affect report generation (cansee) */
|
||||
unused(a);
|
||||
return 0; /* remove me */
|
||||
}
|
||||
|
||||
static attrib_type at_leftship = {
|
||||
"leftship",
|
||||
"leftship", NULL, NULL, leftship_age
|
||||
};
|
||||
|
||||
static attrib *
|
||||
|
@ -1115,12 +1123,12 @@ invisible(const unit *target, const unit * viewer)
|
|||
#if NEWATSROI == 1
|
||||
return 0;
|
||||
#else
|
||||
if (viewer->faction==target->faction) return 0;
|
||||
if (viewer && viewer->faction==target->faction) return 0;
|
||||
else {
|
||||
int hidden = get_item(target, I_RING_OF_INVISIBILITY) + 100 * get_item(target, I_SPHERE_OF_INVISIBILITY);
|
||||
if (hidden) {
|
||||
hidden = min(hidden, target->number);
|
||||
hidden -= get_item(viewer, I_AMULET_OF_TRUE_SEEING);
|
||||
if (viewer) hidden -= get_item(viewer, I_AMULET_OF_TRUE_SEEING);
|
||||
}
|
||||
return hidden;
|
||||
}
|
||||
|
|
|
@ -1340,7 +1340,7 @@
|
|||
<arg name="mage" type="unit"/>
|
||||
<arg name="reason" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$unit($mage) erleidet einen Schock ${reason}."</text>
|
||||
<text locale="de">"$unit($mage) erleidet durch den Tod seines Vertrauten einen Schock."</text>
|
||||
</message>
|
||||
<message name="patzer" section="magic">
|
||||
<type>
|
||||
|
|
Loading…
Reference in New Issue