diff --git a/src/common/kernel/eressea.c b/src/common/kernel/eressea.c
index bf695250c..abdbc6f72 100644
--- a/src/common/kernel/eressea.c
+++ b/src/common/kernel/eressea.c
@@ -1009,6 +1009,7 @@ cansee(const faction * f, const region * r, const unit * u, int modifier)
int n;
boolean cansee = false;
unit *u2;
+ static const item_type * itype_grail = (const item_type *)0xdeadbeef;
if (u->faction == f || omniscient(f)) {
return true;
@@ -1023,7 +1024,11 @@ cansee(const faction * f, const region * r, const unit * u, int modifier)
return false;
}
}
- n = eff_stealth(u, r) - modifier;
+
+ if (itype_grail==(const item_type *)0xdeadbeef) itype_grail = it_find("grail");
+ 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;
@@ -1053,73 +1058,6 @@ cansee(const faction * f, const region * r, const unit * u, int modifier)
return cansee;
}
-#if 0
-boolean
-cansee(faction * f, region * r, unit * u, int modifier)
-/* r kann != u->region sein, wenn es um durchreisen geht */
-/* und es muss niemand aus f in der region sein, wenn sie vom Turm
- * erblickt wird */
-{
- boolean cansee = false;
- unit *u2;
-#if FAST_CANSEE
- static region * lastr = NULL;
- static faction * lastf = NULL;
- static int maxskill = INT_MIN;
-#endif
- int n = 0;
- boolean ring = false;
- if (u->faction == f || omniscient(f)) return true;
-#if FAST_CANSEE /* buggy */
- if (lastr==r && lastf==f) {
- n = eff_stealth(u, r) - modifier;
- if (n<=maxskill) return true;
- }
- else {
- lastf=f;
- lastr=r;
- maxskill=INT_MIN;
- }
-#endif
- if (old_race(u->race) == RC_SPELL || u->number == 0) return false;
- else {
- boolean xcheck = false;
- int o = INT_MIN;
- ring = (boolean)(ring || (invisible(u) >= u->number));
- n = n || eff_stealth(u, r) - modifier;
- for (u2 = r->units; u2; u2 = u2->next) {
- if (u2->faction == f) {
-
- if (!xcheck && (getguard(u) || usiege(u) || u->building || u->ship)) {
- cansee = true;
- break;
- }
- else
- xcheck = true;
-
-#if NEWATSROI == 0
- if (ring && !get_item(u2, I_AMULET_OF_TRUE_SEEING))
- continue;
-#endif
-
- o = eff_skill(u2, SK_OBSERVATION, r);
-#ifdef NIGHTEYES
- if (u2->enchanted == SP_NIGHT_EYES && o < NIGHT_EYE_TALENT)
- o = NIGHT_EYE_TALENT;
-#endif
- if (o >= n) {
- cansee = true;
- break;
- }
- }
- }
-#if FAST_CANSEE
- maxskill = o;
-#endif
- }
- return cansee;
-}
-#endif
boolean
cansee_durchgezogen(const faction * f, const region * r, const unit * u, int modifier)
diff --git a/src/res/de/strings.xml b/src/res/de/strings.xml
index d556d2403..be766d38d 100644
--- a/src/res/de/strings.xml
+++ b/src/res/de/strings.xml
@@ -6024,4 +6024,14 @@
+
+ Gral
+ grail
+
+
+
+ Grale
+ grails
+
+
diff --git a/src/res/eressea/items-hse05.xml b/src/res/eressea/items-hse05.xml
new file mode 100644
index 000000000..04cf6dc2c
--- /dev/null
+++ b/src/res/eressea/items-hse05.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/res/hse-05-01.xml b/src/res/hse-05-01.xml
index ae6b8649a..b77923a10 100644
--- a/src/res/hse-05-01.xml
+++ b/src/res/hse-05-01.xml
@@ -23,6 +23,7 @@
Game specific
+
@@ -38,6 +39,7 @@
+