<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://camnet.oetterer.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Calebros</id>
	<title>CamNet - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://camnet.oetterer.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Calebros"/>
	<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/Spezial:Beitr%C3%A4ge/Calebros"/>
	<updated>2026-05-01T15:46:52Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Shepherd&amp;diff=6507</id>
		<title>Shepherd</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Shepherd&amp;diff=6507"/>
		<updated>2022-05-08T18:53:40Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Save once for cargo/smw data to be processed and other on-save hooks be executed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person&lt;br /&gt;
| image=Shepherd.jpg&lt;br /&gt;
| displayname=Shepherd&lt;br /&gt;
| fullname=Shepherd&lt;br /&gt;
| coterie=Nein&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced_is_estimate=&lt;br /&gt;
| apparent_age=30&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=Der Wissenshort&lt;br /&gt;
| chapter_of_first_appearance=Memento, Petrus II&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Im_Reich_der_Dunklen_Fae&amp;diff=5466</id>
		<title>Im Reich der Dunklen Fae</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Im_Reich_der_Dunklen_Fae&amp;diff=5466"/>
		<updated>2021-03-12T20:16:51Z</updated>

		<summary type="html">&lt;p&gt;Calebros: /* Neill: Vergangenheit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chapter&lt;br /&gt;
|title=Im Reich der Dunklen Fae&lt;br /&gt;
|number=15&lt;br /&gt;
|start_date=2000/06/28&lt;br /&gt;
|end_date=2000/07/31&lt;br /&gt;
|city=Kalkutta&lt;br /&gt;
|auxiliary_settings=New York,Das Hurricane&lt;br /&gt;
|pcs=Liz,Neil,Olaf,Peter,Susan&lt;br /&gt;
|npcs=Von Braun,Collin,Harley,Iliana,Mdm. Garbage,Noémi St. John,Porter,Robert Sinclair,Sturbridge,Vitel,Lucienne de Maupassant,Allister,Henry McNamara,Vera,Chandrakant,Étaín,Éhrín,Gaul,Senjenshi Tikeru,Die Geheimniskrämerin,Der Marktaufseher&lt;br /&gt;
|session_date=2018/05/18&lt;br /&gt;
|session_duration=4&lt;br /&gt;
|session_location=Jesberg&lt;br /&gt;
|description=Die [[Konzept:SC|Falken]] machen sich auf nach Indien, um herauszufinden, wie Ravnos während der Woche der Alpträume sein Ende fand. Vor Ort erfahren sie hautnah, warum Kalkutta vom Prinzen als eines der für Vampire gefährlichsten Gebiete bezeichnet worden ist.&lt;br /&gt;
}}&lt;br /&gt;
=Begegnungen=&lt;br /&gt;
Liz trifft sich mit [[Chandrakant]]. Der hat keine direkten Informationen über Kalkutta, weil er gar kein indischer Ravnos ist, sondern aus der Roma-Linie dieses Clans stammt. Aber er kann berichten, wie er überlebt hat. Er war allein im Wald, ist in seiner Raserei bewusstlos geworden und ins Wasser gefallen...&lt;br /&gt;
&lt;br /&gt;
Peter bekommt Besuch und gelangt in seinem Labor zu gewissen Einsichten. Peter und Neil werden zu den Friedensbringern entsandt, Liz muss dabei sein! Und sie muss einen gewissen Button (&amp;quot;No Hate&amp;quot;) sichtbar tragen. Wenn sich fünf Wege offenbaren, muss Peter sich für die Zukunft entscheiden. Hält er sich an all das, so werden er und Liz (wahrscheinlich) überleben. Und die anderen? Sieht nicht gut aus...&lt;br /&gt;
&lt;br /&gt;
=Die Nacht des Elysiums=&lt;br /&gt;
Liz hat geladen und alle, alle kommen. Das Elysium ist neu eingerichtet. Schon im Treppenhaus ein Baugerüst, raffiniert beleuchtet. Unten ein Schild &amp;quot;This is just a beginning&amp;quot;, oben an der Treppe ein Schild &amp;quot;This is not the end.&amp;quot; Harley bewacht den Eingang. Im Hauptraum ist eine Längswand dunkelblau gestrichen, darüber sind LEDs verteilt - ein Nachthimmel. Zur Separee-Ecke hin dagegen wird das Licht heller, als breche dort bald der Tag an. Über den Raum verteilt stehen verschiedenste Sitzmöbel.&lt;br /&gt;
&lt;br /&gt;
Theodore Pursley, der Hausverbot hat, steht auf der anderen Straßenseite und starrt zum Elysium hinauf...&lt;br /&gt;
&lt;br /&gt;
Peter plaudert mit [[Noémi St. John]], die technomantiebegeistert ist und zu gerne mehr über den alten Magierorden 'Orden der Vernunft' erfahren würde. Da kann Peter leider nichts versprechen. Wenn er St.John in Wien empfielt, wird sie das wohl eher behindern... Ob er nicht ihr Schüler werden möchte, fragt St.John. [[Sturbridge]] nimmt Peter beiseite und bittet ihn um einen Gefallen: Ihre Erzeugerin [[Lucienne de Maupassant]], Archontin ausgerechnet der Nosferatu, ist nach Kalkutta entsandt worden. Dort arbeitet sie offiziell für die UN. Sturbridge kann Pässe für die UN besorgen. Sie hat einen bereit für Neil und einen für Peter. Peter bittet, auch noch einen für Liz zu bekommen, weil Gründe. Er verspricht, Lucienne zu besuchen und einen Brief zu überbringen. Dafür dar er erwarten, Fragen über die Lage in Kalkutta beantwortet zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Olaf versucht ausgerechnet während des Elysiums mit Susan über die Zukunftspläne und Ziele des Klüngels zu sprechen. Und ausgerechnet jetzt erscheint [[Allister]] zum ersten Mal wieder öffentlich. Susan eilt zu ihm, muss zu ihm eilen - und lässt einen frustrierten Olaf zurück. Susan spricht mit Allister über sein Befinden und er Dank Susan für die Hilfe in seinen äußerst persönlichen Angelegenheiten. Er bittet sie, niemanden von seiner Situation zu erzählen und Susan erklärt ihm, dass sie Benision berichtet habe, aber sonst niemanden seine Geschichte erzählen werde. Noch bevor Susan Allister nach ihrer Vergangenheit und dem Brief fragen kann, wird ihr Gespräch durch eine Ankündungung unterbrochen.&lt;br /&gt;
&lt;br /&gt;
...und Euer Abend im Elysium so? Hier ergänzen!...&lt;br /&gt;
&lt;br /&gt;
Dann kündigt Liz den Auftritt von [[Iliana]] an. Und die singt auf eine Weise, die alle verzaubert. Nun, außer [[Benison]], der sich lieber mit einem seiner Orden die Trommelfelle durchsticht. Wir erinnern uns daran, wie es ist, menschlich zu sein. Das Tier ist verschwunden. Iliana fragt auch nach Wünschen, sucht dann aber selbst jeweils einen Song aus, um ihn für die Gäste zu singen.&lt;br /&gt;
&lt;br /&gt;
Die Lage eskaliert, weil Madame Garbage erscheint, eine Nosferatu, die Liz eingeladen hat (M.G.) oder die sich selbst eingeladen hat (Liz). Die Gäste sind entsetzt. Neil versucht, die Lage zu beruhigen, indem ermit ihr spricht, aber ohne größeren Erfolg. Madame regt sich fürchterlich auf über Liz' &amp;quot;Lüge&amp;quot;, und speit einen Schwall Kotze, der (Liz duckt sich weg) Iliana trifft. Und Iiana schreit, ohrendbetäubend und schrill, so dass keienr mehr etwas tun kann. Liz schafft es endlich, sie zu beruhigen, Madame Garbage geht, gefolgt von Neil. Allgemeine Empörung. Iliana hat eine Disziplin angewandt! Anne Washington verlässt das Elysium und nimmt einen Großteil der Gäste mit sich. Das lief ja mal wieder suboptimal.&lt;br /&gt;
&lt;br /&gt;
...oder hier, falls es nach Ilianas Auftritt war...&lt;br /&gt;
&lt;br /&gt;
Wir kleiden Iliana neu ein, diskutieren eine mögliche Strafe für sie und rechtliche Details. Susan wirft die Frage auf, ob Ilianas Tod nicht der erste Schritt sein könnte, die Prophezeiung zu stoppen, was erregten Widerstand hervorruft.&lt;br /&gt;
&lt;br /&gt;
Als wir unter uns sind, erscheint [[Von_Braun]] mit [[Moncries]]. Der warnt uns vor den Kuei-Jin, asiatischen Vampiren, jünger als die Kinder Kains, vielleicht eine Blutlinie? Jedenfalls gelten sie als alte Feinde der Ravnos, wenden Körperlosigkeit an, geben sich gerne mystisch und verfügen nicht über Methusalems. Viel Vermutung, wir werden wohl selbst schauen müssen, ob und wie man mit diesen Kuei-Jin umgehen kann. Der Prinz gibt uns ein Empfehlungsschreiben mit an Lord Abernathy, den Prinzen von Kalkutta. Der ist schwierig in seinem Umgang mit Fremden, besser man erscheint da nicht zu fünft. Nun, das passt uns gut, schließlich haben wir nur drei UN-Pässe (es war übrigens der Prnz, der Sturbridge den Hinweis gegeben hat). &lt;br /&gt;
&lt;br /&gt;
Drei Nächte nach unserer Ankunft wird außerdem ein vom Prinzen finanzierter Trupp Söldner eintreffen. Echte Profis, die uns helfen sollen, zu den Ruinen zu gelangen, unter denen Ravnos gelegen haben soll. Wir machen uns völlig unnötig Sorgen, diese Söldner könnten sich mit den von Olaf finanzierten schlecht koordinieren. Welche Probleme warten auf uns? Aufgrund von Saulots Prophezeiung erwarten wir Werwölfe, wir wissen von Kuei-Jin, dann sind da wohl Ghoule ohne Herren, und schließlich ist da der Umstand, dass keinerlei Information aus Kalkutta heraus gelangt ist seit Februar. Schlechte Karten, aber was soll man machen.&lt;br /&gt;
&lt;br /&gt;
=Kalkutta=&lt;br /&gt;
In einem Container fliegen wir einige Nächte später nach Kalkutta. Am Flughafen empfängt uns ein hilfsbereiter Inder, der uns durch einen Zaun zu unserm Geleitschutz führt. Olaf bemängelt die Wagen, die nicht unserem Standard entsprechen (keine getönten Scheiben, nicht gepanzert) und fordert neue Wagen für die nächste Nacht. Wir fahren studenlang zum Hotel, dessen oberste zwei Etagen Olaf gebucht hat. Kein Feindkontakt bis dahin. Einigermaßen beruhigt übertagen wir. Am nächsten Abend teilen wir uns auf.&lt;br /&gt;
&lt;br /&gt;
==Gruppe UN==&lt;br /&gt;
Neil, Liz und Peter entscheiden sich gegen die gepanzerte Limousine mit getönten Scheiben, welche die Söldner inzwischen besorgt haben - viel zu auffällig. Stattdessen nehmen wir ein Taxi. Von der UN hat der Fahrer noch nie gehört, aber ein Kontingent Blauhelme gibt es südlich der Stadt. Dorthin lassen wir uns fahren. Taxi ist eine Superidee, in der Stadt kommen wir zügig voran. Dieser Vorteil wird egalisiert durch die Schwätzchen, die unser Fahrer mit jedem zweiten LKW mitten auf der Landstraße hält. Nunja. Wir fahren lange durch Dschungel, sehen Seitenpfade und Mauern, der Monsun trommelt beständig nieder. Unsere Fahrt endet an einer Schranke, an der ein umständlicher Blauhelm-Wachmann den Taxifahrer aufhält und uns, die wir die Päse vorzeigen, zögerlich einen Jeep bestellt, der uns zum eigentlichen Camp bringt.&lt;br /&gt;
&lt;br /&gt;
Es handelt sich um eine alte Gouverneursvilla, zudem riesige Lagerhallen, die beinahe leer sind. In einer steht allerdings ein Senkrechtstarter-Jet. So etwas hat die UN? Bemerkenswert. Die Soldeten, die wir sehen, wirken so als hätten sie sich die blauen Helme in letzter Minute aufgezogen. Die Villa selbst liegt nah an der Waldgrenze. Ein Zivilist namens Connor empfängt uns, reicht uns Schirme, aber wir sind ohnehin durch und durch nasss aufgrund unserer Wartezeit an der Schranke. &lt;br /&gt;
&lt;br /&gt;
Die UN-Hilfsmission, sagt Connor, betrifft den Zyklon vom Februar. Am stärksten getroffen hat es den Sundarban-Nationalpark. Die Mission ist fast abgeschlossen, man erwartet nur noch genau eine Lieferung. Aha? Wir nennen de Maupassants Namen und werden in das Büro des Majors (offenbar Lucienne) geführt, wo Connor uns zurücklässt. Wir vertreiben uns die Wartezeit mit Schnüffeleien. Neil findet einen großen Koffer neben dem Schreibtisch ganz ohne einen erkennbaren Mechanismus, um ihn zu öffnen. Darauf liegt ein Kettchen mit einem roten Herz als Anhänger. Neil erkennt sofort, dass es sich um ein Feenartefakt handelt (Feenmagie, sagt Peter). Und war nicht die Schwester der New Yorker Fee in Indien verschollen? In Neil steigen Erinnerungen auf, als er die Kette berührt und gut fühlt sich die Kette auch an. Neil nimmt die Kette an sich.&lt;br /&gt;
&lt;br /&gt;
Liz findet derweil eine Kladde, an die ein meteorologischer Bericht gesteckt ist. Der Zyklon vom Februar hat erstaunliche Eigenschaften, die uns klarmachen, dass er kein natürliches Phänomen war. Gehalten hat er sich über dem Sundabar-Nationalpark. Bemerkenswert. Die Kladde selbst ist leer, aber Peter hat so eine Ahnung, dass hier der alte Tremere-Geheimschrift-Trick angewandt wurde. Mit einer Gewebeprobe des Schreibers könnte man die Schrift leicht sichtbar machen - aber natürlich ist das Büro makellos geputzt.&lt;br /&gt;
&lt;br /&gt;
Dann landet ein zweiter Jet. Lucienne steigt aus. Im Schreibtisch öffnet sich ein Mechanismus, der ein dreidimensionales Bild der Szene zeigt und uns mithören lässt:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Diviantus sanguinis im Büro&amp;quot;, meldet Connor. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Fahren sie fort mit der Operation Blackshield.&amp;quot; - Darauf fährt ein Mast aus dem Rondell vor der Villa, der blinkt und pulst. Aha?&lt;br /&gt;
&lt;br /&gt;
De Maupassant gibt weitere Befehle: &amp;quot;Base one räumen mit Alphateam. Priorität lethale Freigabe, kollateral frei, volle Lethalität. Beta-Team in mein Büro. Volle Lethalität.&amp;quot; Büro, das sind wir, Mist! Auf dem Bildschirm erscheint ein Plan des Gebäudes, im Büro drei grüne Punkte. Viele rote Punkte bewegen sich in unsere Richtung. Wie kommen wir raus? Überraschend zeigt der Bildschirm an &amp;quot;Warten&amp;quot;. Wie? Hilft uns das System? Oder versucht man uns zu verwirren, damit wir brav bleiben, wo wir sind? Wir zögern und plötzlich sind unsere Punkte nicht mehr im Büro, sondern in einem Nebengebäude. Die roten Punkte stoppen und bewegen sich dann zügig dorthin. &amp;quot;Los&amp;quot; sagt der Bildschirm und zeigt eine gestrichelte Linie durch das Gebäude und zum nahen Waldrand. Wir rennen los, nicht ohne den Koffer (Neil) und die Kladde (Peter) mitzunehmen. Aus der Ferne ertönen Rufe und Befehle. Liz verstaucht sich den Knöchel beim Sprung vom Balkon herab (und ahnt nicht, wie egal das bald sein wird). Der Monsun ist dankenswert dicht und laut. Fast am Wald ruft uns eine Wache an &amp;quot;Wer da?&amp;quot;, wir rennen weiter und dann brennt plötzlich ein scharfer Lichtstrahl von vorne rechts Peter die Schulter weg. Was haben die denn bitte für Waffen? Wir kämpfen uns durch das Unterholz, immer hinter Neil her. Auf einem Waldweg finden wir einen Jeep mit laufendem Motor und angeschalteten Scheinwerfern ohne Besatzung. Sehr seltsam, aber einen geschenkten Jeep gewinnt man bald schon lieb. Neil gibt Gas.&lt;br /&gt;
&lt;br /&gt;
Zehn Minuten lang ist unsere Hauptsorge, dass Neil den Wagen gegen einen Baum setzt. Wir sind entkommen, wir haben ein paar Informationen, auch wenn wir insgesamt mehr verwirrt als erleuchtet sind. Dann aber gitb es einen Knall, als zwei riesige Schatten den Jeep anspringen. Der Wagen überschlägt sich, bevor er quer auf der Straße stehen bleibt. Wir springen auf der den Werwölfen abgewandten Seite aus dem Jeep und bevor Liz oder Peter etwas tun können, wirft Neil den Jeep nach den Werwölfen. Die beiden sind getroffen, aber falls das möglich ist, noch aufgebrachter als zuvor. Wir machen uns auf einen schwierigen Kampf gefasst, in dem wir hoffnungslos unterlegen sind. Ein Werwolf springt auf uns zu, als eine Lanze aus der Dunkelheit ihn trifft und durch einen ausklappenden Mechanismus von innen zerfleischt. Ein zweiter Schatten löst sich aus der Dunkelheit und köpft den zweiten Werwolf, ohne dass der jemals eine Chance hatte.&lt;br /&gt;
&lt;br /&gt;
Auf der Habenseite haben wir die Werwölfe überlebt. Dafür stehen jetzt zwei Kuei-Jin vor uns, die den Werwölfen locker überlegen waren. Wir versuchen vorsichtig, Kontakt aufzunehmen und gelangen unter Drohungen (&amp;quot;Das ist jetzt Kuei-Jin-Gebiet&amp;quot;, &amp;quot;Lohnt es sich, für die Informationen, die ihr haben wollt, zu sterben?&amp;quot;) zu einem gewissen Modus des Umgangs. Während einer der Kuei-Jin ein Ritual über den Werwölfen abhält, bei dem irgendetwas aus den Werwölfen aufsteigt, dass er einatmet, erschafft der andere eine Blase, die den Regen abhält. Tikaru bestimmt die Regeln: Wir eine Frage, sie eine Frage. Gut, das ist ein Anfang.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Was ist im Februar geschehen?&amp;quot; &amp;quot;Uraltes Übel erwacht. Drei Bodhisattvas geben sich hin, dass Übel vernichtet wird.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Diese (Liz und Neil) haben schlechtes Chi. Du (Peter) hast kein Chi. Warum?&amp;quot; Wir haben keine Ahnung. Am Clan liegt es nicht, an etwas, das man getan hat, kann es auch nicht liegen, sagen sie. Hm.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Haben die Garou bei der Vernichtung des Übels geholfen?&amp;quot; &amp;quot;Hai.&amp;quot; Echt jetzt? Wir bekommen wirklich nur dieses Ja.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wie viele Kin-Jin kommen nach Colcata&amp;quot; &amp;quot;Fünf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Neil möchte wissen, wie sie das große Übel gefunden haben, aber damit ist die Fragestunde schon beendet: &amp;quot;Du Peter-San ohne Chi leben. Tritt zur Seite, du leben, wir erlauben.&amp;quot; Damit greifen sie Liz und Neil an. Der eine scheint sich in eine gefiederte Schlange zu verwandeln, die Neil angreift. Der andere wird zur wandelnden Plattenrüstung. Er erinnert entfernt an einen Krieger aus der Reakotta-Armee des Qín Shǐhuángdì. Allerdings haben die beiden Waffen, die silbern fließen und wie auf Befehl sich ändern. Der Kampf läuft nicht gut. Wir können nicht auf unsere Willenskraft zurückgreifen in der Blase und nehmen schweren Schaden. Neil kämpft gegen die Schlange, die sich viel zu spät als Illusion herausstellt, Liz verliert durch einen glatten Hieb beide Beine und Peter empfängt eine schwere Bauchwunde. Zu unserem Glück reagieren beide auf ein Signal, das aus der Ferne zu hören ist. Es dauert einen Moment, bevor wir von heulend im Dreck sitzen und versuchen sich die Beine wieder anzustecken übergehen können zu immerhin haben wir überlebt. Völlig am Ende schleppen wir uns zum Jeep, den Neil aufrichtet und Peter zurück in die Stadt fährt - sehr langsam, aber wir sind froh, dass das Ding überhaupt noch funktioniert. &lt;br /&gt;
&lt;br /&gt;
Wir brauchend dringend Blut, doch der Morgen ist nahe. Nur zurück ins Hotel, wo hoffentlich die anderen sind und es Konserven gibt. Wir wollen nicht in unserem Zustand jagen gehen und das Leben von Unschuldigen riskieren. Als wir, am Ende unserer Kräfte, in die Straße biegen, an deren Ende unser Hotel liegt, dann der Schock: Das Hotel, oder das was davon übrig ist, brennt lichterloh.&lt;br /&gt;
&lt;br /&gt;
Der Versuch, die anderen anzufunken, schlägt fehl. Wir sind auf uns gestellt. Aber trinken und übertagen müssen wir irgendwo. Neil weigert sich, in seinem Zustand trinken zu gehen. Zu groß schätzt er die Gefahr, dass er sich nicht beherrschen kann. Liz (auf Schattententakeln) und Peter sind weniger zimperlich und besorgen sich einsame Heimkehrer in Nebengassen. Aber Neil hat die Lage durchaus richtig eingeschätzt: Liz und Peter müssen Unmengen an Willenskraft aufbieten, um dem Tier in ihnen zu widerstehen, immerhin erfolgreich. Dafür trinken wir ausgiebig an immer neuen Menschen, es wird ein dreckiger Rausch. Zum Schluss füllen wir das Blut von zweien in deren Henkelmänner, um es Neil mitzubringen. Mit etwas Überredung trinkt er es, aber selbst hier lässt er etwas übrig. Peter trinkt es aus. &lt;br /&gt;
&lt;br /&gt;
Wir mieten uns in einem billigen Hotel ein, schließen und im Badezimmer, dass Peter immerhin noch schützt, dann machen wir es uns bequem, Liz ohne Beine in der dreckigen Dusche, Neil an der Tür, Peter auf dem Scheißloch im Boden.&lt;br /&gt;
&lt;br /&gt;
===Die zweite Nacht===&lt;br /&gt;
Es wird ein schlimmes Erwachen. Wir versuchen die anderen anzurufen, doch das Netz ist gestört. Nach und nach wird uns klar, wie die Zusammenhänge sind. Jeglicher Außenkontakt wird durch die Operation Blackshield unterbunden, also durch diese seltsame Antenne, die wir in der vorigen Nacht gesehen haben. Base one, welche das Alphateam zerstören sollte, war unser Hotel. Wir rätseln, wie wir die anderen finden sollen, weil Peter wieder einmal vergessen hat, dass er das ja ohne Probleme hinbekommt. Dafür betrachtet er den Koffer noch einmal ganz genau und mit ein bisschen Nachdenken und Bewegung durch den Geist bekommt er ihn geöffnet.&lt;br /&gt;
&lt;br /&gt;
Darin befinden sich die mumifizierten Überreste von [[Lucienne de Maupassant]]. Damit ist klar, dass jemand anderes sich bei den Blauhelmen (wenn das denn Blauhelme sind) als sie ausgibt. Man könnte sich fragen, warum Lucienne mumifiziert ist und nicht zu Staub zerfallen. Da muss doch etwas Besonderes vorgefallen sein. Aber Peter ist so fasziniert, endlich eine Gewebeprobe für die Entzifferung der Kladde zu haben, dass derlei unwichtige Details in den Hintergrund treten.&lt;br /&gt;
&lt;br /&gt;
In die Hände fallen uns vier Dokumente und ein Post-It, die wir eifrig studieren:&lt;br /&gt;
&lt;br /&gt;
Dokument Nr. 1 ist die letzte Seite eines Berichts von CR, dem Justicar der Nosferatu für de Maupassant. Wesentliche Infos:&lt;br /&gt;
&lt;br /&gt;
* Man weiß nicht, warum einzelne Ravnos überlebt haben.&lt;br /&gt;
* Clan Ravnos ist faktisch vernichtet, es gibt ein Restanzahl im unteren dreistelligen Bereich.&lt;br /&gt;
* Quellen berichten über wieder ausbrechenden Wahnsinn, sobald sich zwei Ravnos begegnen.&lt;br /&gt;
* Man befürchtet, das Kuei-Jin die Lage nutzen, um ihr Herrschaftsgebiet auszudehnen.&lt;br /&gt;
&lt;br /&gt;
Nun, das letzte können wir bestätigen. Zur ersten Frage hat Liz eine Idee. Bewusstlosigkeit und Wasser waren die entscheidenden Merkmale bei Chandrakant.&lt;br /&gt;
&lt;br /&gt;
Dokument Nr. 2 ist ein Brief von Netchurch an den Justicar. Wesentliche Infos:&lt;br /&gt;
&lt;br /&gt;
* Netchurch forscht an dünnblütigen Vampiren, die offenbar (zeitliche Korrelation) empfänglich sind für die psychischen Schwingungen, die mit der Vernichtung eines Vorsintflutlichen einhergehen. &lt;br /&gt;
* Netchurch berichtet von Ausrufen seiner Testsubjekte:&lt;br /&gt;
* &amp;quot;Zehn Köpfe, zehn Arme, schneidet sich nacheinander die Köpfe ab, verspeist sie.&amp;quot;&lt;br /&gt;
* &amp;quot;Der Drache erhebt sich, der Kranich stößt hinab und der Tiger beginnt, sein Opfer zu umkreisen.&amp;quot; &amp;quot;Sie schlagen nach den Alpträumen des Königs.&amp;quot; &amp;quot;Die Alpträume schlagen zurück.&amp;quot;&lt;br /&gt;
* &amp;quot;Er brennt! Er brennt! Die Sonne ist vom Himmel gefallen und er brennt!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mit dem zweiten Ausruf können wir dank Liz schon etwas anfangen: Drache, Kranich und Tiger sind wohl drei Kuei-Jin.&lt;br /&gt;
&lt;br /&gt;
Dokument Nr. 3 ist dem Brief von Netchurch angehängt, es ist der Bericht eines befreundeten Psychaters aus Wien. Auch der berichtet von den Ausrufen seiner Patienten. &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;The king woke up. He woke up hungry, doctor. Now he is eating all his children, his grandchildren and his grand-grandchildren. They don't like it, but they can't escape his dreams.&amp;quot;&lt;br /&gt;
* &amp;quot;The king walks with the nightmares now. They call his children to him.&amp;quot;&lt;br /&gt;
* Einer malt (mit Scheiße) ein Bild: Four stick-figure men with huge , fanged mouths where their heads should be. All around them bloody swirls and clouds.&amp;quot;&lt;br /&gt;
* &amp;quot;Chains of water. Because water holds him. That's why they called the storm, you see, doctor?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Strichmännchen sind wieder unsere drei Kuei-Jin und Ravnos in ihrer Mitte. Wieder Wasser, das gegen Ravnos hilft, diesmal um ihn zu halten. Wir verstehen, dass Ravnos seine Kinder nicht nur hat wahnsinnig werden lassen, sondern sie sich einverleibt hat. Aber was hat es mit den Alpträumen auf sich?&lt;br /&gt;
&lt;br /&gt;
Dokument Nr. 4 ist das Transkript eines Treffens zwischen verschiedenen Prinzen, wir nehmen an von Hauptstädten. Besonders interessant Vitels Einlassungen (Washington). Die wissen Bescheid über die Ereignisse in Kalkutta (&amp;quot;Vernichtung aller Keinskinder dort&amp;quot;), sie verstehen, was das bedeutet, beschließen aber, die Klappe zu halten, teils aus Ordnungserwägungen, teils aus purem Eigensinn. Vitel schlägt vor, sich auf die Suche zu machen nach Methoden, Clansgründer zu vernichten. Notfalls ihnen die Untergebenen zum Fraß vorwerfen...&lt;br /&gt;
&lt;br /&gt;
Am allermeisten aber interessiert uns das Post-It: Muss Nossi finden. Dringend. Kontakt: Old Market Road 17. Frag nach &amp;quot;Gaul&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Noch immer kein Kontakt mit den anderen. Neil findet, man sollte [[Gaul]] finden. Wir nehmen den Jeep und fahren in die Old Market Road. Gaul stellt sich als verhältnismäßig umgänglich heraus, im Grunde der erste Kontakt in Kalkutta, der nicht gleich versucht, uns umzubringen. Unsere Standards sind aber auch wirklich am Boden. Jedenfalls hat er 50-60 Ghoule unter seinem Haus gesammelt, die er notdürftig versorgt. Denn er ist der letzte Vampir in Kalkutta - der Prinz, wie er verächtlich sagt. Überlebt hat er, indem er unter Wasser tauchte. Alle anderen sind wahnsinnig geworden und haben sich gegenseitig zerfleischt, wobei der Palast offenbar etwas länger ausgehalten hat. Er liegt, wir sind nicht mehr überrascht, auf eine Insel. (Allerdings erfahren wir später von Susan und Olaf, dass die Verzögerung des Endes wohl weniger an der Insellage als an Schutzzaubern lag.) Leider ist Gaul erstaunlich uninformiert, was die Ereignisse im Februar angeht. All unsere Fragen zeigen, dass wir besser informiert sind als er. Der Zyklon ist künstlich? Soso. Ravnos ist vernichtet? Ach! Und so fort.&lt;br /&gt;
&lt;br /&gt;
Wir sind frustriert, weil wir gar nicht mitbekommen, dass wir nebenbei eine Menge Interessantes erfahren. Niemand hat die Stadt unter Kontrolle. Aber Pseudo-UN, Kuei-Jin und Werwölfe ringen um Einfluss, genauer: Die Werwölfe behrrschen die Wälder, die Kuei-Jin wollen lediglich nicht, dass Vampire herkommen, haben aber kein Interesse an eigenem Einfluss. Besonders schlimm geworden ist die Lage seit dem Eintreffen des neuen Majors der Pseudo-UN, seitdem bekriegen sich die drei Parteien ernsthaft. Wir sind erstaunt zu hören, dass Hesha Ruhadze im Februar zu Besuch war. Er hat angeboten, Gaul mitzunehmen, der hat aber abgelehnt, erst will er die Ghule versorgt wissen. Auch Hesha hat im Wasser berlebt! Und wir werden ganz aufgeregt, als wir erfahren, dass vor Kurzem [[Beckett]] hier war. Der wollte wissen, wo genau ein alter Tempel lag und Gaul hat ihn mangels Ravnos zu den Roma am alten Sportplatz geschickt wo der Maidan auf die alten Slums trifft. Wir lagern den Koffer bei Gaul und versprechen, zurückzukehren, um unseren Teil des Handels einzuhalten. Auf zu den Roma!&lt;br /&gt;
&lt;br /&gt;
Auf dem alten Sportplatz ein schlimmer Slum, wild getürmte Wellblechkonstruktionen, die den Dauerregen überhaupt nicht abhalten können. Mitten darin ein eigenes kleines Viertel, das offenbar bewacht wird. Wir werden von einer großen Gruppe Männer mit Messern und Holzpflöcken aufgehalten, die wir locker überwinden könnten, wenn wir wollten. Aber wir wollen ja etwas von diesen Leuten. Man weist uns ab bis plötzlich jemand den Button an Liz' Oberteil entdeckt. Plötzlich werden wir doch hineingelassen zu zwei Alten. Die sind bereit mit uns zu reden, wenn wir uns an die Traditionen halten. Nun gut, wir sind höfliche Leute. Also geben wir etwas Vitae, die die Alten gierig trinken und trinken selbst von dem Blut, dass man uns bringt. Die nachfolgenden Fragen beantworten sie zurückhaltend und wir lernen fast nichts. Aber darum geht es auch nicht, wie wir schnell feststellen. Plötzlich wird uns schummerig, wir können unsere Disziplinen nicht mehr einsetzen und dann werden wir gepflöckt. Die Roma erklären uns noch, dass es Beckett genauso ergangen ist, den haben sie an die UN verkauft. Uns will die UN auch haben, aber uns werden sie behalten, als Quelle des ewigen Lebens. Damit werden wir in einen Betonkeller geschafft und dürfen die Decke anstarren, während gelegentlich jemand kommt, um uns anzuzapfen. Tage und Nächte vergehen...&lt;br /&gt;
&lt;br /&gt;
(Ein paar Informationen gab es allerdings auch hier. Beckett wollte zum Nationalpark. Die Ravnos haben sich gegenseitig zerfleischt. Der Major verlässt die Stadt demnächst.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gruppe Palast==&lt;br /&gt;
...wie war es bei Euch? Schreibt es hier hin!...&lt;br /&gt;
&lt;br /&gt;
=Wieder vereint=&lt;br /&gt;
Wir lassen die Roma hinter uns und fahren zum Kunsthändler B. (Battasharama???), der uns über die Maßen der Gastfreundschaft hinaus mit Blut verschiedener Menschen versorgt, das wir auch dringend benötigen. Olaf heilt uns und kreiert für Liz zwei, wie von da an stets betont wird, sehr schöne Beine.  Mit Peters Heilung hat Olaf Probleme, er bekommt ihn nur schwer zu spüren, da ist nichts an Lebensenergie und es liegt nicht an den Wunden. Sollten die Kuei-Jin Recht haben? Aber was bedeutet das?&lt;br /&gt;
&lt;br /&gt;
B. würde gerne mit Liz reden. Beckett hat vorgeschlagen, dass sie neuer Prinz von Kalkutta werden könnte. Wir brauchen etwas, bis wir verstehen, dass die Identifikation über Bilder gelaufen sein muss. Beckett dachte an [[Clemence]]. Sein Vorschlag bleibt rätselhaft, aber vielleicht versucht er Clemence aus dem Sabbath herauszubefördern??? Liz jedenfalls denkt nicht daran, Prinz von Kalkutta zu werden.&lt;br /&gt;
&lt;br /&gt;
Wir berichten uns, tragen Informationen zusammen und schmieden Pläne für die folgende Nacht. In Kalkutta ist für uns nichts mehr zu holen. Fahren wir direkt zum Nationalpark? Oder versuchen wir erst, Beckett zu retten? Wir entschließen uns zu diesem Plan.&lt;br /&gt;
&lt;br /&gt;
In der Nacht führen Liz und Peter lange Gespräche über Collin und Elena. Soll Liz der den Kuss geben, wo sie so fasziniert von ihr ist? Noch schreckt Liz vor diesem Gedanken zurück. Aber ghoulen? Auch an diesen Gedanken wagt Liz sich noch nicht.&lt;br /&gt;
&lt;br /&gt;
==Angriff auf die Technokratische Union==&lt;br /&gt;
Inzwischen wissen wir auch, dass es sich bei der Pseudo-UN um eine Nachfolgeorganisation eines alten Magierordens, des Ordens der Vernunft handelt - traditionelle Gegner des Ordens des Hermes, aus dem die Tremere ursprünglich stammen. (Man erinnere sich, den Hermes-Orden als Verbündeten zu gewinnen, war einer der vier Pläne, die nach Kaymakli zur Diskussion standen.) Noch wissen wir nicht, wie die sich jetzt nennen.&lt;br /&gt;
&lt;br /&gt;
Wir spähen das Gelände aus, dann gehen wir halbwegs geplant vor. Susan verdunkelt sich und betritt das Gebäude, wird aber bald entdeckt und muss nach draußen fliehen. Dort schalten die anderen einigermaßen geordnet den Widerstand aus. Die Soldaten mit ihren Glasgewehren, welche diese Laser/Feuer/Lichtstrahlen abfeuern können, die Vampire so schön verbrennen, sind eine ernste Herausforderung, aber eine, die wir stemmen können. (Seltsam übrigens, wie das fließende silbrige Zeug dieser Waffen den Waffen der Kuei-Jin ähnelt...) Schlimmer sind die beiden Agenten des Ordens, die magisch fähig sind. Am Ende bekommen wir aber auch die ausgeschaltet, ob mit Schattententakeln, in-die-Erde-ziehen, oder schlichtem Draufhauen. Blöd, dass die Glasgewehre explodieren, wenn sie auseinander brechen.&lt;br /&gt;
&lt;br /&gt;
Beckett finden wir leider nicht, insofern ist der kleine Ausflug ein Misserfolg. Aber Peter schaut sich den Jet an und bekommt mit viel Glück und etwas magischem Verständnis Zugang zu [[Vera]], der AI, die den Jet sogar steuern kann. Vera verrät uns, dass diese Station geräumt ist und lediglich ein kleines Kontingent noch in der Forschungsstation Ragnarök weiter forschen wird. &lt;br /&gt;
&lt;br /&gt;
Wir diskutieren, ob wir den Blackshield (die Antenne vor der Villa) ausschalten sollen, beschließen aber, sie für den Moment intakt zu lassen. (Wir sind der Überzeugung, dass Blackshield für den Informationsstopp aus Kalkutta zuständig ist. So richtig passt das aber nicht, oder? Schließlich haben unsere Telefone funktioniert, als wir ankamen. Es erklärt ja auch nicht, warum niemand rausgefahren ist und dann berichtet hat. Blackshield scheint ein lokales Phänomen zu sein.)&lt;br /&gt;
&lt;br /&gt;
Wir schalten den Fernzugriff auf den Jet aus, schmeißen die Tarnvorrrichtung an und Vera fliegt uns zum Nationalpark.&lt;br /&gt;
&lt;br /&gt;
==Schrein und Magus==&lt;br /&gt;
Der bietet ein Bild der Zerstörung. Wo einstmals ein grünes Tal voller Dschungel gewesen wein muss, befindet sich nichts als geschmolzener Stein, der in Wellen von drei Punkten ausgeht, die sich um ein Zentrum gruppieren. allerdings bemüht man sich offenbar, die Gegend wieder fruchtbar zu machen: LKw-Kollonnen lassen Unmengen von Drohnen aufsteigen, die die Steine aufbrechen, den Boden umgraben, sähen und spritzen. &lt;br /&gt;
&lt;br /&gt;
Bemerkenswerterweise aber ragt ein kleiner Keil grünen Dschungels in die Mondlandschaft. Darin findet sich ein Dorf, auf der Klippe dahinter, am Rand des Tales, liegt Station Ragnarök. Wir scannen die Gegend, finden verschiedene Devianten, schalten den Flüsterantrieb ein und finden so einen Magus im Dorf. Zunächst aber landen wir nahe der Spitze des Keils auf einer Lichtung im Dschungel. Dort befindet sich ein Schrein mit einer kleinen Buddha-Statue. Davor ein Platz, auf dem wohl jemand seit Jahrzehnten sitzt und meditiert. Susan sieht sich den Stein mit Auspex an, was sie sofort bereut. Sie weint Blut, erbricht sich und kommt für einige Augenblicke gar nicht mehr klar. Olaf und Peter ist unwohl, schnell mekren sie, dass die Empfindung zu den Rändern des grünen Keils stärker wird. Es ist zeiemlich klar: Dort draußen überlebet es sich nicht so gut. Etwas oder jemand hat das Dorf von hier aus vor der fürchterlichen Vernichtung geschützt.&lt;br /&gt;
&lt;br /&gt;
Wir wandern den Pfad entlang zum Dorf. Dort nehmen wir zunächst Kontakt zum Dorfvorsteher auf, der uns vom Tag des großen Lichts erzählt, das bis ins Dorf hinein leuchtete. Wir bekommen heraus, dass das Licht in zwei Wellen kam, erst ein Blitz und Knall, kurz darauf dann wurde es taghell. Hm. Wir versichern, dass wir mit der sogenannten UN nichts zu tun haben und der Dorfvorsteher führt uns zu einer Hütte, in der jemand wartet. &lt;br /&gt;
&lt;br /&gt;
Es ist [[Henry McNamara]], der auf Forrester, seinen Mentor wartet, der nach Kalkutta ist. Es bleibt ihm auch gar nichts anderes übrig, so schwer verletzt wie er ist. Wir schätzen, dass in diesem Klima Henrys Wunde eher schlimmer wird als sich langsam bessert. Wir tauschen Informationen aus, Henry gehört zum Orden des Hermes, Haus Feranon und bei der Pseudo-UN handelt es sich tatsächlich um den ehemaligen Orden der Vernunft, jetzt Technokratische Union. Auch Henry will erfahren, was hier geschehen ist und weiß, wo man die entsprechenden Infos in der Station finden kann. Wir beschließen, für den Moment zusammen zu arbeiten.&lt;br /&gt;
&lt;br /&gt;
Susan ist klar, dass Henrys Verbrennungen nicht auf natürlichem Wege heilbar sind, zumindest nicht jetzt und hier. Henry, der davon ausgeht, einem Haufen beißwütiger Vampire in die Hände gefallen zu sein, lässt sich zwar überzeugen, dass wir ihn nicht leertrinken wollen. Aber so viel Vertrauen, dass er Olaf an sich herumoperieren lässt, hat er dann auch wieder nicht. Ausgerechnet Liz (die doch nie einen Ghoul erschaffen wollte) schlägt ihm vor, dass Vitae doch heilende Wirkung haben kann. Er darf von ihr trinken. So direkt bringt Henry das nicht über sich. Aber Vitae aus einem Becher trinkt er, erst vorsichtig, dann immer lieber. Henry heilt seine bösen Verbrennungen mit etwas Anleitung von Liz und Susan -- und schaut Liz mit großen, großen Augen an.&lt;br /&gt;
&lt;br /&gt;
Henry und Peter spüren plötzlich, dass in der Station etwas vor sich geht. Ein Ritual? Jedenfalls ist plötzlich klar, dass wir nur noch wenig Zeit haben. Zwanzig Minuten vielleicht? Und wir sind noch immer erschöpft und leer vom Kampf gegen die Agenten. Eilig gehen wir im Dorf trinken - vor Henrys Augen und beinahe mit tödlichen Folgen, weil wir uns nicht beherrschen können. Immerhin sind wir schnell.&lt;br /&gt;
&lt;br /&gt;
Im Laufschritt geht es zur Station Ragnarök. Wir sehen den zweiten Jet davonfliegen, das Tor steht offen. Magische Energie schlägt uns entgegen. In der Station überall Alpträume, die verdammt real wirken - oder real sind? Jedenfalls sind überall Blutspuren. Liz Tentakel pulsieren, genauso wie Neils Feenanhänger. Wir folgen Henry rennend bis zur Zentrale, wo er mit etwas Magie das System dazu bringt, den [[Geheimbericht über die Ereignisse im Februar]] (in Ermangelung eines besseren Wortes) zu drucken. Kaum hält er seine Kopie in der Hand, bewegt er sich auch schon Richtung Tür. Peter kann ihm gerade noch seine Telefonnummer auf die Zettel schreiben; ein letzter sehnsüchtiger Blick auf Liz und fort ist der Magus.&lt;br /&gt;
&lt;br /&gt;
Wir dagegen rennen zum Devianten, den das System uns angezeigt hat. Neill öffnet die Tür der Zelle mit Gewalt, wir ziehen Beckett den Pflock heraus, erklären ihm, dass keine Zeit für Erklärungen ist und rennen los. Da aber explodiert schon die Decke. Alles um uns herum wird pulverisiert und bewegt sich auf die Gestalt zu, die mit einem Mal in der Dunkelheit schwebt. Es gibt ein böses Loch in der Realität. Die Gestalt sieht zunächst aus wie der Major, also [[Lucienne de Maupassant]], die sich aber schnell verwandelt in die verlorene Fee. Wie bitte? Noch bevor wir uns ausführlich wundern können, wird uns schwarz vor Augen.&lt;br /&gt;
&lt;br /&gt;
==Jenseits dieser Welt==&lt;br /&gt;
Wir erwachen in etwas, dass auf einer Seite aussieht wie eine ehemalige Tempelkammer, den Verzierungen nach indisch mit grob behauenen Steinen. Es gibt auf dieser Seite ein Tor hinaus, dessen Riegel von innen vorliegt. So weit, so gut. Tatsächlich beeindruckend und geradezu verstörend ist die andere Seite des Raumes, wo der Boden ins Nichts abfällt, amn über uns grüne, fremde Sterne sieht, die alles taghell machen, und weit, weit unter uns die Erde. Von dort, genauer von Indien aus rankt sich ein ölig-schwarzer Baum herauf bis zu uns. Zum Glück steht die Sonne hinter der Erde...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Und ich blickte in ferne und wunderbare Lande, wo die Gerüche beißend und die Sterne grün sind. Dort spürte ich den Umbra erschüttern und den Äther weinen als ein besiegeltes Schicksal offenbar wird.&amp;quot; Wir sind im Ubra, in einer dieser Realitätsblasen, wie manche von uns sie schon vom [[Bazaar der Nacht]] kennen. Wie um Himmels willen hat es uns hierher verschlagen? Welches ist das besiegelte Schicksal? Ravnos? &lt;br /&gt;
&lt;br /&gt;
Peter kippt zur Seite und spuckt Blut, als er einen Zauber versucht, der dazu gedacht ist, dass Umbra aus sicherer Entfernung zu betrachten. Immerhin bestätigt das unsere Vermutungen. Die Ranken sind eine Art Brücke hier hoch, leider keine die wir zurück beschreiten können. Und die Ranken werden diese Blase auf Dauer vernichten.&lt;br /&gt;
&lt;br /&gt;
Zum ersten Mal haben wir Gelegenheit mit dem berühmten [[Beckett]] zu reden. Leider stellt sich heraus, dass er auf der Suche nach dem Schwein ist, dass seinen Freund Anatol diablerisiert hat. Hüstel. Lustigerweise hält er Liz für Clemence. Liz klärt ihn auf und versucht in der Eile so viel wie möglich über ihre Schwester zu erfahren. Viel zu schnell (für Liz) entschließen wir uns, das Tor zu öffnen.&lt;br /&gt;
&lt;br /&gt;
...die Details der Informationen über Clemence sind mir entgangen...&lt;br /&gt;
&lt;br /&gt;
Wir öffnen das Tor und zu unserer Überraschung finden wir uns tatsächlich auf dem [[Bazaar der Nacht]] wieder. Während Liz sich gerade erneut Becket greifen will, wird er von einer der Gestalten auf dem Markt fortgewünscht. Und weg ist er. Der Markt zeigt Verfallserscheinungen, denn die schwarzen Ranken greifen nach ihm. Olaf tauscht etwas ein (was war das noch gleich?), Neil und Peter dagegen handeln mit dem [[Der_Marktaufseher|Marktaufseher]] einen Deal aus. Wir reinigen das Herz des Risses und bringen ihm die Verunreinigung und er weist uns den Weg zur Pforte nach Hause.&lt;br /&gt;
&lt;br /&gt;
Hinter einem weiteren Tor finden wir ein Tal -- das Tal aus dem wir kommen, jedoch grün, voller Dschungel und in der Ferne sehen wir den Tempel des Ravnos. So muss das Tal vor Jahrhunderten ausgesehen haben. Wir wandern zum Tempel, wo uns ein Wächter entgegenstritt, der [[Engel des Todes]], eine Fae. Für einen Moment sind wir verwirrt, warum bewacht eine Fae den Tempel des Ravnos? Denn Ravnos ist doch nicht mehr? In allen relevanten Sinnen, ja, er ist nicht mehr. Die Fae ist hier wegen der Fae, die wir gesehen haben. Der Wächter verspricht, uns zur Fee zu geleiten, aber einfach werde das nicht. Wir müssen zunächst die Tür zum Thronsaal öffnen, die von den Ranken ganz versperrt ist. Diese Dunkelheit hält die Fae gefangen, aber indem wir drei Mal ein Stück von den Ranken abbrechen, können wir einen Teil des Schmerzes der Fae lindern, wobei einer von unsjeweils die Hauptlast des Schmerzes tragen muss. Einer allein aber kann den Schmerz überhaupt nicht ertragen.&lt;br /&gt;
&lt;br /&gt;
===Erste Ranke===&lt;br /&gt;
Wir fassen also die erste Ranke und Susan bricht sie ab. Damit stehen wir auf einer Urwaldlichtung, die Luft knistert, ein großes Dunkles Übel in der Ferne. Zwei Gestalten, die Kuei-Jin-Gegner von Gruppe UN, betreten die Lichtung.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Die drei Bodhisattvas sind angekommen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Es erscheinen drei Gestalten. Ein gebrechlicher Koreaner in dukelroter Kleidung, eine zierliche junge Frau mit Schwert in einem Schuppenpanzer und ein stattlicher Chinese. Die Kuei-Jin verneigen sich vor den &amp;quot;ehrwürdigen Älteren&amp;quot;. Die halten sich an den Händen, beginnen einen Singsang.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Der große alte Feind ist zu ausschweifend und gierig geworden. Er hat zu viele Vampire geschaffen und so haben sie den Alten geweckt, der sein Blut zurückfordert.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die drei rufen einen Sturm herbei, so dass sie Ravnos zum Kampf fordern können (und auch tagsüber kämpfen können). Sie werden größer, mächtiger und verwandeln sich in Tiergestalten, um &amp;quot;den Kampf um diese Welt&amp;quot; zu beginnen -- Drache, Kranich und Tiger.&lt;br /&gt;
&lt;br /&gt;
Schwärze und Schmerz durchziehen uns, wir nehmen schweren Schaden, das meiste davon Susan. Wir sind zurück im Tempel, nur langsam lässt der Schmerz nach und Susan hält einen Ast in der Hand.&lt;br /&gt;
&lt;br /&gt;
===Zweite Ranke===&lt;br /&gt;
Diesmal ist es Liz, die die Ranke abbricht, als wir alle anfassen. Wind und Regen sind wie eine Mauer, vor uns liegt das Tal. Unser Anführer (eine?) Silbermähne spricht zu uns. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Gibt es Verletzte, Sturmfalke, Schakal, der durch die Nacht ruft? Wir sind die einzige Horde, die es durch den Sturm geschafft hat. Die Alpträume und die asiatischen Ekel und die menschlichen Zauberer, alle kämpfen mit den Alpträumen, aber auch miteinander! Der Feind ist im Tal. Garga baut auf uns. Wir sind ihre Soldaten...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dann drei gigantische Feuerbälle. Die Neutronenbombem schmelzen den Boden zu Glas. Die Werwölfe werden allein durch die Druckwelle zu STaub pulverisiert. Der Boden dagegen scheint noch nicht einmal von einem Lüftchen getroffen zu werden. &lt;br /&gt;
&lt;br /&gt;
Wir nehmen alle schweren Schaden, als der Schmerz uns durchfährt, Liz trägt die Hauptlast. Es ist schlimmer als beim ersten Mal.&lt;br /&gt;
&lt;br /&gt;
Damit sind wir zurück im Tempel und Liz trägt das Stück Holz in der verbrannten Hand.&lt;br /&gt;
&lt;br /&gt;
===Dritte Ranke===&lt;br /&gt;
Ohne lange zu zögern, greifen wir nach der dritten Ranke. Susan möchte wieder den Löwenanteil tragen, doch Neil ist zu schnell für sie. Dunkelheit, wir tragen schwere Kampfpanzer und Klingenwaffen. Wir stehen im Kreis, umringen eine einzelne Person, eine junge Frau, die am Rande ihrer Kräfte den Zyklon aufrecht erhält. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Die eiserne Chrysantheme darf nicht fallen!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Risse, Schatten, branden gegen uns an. Wir vernichten einen nach dem anderen, doch es werden nicht weniger.&lt;br /&gt;
&lt;br /&gt;
Drei Sterne erscheinen, die gleißend hell aufblitzen. Feuer brandet über uns hinweg. Donner, Hitze und Schmerz. Nur die eiserne Chrysantheme steht noch und versucht, uns zu schützen. Das Feuer wischt die Gestalten fort. Drache, Tiger und Kranich fallen. Nur noch ein riesiger Behemoth steht. Die Kräfte der eisernen Chrysantheme nähern sich ihrem Ende. Wir zerfallen zu Asche wie sie auch. Die Wolken reißen auf. &lt;br /&gt;
&lt;br /&gt;
Wir sehen den Sternenhimmel, nein mehrere. Es sind Spiegel im All und Sonnenlicht fällt in das Tal. Der Behemoth schreit auf und eine Welle des Schmerzes geht von ihm aus, als er fällt. Dieser letzte Schmerz hat all seine Kinder erreicht. Dann zerfällt er zu Asche.&lt;br /&gt;
&lt;br /&gt;
Wieder nehmen wir schweren Schaden, Neil diesmal den meisten.&lt;br /&gt;
&lt;br /&gt;
Zurück im Tempel fallen wir auf die Knie vor Schmerz. Neil hält das Holzstück. Aber die Tür zum Thronsaal öffnet sich! In der Mitte auf einem Thron eine Gestalt - die Fae. Nun zeigt sich, dass all der Schmerz der Fae, den wir geteilt haben, noch lange nicht genügt, um sie zu befreien. Der ölige schwarze Baum wächst mitten durch die Fae...&lt;br /&gt;
&lt;br /&gt;
Aber der Engel des Todes versichert uns, dass wir sie befreien können, wenn wir zwei Blüten abbrechen, die in ihrer Nähe aus dem Baum wachsen. Danach ist es an uns, was wir mit ihr tun. Sie ausliefern, sie frei lassen, sie in ein Gefäss sperren, das der Engel des Todes aus den drei Holzstücken formen kann oder sie gleich töten. Wir diskutieren, wobei es erstaunlicherweise Neil ist, der sich für den direkten Tod der Fae einsetzt. Aber...in diesem Gefäss könnte die Essenz der Fae dafür sorgen, dass ein Vorsintflutlicher für ein Jahr und einen Tag wieder einschläft... verlockend. Peter bricht die erste Blüte ab, doch diesmal bleibt der Schmerz aus:&lt;br /&gt;
&lt;br /&gt;
===Die erste Blüte===&lt;br /&gt;
Jemand beginnt, unter Kalkutta einen Ort auszugraben. [[Lucienne de Maupassant]] nutz Bewegung durch den Geist, um Schutt beiseite zu räumen. Sie sieht ein zierliches Wesen, beugt sich darüber, doch dann dringt das Wesen in sie ein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich musste es tun. Ich war voller Schmerz. Und Luciennes Körper gab mir Schutz vor dem Schmerz und eine Heimstatt. Nur ein Weg, den Schmerz zu beenden. Zurück in die Heimat, nach Arkadia!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Offenbar hatte die Fae die Hoffnung, Ravnos könne sie zurück bringen, oder helfen, den Bazaar zu finden. Als Lucienne, die erstaunlich kenntnisreich war und deren gesammtes Wissen und manipulative und magische Fähigkeiten die Fae übernimmt, sammelte sie genügend Macht, um eine Brücke zu bauen, eben jenen Baum, den wir gesehen haben. Dass Luciennes Methode, mit dem Schmerz umzugehen, war, alles nur gut zu verstauen und zu verdrängen, half nicht gerade. Leider hielt Luciennes Körper den Feen-Belastungen und dem Schmerz nicht stand und sie verstaute ihn im Koffer. Stattdessen nahm sie einen anderen Körper, doch sie wusste, dass sie einen robusteren, besseren Körper brauchte -- einen vampirischen. Sie suchte Gaul (der wusste, dass die Fae in der Stadt war), doch dann erschien Neill mit dem perfekten Körper. Es ist ein Leichtes, Neill zu manipulieren, ihn dazu zu bringen den Koffer zu nehmen und als er das Herz berührt, hat sie gewonnen. Beckett behält sie als Notfallplan. Neill hat sie auch zu Gaul geführt, den sie daraufhin vernichtet hat, genauso wie die Ghule. Oh weh.&lt;br /&gt;
&lt;br /&gt;
Zurück im Thronsaal diskutieren wir darüber, was wir mit dieser Fae ohne jedes Gewissen anstellen sollen.&lt;br /&gt;
&lt;br /&gt;
===Die zweite Blüte===&lt;br /&gt;
Diesmal bekommen wir keine Vision, sondern stehen nach wie vor im Thronsaal. Na, vielleicht ist es doch eine Vision, denn die Fae streckt sich und verwandelt sich in ihr altes Selbst, [[Éhrín]], nun, einen Schatten davon, so ausgezehrt wie sie ist. Es ist ihr egal, was nun mit ihr geschieht, solange nur der Schmerz aufhört. Das wäre im Ei (aus dem Holz des Baumes) ebenso der Fall wie im Tod. Sie hat einst ihre Schwester in die Herbstwelt begleitet, obwohl sie nicht wollte. Ihre Schwester wollte Dinge aus der Herbstwelt zurückführen, die man vor Urzeiten zurückgelassen hatte. Doch ihre Schwester ist gefangen genommen - nein, Neill hat sie ja befreit. Doch nun sind die Tore geschlossen. Es gibt keinen Weg zurück. Wir sollen ihrer Schwester ausrichten, dass es ihr Leid tut, gescheitert zu sein. Ravnos war das erste Geschöpf, dass sie jemals auf der HErbstwelt gefunden hat, der begabte Ravnos war ihr Schüler. Sie erträgt den Schmerz über die Kurzlebigkeit von allem in der Herbstwelt nicht mehr. Das Bild, das sich ergibt, ist in der Tat schlimm: Gerade als Éhrín hoffen konnte, nach Hause zurückzukehren, wird Ravnos vernichtet und sie bekommt die psychische Welle, die von ihm ausgeht, mit voller Wucht ab. Wir haben inzwischen eine entfernte Ahnung davon, wie sich das anfühlt - und wir waren zu fünft und haben nur das Echo gespürt.&lt;br /&gt;
&lt;br /&gt;
Dann sind wir zurück im Thronsaal, der Engel des Todes sperrt Ehrin in das Ei, das er Neill übergibt. Der ölige Baum verwelkt und vergeht langsam. War das besiegelte Schicksal das der Fae?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ein langer Heimweg==&lt;br /&gt;
Wir kehren zurück zum Marktaufseher, der sich seinen Preis nimmt, die Reste des Baumes. Er führt uns zur [[Die Geheimniskrämerin|Geheimniskrämerin]], die zunächst von jedem von uns ein Geheimnis will, bald aber einschwenkt auf &amp;quot;Das tiefste Geheimnis ist Selbsterkenntnis&amp;quot; und uns fünf Türen präsentiert mit den Aufschriften &amp;quot;Schmerz&amp;quot;, &amp;quot;Stolz&amp;quot;, &amp;quot;Zukunft&amp;quot;, &amp;quot;Vergangenheit&amp;quot; und &amp;quot;Freiheit&amp;quot;. Wir gehen davon aus, dass was immer wir dort erfahren, auch der Geheimniskrämerin bekannt sein wird. Aber gut, wir wollen nach Hause.&lt;br /&gt;
&lt;br /&gt;
Olaf rennt durch die Freiheitstür, ohne sich umzusehen. Die anderen sehen sich erstaunt an. Peter erklärt, er wisse, dass er die Zukunft wählen muss. Niemand widerspricht. Bleiben drei Türen. Susan hat so viele Fragen bezüglich der Vergangenheit, doch unter dem Eindruck der letzten Ereignisse will sie mehr über ihren eigenen Schmerz erfahren. Von den verbleibenden zwei Türen fühlt sich Liz am Ehesten zur Vergangenheit gezogen. Aber Neill und Stolz? Neill sagt, dass ihm alles Recht ist. Am Ende spielen sie um die Türen und Liz nimmt den Stolz. Pikanterweise können alle alles sehen und hören, was den anderen zustößt.&lt;br /&gt;
&lt;br /&gt;
===Olaf: Freiheit===&lt;br /&gt;
OLaf wandert durch die Dunkelheit auf ein Licht zu. Entgegen tritt ihm Vykos - oder besser gesagt, ein Teil von Olaf, der sich als Vykos manifestiert. Man tauscht Freundlichkeiten aus-- &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wir haben nicht die gleiche Vision, aber das macht nichts.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Du bist nicht der Erste, der von unserem Fleisch auserwählt wurde, die Zukunft zu gestalten.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Waren die anderen erfolgreich?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Verschiedene Zeitalter, verschiedene Visionen. Es ist eine Leiter. Wir können nur ein Stück Perfektion erlangen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dann aber geht es ans Eingemachte, als Vykos radikal denkt:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Deine Gefährten denken nur bis zum nächsten Horizint. Denke über das Ende der Dinge hinaus! Du kannst mitbestimmen, was als nächstes kommt.&amp;quot; Was jenseits von Gehenna kommt, daran haben wir bislang nur in fernen Träumen gedacht. Dass einem diese Zukunft nicht einfach zustoßen wird, ist neu für uns.&lt;br /&gt;
&lt;br /&gt;
Olaf stimmt im Prinzip zu: &amp;quot;Es ist in der Tat Zeit für einen Neuanfang.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Dann lass dich nicht von Menschlichkeit und der Ethik deiner Gefährten zurückhalten, oder alles wird sich nur wiederholen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Olaf findet, dass was fehlt, Erkenntnis ist. Nun, das ist sicherlich immer wahr, aber es hält Vykos am Reden:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vielleicht muss die Tür zum neuen Zeitalter mit Gewalt aufgestoßen werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Und aus dieser Erkenntnis erwächst Freiheit!&amp;quot;, schließt Olaf.&lt;br /&gt;
&lt;br /&gt;
Vykos verabschiedet sich angenehm überrascht von dem fruchtbaren Boden, auf den seine Worte fallen.&lt;br /&gt;
&lt;br /&gt;
Bedford tritt Olaf entgegen und gibt ihm alle Freiheit: &amp;quot;Ich sehe, du bist dabei, einen Weg zu finden. Das freut mich, egal welchen Weg du gehst. Egal welcher, ich werde stolz auf dich sein.&lt;br /&gt;
&lt;br /&gt;
Damit tritt Olaf durch das Tor.&lt;br /&gt;
&lt;br /&gt;
===Peter: Zukunft===&lt;br /&gt;
Die Südspitze von Manhattan, Blick auf den Hudson River, die Mitte der Nacht. Der urbane Dschungel ringsum. [[David]], also ein Teil von Peter, der sich als David manifestiert, tritt auf Peter zu. Sie setzen sich auf eine Bank. David will wissen, wie es um die Liebe zwischen Franziska und Peter bestellt ist. Gut, im Prinzip (soweit man diese Dinge beurteilen kann), ist die Antwort. David schluckt seine Enttäuschung sichtbar herunter, schließlich ist sein Unleben für lange Zeit auf Peter ausgerichtet gewesen. Am Ende hat ihn dies das Unleben gekostet... &lt;br /&gt;
&lt;br /&gt;
Aber locker lässt er deswegen nicht. Was werden die Tremere sagen, wenn sie von der Beziehung erfahren? Genau, Exsanguination. Hat Peter Vorsichtsmaßnahmen ergriffen? Die paar Rituale, um nicht beobachtet zu werden? Das ist doch keine Dauerlösung. Peter muss beginnen, politisch zu denken! Er benötigt etwas, dass die Tremere so sehr haben wollen, dass sie dafür Peters und Franziskas Leben verschonen.&lt;br /&gt;
&lt;br /&gt;
Was könnte das sein? Der Fluch der Tzimisce wird irgendwann auch die Tremere befallen. Goratrix aber hat an einer Lösung geforscht. Wenn man die finden könnte, hätte man etwas in der Hand. Und Peter kennt ja den letzten Tremere Antitribu: [[Nickolai]].&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wenn du Goratrix Lösung gefunden hast, dann frae dich einmal und nur einmal, ob deine Freunde in Wien von deinem dunklen Geheimnis erfahren sollen. Dann bleib dabei&amp;quot;, sagt David. Das klingt doch schon wieder nach Komplikationen - aber für diesmal verschwindet David und Peter geht durch das Tor.&lt;br /&gt;
&lt;br /&gt;
===Liz: Stolz===&lt;br /&gt;
Natürlich ist es Clemence, die Liz entgegen tritt und vorwurfsvoll sagt: &amp;quot;Warum hast du dir nicht genommen, was du haben wolltest? Hasu du es dir nicht verdient?&amp;quot; Liz hat also das Gefühl, dass sie die falsche Tür gewählt hat. Zumindest der Clemence-Teil in ihr. Der bestätigt auch, was wir uns schon gedacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Hier ist nur, was du mitgebracht hast.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind es harte Ratschläge, die Liz sich anhören muss. Mehr Ellenbogen braucht sie: &amp;quot;Die Welt ist nicht in Wegen geformt, die für dich gedacht sind. Du musst deinen Weg machen.&amp;quot; Tatsächlich legt Clemence nahe, dass Liz ihr längst auf ihrem Weg folgt. Schließlich habe sie freudig das Schattenamulett angenommen. Eine der ersten Fragen an ihren Bruder sei gewesen: Kannst du mir zeigen, wie ich meine Kräfte besser nutzen kann?&lt;br /&gt;
&lt;br /&gt;
Und natürlich darf dabei die immergleiche Frage an Liz nicht fehlen: &amp;quot;Wen würdest du von deinen Freunden zuerst opfern?&amp;quot; Nacheinander werden wir noch einmal vorgestellt und Liz (wahre?) Gefühle für jeden von uns werden beschrieben, nicht immer sind die aber auch positiv... Wie immer antwortet Liz, dass sie niemanden opfern würde. &lt;br /&gt;
&lt;br /&gt;
Diesmal aber setzt Clemence, nein, setzt Liz selber noch einen drauf: &amp;quot;Wen hast du schon geopfert?&amp;quot; Collin erscheint. Nein, hat sie nicht, sagt Liz sich und evrsucht überzeugend zu klingen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Tapfere Antworten&amp;quot;, sagt der Clemence-Teil, &amp;quot;aber hier kannst du dir nichts vorlügen.&amp;quot; Naja. Später werden wir lange darüber diskutieren, wie ernst man diese Teile von uns nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
Zum Abschluss gibt es noch dunkle Weisheiten &amp;quot;Unsere Pfade sind verschlungener als die anderen es sehen können.&amp;quot; und Beschwörungen &amp;quot;Du weißt, was du für mich bedeutest.&amp;quot;, schließlich kommt Clemence wieder auf den Stolz zu sprechen: &amp;quot;Hebe das Haupt oder weine im Kreis deiner Freunde. Nimm dir an mir ein Beispiel. Mache dir meinen Pfad zu eigen oder stoße ihn davon.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Und damit geht auch Liz durch das Tor.&lt;br /&gt;
&lt;br /&gt;
===Susan: Schmerz===&lt;br /&gt;
Eine zerstörte Welt. Kein Ozean, nur Staub und Sand. Die Ruinen New Yorks, ein ewiger Sturm. Keine Hoffnung. Susan begegnet Susan.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;So bald schon wieder hier?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Mein Weg hat mich hergeführt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Das sagst du jedes Mal. Wie oft habe ich schon erzählt, welches Schicksal dich erwratet und was du tun musst, um es zu verhindern. Und wenn es vorüber ist, bittest du mich jedes Mal, das Wissen wieder von dir zu nehmen. Jedes Mal beginnst du mit den Worten 'Zeig es mir, ich bin stark!'. Aber noch noch nie bist du es gewesen.&lt;br /&gt;
&lt;br /&gt;
Hast du ihnen überhaupt schon erzählt, was dich erwartet? Dass dein Schicksal feststeht? Dass du das Ende auf keinen Fall erleben wirst?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--'''Dort spürte ich den Umbra erschüttern und den Äther weinen als ein besiegeltes Schicksal offenbar wird.''&amp;quot; Oh nein. --&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Du wirst dich entscheiden müssen, ob Olaf den Dolch in den Rücken rammst und das Herz herausreißt. Oder ob du Olaf die Entscheidung überlässt. Und du weißt, was das bedeuten kann.&lt;br /&gt;
&lt;br /&gt;
...Was werden Peter und Franziska sagen, wenn sie erfahren, dass du hättest Einfluss nehmen können. Peter wird vielleicht verstehen, warum es notwendig war. Aber wird er dir verzeihen können?&lt;br /&gt;
&lt;br /&gt;
Und Liz, was wird in ihr vorgehen, wenn sie erfährt, was du hättest ändern können, um ihr so viel Leid zu ersparen? &lt;br /&gt;
&lt;br /&gt;
Es wird der Zeitpunkt kommen, an dem auch deine Taten gerichtet werden. Wo du den Übrigen gegenübertreten musst. Und dein Blick wird auf Neill fallen. Denn du weißt, dass Neill mit dem gütigsten Herz, immer wohlwollend, auf dich schauen wird. Aber du hättest es für alle so viel leichter machen können.&lt;br /&gt;
&lt;br /&gt;
Ich habe dir geraten, dein Herz erkalten zu lassen. Du hast es nicht getan.&lt;br /&gt;
&lt;br /&gt;
Suche Halt in denen, die dein Herz zum Schlagen bringen.Lass sie teilhaben and der Angst, an dem was dich zurückhält.&lt;br /&gt;
&lt;br /&gt;
Wo du vergehst, vergehen musst, werde ich schon lange nicht mehr folgen können.&lt;br /&gt;
&lt;br /&gt;
Die untergegangene Stadt - er rührt sich im Schlaf. Dein Gefühl hat dich nicht getäuscht.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Und auch Susan geht durch die Pforte.&lt;br /&gt;
&lt;br /&gt;
===Neil: Vergangenheit===&lt;br /&gt;
Unter einer Laterne am Straßenrand sitzt Bedford. &amp;quot;Was führt dich hierher?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Der Weg nach Hause. Es waren nicht mehr viele Türen zur Auswahl.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Du hast die anderen wählen lassen? Ich denke, ich habe alles richtig gemacht mit euch beiden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Es gibt Vieles, worüber ich gerne mit Dir sprechen würde&amp;quot;, sagt Neill. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Bist du zufrieden mit deinem Weg?&amp;quot;, will Bedford wissen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich bin unsicher. Nicht vollständig. Aber ich hoffe, dass ich den richtigen Weg so gut gegangen bin wie möglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lerne daraus, aber lass dich nicht auf deinem Weg beirren. Aber gehen musst du ihn. Wer stehenbleibt, ist verloren. Besser ein Fehler als keine Entscheidung.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bedford fragt sich außerdem, ob die Welt ihn noch braucht, jetzt wo sie Neill und Olaf hat.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich glaube schon&amp;quot;, sagt Neill. &amp;quot;Wir haben einen großen Vorteil -- wir können Erfahrungen sammeln und aus unseren Fehlern lernen. Aber warum tun das nur die wenigsten?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Die Prometheer haben genau das versucht. Aber das letzte Jahrhundert hat mich zweifeln lassen am Ziel...&lt;br /&gt;
&lt;br /&gt;
Folge meinen Spuren im letzten Jahrhundert und dann erzähl mir, wo mein Fehler lag. Die Antwort würde mich sehr interessieren...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bedford erwähnt noch einmal, wie stolz er auf Olaf, Minx und Neill ist. Insbesondere auf Neill. Er ermahnt Neill noch einmal, nicht stehen zu bleiben. Dann geht auch Neill durch die Pforte.&lt;br /&gt;
&lt;br /&gt;
==Von Indien nach New York==&lt;br /&gt;
Wir sind zurück im Dschungel, um uns die verlassene und zerstörte Basis Ragnarök. Die Natur hat sich den Nationalpark vollständig zurückgeholt. Beckett hat seit zwei bis drei Wochen auf uns gewartet. Vera steht auf einem der Landeplätze, sie hat sich eigenständdig umgeparkt, um sich aufzuladen. Wir steigen ein und fliegen mit Beckett nach New York. Im Jet und in den Tagen darauf führen wir lange Gespräche über die Zukunft des Klüngels, Collin, Susans Angst, Schmerz und Verschwiegenheit und die weiteren Aussichten.&lt;br /&gt;
&lt;br /&gt;
St.John bekommt Zugang zum Jet, den Glasgewehren und den Bauplänen für eine Ladestation.&lt;br /&gt;
{{Navbox chapter}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Anatol&amp;diff=4781</id>
		<title>Anatol</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Anatol&amp;diff=4781"/>
		<updated>2016-10-02T20:45:03Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person&lt;br /&gt;
|fullname=Anatol&lt;br /&gt;
|coterie=Nein&lt;br /&gt;
|player=Tobi&lt;br /&gt;
|type=Vampir&lt;br /&gt;
|sect=Camarilla&lt;br /&gt;
|clan=Malkavianer&lt;br /&gt;
|sire=Pierre L'Imbecile&lt;br /&gt;
|generation=6&lt;br /&gt;
|original_generation=10&lt;br /&gt;
|embraced=1187&lt;br /&gt;
|embraced_is_estimate=Nein&lt;br /&gt;
|apparent_age=30&lt;br /&gt;
|chapter_of_first_appearance=Das Auge des Hazimel&lt;br /&gt;
|died=Ja&lt;br /&gt;
|died_in_chapter=Das Ende von Hazatlan&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Trank_des_Blutbandbrechers&amp;diff=4634</id>
		<title>Trank des Blutbandbrechers</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Trank_des_Blutbandbrechers&amp;diff=4634"/>
		<updated>2016-05-06T13:44:21Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Artefact&lt;br /&gt;
|name=Trank des Blutbandbrechers&lt;br /&gt;
|image=Trank des Blutbandbrechers.jpg&lt;br /&gt;
|type=Phiole&lt;br /&gt;
|functionality=Bricht ein ordinäres Blutband,&lt;br /&gt;
|possession=Von Braun&lt;br /&gt;
|acquired=Des Dämonenjägers letzte Geheimnisse&lt;br /&gt;
|description=Ist in der Lage, ein existierendes Blutband zu brechen, schützt aber nicht vor einem erneuten Blutband. Hat der Trinkende mehrere Blutbänder, wird das stärkste gebrochen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Gather information}}&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Zepter_des_Hazimel&amp;diff=4633</id>
		<title>Zepter des Hazimel</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Zepter_des_Hazimel&amp;diff=4633"/>
		<updated>2016-05-06T13:42:50Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Artefact&lt;br /&gt;
|name=Szepter des Hazimel&lt;br /&gt;
|image=Hazimels Szepter.jpg&lt;br /&gt;
|type=Szepter/Stab&lt;br /&gt;
|functionality=Vernichtung des Gesandten Hazimels, Rückverwandlung eines Vampirs,&lt;br /&gt;
|possession=Olaf&lt;br /&gt;
|acquired=Das Auge des Hazimel&lt;br /&gt;
|description=Der Speer des [[Hazimel]] wurde erstmalig während des ersten Besuchs in [[Hazatlan]] in Aktion gesehen. Später zurück in der Gegenwart unter [[Atlanta]] konnte [[Leopold]] mit seiner Hilfe besiegt werden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Gather information}}&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Lichtbringers_Freiheit&amp;diff=4632</id>
		<title>Lichtbringers Freiheit</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Lichtbringers_Freiheit&amp;diff=4632"/>
		<updated>2016-05-06T13:41:50Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Artefact&lt;br /&gt;
|name=Lichtbringers Freiheit&lt;br /&gt;
|image=Lichtbringers Freiheit.jpg&lt;br /&gt;
|type=Kerze&lt;br /&gt;
|functionality=Bricht ein Tremereblutband,&lt;br /&gt;
|possession=Von Braun&lt;br /&gt;
|acquired=Des Dämonenjägers letzte Geheimnisse&lt;br /&gt;
|description=Diese Kerze ist in der Lage, das bei einer Erschaffung eines Tremere magisch gewobene Blutband zum hohen Rat zu brechen. Zwei Anwendungen verbleiben.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Gather information}}&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Kette_des_Widerg%C3%A4ngers&amp;diff=4631</id>
		<title>Kette des Widergängers</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Kette_des_Widerg%C3%A4ngers&amp;diff=4631"/>
		<updated>2016-05-06T13:41:19Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Artefact&lt;br /&gt;
|name=Kette des Widergängers&lt;br /&gt;
|image=Datei:Hazimels Kette.jpeg&lt;br /&gt;
|type=Kette&lt;br /&gt;
|functionality=Kontrolle des Gesandten Hazimels,&lt;br /&gt;
|possession=Olaf&lt;br /&gt;
|acquired=Das Auge des Hazimel&lt;br /&gt;
|description=Die Kette des [[Hazimel]] wurde erstmalig während des ersten Besuchs in [[Hazatlan]] in Aktion gesehen. Später zurück in der Gegenwart unter [[Atlanta]] konnte [[Leopold]] mit ihrer Hilfe besiegt werden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Gather information}}&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Das_Memoarium&amp;diff=4630</id>
		<title>Das Memoarium</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Das_Memoarium&amp;diff=4630"/>
		<updated>2016-05-06T13:40:42Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Artefact&lt;br /&gt;
|name=Das Memoarium&lt;br /&gt;
|image=Datei:Das Memoarium.jpg&lt;br /&gt;
|type=Mechanisches Konstrukt&lt;br /&gt;
|functionality=Tagebuch, Geschichtenerzähler, Visionengeber, Umbratasche,&lt;br /&gt;
|possession=Von Braun&lt;br /&gt;
|acquired=Memento, Petrus II&lt;br /&gt;
|description=Enthielt [[Text:00000004]] mit dessen Hilfe [[Franzi]], [[Peter]] und [[Susan]] einige von von Brauns Geheimnissen lüften konnten.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Gather information}}&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Auf_den_Spuren_des_Abtes&amp;diff=4591</id>
		<title>Auf den Spuren des Abtes</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Auf_den_Spuren_des_Abtes&amp;diff=4591"/>
		<updated>2016-04-23T16:45:06Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chapter&lt;br /&gt;
|title=Auf den Spuren des Abtes&lt;br /&gt;
|number=4&lt;br /&gt;
|start_date=02.02.2000&lt;br /&gt;
|end_date=07.02.2000&lt;br /&gt;
|city=Spartanburg&lt;br /&gt;
|auxiliary_settings=Greenville,Atlanta&lt;br /&gt;
|pcs=Andrew,Liz,Mark,Neil,Olaf,Susan,Vincenzo&lt;br /&gt;
|npcs=Larimas,Ricardo,Gabriel,Marcus Agrippa,Walter Holmes,Mike,&lt;br /&gt;
|session_date=22.06.2007&lt;br /&gt;
|session_duration=3&lt;br /&gt;
|session_location=Wülmersen&lt;br /&gt;
|description=Der Klüngel begibt sich auf die Suche nach dem geflohenen Federico. Dabei stößt es auf eine seiner alten Bekannten, findet seine Zuflucht, einen Riss im Schleier zwischen den Welten, Larimas (den Prieser Kains) und Ricardo. Dessen Verhältnis zu seinem Erzeuger wird im Handumdrehen eskaliert und dank der Zusammenarbeit mit Larimas der Schaden im Schleier repariert.&lt;br /&gt;
|gathered_information=&lt;br /&gt;
|associated_events={{Event&lt;br /&gt;
|title=Konfrontation am Sägewerk&lt;br /&gt;
|event_date=05.02.2000&lt;br /&gt;
|event_placing=frei&lt;br /&gt;
|event_coordinates=34.960176, -82.514688&lt;br /&gt;
|event_incity=Greenville&lt;br /&gt;
|event_persons=Andrew,Liz,Mark,Neil,Olaf,Susan,Vincenzo,Ricardo&lt;br /&gt;
|event_description=Bei der Beschaffung von Hannahs abgetrennten Kopfes kommt es zu einer Auseinandersetzung mit Ricardo. Durch einige Missverständnisse eskaliert dabei das Verhältnis von ihm zu seinem Erzeuger.&lt;br /&gt;
}}{{Event&lt;br /&gt;
|title=Die Erweckung von Larimas&lt;br /&gt;
|event_date=05.02.2000&lt;br /&gt;
|event_placing=frei&lt;br /&gt;
|event_coordinates=34.960396, -81.915652&lt;br /&gt;
|event_incity=Spartanburg&lt;br /&gt;
|event_persons=Andrew,Liz,Mark,Neil,Olaf,Susan,Vincenzo,Larimas&lt;br /&gt;
|event_description=Während des Rituals zur Reparatur des Schleiers beschafft der Klüngel dem alten Priester Kains einen neuen untoten Körper.&lt;br /&gt;
}}&lt;br /&gt;
|additional_map_marker=&lt;br /&gt;
}}&lt;br /&gt;
== Mittwoch, 02.02.2000 ==&lt;br /&gt;
* Sprechen mit diversen Leuten&lt;br /&gt;
* [[Federico]] ist weg&lt;br /&gt;
&lt;br /&gt;
== Donnerstag, 03.02.2000 ==&lt;br /&gt;
* Treffen mit [[Bedford]] &amp;amp; [[Allister]]&lt;br /&gt;
* Reise nach Spartanburg&lt;br /&gt;
* Kontakt in Federicos Zuflucht (Püppchen)&lt;br /&gt;
* Friedhof bei Spartanburg: Riss im Schleier&lt;br /&gt;
* [[Larimas]] hat einen Auftrag&lt;br /&gt;
&lt;br /&gt;
== Freitag, 04.02.2000 ==&lt;br /&gt;
* Besuch bei [[Marcus Agrippa]], [[Walter Holmes]]&lt;br /&gt;
* Treffen auf zwei Peisel&lt;br /&gt;
* Greenville: Das alte Sägewerk&lt;br /&gt;
* Ritual mit Larimas zur Reparatur des Schleiers.&lt;br /&gt;
&lt;br /&gt;
== Montag, 07.02.2000, am Tage ==&lt;br /&gt;
* Rückkehr nach Atlanta. Die Stadt brennt. Der Krieg hat begonnen&lt;br /&gt;
{{Navbox chapter}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Nachwehen&amp;diff=4590</id>
		<title>Nachwehen</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Nachwehen&amp;diff=4590"/>
		<updated>2016-04-23T16:44:28Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chapter&lt;br /&gt;
|title=Nachwehen&lt;br /&gt;
|number=2&lt;br /&gt;
|start_date=04.01.2000&lt;br /&gt;
|end_date=08.01.2000&lt;br /&gt;
|city=Atlanta&lt;br /&gt;
|auxiliary_settings=Atlanta University,Gildehaus in Atlanta&lt;br /&gt;
|pcs=Andrew,Liz,Mark,Neil,Olaf,Susan,Vincenzo&lt;br /&gt;
|npcs=Victoria,Benison,Allister,Bedford,Minx,Federico,Sunshine,von Braun,Moncries,Cindy Miller-Bargo,Kevin Miller-Bargo,Phillip Kensington,&lt;br /&gt;
|session_date=10.03.2006&lt;br /&gt;
|session_duration=3&lt;br /&gt;
|session_location=Paderborn&lt;br /&gt;
|description=Die Ruhe in Allisters Asylum wird von einem durchdrehenden Malkavianer antitribu gestört. Nachdem dies überwunden wurde, kümmert sich der Klüngel für Prinz Benison um einige Maskeradebrüche. Am Ende werden politische Ämter verteilt.&lt;br /&gt;
|gathered_information=&lt;br /&gt;
|associated_events={{Event&lt;br /&gt;
|title=Übergabe des Auges&lt;br /&gt;
|event_date=05.01.2000&lt;br /&gt;
|event_placing=frei&lt;br /&gt;
|event_incity=Atlanta&lt;br /&gt;
|event_persons=Andrew,Liz,Mark,Neil,Olaf,Susan,Vincenzo,Victoria,Julius&lt;br /&gt;
|event_description=Der Klüngel übergibt das Auge des Hazimel in die vertauensvollen Hände des Archonten Jules.&lt;br /&gt;
}}{{Event&lt;br /&gt;
|title=Atlantas neue Sheriffs&lt;br /&gt;
|event_date=07.01.2000&lt;br /&gt;
|event_placing=frei&lt;br /&gt;
|event_incity=Atlanta&lt;br /&gt;
|event_persons=Benison,Vincenzo,Federico&lt;br /&gt;
|event_description=Prinz Benison ernennt Vincenzo Salierie und Federico de Soya zu Sheriffs.&lt;br /&gt;
}}&lt;br /&gt;
|additional_map_marker=&lt;br /&gt;
}}&lt;br /&gt;
== Dienstag, 04.01.2000 ==&lt;br /&gt;
* &amp;quot;Ruhe&amp;quot; im Asylum: Ein Malkavianer antitribu verbreitet Wahnsinn&lt;br /&gt;
* Heilung von Minx durch Sunshine und ihrem Begleiter, zwei Freude von [[Bedford]]&lt;br /&gt;
&lt;br /&gt;
== Mittwoch, 05.01.2000 ==&lt;br /&gt;
* Auftrag: Maskeradebrüche&lt;br /&gt;
&lt;br /&gt;
== Donnerstag, 06.01.2000 ==&lt;br /&gt;
* Beginn der Besetzung neuer Posten&lt;br /&gt;
* Leopoldsgesellschaft&lt;br /&gt;
* Erste Hinweise auf [[Collin]]&lt;br /&gt;
&lt;br /&gt;
== Freitag, 07.01.2000 ==&lt;br /&gt;
* Neue Posten in Atlanta&lt;br /&gt;
* Und eine Hiobsbotschaft: Xavier zieht die Gangrel aus der Camarilla ab&lt;br /&gt;
{{Navbox chapter}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Text:00000010&amp;diff=4500</id>
		<title>Text:00000010</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Text:00000010&amp;diff=4500"/>
		<updated>2016-03-29T19:26:27Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Text&lt;br /&gt;
|title=Arina Shey-nadas Kartusche&lt;br /&gt;
|source=Arina Shey-nada&lt;br /&gt;
|target=Kreuzherren mit dem Roten Stern,Federico,Anatol,Gehenna,Elaine,&lt;br /&gt;
|chapter=Des Dämonenjägers letzte Geheimnisse&lt;br /&gt;
|description=In Arina Shey-nadas Kartusche fand sich eine Ansammlung von Schriftstücken an den damaligen Großmeister der [[Kreuzherren mit dem Roten Stern]]. Sie beschreiben die Bergung eines angeblich wichtigen [[Gehenna]]artefaktes.&lt;br /&gt;
|file=Datei:Arina Shey-Nadas Kartusche.pdf&lt;br /&gt;
}}&lt;br /&gt;
Der Inhalt der Kartusche war wie folgt (Anmerkung: Briefe in chronologischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
== Deckblatt ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=1|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decree ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=2|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Auftrag erhalten ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=3|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Übersetzung ===&lt;br /&gt;
&lt;br /&gt;
== Tor zum heiligen Land ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=4|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anatol ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=5|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Angekommen ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=6|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erfolg ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=7|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outgameerläuterung ==&lt;br /&gt;
Die folgende Seite befand sich ebenfalls in der Kartusche, jedoch getrennt von den vorhergehenden Seiten gelagert.&lt;br /&gt;
&lt;br /&gt;
== Federico ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=9|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Text:00000010&amp;diff=4499</id>
		<title>Text:00000010</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Text:00000010&amp;diff=4499"/>
		<updated>2016-03-29T19:17:55Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Text&lt;br /&gt;
|title=Arina Shey-nadas Kartusche&lt;br /&gt;
|source=Arina Shey-nada&lt;br /&gt;
|target=Kreuzherren mit dem Roten Stern,Federico,Anatol,Gehenna&lt;br /&gt;
|chapter=Des Dämonenjägers letzte Geheimnisse&lt;br /&gt;
|description=In Arina Shey-nadas Kartusche fand sich eine Ansammlung von Schriftstücken an den damaligen Großmeister der [[Kreuzherren mit dem Roten Stern]]. Sie beschreiben die Bergung eines angeblich wichtigen [[Gehenna]]artefaktes.&lt;br /&gt;
|file=Datei:Arina Shey-Nadas Kartusche.pdf&lt;br /&gt;
}}&lt;br /&gt;
Der Inhalt der Kartusche war wie folgt (Anmerkung: Briefe in chronologischer Reihenfolge):&lt;br /&gt;
&lt;br /&gt;
== Deckblatt ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=1|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decree ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=2|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Auftrag erhalten ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=3|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Übersetzung ===&lt;br /&gt;
&lt;br /&gt;
== Tor zum heiligen Land ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=4|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anatol ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=5|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Angekommen ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=6|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erfolg ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=7|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Outgameerläuterung ==&lt;br /&gt;
Die folgende Seite befand sich ebenfalls in der Kartusche, jedoch getrennt von den vorhergehenden Seiten gelagert.&lt;br /&gt;
&lt;br /&gt;
== Federico ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid black&amp;quot;&amp;gt;[[Datei:Arina Shey-Nadas Kartusche.pdf|page=9|]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Navbox artefact and text}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Hauptseite&amp;diff=4498</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Hauptseite&amp;diff=4498"/>
		<updated>2016-03-29T19:04:01Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Das Datum aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
__NOGLOSSARY__&lt;br /&gt;
&amp;lt;div class=&amp;quot;left-coloumn&amp;quot;&amp;gt;{{#vardefine:sep|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;bull;&amp;amp;emsp;}}&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;mainpage&amp;quot;&amp;gt;Die letzten Geschehnisse&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;subsection&amp;quot;&amp;gt;&lt;br /&gt;
{{#ask: [[Kategorie:Kapitel]] | ?has chapter number | ?has subchapter number | ?is titled | ?took place on#MEDIAWIKI | ?took place until#MEDIAWIKI | ?took place in | ?has short description | ? | mainlabel=- | sort=has chapter number,has subchapter number | order=descending,descending | format=template | template=Print chapter facts | sep= | limit=3 | searchlabel= | userparam=2}}&lt;br /&gt;
&amp;lt;!--{{#ask: [[has chapter number::+]] | ?has chapter number | ?has subchapter number | ?title is | ?took place from#MEDIAWIKI | ?took place until#MEDIAWIKI | ?took mainly place in | ? | ?short description is | mainlabel=- | sort=took place from,has chapter number,has subchapter number | order=descending,descending,descending | format=template | template=Print chapter facts | sep= | limit=3 | searchlabel= | userparam=2}}&lt;br /&gt;
{{#ask: [[is member of class::Chapter]] | sort=has chapter number,has subchapter number | order=asc,asc| format=ul | }}--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier geht's zur kompletten [[Chronik]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;mainpage&amp;quot;&amp;gt;Texte&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;subsection&amp;quot;&amp;gt;&lt;br /&gt;
{{#ask: [[Kategorie:Texte]] | format=list | sort=Has display title | order=ascending | sep={{#var:sep}} }} ({{#formlink:form=Text|link text=+|tooltip=Neuen Text einpflegen}})&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;mainpage&amp;quot;&amp;gt;Artefakte&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;subsection&amp;quot;&amp;gt;&lt;br /&gt;
{{#ask: [[Kategorie:Artefakte]] | format=list | sort=Has display title | order=ascending | sep={{#var:sep}} }} ({{#tip-info:Neues Artefakt einpflegen}}[[Form:Artefakt|+]])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;right-coloumn&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hSpacer&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;mainpage&amp;quot;&amp;gt;Interessantes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;subsection&amp;quot;&amp;gt;&lt;br /&gt;
[[Bild:Victoria_Frances.jpg|right|300px|Vampiresse]]&lt;br /&gt;
&lt;br /&gt;
Heute ist die Nacht vom 27. auf den 28. April 2000. Es ist früh morgens und der Hauptteil des Klüngels befindet sich über dem Atlantik.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bekannte Termine:&lt;br /&gt;
* '''4. bis 8. Mai 2016, Wildemann im Harz: Alle'''&amp;lt;!--'''keine''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;mainpage&amp;quot;&amp;gt;Spielercharaktere&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;subsection&amp;quot;&amp;gt;&lt;br /&gt;
{{#ask: [[is member of class::Person]] [[is member of the coterie::wahr]] | sort=Goes by name | order=ascending | format=list | sep={{#var:sep}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;mainpage&amp;quot;&amp;gt;Nichtspielercharaktere&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;subsection&amp;quot;&amp;gt;&lt;br /&gt;
{{#ask: [[is member of class::Person]] [[is member of the coterie::falsch]] | sort=Goes by name | order=ascending | format=list | sep={{#var:sep}} |limit=500}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#ask: [[took place on::+]] | ?is titled=Titel | ?=Kapitel | ?took place on#MEDIAWIKI=Von | ?took place until#MEDIAWIKI=Bis | ?took mainly place in=Ort | ?Has_maincast=Teilnehmer | ?Has_short_description=Beschreibung | headers=plain | mainlabel=- |  sort=took place on | order=ascending | format=timeline | timelinebands=WEEK,MONTH | timelineposition=end | timelinesize=500px}}&lt;br /&gt;
&lt;br /&gt;
{{#compound_query: [[Has_geo_coordinates::+]] [[Is_member_of_class::Event]];?has geo coordinates=Koordinate;?took place on=Datum;?has address=Adresse;?is located in city=Stadt;?Has_short_description=Beschreibung;headers=plain&lt;br /&gt;
| [[Has_geo_coordinates::+]] [[Is_member_of_class::Location]];?has geo coordinates=Koordinate;?Has_mainfunction=Funktion;?is operated by=Verantwortlich;?has address=Adresse;?Is located in city=Stadt;?Has_short_description=Beschreibung;headers=plain;icon=Green_marker.png&lt;br /&gt;
| [[Has_geo_coordinates::+]] [[Is_member_of_class::Marker]];?has geo coordinates=Koordinate;?Is_titled=Name;?Has_address=Adresse;?Is_located_in_city=Stadt;?Has_short_description=Beschreibung;headers=plain;icon=Blue_marker.png&lt;br /&gt;
| format=googlemaps&lt;br /&gt;
| height=800&lt;br /&gt;
| markercluster=off&lt;br /&gt;
| types=normal,satellite,hybrid,physical,earth&lt;br /&gt;
| intro=&amp;lt;h2&amp;gt;Karte&amp;lt;/h2&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Des_D%C3%A4monenj%C3%A4gers_letzte_Geheimnisse&amp;diff=4497</id>
		<title>Des Dämonenjägers letzte Geheimnisse</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Des_D%C3%A4monenj%C3%A4gers_letzte_Geheimnisse&amp;diff=4497"/>
		<updated>2016-03-29T19:02:18Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chapter&lt;br /&gt;
|title=Des Dämonenjägers letzte Geheimnisse&lt;br /&gt;
|number=12.2&lt;br /&gt;
|start_date=2000/04/26&lt;br /&gt;
|end_date=2000/04/27&lt;br /&gt;
|city=New York&lt;br /&gt;
|auxiliary_settings=Gildehaus der fünf Bezirke,Peters Labor&lt;br /&gt;
|pcs=Franzi,Peter,Susan&lt;br /&gt;
|npcs=Hesha,Amanda Dimitros,Nathanael Berendt,Noémi St. John,Gustav Degenhardt,William Norton,Sanford Brown,Pförtner Talbott,Liam Avery,Sunshine,Rain,von Braun,Godric,Jessica Young,Thompson&lt;br /&gt;
|session_date=2016/01/29&lt;br /&gt;
|session_duration=2&lt;br /&gt;
|session_location=Paderborn&lt;br /&gt;
|description=Franzi, Peter und Susan machen sich auf, dem [[Text:00000004|Tagebuch des Magiers]] seine letzten Geheimnisse zu entlocken. Dabei lernen Sie etwas über von Braun, das [[Gildehaus der fünf Bezirke]] und vor allem sich selbst kennen. Als Belohnung winken dann ein paar Informationen.&lt;br /&gt;
|gathered_information=&lt;br /&gt;
|associated_events=&lt;br /&gt;
|additional_map_marker=&lt;br /&gt;
}}&lt;br /&gt;
== Einige Nächte nach [[Der Bazar der Nacht]] ==&lt;br /&gt;
Susan bestellt Peter und Franziska in Peters Appartement. Franziska hat sowohl das Memorarium als auch die Kartusche dabei, die sie von der in Madrid endgültig verstorbenen [[Arina Shey-nada]], sagen wir, geerbt hat. Sollen wir die Kartusche öffnen? Nein, verrät Susan, wir sind hier, um dem Memorarium seine letzten Geheimnisse zu entreißen. Kennen wir denn das Wort, das uns weiter bringt? Ja, sagt Susan, sie habe es auf dem Bazar der Nacht erhandelt. Nach einigen besorgten Fragen, welche Geheimnisse denn dort eingetauscht wurden, verstecken wir die Kartusche in Peters Schrank, Peter zieht schnell noch eine alte Hose an (er will nicht schon wieder seine beste Jeans in irgendwelchen Visionen verlieren) und nachdem wir uns mit Pflöcken für den Notfall ausgerüstet haben, legen wir die Hände gemeinsam auf das Memorarium. Susan spricht die Antwort auf die letzte Frage, die es uns gestellt hat:&lt;br /&gt;
&lt;br /&gt;
 Nadiell&lt;br /&gt;
&lt;br /&gt;
Es erscheint eine Öffnung, die unfassbar tief erscheint. Die Wände des Schachtes sind gemustert wie das Kästchen auch, Nebel kriecht hervor. Uuund wir sind im Zwielicht im Nirgendwo. Schritte nähern sich. Es ist [[von Braun]], der uns ernst anblickt. Erst als er beginnt zu sprechen, verstehen wir, dass es nur ein Bild ist. Der echte Prinz hat hoffentlich nach wie vor keine Ahnung, was wir hier treiben.&lt;br /&gt;
&lt;br /&gt;
Von Braun spricht zu Hannah, der das Memorarium ja, wie wir wissen, zugeeignet war. Bisher hat es seinen Weg und die Themen aufgezeigt, die sie (Tiberius und Hannah) auseinander getrieben haben. Nun geht er davon aus, dass er tot ist und bittet sie, seinen Weg für ihn weiterzuführen und zu Ende zu gehen. Mut und Zuversicht brauche es dazu. Vor allem aber solle sie sich an vier eherne Regeln halten:&lt;br /&gt;
&lt;br /&gt;
* Die Salubri sind der Schlüssel zu allem, das einzig Wahre, die Hilfe, die gestattet zu überleben und Erfolg zu haben.&lt;br /&gt;
* Vertraue den deinen. Ohne Vertrauen ist die Sache zum Scheitern verurteilt. Im Zweifel — wähle Ehrlichkeit.&lt;br /&gt;
* Folge dem Pfad der Menschlichkeit! (Keinem anderen, nicht dem Pfad des Himmels z.B.) und, wichtigste Regel von allen:&lt;br /&gt;
* Du musst Gehenna verhindern!&lt;br /&gt;
&lt;br /&gt;
Damit sie seinen Weg weitergehen kann, muss sie ein Ritual durchführen, sagt von Braun. Eine Schriftrolle erscheint. Sicher sei es für Hannah als Regentin ein Leichtes, das Ritual durchzuführen. Dann verblasst der Nebel und wir sitzen wieder zu dritt auf Peters angestoßenem Perser.&lt;br /&gt;
&lt;br /&gt;
Ein Blick auf die Schriftrolle verrät Peter: Wir benötigen einen Smaragd(ritual)kreis und den finden wir nur im Gildenhaus der Tremere. Puh. Wir diskutieren, dann wenden wir uns zunächst anderen Problemen zu:&lt;br /&gt;
&lt;br /&gt;
Peter hat noch eine Verabredung mit [[Hesha|Hesha Ruhadze]], es gilt den Gegenwert der Information für den Madridkontakt zu erbringen. Wäre es da nicht gut zu wissen, was Arina unbedingt mitnehmen wollte, als sie aus Madrid zu fliehen versuchte?&lt;br /&gt;
&lt;br /&gt;
Franziska öffnet also die Kartusche und findet einen Stapel von neun Pergamenten, chronologisch sortiert. Arina scheint diese von [[Kazemde Utandi]] bekommen zu haben. Die Dokumente erzählen in Briefen die Geschichte, wie ein Vampir, der dem [[Weg des Himmels]] folgt, für seinen [[Kreuzherren mit dem Roten Stern|Kreuzritterorden &amp;quot;vom roten Stern&amp;quot;]] ein wichtiges Artefakt aus Jerusalem birgt. Wir wissen nur, dass es ein &amp;quot;Heiligtum&amp;quot; ist und &amp;quot;Azger&amp;quot; genannt wird. (evtl. ein heiliger Speer, meint Susan, die sich bei dem Wort &amp;quot;Azger&amp;quot; an den Namen &amp;quot;Ansgar&amp;quot; erinnert fühlt, der &amp;quot;Speer der Götter&amp;quot; bedeutet) Jedenfalls geht der Orden irgendwann unter und [[Federico]] (!) ermahnt einen Damian, der auch bei der ursprünglichen Bergung anwesend war, dass der Azger weiter geschützt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Dokumente, für Euch in Kopie, finden sich [[Text:00000010|hier]].&lt;br /&gt;
&lt;br /&gt;
===Besuch bei Hesha===&lt;br /&gt;
Susan fährt uns in eine Nobeleinkaufgegend in der Bronx, wo wir bei [[Hesha]] klingeln. Man führt uns vorbei an kostbarsten Statuen (ägyptisch???) in den Keller, wo Ruhadze und seine Assistentin [[Amanda Dimitros]] an der Restaurierung, Erfassung und Taxierung von Kunstwerken arbeiten. &lt;br /&gt;
&lt;br /&gt;
Franziska und Susan plaudern mit Amanda, die nur schwer von ihrer Begeisterung für [[Mark]] fortzulotsen ist. Immerhin, sie erfahren, dass Hesha selbst über Kappadocien forscht (...und einiges mehr?). Peter wird von Hesha zur Seite gebeten. Er übergibt Photos der Steintafel, die wir aus Madrid mitgebracht haben — wie abgemacht. Der Setit verstaut die Photos in seinem Schreibtisch und verkündet dann, dass er in Peters Schuld steht. Wie meinen? Peter ist verwirrt. Hat Hesha nicht vorher gesagt, dass die Photos die Gegenleistung für den Kontakt sind? Nein, wieso denn, sagt Hesha, er habe nur geäußert, dass er sehr erfreut wäre, wenn er informiert würde. Autsch, diese Geschäftemacherei ist offenbar nicht Peters Ding. Nun, wo das Kind schon einmal in den Brunnen gefallen ist, verrechnet Peter diesen Gefallen gleich mit dem, den er Hesha persönlich wegen des Geschäftes mit [[Kazemde Utandi]] schuldet. Außerdem informiert er Hesha über den Tod von [[Arina Shey-nada]]. Hesha zeigt sich interessiert an den Ereignissen bei den Giovanni; er ist verwundert, dass darüber so viel bekannt wurde. Muss wohl Absicht der Giovanni sein, da die doch sonst zur Verschwiegenheit neigen. (Na, wer von euch hat geplaudert?) Hesha forscht über den nahen Osten, besonders interessiert ist er an der Nordosttürkei, also dem ehemaligen Kappadocien (was er aber nicht zugeben mag). Immerhin erfährt Peter, dass das Wort &amp;quot;Azger&amp;quot; (aus den Kartuschendokumenten) wohl hebräisch zur Wortbedeutung &amp;quot;heilig&amp;quot;, im germanischen aber zur Bedeutung &amp;quot;Speer&amp;quot; zu rechnen ist. Wir verabschieden uns mit der Hoffnung auf neue Geschäfte. (Und haben nicht andere von uns neulich lauter Erbstücke von [[Federico]] gefunden? Darunter auch ein Speer?)&lt;br /&gt;
&lt;br /&gt;
===Im Chantry of the Five Burroughs===&lt;br /&gt;
Wir haben einen Plan gefasst: Zu dritt wollen wir im New Yorker Haus der Tremere das Ritual für Hannah durchführen. Da wir alles anmelden müssen, ist klar, dass wir nicht das Originalritual vorweisen können (von dem wir ohnehin nicht sooo genau wissen, was es eigentlich macht. Aber, so der Plan, wir sprechen nur mit einer Regentin, nämlich St. John und halten uns ansonsten so bedeckt wie möglich. Selten war ein Plan von Beginn an derart zum Scheitern verurteilt.&lt;br /&gt;
&lt;br /&gt;
Der Chantry of the Five Burroughs hat seinen Eingang in der Bibliothek des Barnard Colleges der Columbia University und liegt bekanntermaßen unterirdisch. Der Pförtner Talbott lässt uns ein und da Peter Gäste anmeldet, führt er uns zu [[Sturbridge]], der Regenta prima. In den Hallen tuschelt man über die sogenannten Helden von New York. &amp;quot;Ein Blick von ihr kann dich wahnsinnig machen!&amp;quot; und ehrfürchtige Blicke besonders zu Peter lassen uns die Köpfe einziehen und schnell weiterhuschen. Gut, dass wir den alterantiven Plan, uns in das Clanhaus zu schleichen, nicht umgesetzt haben. Wir sind einfach zu auffällig.&lt;br /&gt;
&lt;br /&gt;
Sturbride begrüßt uns, will wissen, was wir wollen und redet eigentlich nur mit Susan und Franziska. Wir sind aber froh, dass wir mit einem kühlen Rüffel an Peter wegen dessen ausweichenden Antworten davonkommen und Sturbridge Franziska und Susan für die Nacht Gastrecht gewährt — wenn sie sich an Peters Seite halten. Und natürlich können wir uns nicht frei aussuchen, mit wem wir Kontakt aufnehmen wollen, sondern werden explizit an Dr. Berendt verwiesen. Nun gut.&lt;br /&gt;
&lt;br /&gt;
Wir begeben uns vom zentralen Clanhaus durch die große Halle in das Clanhaus des Südens, wo die zentrale Bibliothek beherbergt ist. Auf dem Weg treffen wir [[Godric|Godric Markhelm]] und seine Assistentin [[Jessica Young]], die nach Freiwilligen zur Verteidigung des Clanhauses in Atlanta suchen. Dr. Berendt war sein Lehrer (&amp;quot;fähig, aber ein Stock im Arsch bis hierhin&amp;quot;). Wir &amp;lt;s&amp;gt;plaudern angenehm&amp;lt;/s&amp;gt; hören Godrics Monolog zu, indem er sich (von &amp;quot;Psst&amp;quot; und &amp;quot;nicht hilfreich&amp;quot;-Einwürfen von Jessica unterbrochen) sehr laut über die Feiglinge in New York, die vielen Stöcke in den vielen Ärschen um ihn herum und die Lage in Atlanta auslässt. Wenn doch nur Borges in New York umgekommen wäre und nicht Polonia. Ärgerlich, ärgerlich. In zwei Tagen wird das Clanhaus dort versiegelt. Vorher kann gerne jeder, der mag, sich zu diesem Abenteuer melden. Insbesondere wir vielleicht? Nein, wir haben leider anderes zu tun. Wissen wir, wo &amp;lt;s&amp;gt;Ferbruch&amp;lt;/s&amp;gt; Verbruch, der Gargoyle ist? Ein Gargoyle wäre wirklich nützlich. Wir nehmen uns vor, Elvis zu fragen, na, Liz zu fragen, ob sie nicht Elvis fragen kann. Und falls wir Kontakt zu [[Paul Tyler]] und Xavier haben, auch sie sollen wir bitten, nach Atlanta zu kommen. Godric selbst, wird vielleicht noch [[Benison]], ehemaligen Prinz von Atlanta und Primogen der Malkavianer hier, fragen. Auf Nestor angesprochen; den hat Godric nicht gesehen, aber vielleicht weiß [[Tanika]] wo er ist. Und viel Glück in Atlanta, mögen wir uns wiedersehen!&lt;br /&gt;
&lt;br /&gt;
In der Bibliothek fliehende Adepten, denn dort streiten sich die Regenti secundi [[Nathanael_Berendt|Dr. Dr. med. thau. rer. nat. Nathanael Berendt]], Clanhaus des Südens, und [[Gustav_Degenhardt|Prof. Dr. Gustav Degenhardt]], Clanhaus des Nordens. Nicht etwa darüber ob, sondern wie man die Regenta prima am Besten los wird. Öffentlich. In der Bibliothek. Ts, ts, ts, was sollen die Gäste denken. Denn die regenta prima lässt Mitglieder anderer Clans hierher ins Chantry! Und beruft diese unerfahrene St. John! Wir entwickeln spontane Sympathien für Sturbridge, die uns (o.k., nur Peter) eben noch fertig gemacht hat. Als wir den beiden Streithähnen unter die Augen treten, werden wir einer peinlichen Befragung unterzogen und bekommen einen Termin in 40min bei Berendt. &lt;br /&gt;
&lt;br /&gt;
Wir organisieren ein interessantes Ritual, das dieselben Zutaten benötigt wie unseres (Spiegel der Träume, um Susans Visionen sichtbar zu machen), so interessant tatsächlich, dass wir kurz überlegen, ob wir lieber das machen sollen. Aber, stick to the plan! Das Büro von Feuermagier Berendt gehört einem OCD-Patienten: Alles ist so unfassbar geordnet, dass es nicht zum Aushalten ist. Ausnahmen: Die Fledermaus ohne Herzschlag am Ständer (die Berendt zwischendurch füttert) und die Hand (mit Auge), die über den Schreibtisch krabbelt. Berendt selbst ist kühl, verlangt von Peter Auskünfte über Geburtsdatum, Eltern, etc. etc., die Peter herausgibt. Susans Hinweis, dass wir Godrick kennen, führt zu Nachfragen über den. Seufz. Außerdem verlangt er natürlich einen Bericht und Arbeitshyposthesen. Und dann erlaubt er das Ritual. Allerdings besitzt Prof. Norton den einzigen freien Ritualkreis, die Paraphernalien bekommen wir bei Prof. Degenhardt und Noemi St. John hat die Isisaugen reserviert. Wir müssen also mit allen Regenten reden, um ans Ziel zu gelangen. Na gut. Peter verspricht noch, demnächst Adepten zu unterrichten, die sich vor dem Feuer fürchten und fragt selbst nach Unterricht.&lt;br /&gt;
&lt;br /&gt;
Erster Stop: Regenta secunda [[Noémi St. John]], deren Clanhaus (Westen) weniger aufgeräumt wirkt. Überall Kabel, Generatoren, Computer, Technik. Man merkt, dass hier die Schöpferin des Pfades der Technomantik am Werk ist. Wir treffen sie mitten in einem Versuch an. Sie ist die erste Tremer, die auf die Besucherinnen normal wirkt, weil sie weder Peter anhimmelt noch fertig macht, die Hand schüttelt, nett Guten Tag sagt und überhaupt sehr umgänglich und freundlich wirkt. Ihr Begleiter ist ein wandelnder Schrotthaufen namens Woddle (so eine Art winziger Golem aus Schrottteilen). Nur leider benötigt sie die Isisaugen für sich selbst gerade. Aber wenn wir in einer halben Stunde nochmal wiederkämen? Und uns inzwischen um ihren Termin kümmerten, die Begrüßung der neuen Adepten? Prima, danke!&lt;br /&gt;
&lt;br /&gt;
Zweiter Stop: Regentus secundus [[Gustav_Degenhardt|Prof. Dr. Gustav Degenhardt]]. Wieder ändert sich die Stimmung in den Hallen merklich, als wir das Clanhaus des Nordens betreten. Blumenwiesen, Bäume, Sternenhimmel, Fenster, aus denen man in das taghelle New York blicken kann. Die Illusionen sind großartig. Susan und Franziska würden gerne verweilen, aber Peter zieht sie weiter. Kann, wer so etwas schaffen kann, ein schlechter &amp;lt;s&amp;gt;Mensch&amp;lt;/s&amp;gt;Vampir sein? Nun ja. Degenhardt stellt sich in seinen eigenen vier Wänden zwar als unangenehm (Ist mein Gebiet nicht ihre Hauptdisziplin? Zu schade, dass wir uns bislang nicht gesehen haben...) aber auch als echter Speichellecker heraus, der darauf bedacht ist, bei Peters Erzeuger einen guten Eindruck zu machen. Wenn Peter, bei Gelegenheit, erwähnen könnte, dass er immer schon gesagt hat und dass er... wir bekommen unsere Paraphernalien ohne Probleme und sind froh, als wir wieder auf dem Flur stehen. &lt;br /&gt;
&lt;br /&gt;
Dritter Stop: Clanhaus des Ostens und Regentus secundus [[William_Norton|Prof. William Norton]]. Der stellt sich als freundlicher Opa heraus, offenbar genial, aber auch sehr verwirrt. Da wird Susan ganz schnell für Peters Frau gehalten (was, wir erinnern uns, unter Tremere superstreng verboten ist. Kümmert Norton überhaupt nicht) und wir kommen mal wieder nur mit Mühe zu Wort. Bewegung durch den Geist allerdings klingt nach einer tollen Disziplin. Der große oder der kleine Smaragdkreis? &amp;quot;Der große&amp;quot;, sagt Susan. &lt;br /&gt;
&lt;br /&gt;
Vierter Stop: Die &amp;quot;Begrüßung&amp;quot; der Neuankömmlinge. Es handelt sich um Caitiff, die auf Befehl des Prinzen ja in die Clans aufgenommen werden sollen. Hier verläuft diese Aufnahme in drei Schritten, deren erster bei unserer Ankunft schon an sein Ende gelangt: Lange Reden, die den Neuankömmlingen klar machen sollen, wie unwürdig sie eigentlich sind. Offenbar ist dies überhaupt nur der letzte Schwung einer größeren Gruppe. Wir verlassen den Raum mit [[Sanford Brown]], als der praktische Teil beginnt, die Probe des Willens. Dazu wird eine Feuerwand um die Caitiff erzeugt, die sie ertragen müssen. Der erste schafft dies schon mal nicht und verbrennt beim Versuch aus dem Feuerkreis zu fliehen. Caitiff sind offenbar nicht beliebt... Sanford führt uns zu einer Art Zelle, in der die einzigen beiden bislang erfolgreichen Kandidaten der Nacht angekettet sind. Offenbar haben sie Schmerzen und können sich kaum beherrschen. Peter streicht eine Paste auf sie, in die Sanford lange goldene Nadeln steckt. Die Schmerzen steigern sich zur Raserei. Wir gehen dann mal und Peter hat Mühe, seinen Begleiterinnen zu erklären, dass es sich lediglich um ein Ritual handelt, um thaumaturgische Fähigkeiten zu wecken. Einmal reicht für gewöhnlich...&lt;br /&gt;
&lt;br /&gt;
Nun, wir besorgen die Isisaugen von Noémi und begeben uns zu unserem Ritualkreis. Der große Smaragdkreis ist in einer ganzen Halle untergebracht, die dementsprechend keine Riegel an den Türen hat. (Wirklich, der große, Susan?) Ein riesiger Steinkreis, gehalten von zwei Statuen in der Wand ist nebelgefüllt. Egal. Wir bereiten das Ritual vor, dann kommt Nebel auf und von Braun erscheint — wieder nur eine Vision, puh. Er beginnt, Peter, den er als Hannah anredet, Fragen zu stellen. Der zweite Teil des Rituals wird eine Prüfung sein. Und...&lt;br /&gt;
&lt;br /&gt;
* Nach welchen Kriterien opferst du einen aus deinem Klüngel? Um das Ziel zu erreichen, antworten wir.&lt;br /&gt;
* Wer ist der wichtigere Verbündete für dich bei der Verteidigung deiner Stadt? der Prinz oder der Primogen der Nosferatu. Primogen.&lt;br /&gt;
* Sherriff oder Geissel? Sherriff&lt;br /&gt;
* Harpye oder Primogen der Tremere? Harpye&lt;br /&gt;
* Unter welchen Bedingungen darf man Salubri opfern? Um Gehenna zu verhindern.&lt;br /&gt;
&lt;br /&gt;
Wir lachen herzlich über unsere Antworten (oder hätten es gerne), die uns bei längerem Nachdenken nicht, sagen wir, optimal erscheinen. Besonders die Harpye, ts, ts, ts...&lt;br /&gt;
&lt;br /&gt;
===Allein unter Tremere===&lt;br /&gt;
Aber dann wird es ernst. Ein Adept kommt in den Saal gestürmt, von Braun und der Nebel sind plötzlich fort. Sofort alles unterbrechen! Der Lordinquisitor Berendt (hä?) hat zu einer großen Versammlung gerufen und alle müssen kommen. Mist. Wo wir gerade mitten im Ritual waren. Wir lassen alles brav liegen (insbesondere bleibt das Memorarium zurück...), der Adept versiegelt den Saal und dann eilen wir zur großen Halle. &lt;br /&gt;
&lt;br /&gt;
Dort steht Berendt, gar nicht mehr kühl, neben der Regenta prima und verkündet, man habe zwei Infernalisten gefangen genommen. Er selbst habe den alten Titel des Lordinquisitors angenommen. Hereingeschleppt werden [[Rain]] und [[Sunshine]], mit schweren Wunden, kaum fähig, selbst zu gehen. Die würden nun eingesperrt und dann, wenn in wenigen Stunden der Prinz erschiene, dürfe er entscheiden, ob sie nur hingerichtet würden oder ob der Großinquisitor sie auch diablerisieren dürfe. Der Großinquisitor schreit noch ein wenig herum, dann Ausgangssperre! Das Haus der Tremere ist versiegelt, alle Ritualräume sind versiegelt, bis diese Sache geklärt ist, darf keiner hinaus. Rain und Sunshine werden in das Clanhaus des Südens gebracht und dann stehen wir da. Können die beiden nicht ''einmal'' auf sich selbst achtgeben?&lt;br /&gt;
&lt;br /&gt;
Es folgt eine intensive Diskussion in einem einsamen Gang. Wir ändern oft unsere Meinung. Klar ist: Aus dieser Lage kann von Braun die Salubri nicht retten. Er kann nur noch die Diablerie verbieten. Wenn wir sie also nicht retten, dann niemand. Und wie war die erste Regel? Die Salubri sind der Schlüssel zu allem! Klar ist aber auch, wenn wir jetzt die Salubri versuchen zu retten, dann geben wir das Ritual auf, das Kästchen, wahrscheinlich unser Leben und auf jeden Fall unsere Zukunft in New York und überhaupt in der Camarilla. Man wird uns jagen. Und war die letzte Frage nicht, unter welchen Bedingungen man die Salubri opfern darf? Und haben wir nicht geantwortet, um Gehenna zu verhindern?&lt;br /&gt;
&lt;br /&gt;
Es gibt also zwei Strategien: Entweder wir trommeln Unterstützung für die Salbri zusammen, indem wir die Brüche im Clan Tremere nutzen. Wenn wir St.John und Norton auf unsere Seite bekommen, können wir vielleicht Sturbridge überzeugen und dann... mal sehen. Es ist kein Plan, sondern eine wilde Hoffnung. Die Alternative ist, dass wir Norton bitten, das Siegel am Ritualsaal zu entfernen und das Ritual zu Ende bringen. Und vielleicht, ganz vielleicht, lernen wir nicht nur mehr auf unserem Weg, Gehenna zu verhindern, sondern auch etwas, das uns hilft, Rain und Sunshine zu retten...&lt;br /&gt;
&lt;br /&gt;
Am Ende ringen wir uns zu Plan eins durch. Wir geben alles auf. (Dezente Sorgen in der Spielerschaft, wie die SL es hinbekommen will, dass wir alle zusammen im Mai spielen können. Ständige Absprachen zwischen Tobi und Axel, die uns nervös machen. Kippen wir gerade ein paar Jahre Plot? Es ist spät und wir sollten viiiiel mehr Vertrauen in die beiden haben...)&lt;br /&gt;
&lt;br /&gt;
Erster Halt also Regentin St.John. Peter versucht, ihr politische Zusamenhänge nahe zu bringen. Wenn Berendt diesen Triumph hinter sich hat, kann er an nächsthöherer Stelle in der Pyramide ein Certamen fordern, einen Zweikampf zwischen sich und der Regenta prima. Klar, wie das ausginge. Und dann ist nicht nur Sturbridge nicht mehr, sondern St.John verliert auch ihre Regentschaft, weil die Traditionalisten sie ihr wegnehmen werden. Aber wenn sie uns hälfe, die Infernalisten zu befreien...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Und was ist eure Motivation? Aber ihr dürft nicht lügen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Peter versucht es mit Subtilität, Susan mit der Wahrheit. Und Noémi lässt sich tatsächlich darauf ein, uns zu Sturbridge zu begleiten. Keine Zeit jetzt, auch noch Norton zu gewinnen, dieser Schwung will ausgenutzt sein. Woddle greift sich inzwischen mehr und mehr Schrott und wächst...&lt;br /&gt;
&lt;br /&gt;
Bei Sturbridge aber kommt die Geschichte von ihrer Rettung so gar nicht an. Lieber will sie sich opfern, als dass sie zwei Infernalisten befreit. Und nun müssen wir nach und nach mit der Wahrheit heraus. Dass wir die beiden kennen. Dass wir sie für unschuldig halten. Dass sie nichts Schlimmes getan haben. Dass wir sie befreien würden. Dass der innere Zirkel irrt, auf jeden Fall aber Unrecht hat, wenn er Salubri qua Clanzugehörigkeit für tötenswert erachtet. Sturbrides Fragen locken ein tödliches Geständnis nach dem anderen aus uns heraus. Am Ende stellt Sturbridge Peter vor eine letzte Alternative: Er kann jetzt sagen dass es nur die Malkavianerin war, die ihm all dies eingegeben hat. Denn wenn nicht, dann muss die Regentin ihn öffentlich exsanguinieren und nach Wien schicken. Schluck. &lt;br /&gt;
&lt;br /&gt;
Aber was hilft es? Wir bleiben bei unserem Standpunkt. Und Sturbridge — atmet tief durch und ruft nicht alle anderen herbei. Puh. Tiefes Durchatmen.&lt;br /&gt;
&lt;br /&gt;
Klar, dass sie uns auch nicht öffentlich hilft. Aber sie gibt uns ein Holzschwert, einen Siegelbrecher, mit dem wir genau ein Siegel zerstören können. Außerdem verrät sie uns, wo die Notausgänge sind. Jedes Öffnen eines Siegels führt übrigens zum völligen Shutdown aller Clanhäuser und lockt den Großinquisitor an. Unser Plan zwei hätte also gar nicht fuktionieren können, gut zu wissen.&lt;br /&gt;
&lt;br /&gt;
Noemi begleitet uns. Sie holt Woddle, der inzwischen zu einer beeindruckenden Größe herangewachsen ist. Dass das geht... &lt;br /&gt;
&lt;br /&gt;
Wieder aufgeregtes Planen. Können wir wenigstens einigen von uns ermöglichen, ihr Leben in New York nicht aufgeben zu müssen? Noemi sollte ihren Posten nicht verlieren. Und Susan meint, sie bleibe besser in New York, informiere den Prinzen und den Rest des Klüngels und könnte so helfen. (Vielleicht hängt Susan auch viel zu sehr an [[David_Hamilton|David]] als dass sie ernsthaft aus New York fort könnte.) Also werden Franziska und Peter mit den Salubri zu fliehen versuchen, die anderen helfen nur und tun dann unbeteiligt.&lt;br /&gt;
&lt;br /&gt;
Noemi betritt das Büro von Berendt, Woddle parkt sich davor, so dass keiner raus- oder reinkommt. Peter lenkt die Wache ab, Franziska pflöckt sie mit Geschwindigkeit. Susan hält Wache im Flur. Dann werfen wir uns die Salubri über die Schulter, Peter pflöckt Susan, damit es unauffällig aussieht und Franziska öffnet mit dem Schwert das Siegel am südlichen Ausgang. Alarm! Wir rennen, scheitern fast an einer einfachen Doppeltür, aber zum Glück hat Neill Franziska beigebracht, wie man Türen eintritt. Im dritten Anlauf springt die Tür auf, hinter uns fliegen Woddle-Teile durch die Gegend, man verfolgt uns schon. Wir klettern einen Treppe hoch und landen in einem Gewächshaus. Dort umfängt uns Nebel und wir können uns nicht mehr bewegen. Wir sinken zu Boden.&lt;br /&gt;
&lt;br /&gt;
Verdammt, warum hat Sturbridge uns vor diesem letzten Sicherheitsmechanismus nicht gewarnt???&lt;br /&gt;
&lt;br /&gt;
===Zurück im Chantry===&lt;br /&gt;
Franziska, Peter und Susan (!) sind allein im Nebel. Wir erheben uns, dann kommt von Braun auf uns zugeschritten. Oh. Die ganze verdammte Flucht, unser Opfer, alles war nur der zweite Teil des Rituals, die Prüfung!&lt;br /&gt;
&lt;br /&gt;
Aber wir haben bestanden. &amp;quot;Die Salubri&amp;quot;, sagt von Brauns Bild, &amp;quot;sind der Schlüssel, weil Saulot als Einziger einen Plan hatte, alles zu einem guten Ende zu führen. Tut alles, um ihnen zu helfen. Deine wichtigste Aufgabe ist es, welche zu finden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Helmar]], den wir aus früheren Erlebnissen mit dem Memorarium kennen, erfahren wir, ist Teil eines Triumvirates, dessen andere beiden Mitglieder von Braun und, festhalten, die Harpye von Washington, (jetzt New York), also [[Robert Sinclair]] sind. Meine Güte, unsere (i.e. Susans) Harpyenantwort war am Ende genau auf den Punkt! Die beiden soll Hannah suchen.&lt;br /&gt;
&lt;br /&gt;
Wir bekommen außerdem einen verkorkten, verwachsten Trank &amp;quot;Bruch des Blutbandes&amp;quot;. Den geben Franziska und Peter Susan, sie wollen damit nichts zu tun haben.&lt;br /&gt;
Und wir finden ein Ritualpaket mit Wachstuch und Formel sowie einer Kerze, wie wir sie aus Ceoris kennen. Mit diesem zwei Mal ausführbaren Ritual kann man das Band zum inneren Zirkel brechen. Feenstaub bläst über uns hinweg.&lt;br /&gt;
&lt;br /&gt;
Dann sind wir wieder im Smaragdkreis im großen Ritualsaal im Clanhaus des Ostens. Wir räumen eilig auf und verschwinden auf dem schnellstmöglichen Weg aus dem Chantry of the Five Burroughs.&lt;br /&gt;
&lt;br /&gt;
Die Nacht endet mit ausführlichen Diskussionen über unsere Erlebnisse. Im Nachhinein gab es so viele Hinweise, dass alles nicht echt war. Der große Woddle, der plötzlich gar nicht mehr kühle Berendt, die einfache Wache vor dem Gefängnis der Salubri...&lt;br /&gt;
&lt;br /&gt;
Zeit, mit Rain und Sunshine zu reden? Und mit von Braun? Und Robert? Und Helmar? Bisher nicht - Auf jeden Fall haben wir mehr Verbündete als wir dachten.&lt;br /&gt;
{{Navbox chapter}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Modul:Chapter/class&amp;diff=3520</id>
		<title>Modul:Chapter/class</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Modul:Chapter/class&amp;diff=3520"/>
		<updated>2016-03-04T05:50:54Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local FoundationClass = require('Module:Foundationclass')&lt;br /&gt;
local ClassDebug = require('Module:Debug/class')&lt;br /&gt;
&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
-- *                         inheritance                          *&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
local ClassChapter = FoundationClass:subclass('Chapter')&lt;br /&gt;
-- setting class's configuration data&lt;br /&gt;
ClassChapter.static.myConfiguration = mw.loadData('Module:Chapter/config')&lt;br /&gt;
--   being in a static method, use self.myConfiguration&lt;br /&gt;
--   being in a private method, that knows self or in a public method, use self.class.myConfiguration&lt;br /&gt;
&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
-- *                          properties                          *&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
&lt;br /&gt;
-- **************** initialization of table for private properties&lt;br /&gt;
local _private = setmetatable({}, {__mode = 'k'})   -- weak table storing all private attributes&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of public static properties&lt;br /&gt;
-- ClassChapter.static.myPropertyModule = require('Module:extern')&lt;br /&gt;
-- ClassChapter.static.staticProperty = ' '&lt;br /&gt;
&lt;br /&gt;
-- remember the static classes provided by Foundationclass:&lt;br /&gt;
-- ClassChapter.globalConfig&lt;br /&gt;
-- ClassChapter.myCargoUtil&lt;br /&gt;
-- ClassChapter.mySmwUtil&lt;br /&gt;
-- ClassChapter.myTableTools&lt;br /&gt;
-- ClassChapter.myYesno&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of (global) private properties&lt;br /&gt;
-- for properties you should rather use constructor and _private[self]. this only, if you need a private class property&lt;br /&gt;
-- you should, however predeclare private methods here&lt;br /&gt;
local _debug	-- private method declared later&lt;br /&gt;
local _privateMethodAhead	-- declaration ahead, so this private method can be used in the constructor and in other private methods&lt;br /&gt;
&lt;br /&gt;
-- ***************************************************************&lt;br /&gt;
-- *                           methods                           *&lt;br /&gt;
-- ***************************************************************&lt;br /&gt;
 &lt;br /&gt;
-- **************** declaration of static methods&lt;br /&gt;
function ClassChapter:initialize(uid, superhandler)&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	FoundationClass.initialize(self, uid, superhandler)&lt;br /&gt;
	_private[self] = {&lt;br /&gt;
		dbg = ClassDebug:new(tostring(self.class) .. ': id ' .. uid),&lt;br /&gt;
	}&lt;br /&gt;
	_debug(self, 1, ' ClassChapter: done initializing object &amp;amp;quot;' .. uid ..'&amp;amp;quot;, from ' .. tostring(self))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- use use self.myConfiguration to access your configuration in a static method&lt;br /&gt;
function ClassChapter.static:aStaticMethod(var)&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter.static:aStaticMethod() to do something, from ' .. tostring(self))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter.static:mySfDynamicFieldAttribute(fieldname, attribute, value)&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter.static:mySfDynamicFieldAttribute(fieldname, attribute, value), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 2, ' with parameters &amp;amp;quot;' .. fieldname .. '&amp;amp;quot;, &amp;amp;quot;' .. attribute .. '&amp;amp;quot; and a ' .. type(value) .. ' value')&lt;br /&gt;
	-- function that can process any attribute/value pair just before rendering the semantic forms field&lt;br /&gt;
	-- usually done, to generate a dynamic 'default' value&lt;br /&gt;
	-- keep in mind: you can completely disable a form field, if you return true on attribute &amp;amp;quot;disable&amp;amp;quot;.&lt;br /&gt;
	-- 	however, this causes the parameter to not show at all, neither in the form, nor in processing&lt;br /&gt;
	local val = value&lt;br /&gt;
	if fieldname == 'number' and attribute == 'default' then&lt;br /&gt;
		local query = {&lt;br /&gt;
			select = {'[[is_member_of_class::Chapter]]'},&lt;br /&gt;
			fields = {'Has_chapter_number'}&lt;br /&gt;
		}&lt;br /&gt;
		local attributes = {&lt;br /&gt;
			limit = 1,&lt;br /&gt;
			sort = 'Has_chapter_number',&lt;br /&gt;
			order = 'desc',&lt;br /&gt;
		}&lt;br /&gt;
		local result = ClassChapter.mySmwUtil.ask(query, attributes)&lt;br /&gt;
		if result and result[1] and result[1].Has_chapter_number then&lt;br /&gt;
			val = result[1].Has_chapter_number&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if fieldname == 'start_date' and attribute == 'default' then&lt;br /&gt;
		local query = {&lt;br /&gt;
			select = {'[[is_member_of_class::Chapter]]'},&lt;br /&gt;
			fields = {'Took_place_until#ISO=date'}&lt;br /&gt;
		}&lt;br /&gt;
		local attributes = {&lt;br /&gt;
			limit = 1,&lt;br /&gt;
			sort = 'Took_place_until',&lt;br /&gt;
			order = 'desc',&lt;br /&gt;
		}&lt;br /&gt;
		local result = ClassChapter.mySmwUtil.ask(query, attributes)&lt;br /&gt;
		if result and result[1] and result[1].date then&lt;br /&gt;
			local lang = mw.language.getContentLanguage()&lt;br /&gt;
			local ts = lang:formatDate('U', result[1].date)&lt;br /&gt;
			ts = ts + 86400&lt;br /&gt;
			val = os.date('%Y/%m/%d', ts)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return val	-- this value will be used as new value for field's attribute&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter.static:sfGenerateForm()&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter.static:sfGenerateForm()')&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local ClassEvent  = require('Module:Event/class')&lt;br /&gt;
	local ClassInfo  = require('Module:Info/class')&lt;br /&gt;
	local ClassMarker  = require('Module:Marker/class')&lt;br /&gt;
	local tagStart = '{{{'&lt;br /&gt;
	local tagEnd = '}}}'&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- create the form header&lt;br /&gt;
	local notification = mw.html.create('')&lt;br /&gt;
	if _CFG.form.notification and mw.ustring.len(_CFG.form.notification) &amp;gt; 0 then&lt;br /&gt;
		notification:wikitext(mbox.main('ombox', { text = _CFG.form.notification }))&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	local formheader = mw.html.create('')&lt;br /&gt;
	formheader:wikitext(self:sfGenerateFormInfoTag())&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.global.entityTitle .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.headerText)&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
		:node(notification)&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:attr('id', 'wikiPreview')&lt;br /&gt;
			:cssText('display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;')&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	-- free text&lt;br /&gt;
	local freetext = mw.html.create('')&lt;br /&gt;
	if _CFG.form.allowsFreeText then&lt;br /&gt;
		freetext:wikitext(tagStart .. 'standard input|free text|autogrow=true|editor=wikieditor|cols=' .. math.min(200, 2*_CFG.form.textareaAttributes.cols) .. &lt;br /&gt;
					'|rows=' .. math.min(24, 3*_CFG.form.textareaAttributes.rows) .. (_CFG.form.freetextPreload and '|preload=' .. _CFG.form.freetextPreload or '' ) .. tagEnd)&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	-- create the form buttons&lt;br /&gt;
	local formbuttons = mw.html.create('div')&lt;br /&gt;
	for _, button in pairs(_CFG.form.buttons) do&lt;br /&gt;
		formbuttons:wikitext(tagStart .. 'standard input|' .. button .. tagEnd)&lt;br /&gt;
	end&lt;br /&gt;
	formbuttons:addClass('formbuttons')&lt;br /&gt;
		:done()&lt;br /&gt;
	-- assemble everything&lt;br /&gt;
	-- start the html object&lt;br /&gt;
	local html = mw.html.create('div')	-- we need this div, otherwise the embedded template will fail&lt;br /&gt;
	html:node(formheader)&lt;br /&gt;
		:wikitext('&amp;lt;h1&amp;gt;Kapitel-Kerndaten&amp;lt;/h1&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(tagStart .. 'for template|' .. _CFG.template.name .. '|label=' .. _CFG.global.entityTitle .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:sfGenerateFormTable(_CFG.form.tab_maindata))&lt;br /&gt;
		:wikitext(&amp;quot;'''(*) Pflichtfeld'''&amp;quot;)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h1&amp;gt;Gesammelte Informationen&amp;lt;/h1&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.parameter.gathered_information.label .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(_CFG.parameter.gathered_information.description)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:sfInitField('gathered_information'):render())&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h1&amp;gt;Bemerkenswerte Ereignisse&amp;lt;/h1&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.parameter.associated_events.label .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(_CFG.parameter.associated_events.description)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:sfInitField('associated_events'):render())&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h1&amp;gt;Zusätzliche Kartenmarkierungen&amp;lt;/h1&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.parameter.additional_map_marker.label .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(_CFG.parameter.additional_map_marker.description)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:sfInitField('additional_map_marker'):render())&lt;br /&gt;
		:wikitext(tagStart .. 'end template' .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h1&amp;gt;Geschehnisse&amp;lt;/h1&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(freetext)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(frame:extensionTag('headertabs'))&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(ClassInfo:sfGenerateForm(_CFG.template.name .. '[gathered_information]'))&lt;br /&gt;
		:node(ClassEvent:sfGenerateForm(_CFG.template.name .. '[associated_events]'))&lt;br /&gt;
		:node(ClassMarker:sfGenerateForm(_CFG.template.name .. '[additional_map_marker]'))&lt;br /&gt;
		:node(formbuttons)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(tagStart .. 'for template|Navbox chapter|label=Kapitelnavigationsbox' .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(tagStart .. 'end template' .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		html:newline()&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(ClassDebug:printLog(debugLevel))&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of private methods&lt;br /&gt;
-- use self.class.myConfiguration to access your configuration in a public or a private method that is called by a public method&lt;br /&gt;
_debug = function (self, level, text)&lt;br /&gt;
	if _private[self] and _private[self].dbg then&lt;br /&gt;
		local debugLevel = FoundationClass.globalConfig.debugLevel or self.class.myConfiguration.global.debugLevel&lt;br /&gt;
		if debugLevel and level &amp;lt;= debugLevel then&lt;br /&gt;
			_private[self].dbg:log(level, text)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
		if debugLevel and level &amp;lt;= debugLevel then&lt;br /&gt;
			ClassDebug:log(level, text, tostring(self) .. '.static')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _privateMethod = function (self)&lt;br /&gt;
	_debug(self, 1, 'entering private _privateMethod() to do something, from ' .. tostring(self))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of public methods&lt;br /&gt;
-- use self.class.myConfiguration to access your configuration in a public method&lt;br /&gt;
function ClassChapter:addInfobox()&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:addInfobox(), from ' .. tostring(self))&lt;br /&gt;
	if self:goodToGo() then&lt;br /&gt;
		local _CFG = self.class.myConfiguration&lt;br /&gt;
		local coreData = self:getCoreData()&lt;br /&gt;
		local lang = mw.language.getContentLanguage()&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local pcs&lt;br /&gt;
		if coreData.pcs and #coreData.pcs &amp;gt; 0 then&lt;br /&gt;
			table.sort(coreData.pcs)&lt;br /&gt;
			pcs = {}&lt;br /&gt;
			for _, pc in pairs(coreData.pcs) do&lt;br /&gt;
				table.insert(pcs, ClassChapter:formRedlink(pc, 'Person'))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local npcs&lt;br /&gt;
		if coreData.npcs and #coreData.npcs &amp;gt; 0 then&lt;br /&gt;
--			table.sort(coreData.npcs)&lt;br /&gt;
			npcs = {}&lt;br /&gt;
			for _, npc in pairs(coreData.npcs) do&lt;br /&gt;
				table.insert(npcs, ClassChapter:formRedlink(npc, 'Person'))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local args = { 'form=Offenbarung' }&lt;br /&gt;
		args['link text'] = '+'&lt;br /&gt;
		args['query string'] = 'Revelation[chapter]=' .. self:getUid()&lt;br /&gt;
		local revlink = '(' .. frame:callParserFunction{name = '#formlink', args = args} ..')'&lt;br /&gt;
		local ib_args = {&lt;br /&gt;
			bodyclass = 'infobox_chapter',&lt;br /&gt;
			titleclass = 'objtitle titletext',&lt;br /&gt;
			aboveclass = 'objtitle titletext typ_plain',&lt;br /&gt;
			headerclass = 'headertext typ_plain',&lt;br /&gt;
			labelstyle = 'width: 40%;',&lt;br /&gt;
			datastyle = 'width: 60%;',&lt;br /&gt;
			title = coreData.title,&lt;br /&gt;
			above = 'Kapitel ' .. coreData.number .. ((coreData.subnumber and coreData.subnumber &amp;gt; 0) and '.' .. coreData.subnumber or ''),&lt;br /&gt;
			label1 = _CFG.parameter.city.label,&lt;br /&gt;
			data1 = coreData.city and '[[' .. coreData.city .. ']]' or nil,&lt;br /&gt;
			label2 = 'Zeitraum',&lt;br /&gt;
--			data2 = coreData.start_date and lang:formatDate(coreData.start_date, 'd.m.Y') .. (coreData.end_date and '&amp;amp;nbsp;- ' .. lang:formatDate(coreData.end_date, 'd.m.Y') or '') or nil,&lt;br /&gt;
			data2 = coreData.start_date and coreData.start_date .. (coreData.end_date and '&amp;amp;nbsp;- ' .. coreData.end_date or '') or nil,&lt;br /&gt;
			label5 = _CFG.parameter.pcs.label,&lt;br /&gt;
			data5 = pcs and mw.text.listToText(pcs, ', ', ' und ') or nil,&lt;br /&gt;
			label6 = _CFG.parameter.npcs.label,&lt;br /&gt;
			data6 = npcs and mw.text.listToText(npcs, ', ', ' und ') or nil,&lt;br /&gt;
			label8 = _CFG.parameter.auxiliary_settings.label,&lt;br /&gt;
			data8 = coreData.auxiliary_settings and '[[' .. mw.text.listToText(coreData.auxiliary_settings, ']], [[', ']] und [[') .. ']]' or nil,&lt;br /&gt;
			label9 = 'Offenbarungen',&lt;br /&gt;
			data9 = ((coreData.revelations and #coreData.revelations &amp;gt; 0) and '[[' .. mw.text.listToText(coreData.revelations, ']], [[', ']] und [[') .. ']] ' or '') .. revlink,&lt;br /&gt;
			data10 = coreData.description,&lt;br /&gt;
			header13 = 'Through the looking glass',&lt;br /&gt;
			label14 = _CFG.parameter.session_location.label,&lt;br /&gt;
			data14 = coreData.session_location and coreData.session_location or nil,&lt;br /&gt;
			label15 = _CFG.parameter.session_date.label,&lt;br /&gt;
--			data15 = coreData.session_date and lang:formatDate(coreData.session_date, 'd.m.Y') or nil,&lt;br /&gt;
			data15 = coreData.session_date and coreData.session_date or nil,&lt;br /&gt;
			label16 = _CFG.parameter.session_duration.label,&lt;br /&gt;
			data16 = coreData.session_duration and coreData.session_duration or nil,&lt;br /&gt;
		}&lt;br /&gt;
		self:addOutput(require('Module:Infobox').infobox(ib_args))&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter:addPageBody()&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:addPageBody(), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 2, ' rendering errors and warnings and adding them to output')&lt;br /&gt;
	local coreData = self:getCoreData()&lt;br /&gt;
	self:addOutput(self:renderErrors())&lt;br /&gt;
	self:addOutput(self:renderWarnings())&lt;br /&gt;
	self:setSortkey(coreData.title)&lt;br /&gt;
	if self:goodToGo() then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		self:addOutput( frame:callParserFunction('#vardefine:number', coreData.number) )&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter:myArgumentProcessing(coreData)&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:myArgumentProcessing(args) to process coreData, from ' .. tostring(self))&lt;br /&gt;
	-- function that performs some individual transformation args --&amp;amp;amp;gt; coreData&lt;br /&gt;
	-- remember: you can add warnings to your output with self:addWarning(warning). the page, however, will not be put in any gardening category. for that, use self:addError()&lt;br /&gt;
	-- hint: for conversion bool values, this is useful: FoundationClass.myYesno&lt;br /&gt;
	local coreData = coreData&lt;br /&gt;
	coreData.number = tostring(coreData.number)&lt;br /&gt;
	if mw.ustring.find(coreData.number, '[^0-9]') then&lt;br /&gt;
		coreData.number, coreData.subnumber = mw.ustring.match(coreData.number, '^([0-9]+)[^0-9]([0-9]+)$')&lt;br /&gt;
		coreData.subnumber = tonumber(coreData.subnumber)&lt;br /&gt;
	else&lt;br /&gt;
		coreData.subnumber = 0&lt;br /&gt;
	end&lt;br /&gt;
	coreData.number = tonumber(coreData.number)&lt;br /&gt;
	-- calculate displaytitle&lt;br /&gt;
	coreData.displaytitle = coreData.number .. (coreData.subnumber &amp;gt; 0 and '.' .. coreData.subnumber or '') .. '. ' .. coreData.title&lt;br /&gt;
	-- get a list of revelations that were obtained during this chapter&lt;br /&gt;
	local query = {&lt;br /&gt;
		select = { '[[is_member_of_class::Revelation]]', '[[received_in_chapter::' .. self:getUid() .. ']]' },&lt;br /&gt;
		fields = { 'Has_display_title=title' }&lt;br /&gt;
	}&lt;br /&gt;
	attributes = {&lt;br /&gt;
		sort = 'Has_display_title',&lt;br /&gt;
		order = 'asc',&lt;br /&gt;
	}&lt;br /&gt;
	local result = ClassChapter.mySmwUtil.ask(query, attributes)&lt;br /&gt;
	local revelations = {}&lt;br /&gt;
	if result and #result &amp;gt; 0 then&lt;br /&gt;
		for _, data in pairs(result) do&lt;br /&gt;
			table.insert(revelations, data.MainLabel)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	coreData.revelations = revelations&lt;br /&gt;
	return coreData	-- this is your new coreData.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter:myDataAdjustments(data)&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:myDataAdjustments(data) to convert data from data store into data suitable for argument processing, from ' .. tostring(self))&lt;br /&gt;
	-- function that performs some individual transformation datastore data into argument data&lt;br /&gt;
	-- keep in mind, when using smw data store, that data is indexed by parameter names, not properties&lt;br /&gt;
	-- hint: for conversion bool values, this is useful: FoundationClass.myYesno&lt;br /&gt;
	local data = data&lt;br /&gt;
	return data	-- this is your new data table, being passed on to initFromArgs and subsequently to plausibility testing&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter:myPlausibilityTest(args)&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:myPlausibilityTest(args) to test arguments, from ' .. tostring(self))&lt;br /&gt;
	-- function that performs the individual plausibility tests&lt;br /&gt;
	-- note: before you access a field args.fieldname you should check for existance&lt;br /&gt;
	-- use self:addError(text); this also puts the page in its class's gardening category&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	if args.number then&lt;br /&gt;
		args.number = tostring(args.number)&lt;br /&gt;
		if not mw.ustring.match(args.number, '^[0-9]+$') and not mw.ustring.match(args.number, '^[0-9]+[^0-9][0-9]+$') then&lt;br /&gt;
			self:addError('Ungültiger Wert für ' .. _CFG.parameter.number.label .. ' festgestellt: ' .. tostring(args.number))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false	-- return value will be ignored. but if you add any error, the object's initialization will fail with the error&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter:myStashAdjustments(stash, storeType)&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:myStashAdjustments(stash) to do some minor adjustments on data before storing, from ' .. tostring(self))&lt;br /&gt;
	-- function that alters the stash before storing the data. if necessary, you can complate skip storing this stash, if you return false or the empty table {}&lt;br /&gt;
	-- storeType is the actual method of storage for this call. either 'cargo', or 'smw'&lt;br /&gt;
	-- hint: for conversion bool values, this is useful: FoundationClass.myYesno&lt;br /&gt;
	local stash = stash&lt;br /&gt;
	return stash	-- this is your new stash. this will be stored. it has format (fieldname: value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ClassChapter:method()&lt;br /&gt;
	_debug(self, 1, 'entering ClassChapter:method() to do something, from ' .. tostring(self))&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return ClassChapter&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Class:Info&amp;diff=3282</id>
		<title>Class:Info</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Class:Info&amp;diff=3282"/>
		<updated>2016-02-19T05:43:53Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Änderung 3280 von Calebros (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Classgenerator&lt;br /&gt;
|global_entityTitle=Informationsfragment&lt;br /&gt;
|global_description=Erlaubt es, wichtige Informationsfragmente herauszuheben, zu speichern und mit verschiedenen Tags zu versehen (sie Organisationen, Themen und/oder Personen zuzuordnen)&lt;br /&gt;
|global_gardeningCategory_chooser=individual&lt;br /&gt;
|global_gardeningCategory=Info fragments with data errors&lt;br /&gt;
|global_smwUseStorage=true&lt;br /&gt;
|global_smwIsSubobject=true&lt;br /&gt;
|global_delimiter=,&lt;br /&gt;
|global_edit_timestamp={{REVISIONTIMESTAMP}}&lt;br /&gt;
|global_autocreate_module=1455348519&lt;br /&gt;
|global_autocreate_template=1455348519&lt;br /&gt;
|global_autocreate_form=No&lt;br /&gt;
|global_autocreate_category=1455348519&lt;br /&gt;
|global_autocreate_property=1455387288&lt;br /&gt;
|form_enable=Yes&lt;br /&gt;
|form_typeCreateLink=none&lt;br /&gt;
|form_labelCreate=Information anlegen&lt;br /&gt;
|form_labelEdit=Information bearbeiten&lt;br /&gt;
|form_headerText=Erlaubt es, wichtige Informationsfragmente herauszuheben, zu speichern und mit verschiedenen Tags zu versehen (sie Organisationen, Themen und/oder Personen zuzuordnen)&lt;br /&gt;
|form_allowsFreeText=false&lt;br /&gt;
|form_buttons=preview, changes&lt;br /&gt;
|form_fieldSize=80&lt;br /&gt;
|form_textareaAttributes_cols=80&lt;br /&gt;
|form_textareaAttributes_rows=4&lt;br /&gt;
|form_textareaAttributes_autogrow=true&lt;br /&gt;
|form_textareaAttributes_editor=wikieditor&lt;br /&gt;
|template_name=Info&lt;br /&gt;
|parameter_parameter={{Classgenerator/parameter&lt;br /&gt;
|name=payload&lt;br /&gt;
|cardinality=single&lt;br /&gt;
|description=Die wichtige Information, die es zu speichern und/oder zuzuordnen gilt.&lt;br /&gt;
|label=Information&lt;br /&gt;
|property=Yes&lt;br /&gt;
|property_name=holds information&lt;br /&gt;
|property_type=Text&lt;br /&gt;
|severity=mandatory&lt;br /&gt;
|sf=Yes&lt;br /&gt;
|td_type=line&lt;br /&gt;
|input_type=textarea&lt;br /&gt;
|editor=wikieditor&lt;br /&gt;
}}{{Classgenerator/parameter&lt;br /&gt;
|name=source&lt;br /&gt;
|cardinality=list&lt;br /&gt;
|description=Hier bitte die Quelle(n) der Information angeben (Person, Schriftstück, Vision, ...)&lt;br /&gt;
|label=Quelle&lt;br /&gt;
|property=Yes&lt;br /&gt;
|property_name=has source&lt;br /&gt;
|property_type=Page&lt;br /&gt;
|severity=mandatory&lt;br /&gt;
|sf=Yes&lt;br /&gt;
|td_type=wiki-page-name&lt;br /&gt;
|input_type=tokens&lt;br /&gt;
|existing_values_only=false&lt;br /&gt;
|mapping_property=has display title&lt;br /&gt;
|values_from_concept=Sources&lt;br /&gt;
}}{{Classgenerator/parameter&lt;br /&gt;
|name=target&lt;br /&gt;
|cardinality=list&lt;br /&gt;
|description=Über wen oder was handelt die Information&lt;br /&gt;
|label=Objekt&lt;br /&gt;
|property=Yes&lt;br /&gt;
|property_name=concerns&lt;br /&gt;
|property_type=Page&lt;br /&gt;
|severity=mandatory&lt;br /&gt;
|sf=Yes&lt;br /&gt;
|td_type=wiki-page-name&lt;br /&gt;
|input_type=tokens&lt;br /&gt;
|placeholder=Person, Organisation, Thema&lt;br /&gt;
|existing_values_only=false&lt;br /&gt;
|mapping_property=Has display title&lt;br /&gt;
|values_from_concept=Targets&lt;br /&gt;
}}{{Classgenerator/parameter&lt;br /&gt;
|name=type&lt;br /&gt;
|cardinality=single&lt;br /&gt;
|description=Um welchen Typ Information handelt es sich. Dient der Klassifizierung und der besseren Einordnung.&lt;br /&gt;
|label=Typ&lt;br /&gt;
|property=Yes&lt;br /&gt;
|property_name=is about&lt;br /&gt;
|property_type=Text&lt;br /&gt;
|severity=mandatory&lt;br /&gt;
|sf=Yes&lt;br /&gt;
|td_type=line&lt;br /&gt;
|values=Hintergrund, Fähigkeiten, Verbindungen, Agenda, Kommentare,&lt;br /&gt;
|input_type=combobox&lt;br /&gt;
|existing_values_only=true&lt;br /&gt;
}}{{Classgenerator/parameter&lt;br /&gt;
|name=on_page&lt;br /&gt;
|cardinality=single&lt;br /&gt;
|description=Auf welcher CamNet-Seite wurde diese Information hinzugefügt&lt;br /&gt;
|label=Seite&lt;br /&gt;
|property=Yes&lt;br /&gt;
|property_name=is associated to page&lt;br /&gt;
|property_type=Page&lt;br /&gt;
|severity=mandatory&lt;br /&gt;
|sf=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Attribut:Is_about&amp;diff=3281</id>
		<title>Attribut:Is about</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Attribut:Is_about&amp;diff=3281"/>
		<updated>2016-02-19T05:39:14Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Page created automatically by parser function on page Class:Info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;description-box&amp;quot;&amp;gt;Um welchen Typ Information handelt es sich. Dient der Klassifizierung und der besseren Einordnung.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Type ==&lt;br /&gt;
* This is an attribute of the datatype [[Has type::Text]].&lt;br /&gt;
&lt;br /&gt;
== Allowed values ==&lt;br /&gt;
The allowed values are:&lt;br /&gt;
* [[Allows value::Hintergrund]]&lt;br /&gt;
* [[Allows value::Fähigkeiten]]&lt;br /&gt;
* [[Allows value::Verbindungen]]&lt;br /&gt;
* [[Allows value::Agenda]]&lt;br /&gt;
* [[Allows value::Kommentare]]&lt;br /&gt;
&lt;br /&gt;
{{#invoke:Info|categorize}}&lt;br /&gt;
&amp;lt;!-- Note: The class engine sets category &amp;quot;CamNet properties&amp;quot; automatically in function categorize --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Class:Info&amp;diff=3280</id>
		<title>Class:Info</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Class:Info&amp;diff=3280"/>
		<updated>2016-02-19T05:39:12Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Requesting the autocreation of ClassInfo for pages of type property&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Classgenerator&lt;br /&gt;
|global_entityTitle=Informationsfragment&lt;br /&gt;
|global_description=Erlaubt es, wichtige Informationsfragmente herauszuheben, zu speichern und mit verschiedenen Tags zu versehen (sie Organisationen, Themen und/oder Personen zuzuordnen)&lt;br /&gt;
|global_gardeningCategory_chooser=individual&lt;br /&gt;
|global_gardeningCategory=Info fragments with data errors&lt;br /&gt;
|global_smwUseStorage=true&lt;br /&gt;
|global_smwIsSubobject=true&lt;br /&gt;
|global_delimiter=,&lt;br /&gt;
|global_edit_timestamp={{REVISIONTIMESTAMP}}&lt;br /&gt;
|global_autocreate_module=1455348519&lt;br /&gt;
|global_autocreate_template=1455348519&lt;br /&gt;
|global_autocreate_form=No&lt;br /&gt;
|global_autocreate_category=1455348519&lt;br /&gt;
|global_autocreate_property=1455860341&lt;br /&gt;
|form_enable=Yes&lt;br /&gt;
|form_typeCreateLink=none&lt;br /&gt;
|form_labelCreate=Information anlegen&lt;br /&gt;
|form_labelEdit=Information bearbeiten&lt;br /&gt;
|form_headerText=Erlaubt es, wichtige Informationsfragmente herauszuheben, zu speichern und mit verschiedenen Tags zu versehen (sie Organisationen, Themen und/oder Personen zuzuordnen)&lt;br /&gt;
|form_allowsFreeText=false&lt;br /&gt;
|form_buttons=preview, changes&lt;br /&gt;
|form_fieldSize=80&lt;br /&gt;
|form_textareaAttributes_cols=80&lt;br /&gt;
|form_textareaAttributes_rows=4&lt;br /&gt;
|form_textareaAttributes_autogrow=true&lt;br /&gt;
|form_textareaAttributes_editor=wikieditor&lt;br /&gt;
|template_name=Info&lt;br /&gt;
|parameter_parameter={{Classgenerator/parameter}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Modul:Foundationclass&amp;diff=2986</id>
		<title>Modul:Foundationclass</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Modul:Foundationclass&amp;diff=2986"/>
		<updated>2016-02-15T10:43:50Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Class = require('Module:Middleclass').class&lt;br /&gt;
local FoundationClass = Class('FoundationClass')&lt;br /&gt;
local ClassDebug = require('Module:Debug/class')&lt;br /&gt;
local ClassSFfield = require('Module:SFfield/class')&lt;br /&gt;
&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
-- *                          properties                          *&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
&lt;br /&gt;
-- **************** initialization of table for private properties&lt;br /&gt;
local _private = setmetatable({}, {__mode = &amp;quot;k&amp;quot;})   -- weak table, storing all private attributes&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of static properties&lt;br /&gt;
--local _CFG = mw.loadData('Module:Person/config')&lt;br /&gt;
FoundationClass.static.globalConfig = mw.loadData( 'Module:Foundationclass/globalconfig' )&lt;br /&gt;
FoundationClass.static.myCargoUtil = require('Module:CargoUtil')&lt;br /&gt;
FoundationClass.static.mySmwUtil = require('Module:SmwUtil')&lt;br /&gt;
FoundationClass.static.myTableTools = require('Module:TableTools')&lt;br /&gt;
FoundationClass.static.myYesno = require('Module:Yesno')&lt;br /&gt;
-- these are later set by my child class:&lt;br /&gt;
local _debug	-- function for debugging, declared later&lt;br /&gt;
&lt;br /&gt;
-- ***************************************************************&lt;br /&gt;
-- *                           methods                           *&lt;br /&gt;
-- ***************************************************************&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of static methods&lt;br /&gt;
function FoundationClass:initialize(user_uid, superHandler)	-- constructor&lt;br /&gt;
	local user_uid = user_uid&lt;br /&gt;
	local shs = superHandler&lt;br /&gt;
	local superHandler = (superHandler and type(superHandler) == 'table' and superHandler.addError and type(superHandler.addError) == 'function') and superHandler or nil&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local idString = user_uid and ('myUid_' ..user_uid)  or ('NIL_' .. mw.title.getCurrentTitle().prefixedText)&lt;br /&gt;
	-- initialize all private properties&lt;br /&gt;
	_private[self] = {&lt;br /&gt;
		categories = {},&lt;br /&gt;
		coreData = {},&lt;br /&gt;
		dbg = ClassDebug:new('class FoundationClass: ' .. idString),&lt;br /&gt;
		errors = {},&lt;br /&gt;
		initialized = false,&lt;br /&gt;
		loadedDataFromDataStore = false,&lt;br /&gt;
		loadedDataMyself = false,&lt;br /&gt;
		output = mw.html.create(''),&lt;br /&gt;
		superHandler = superHandler,&lt;br /&gt;
		uid = user_uid,&lt;br /&gt;
		warnings = {},&lt;br /&gt;
	}&lt;br /&gt;
	if _CFG.global.category and mw.title.getCurrentTitle().namespace ~= 10 then&lt;br /&gt;
		self:addCategory(_CFG.global.category)&lt;br /&gt;
	end&lt;br /&gt;
	_debug(self, 1, 'Initializing object &amp;quot;' .. idString ..'&amp;quot;, from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 1, ' my superhandler was ' .. tostring(shs))&lt;br /&gt;
	_debug(self, 1, ' my superhandler is ' .. tostring(superHandler))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:cargoGenerateTableStructure()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:cargoGenerateTableStructure(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	-- warning: calling FoundationClass:cargoGenerateTableStructure() gives us no access to our configuration, use Class.cargoGenerateTableStructure(self) instead&lt;br /&gt;
	local declaration = {}&lt;br /&gt;
	-- first, add the uid field&lt;br /&gt;
	declaration[FoundationClass.globalConfig.uidFieldName] = 'Text (hidden)'&lt;br /&gt;
	for param, paramData in pairs(_CFG.parameter) do&lt;br /&gt;
		if paramData.cargo_type and mw.ustring.len(paramData.cargo_type) &amp;gt; 0 then&lt;br /&gt;
			if paramData.cardinality and paramData.cardinality == 'list' then&lt;br /&gt;
				declaration[param] = 'List (' .. _CFG.global.delimiter .. ') of ' .. paramData.cargo_type&lt;br /&gt;
			else&lt;br /&gt;
				declaration[param] = paramData.cargo_type&lt;br /&gt;
			end&lt;br /&gt;
			local additional_field_parameters = {}&lt;br /&gt;
			if paramData.cargo_hidden then&lt;br /&gt;
				table.insert(additional_field_parameters, 'hidden')&lt;br /&gt;
			end&lt;br /&gt;
			if paramData.cargo_size and (type(paramData.cargo_size) == 'number' or mw.ustring.match(paramData.cargo_size, '^[0-9]+$')) and&lt;br /&gt;
					FoundationClass.myTableTools.inTable(FoundationClass.globalConfig.cargoTypesElegibleForSize, mw.ustring.lower(paramData.cargo_type)) then&lt;br /&gt;
				table.insert(additional_field_parameters, 'size=' .. tostring(paramData.cargo_size))&lt;br /&gt;
			end&lt;br /&gt;
			if paramData.values and FoundationClass.myTableTools.size(paramData.values) &amp;gt; 0 and&lt;br /&gt;
					FoundationClass.myTableTools.inTable(FoundationClass.globalConfig.cargoTypesElegibleForValue, mw.ustring.lower(paramData.cargo_type)) then&lt;br /&gt;
				local av = 'allowed values='&lt;br /&gt;
				for _, v in pairs(paramData.values) do&lt;br /&gt;
					av = av .. v .. ','&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(additional_field_parameters, mw.ustring.sub(av, 1, -2))&lt;br /&gt;
			end&lt;br /&gt;
			if #additional_field_parameters &amp;gt; 0 then&lt;br /&gt;
				declaration[param] = declaration[param] .. ' (' .. table.concat(additional_field_parameters, ';') .. ')'&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return declaration&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:categorize()&lt;br /&gt;
	local thispage = mw.title.getCurrentTitle()&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local ret = ''&lt;br /&gt;
	if self and _private[self] and _private[self].uid then&lt;br /&gt;
		error('FoundationClass:categorize() must be called statically. Furthermore, it is not meant for categorizing class\'s objects but rather all pages belonging to the class\'s data pipeline (form, categories, modules, template, ...)')&lt;br /&gt;
	elseif thispage.rootText == 'Classgenerator' or thispage.rootText == 'Foundationclass' then&lt;br /&gt;
		ret = ret .. '[[Category:Class engine]]'&lt;br /&gt;
		if FoundationClass.globalConfig.classCategory and mw.ustring.len(FoundationClass.globalConfig.classCategory) &amp;gt; 0 then&lt;br /&gt;
			-- there has been a classCategory configured&lt;br /&gt;
			if thispage.text == 'Foundationclass' or (thispage.subpageText and thispage.subpageText == 'class')  then&lt;br /&gt;
				-- add class category if on a class page or on foundationclass&lt;br /&gt;
				ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. ']]'&lt;br /&gt;
			end&lt;br /&gt;
			if thispage.subpageText and (thispage.subpageText == 'config' or thispage.subpageText == 'globalconfig') then&lt;br /&gt;
				-- add class category if on a config page&lt;br /&gt;
				local basepage = mw.ustring.match(thispage.fullText, '^[^:]*:(.+)/config.*$')&lt;br /&gt;
				local classpage&lt;br /&gt;
				if basepage then&lt;br /&gt;
					classpage = basepage .. '/class'&lt;br /&gt;
				else&lt;br /&gt;
					classpage = thispage.rootText .. '/config'&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. '|' .. classpage .. ']]'&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == 10 then&lt;br /&gt;
		-- template namespace: add category if in correct namespace and there has been a templateCategory configured, also make sure, we are not part of classgenerator&lt;br /&gt;
		if FoundationClass.globalConfig.templateCategory and mw.ustring.len(FoundationClass.globalConfig.templateCategory) &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.templateCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == 14 then&lt;br /&gt;
		-- category namespace&lt;br /&gt;
		if _CFG and _CFG.global and _CFG.global.gardeningCategory == thispage.text and FoundationClass.globalConfig.gardeningSuperCategory and mw.ustring.len(FoundationClass.globalConfig.gardeningSuperCategory) and thispage.text ~= FoundationClass.globalConfig.gardeningSuperCategory then&lt;br /&gt;
			-- if class' gardening category and not the supergardening itself -&amp;gt; set gardening supercategory&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.gardeningSuperCategory .. ']]'&lt;br /&gt;
		elseif FoundationClass.globalConfig.projectSuperCategory and mw.ustring.len(FoundationClass.globalConfig.projectSuperCategory) &amp;gt; 0 then&lt;br /&gt;
			-- not a gardening category and not called by a childclass. projectSuperCategory set&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.projectSuperCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == mw.title.makeTitle('Form', 'NUL').namespace then&lt;br /&gt;
		-- form namespace: add category if in correct namespace and there has been a formCategory configured, also make sure, we are not part of classgenerator&lt;br /&gt;
		if FoundationClass.globalConfig.formCategory and #FoundationClass.globalConfig.formCategory &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.formCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == mw.title.makeTitle('Module', 'NUL').namespace then&lt;br /&gt;
		-- module namespace: add category if in correct namespace and there has been a moduleCategory configured, also make sure, we are not part of classgenerator or foundationclass&lt;br /&gt;
		if FoundationClass.globalConfig.moduleCategory and #FoundationClass.globalConfig.moduleCategory &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.moduleCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
		if thispage.subpageText and thispage.subpageText == 'class' and FoundationClass.globalConfig.classCategory and mw.ustring.len(FoundationClass.globalConfig.classCategory) &amp;gt; 0 then&lt;br /&gt;
			-- add class category if on a class page and there has been a classCategory configured&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
		if thispage.subpageText and thispage.subpageText == 'config' and FoundationClass.globalConfig.classCategory and mw.ustring.len(FoundationClass.globalConfig.classCategory) &amp;gt; 0 then&lt;br /&gt;
			-- add class category if on a config page and there has been a classCategory configured&lt;br /&gt;
			local basepage = mw.ustring.match(thispage.fullText, '^[^:]*:(.+)/config.*$')&lt;br /&gt;
			local classpage&lt;br /&gt;
			if basepage then&lt;br /&gt;
				classpage = basepage .. '/class'&lt;br /&gt;
			else&lt;br /&gt;
				classpage = thispage.rootText .. '/config'&lt;br /&gt;
			end&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. '|' .. classpage .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == mw.title.makeTitle('Property', 'NUL').namespace then&lt;br /&gt;
		-- property namespace: add category if in correct namespace and there has been a propertyCategory configured&lt;br /&gt;
		if FoundationClass.globalConfig.propertyCategory and #FoundationClass.globalConfig.propertyCategory &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.propertyCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:categoryPage()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:categoryPage(), from ' .. tostring(self))&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 14 then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local _CFG = self.myConfiguration&lt;br /&gt;
		local form&lt;br /&gt;
		if _CFG.form.enable and _CFG.form.name and mw.ustring.len(_CFG.form.name) then&lt;br /&gt;
			form = frame:callParserFunction('#default_form:' .. _CFG.form.name)&lt;br /&gt;
		else&lt;br /&gt;
			form = 'Seiten in dieser Kategorie haben kein Standardformular'&lt;br /&gt;
		end&lt;br /&gt;
		local mbox = require('Module:Message box').main('cmbox', &lt;br /&gt;
			{&lt;br /&gt;
				type = 'notice',&lt;br /&gt;
				text = _CFG.global.description .. '\n* ' .. form .. '\n* ' .. &lt;br /&gt;
						'Seiten in  dieser Kategorie nutzen die Vorlage [[Template:' .. _CFG.template.name .. ']]'&lt;br /&gt;
			})&lt;br /&gt;
		html:wikitext(tostring(mbox))&lt;br /&gt;
			:node(self:explainDataStore())	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
	else&lt;br /&gt;
		error('FoundationClass:categoryPage() must be called from namespace category!', 2)&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:explainDataStore()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:explainDataStore(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local collapse = require('Module:Collapse').main&lt;br /&gt;
	local str = ''&lt;br /&gt;
	if FoundationClass.usesDataStore(self, 'cargo') then&lt;br /&gt;
		local declaration = self:cargoGenerateTableStructure()	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
		-- add the default fields&lt;br /&gt;
		for field, description in pairs(FoundationClass.globalConfig.cargoSpecialFields) do&lt;br /&gt;
			declaration[field] = description&lt;br /&gt;
		end&lt;br /&gt;
		local fields = {}&lt;br /&gt;
		for key, _ in pairs(declaration) do&lt;br /&gt;
			table.insert(fields, key)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(fields)&lt;br /&gt;
		local headline = 'Declaration for CARGO table &amp;quot;' .. (_CFG.global.cargoTable or 'NIL') .. '&amp;quot;'&lt;br /&gt;
		local content = '&amp;lt;ul&amp;gt;'&lt;br /&gt;
		for _, field in pairs(fields) do&lt;br /&gt;
			local text = declaration[field]&lt;br /&gt;
			if _CFG.parameter[field] and _CFG.parameter[field].description then&lt;br /&gt;
				text = text .. ', &amp;lt;small&amp;gt;' .. _CFG.parameter[field].description .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
			elseif field == FoundationClass.globalConfig.uidFieldName then&lt;br /&gt;
				text = text .. ', &amp;lt;small&amp;gt;Automatisch hinzugefügt! Wird verwendet, um individuelle Objekte innerhalb der Klasse zu identifizieren.&amp;lt;/small&amp;gt;'&lt;br /&gt;
			end&lt;br /&gt;
			content = content .. '&amp;lt;li&amp;gt; ' .. field .. ': ' .. text .. '&amp;lt;/li&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		content = content .. '&amp;lt;/ul&amp;gt;\n[[Spezial:CargoTables/'.. (_CFG.global.cargoTable or 'Instance') .. '|View Data]]'&lt;br /&gt;
		str = str ..  collapse{header = headline, content = content, left = true} .. '\n'&lt;br /&gt;
	end&lt;br /&gt;
	if FoundationClass.usesDataStore(self, 'smw') then	-- smw store&lt;br /&gt;
		local property2param = FoundationClass.smwGetProperty2ParameterTranslationTable(self)&lt;br /&gt;
		local properties = {}&lt;br /&gt;
		for property, field in pairs(property2param) do&lt;br /&gt;
			properties[property] = {&lt;br /&gt;
				individual = true, -- essentially says: no special property&lt;br /&gt;
			}&lt;br /&gt;
			if _CFG.parameter[field] then&lt;br /&gt;
				properties[property].description = _CFG.parameter[field].description&lt;br /&gt;
				properties[property].type = (_CFG.parameter[field].property_type and _CFG.parameter[field].property_type or 'Page')&lt;br /&gt;
				properties[property].values = (_CFG.parameter[field].values and #_CFG.parameter[field].values &amp;gt; 0) and ' (allowed values=' .. table.concat(_CFG.parameter[field].values, ', ') .. ')' or ''&lt;br /&gt;
			elseif field == FoundationClass.globalConfig.smwClassProperty then&lt;br /&gt;
				properties[property].description = 'Automatisch hinzugefügt! Wird verwendet, um Mitglieder dieser Klasse zu finden (funktioniert auch, ohne dass eine Kategorie definiert wird und auch fur subobjects)'&lt;br /&gt;
				properties[property].type = 'Text'&lt;br /&gt;
				properties[property].values = ''&lt;br /&gt;
			elseif field == FoundationClass.globalConfig.uidFieldName then&lt;br /&gt;
				properties[property].description = 'Automatisch hinzugefügt! Wird verwendet, um individuelle Objekte innerhalb der Klasse zu identifizieren.'&lt;br /&gt;
				properties[property].type = 'Text'&lt;br /&gt;
				properties[property].values = ''&lt;br /&gt;
			else&lt;br /&gt;
				-- should never apply&lt;br /&gt;
				properties[property].description = 'THIS should not have appeared. Please consult an admin'&lt;br /&gt;
				properties[property].type = 'WARNING!'&lt;br /&gt;
				properties[property].values = ' (see Module:Foundationclass, FoundationClass.static:explainDataStore() for more information)'&lt;br /&gt;
			end&lt;br /&gt;
			properties[property].text = ((_CFG.parameter[field] and _CFG.parameter[field].cardinality == 'list') and 'List of ' or '') .. properties[property].type .. properties[property].values ..&lt;br /&gt;
				', &amp;lt;small&amp;gt;' .. properties[property].description .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG and _CFG.global and not _CFG.global.smwIsSubobject then&lt;br /&gt;
			for key, value in pairs(FoundationClass.globalConfig.smwSpecialProperties) do&lt;br /&gt;
				properties[key] = { text = value }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local propertyList = {}&lt;br /&gt;
		for key, _ in pairs(properties) do&lt;br /&gt;
			table.insert(propertyList, key)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(propertyList)&lt;br /&gt;
		local headline = 'Semantic properties used in this class:'&lt;br /&gt;
		local content = '&amp;lt;ul&amp;gt;'&lt;br /&gt;
		for _, property in pairs(propertyList) do&lt;br /&gt;
			content = content .. '&amp;lt;li&amp;gt;[[Property:' .. property .. ']]: ' .. properties[property].text .. '&amp;lt;/li&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		content = content .. '&amp;lt;/ul&amp;gt;\n'&lt;br /&gt;
		local attributes = {headers='plain', format='table', limit=0, searchlabel='Hier klicken für eine tabellarische Übersicht!'}&lt;br /&gt;
		local fields = {}&lt;br /&gt;
		for key, _ in pairs(properties) do&lt;br /&gt;
			table.insert(fields, key)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(fields)&lt;br /&gt;
		content = content .. FoundationClass.mySmwUtil.rawask({where='[[' .. FoundationClass.globalConfig.smwClassProperty .. '::' .. self.name .. ']]', fields = fields }, attributes) .. '\n'&lt;br /&gt;
		str = str .. collapse{header = headline, content = content, left = true} .. '\n'&lt;br /&gt;
	end&lt;br /&gt;
	if #mw.text.trim(str) == 0 then&lt;br /&gt;
		str = 'This template does not store any persistent data.'&lt;br /&gt;
	end&lt;br /&gt;
	str = '\n== Data Storage ==\n' .. str&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:formRedlink(target, form, linktext)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:formRedlink() to create a redlink to a form')&lt;br /&gt;
	local target = target&lt;br /&gt;
	local form = form&lt;br /&gt;
	local linktext = linktext or target&lt;br /&gt;
	local str&lt;br /&gt;
	if target and form then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		args = { form = form }&lt;br /&gt;
		if linktext then&lt;br /&gt;
			args['link text'] = linktext&lt;br /&gt;
			args['existing page link text'] = linktext&lt;br /&gt;
		end&lt;br /&gt;
		str = frame:callParserFunction{ name='#formredlink:target=' .. target, args=args }&lt;br /&gt;
	else&lt;br /&gt;
		str = 'target or form missing on call to _formredlink()'&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:gardeningCategoryPage()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:gardeningCategoryPage(), from ' .. tostring(self))&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 14 then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local _CFG = self.myConfiguration&lt;br /&gt;
		local mbox = require('Module:Message box').main&lt;br /&gt;
		html:wikitext(tostring(mbox('cmbox', &lt;br /&gt;
			{&lt;br /&gt;
				type = 'notice',&lt;br /&gt;
				text = 'This category shows all elements of class ' .. self.name .. ' that have at least one error in their core data. This category must be empty at all times!'&lt;br /&gt;
			})))&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(tostring(mbox('cmbox', &lt;br /&gt;
			{&lt;br /&gt;
				type = 'content',&lt;br /&gt;
				text = 'This category should be empty! Please tend to the articles contained herein!'&lt;br /&gt;
			})))&lt;br /&gt;
		-- add category if in namespace category and there has been a supercategory configured&lt;br /&gt;
		if FoundationClass.globalConfig.gardeningCategory and #FoundationClass.globalConfig.gardeningCategory &amp;gt; 0 and FoundationClass.globalConfig.gardeningCategory ~= mw.title.getCurrentTitle().text then&lt;br /&gt;
			html:wikitext('[[Category:' .. FoundationClass.globalConfig.gardeningCategory .. ']]')&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		error('FoundationClass:gardeningCategoryPage() must be called from namespace category!', 2)&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateForm()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateForm(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	if not _CFG.form.enable then&lt;br /&gt;
		return require('Module:Error').error{ message = 'Error: This class has no form page. Could not create link to form!', type = 'div' }&lt;br /&gt;
	end&lt;br /&gt;
	local tagStart = '{{{'&lt;br /&gt;
	local tagEnd = '}}}'&lt;br /&gt;
	-- create the form header&lt;br /&gt;
	local notification = mw.html.create('')&lt;br /&gt;
	if _CFG.form.notification and mw.ustring.len(_CFG.form.notification) &amp;gt; 0 then&lt;br /&gt;
		local mbox = require('Module:Message box')&lt;br /&gt;
		notification:wikitext(mbox.main('ombox', { text = _CFG.form.notification }))&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	local formheader = mw.html.create('')&lt;br /&gt;
	formheader:wikitext(self:sfGenerateFormInfoTag())&lt;br /&gt;
		:addClass('description-box')&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.global.entityTitle .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.headerText)&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
		:node(notification)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:attr('id', 'wikiPreview')&lt;br /&gt;
			:cssText('display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA')&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	-- deal with sections and free text&lt;br /&gt;
	local sections = mw.html.create('')&lt;br /&gt;
	local sectionlist = _CFG.form.sectionList and _CFG.form.sectionList or {}&lt;br /&gt;
	for _, section in pairs(sectionlist) do&lt;br /&gt;
		sections:wikitext('&amp;lt;h2&amp;gt;' .. section .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(tagStart .. 'section|' .. section .. '|level=2|autogrow=true|cols=' .. _CFG.form.textareaAttributes.cols .. &lt;br /&gt;
							'|rows=' .. math.max(8, 2*_CFG.form.textareaAttributes.rows) .. tagEnd)&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	local freetext = mw.html.create('')&lt;br /&gt;
	if _CFG.form.allowsFreeText then&lt;br /&gt;
		freetext:wikitext(tagStart .. 'standard input|free text|autogrow=true|editor=wikieditor|cols=' .. math.min(200, 2*_CFG.form.textareaAttributes.cols) .. &lt;br /&gt;
							'|rows=' .. math.min(48, 5*_CFG.form.textareaAttributes.rows) .. tagEnd)&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	-- create the form buttons&lt;br /&gt;
	local formbuttons = mw.html.create('div')	-- we have to use a div here. this somehow helps the includes/SF_FormPrinter.php to correcly place the fieldset (blue box) around the form&lt;br /&gt;
	if FoundationClass.myTableTools.inTable(_CFG.form.buttons, 'summary') then&lt;br /&gt;
		formbuttons:tag('p')&lt;br /&gt;
			:wikitext(tagStart .. 'standard input&amp;amp;#124;summary' .. tagEnd)&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	for _, button in pairs(_CFG.form.buttons) do&lt;br /&gt;
		if button ~= 'summary' then&lt;br /&gt;
			formbuttons:wikitext(tagStart .. 'standard input&amp;amp;#124;' .. button .. tagEnd)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	formbuttons:addClass('formbuttons')&lt;br /&gt;
		:done()&lt;br /&gt;
	-- assemble everything, so start the html object&lt;br /&gt;
	local html = mw.html.create('div')&lt;br /&gt;
	html:node(formheader)&lt;br /&gt;
		:wikitext(tagStart .. 'for template|' .. _CFG.template.name .. '|label=' .. _CFG.global.entityTitle .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:sfGenerateFormTable())&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(&amp;quot;'''(*) Pflichtfeld'''&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(tagStart .. 'end template' .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(sections)&lt;br /&gt;
		:node(freetext)&lt;br /&gt;
		:node(formbuttons)&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		html:newline()&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext('&amp;lt;h2&amp;gt;Debug level is ' .. debugLevel .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(ClassDebug:printLog(debugLevel))&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormEntry()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormEntry(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	local thispage = mw.title.getCurrentTitle()&lt;br /&gt;
	html:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.global.entityTitle .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.teaserText)&lt;br /&gt;
			:done()&lt;br /&gt;
		:newline()&lt;br /&gt;
	if _CFG.form.typeCreateLink and (mw.ustring.lower(_CFG.form.typeCreateLink) == 'forminput' or mw.ustring.lower(_CFG.form.typeCreateLink) == 'formlink') then&lt;br /&gt;
		html:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.createInfotext)&lt;br /&gt;
			:wikitext(self:sfGenerateFormLink())	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormInfoTag()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormInfoTag(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	if not _CFG.form.enable then&lt;br /&gt;
		return require('Module:Error').error{ message = 'Error: This class has no form page. Could not create link to form!', type = 'div' }&lt;br /&gt;
	end&lt;br /&gt;
	local tagStart = '{{{'&lt;br /&gt;
	local tagEnd = '}}}'&lt;br /&gt;
	local queryString = ''&lt;br /&gt;
	if (not _CFG.form.typeCreateLink or mw.ustring.lower(_CFG.form.typeCreateLink) ~= 'forminput') and _CFG.form.createLinkPageName and #_CFG.form.createLinkPageName &amp;gt; 0 then&lt;br /&gt;
		local pageName = _CFG.form.createLinkPageName&lt;br /&gt;
		if _CFG.global.namespace and mw.ustring.len(_CFG.global.namespace) &amp;gt; 0 and not mw.ustring.match(pageName, '^' .. _CFG.global.namespace .. ':.+$') then&lt;br /&gt;
			pageName = _CFG.global.namespace .. ':' .. pageName&lt;br /&gt;
		end&lt;br /&gt;
		queryString = '|page name=' .. pageName&lt;br /&gt;
	end&lt;br /&gt;
	return tagStart .. 'info' .. queryString .. '|add title=' .. _CFG.form.labelCreate .. '|edit title=' .. _CFG.form.labelEdit .. tagEnd&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormLink()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormInput(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	if not _CFG.form.enable or not _CFG.form.name or #_CFG.form.name == 0 then&lt;br /&gt;
		return require('Module:Error').error{ message = 'Error: This class has no form page. Could not create link to form!', type = 'div' }&lt;br /&gt;
	end&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local ret = ''&lt;br /&gt;
	if _CFG.form.typeCreateLink and (_CFG.form.typeCreateLink == 'forminput' or _CFG.form.typeCreateLink == 'formlink') then&lt;br /&gt;
		if _CFG.form.typeCreateLink == 'forminput' then&lt;br /&gt;
			local args = { size = 40 }&lt;br /&gt;
			if _CFG.form.createInputPlaceholder and mw.ustring.len(_CFG.form.createInputPlaceholder) &amp;gt; 0 then&lt;br /&gt;
				args.placeholder = _CFG.form.createInputPlaceholder&lt;br /&gt;
			end&lt;br /&gt;
			if _CFG.form.InputQueryString and mw.ustring.len(_CFG.form.InputQueryString) &amp;gt; 0 then&lt;br /&gt;
				args['query string'] = _CFG.form.InputQueryString&lt;br /&gt;
			end&lt;br /&gt;
			args['button text'] = _CFG.form.labelCreate&lt;br /&gt;
			if _CFG.global.namespace and mw.ustring.len(_CFG.global.namespace) &amp;gt; 0 then&lt;br /&gt;
				if args['query string'] then&lt;br /&gt;
					args['query string'] = args['query string'] .. '&amp;amp;' .. 'namespace=' .. _CFG.global.namespace&lt;br /&gt;
				else&lt;br /&gt;
					args['query string'] = 'namespace=' .. _CFG.global.namespace&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			ret = frame:callParserFunction{name = '#forminput:form=' .. _CFG.form.name, args = args}&lt;br /&gt;
		else&lt;br /&gt;
			local args = {&lt;br /&gt;
				tooltip = _CFG.form.createInfotext&lt;br /&gt;
			}&lt;br /&gt;
			if _CFG.form.createLinkQueryString and mw.ustring.len(_CFG.form.createLinkQueryString) &amp;gt; 0 then&lt;br /&gt;
				args['query string'] = _CFG.form.createLinkQueryString&lt;br /&gt;
			end&lt;br /&gt;
			local linkType = _CFG.form.createLinkType&lt;br /&gt;
			if linkType then&lt;br /&gt;
				linkType = mw.ustring.lower(linkType)&lt;br /&gt;
				if linkType ~= 'button' and linkType ~= 'post button' then&lt;br /&gt;
					linkType = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			args['link text'] = _CFG.form.labelCreate&lt;br /&gt;
			args['link type'] = linkType&lt;br /&gt;
			ret = frame:callParserFunction{name = '#formlink:form=' .. _CFG.form.name, args = args}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormTable(fieldlist, tableid)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormTable(fieldlist), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local fieldlist = fieldlist or _CFG.form.fieldOrder&lt;br /&gt;
	-- set some form defaults&lt;br /&gt;
	ClassSFfield:setDefaultSize(_CFG.form.fieldSize)&lt;br /&gt;
	ClassSFfield:setDefaultTextAreaCols(_CFG.form.textareaAttributes.cols)&lt;br /&gt;
	ClassSFfield:setDefaultTextAreaEditor(_CFG.form.textareaAttributes.editor)&lt;br /&gt;
	ClassSFfield:setDefaultTextAreaRows(_CFG.form.textareaAttributes.rows)&lt;br /&gt;
	-- now create the form table&lt;br /&gt;
	local hidden = mw.html.create('')&lt;br /&gt;
	local formtable = mw.html.create('table')&lt;br /&gt;
	for _, fieldname in pairs(fieldlist) do&lt;br /&gt;
		if _CFG.parameter[fieldname] and not self:mySfDynamicFieldAttribute(fieldname, 'disable', false)  then&lt;br /&gt;
			local field = self:sfInitField(fieldname)&lt;br /&gt;
			if field then&lt;br /&gt;
				if field:get('hidden') then&lt;br /&gt;
					hidden:wikitext(field:render())&lt;br /&gt;
				else&lt;br /&gt;
					formtable:node(field:createTr(_CFG.parameter[fieldname].label, _CFG.parameter[fieldname].description))&lt;br /&gt;
				end&lt;br /&gt;
			elseif _CFG.parameter[fieldname].label and _CFG.parameter[fieldname].description and (not _CFG.parameter[fieldname].td_type or mw.ustring.len(_CFG.parameter[fieldname].td_type) == 0) then&lt;br /&gt;
				mbox = require('Module:Message box').main('cmbox', { type = 'notice', text = &amp;quot;'''&amp;quot; .. _CFG.parameter[fieldname].label .. &amp;quot;:''' &amp;quot; .._CFG.parameter[fieldname].description})&lt;br /&gt;
				formtable:tag('tr')&lt;br /&gt;
					:attr('id', ClassSFfield:getShowOnSelectIdPrefix() .. mw.uri.encode(fieldname, 'WIKI'))&lt;br /&gt;
					:tag('td')&lt;br /&gt;
						:attr('colspan', 2)&lt;br /&gt;
						:wikitext(tostring(mbox))&lt;br /&gt;
						:done()&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	formtable:addClass(FoundationClass.globalConfig.formTableClass)&lt;br /&gt;
		:css('width', 'auto')&lt;br /&gt;
	if tableid then&lt;br /&gt;
		formtable:attr('id', tableid)&lt;br /&gt;
	end&lt;br /&gt;
	formtable:done()&lt;br /&gt;
		:node(hidden)&lt;br /&gt;
	return formtable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfInitField(fieldname)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfInitField(fieldname) to initialize field ' .. fieldname or 'NOT SET' .. ', from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local field&lt;br /&gt;
	if _CFG.parameter[fieldname] and _CFG.parameter[fieldname].sf and not self:mySfDynamicFieldAttribute(fieldname, 'disable', false) then&lt;br /&gt;
		field = ClassSFfield:new(fieldname)&lt;br /&gt;
		if _CFG.parameter[fieldname].cardinality and _CFG.parameter[fieldname].cardinality == 'list' then&lt;br /&gt;
			field:set('list', self:mySfDynamicFieldAttribute(fieldname, 'list', true))&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG.parameter[fieldname].severity and _CFG.parameter[fieldname].severity == 'mandatory' then&lt;br /&gt;
			field:set('mandatory', self:mySfDynamicFieldAttribute(fieldname, 'mandatory', true))&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG.parameter[fieldname].values then&lt;br /&gt;
			field:set('values', self:mySfDynamicFieldAttribute(fieldname, 'values', _CFG.parameter[fieldname].values))&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG.parameter[fieldname].sf then&lt;br /&gt;
			for attr, val in pairs(_CFG.parameter[fieldname].sf) do&lt;br /&gt;
				field:set(mw.ustring.gsub(attr, '_', ' '),&lt;br /&gt;
						self:mySfDynamicFieldAttribute(fieldname, attr, val)	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
					)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return field&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:smwGetProperty2ParameterTranslationTable()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:smwGetProperty2ParameterTranslationTable(), from ' .. tostring(self))&lt;br /&gt;
	if not FoundationClass.usesDataStore(self, 'smw') then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not self.smwProperty2ParameterTranslationTable or FoundationClass.myTableTools.size(self.smwProperty2ParameterTranslationTable) == 0 then&lt;br /&gt;
		local _CFG = self.myConfiguration&lt;br /&gt;
		local translation = {}&lt;br /&gt;
		translation[mw.ustring.gsub(FoundationClass.globalConfig.smwClassProperty, ' ', '_')] = mw.ustring.gsub(FoundationClass.globalConfig.smwClassProperty, ' ', '_')&lt;br /&gt;
		translation[mw.ustring.gsub(FoundationClass.globalConfig.uidFieldName, ' ', '_')] = mw.ustring.gsub(FoundationClass.globalConfig.uidFieldName, ' ', '_')&lt;br /&gt;
		for param, data in pairs(_CFG.parameter) do&lt;br /&gt;
			if data.property_name and data.property_name:len() &amp;gt; 0 then&lt;br /&gt;
				translation[mw.ustring.gsub(data.property_name, ' ', '_')] = param&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self.smwProperty2ParameterTranslationTable = translation&lt;br /&gt;
	end&lt;br /&gt;
	return self.smwProperty2ParameterTranslationTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:templateDocumentation(arg)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:templateDocumentation(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local arg = arg&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
	local thispage = mw.title.getCurrentTitle()&lt;br /&gt;
	local luaBanner = require('Module:Lua banner')&lt;br /&gt;
	-- first generate the template data for the &amp;quot;parameters&amp;quot;-section&lt;br /&gt;
	local parameter = {}&lt;br /&gt;
	for _, param in pairs(_CFG.form.fieldOrder) do&lt;br /&gt;
		if _CFG.parameter[param] and _CFG.parameter[param].td_type then&lt;br /&gt;
			table.insert(parameter, param)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local templateData = ''&lt;br /&gt;
	if #parameter &amp;gt; 0 then&lt;br /&gt;
		local jsonData = '{\n\t&amp;quot;description&amp;quot;: &amp;quot;' .. _CFG.global.description .. '&amp;quot;,\n' ..&lt;br /&gt;
			'\t&amp;quot;params&amp;quot;: {\n'&lt;br /&gt;
		for _, param in pairs(parameter) do&lt;br /&gt;
			paramdata = _CFG.parameter[param]&lt;br /&gt;
			jsonData = jsonData .. '\t\t&amp;quot;' .. param .. '&amp;quot;: {\n'&lt;br /&gt;
			jsonData = jsonData .. '\t\t\t&amp;quot;type&amp;quot;: &amp;quot;' .. mw.ustring.lower(paramdata.td_type) .. '&amp;quot;,\n'&lt;br /&gt;
			if paramdata.td_default then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;default&amp;quot;: &amp;quot;' .. paramdata.td_default .. '&amp;quot;,\n'&lt;br /&gt;
			end&lt;br /&gt;
			if paramdata.description then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;description&amp;quot;: &amp;quot;' .. mw.ustring.gsub(paramdata.description, '&amp;quot;', '\'\'') .. '&amp;quot;,\n'&lt;br /&gt;
			end&lt;br /&gt;
			if paramdata.label then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;label&amp;quot;: &amp;quot;' .. paramdata.label .. '&amp;quot;,\n'&lt;br /&gt;
			end&lt;br /&gt;
			if paramdata.severity then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;suggested&amp;quot;: ' .. ((paramdata.severity == 'suggested' or paramdata.severity == 'optional') and 'true,\n' or 'false,\n')&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;required&amp;quot;: ' .. ((paramdata.severity == 'mandatory' or paramdata.severity == 'required') and 'true,\n' or 'false,\n')&lt;br /&gt;
			end&lt;br /&gt;
			jsonData = mw.ustring.sub(jsonData, 1, -3) .. '\n\t\t},\n'&lt;br /&gt;
		end&lt;br /&gt;
		jsonData = mw.ustring.sub(jsonData, 1, -3) .. '\n\t}\n}'&lt;br /&gt;
		if debugLevel then&lt;br /&gt;
			templateData = '&amp;lt;pre&amp;gt;' .. jsonData .. '&amp;lt;/pre&amp;gt;'&lt;br /&gt;
		else&lt;br /&gt;
			templateData = frame:extensionTag('templatedata', jsonData)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		templateData = 'Dieses Template verfügt über keine nutzbaren (statischen) parameter.'&lt;br /&gt;
	end&lt;br /&gt;
	-- then assemble the code for the usage section&lt;br /&gt;
	local code = '{{' .. thispage.rootText .. '\n'&lt;br /&gt;
	for _, param in pairs(parameter) do&lt;br /&gt;
		code = code .. '|' .. param .. '=\n'&lt;br /&gt;
	end&lt;br /&gt;
	code = code .. '}}\n'&lt;br /&gt;
	-- the 'see also' links&lt;br /&gt;
	local seeAlso = mw.html.create('')&lt;br /&gt;
	local seeAlsoList = mw.html.create('')&lt;br /&gt;
	if _CFG.template.templateDocumentationSeeAlso then&lt;br /&gt;
		if type(_CFG.template.templateDocumentationSeeAlso) == 'table' then&lt;br /&gt;
			for _, link in pairs(_CFG.template.templateDocumentationSeeAlso) do&lt;br /&gt;
				if mw.ustring.find(link, ':', 1, true) then&lt;br /&gt;
					link = mw.ustring.match(link, '^[^:]*:(.+)$')&lt;br /&gt;
				end&lt;br /&gt;
				seeAlsoList:tag('li')&lt;br /&gt;
					:wikitext('{{[[:Template:' .. link .. '|' .. link .. ']]}}')&lt;br /&gt;
					:done()&lt;br /&gt;
					:newline()&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local link = _CFG.global.templateDocumentationSeeAlso&lt;br /&gt;
			if mw.ustring.find(link, ':', 1, true) then&lt;br /&gt;
				link = mw.ustring.match(link, '^[^:]*:(.+)$')&lt;br /&gt;
			end&lt;br /&gt;
			seeAlsoList:tag('li')&lt;br /&gt;
				:wikitext('{{[[:Template:' .. link .. '|' .. link .. ']]}}')&lt;br /&gt;
				:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
		end&lt;br /&gt;
		seeAlso:wikitext('&amp;lt;h2&amp;gt;See also&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:tag('ul')&lt;br /&gt;
				:node(seeAlsoList)&lt;br /&gt;
				:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
	end&lt;br /&gt;
	-- assemble&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	html:wikitext('&amp;lt;h2&amp;gt;Description&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(luaBanner._main({'Module:' .. thispage.rootText, 'Module:' .. thispage.rootText .. '/class',&lt;br /&gt;
					'Module:' .. thispage.rootText .. '/config', 'Module:Foundationclass', 'Module:Middleclass'}))&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(_CFG.global.description .. ((_CFG.global.category and mw.ustring.len(_CFG.global.category) &amp;gt; 0) and ('\n\n' .. mw.site.namespaces[14].name .. ': [[:Category:' .. _CFG.global.category .. ']]\n') or ''))&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:explainDataStore())	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
		:newline()&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;Parameters&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:wikitext(templateData)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;Usage&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:wikitext(frame:expandTemplate{ title = 'Code', args = {'html4strict', code} })&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(seeAlso)&lt;br /&gt;
		:done()&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		html:newline()&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext('&amp;lt;h2&amp;gt;Debug level is ' .. debugLevel .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(ClassDebug:printLog(debugLevel))&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:usesDataStore(storeType)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:usesDataStore(storeType) to do assertain, if store &amp;quot;' .. storeType .. '&amp;quot; is used, from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	return (FoundationClass.globalConfig.dataStore == 'both' or FoundationClass.globalConfig.dataStore == mw.ustring.lower(storeType)) and &lt;br /&gt;
		(mw.ustring.lower(storeType) == 'smw' and _CFG.global.smwUseStorage) or (mw.ustring.lower(storeType) == 'cargo' and _CFG.global.cargoTable and #_CFG.global.cargoTable &amp;gt; 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:staticMethod(var)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:staticMethod() to do something, from ' .. tostring(self))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of private methods&lt;br /&gt;
local _amIPlausible = function (self)&lt;br /&gt;
	return (#_private[self].errors == 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
_debug = function (self, level, text)&lt;br /&gt;
	if _private[self] and _private[self].dbg then&lt;br /&gt;
		local debugLevel = FoundationClass.globalConfig.debugLevel or self.class.myConfiguration.global.debugLevel&lt;br /&gt;
		if debugLevel and level &amp;lt;= debugLevel then&lt;br /&gt;
			_private[self].dbg:log(level, text)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
		if debugLevel and level &amp;lt;= debugLevel then&lt;br /&gt;
			ClassDebug:log(level, text, tostring(self) .. '.static')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _plausibilityTest = function (self, args)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass._plausibilityTest(self, args)')&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local args = args&lt;br /&gt;
	-- first see, whether we are in the correct namespace (that is, if we are not initialzed from a datastore)&lt;br /&gt;
	if not _private[self].loadedDataFromDataStore and _CFG.global.namespace and #_CFG.global.namespace &amp;gt; 0 and (_CFG.global.namespace ~= mw.title.getCurrentTitle().nsText) then&lt;br /&gt;
		self:addError(&amp;quot;Diese Seite befindet sich in einem ungültigen Namesraum. Eingestellt ist ''&amp;quot; .. _CFG.global.namespace .. &amp;quot;'',  festgestellt wurde: &amp;quot; .. ((mw.title.getCurrentTitle().nsText and #mw.title.getCurrentTitle().nsText &amp;gt; 0) and mw.title.getCurrentTitle().nsText or 'keiner'))&lt;br /&gt;
	end&lt;br /&gt;
	-- prepare for the &amp;quot;show on select&amp;quot;-complex&lt;br /&gt;
	-- motivation:&lt;br /&gt;
	-- when you have a selector with a show on select field, sf shows some fields dynamically. sf even lets you set these dynamically shown fields&lt;br /&gt;
	-- to mandatory but checks for this only, if the field is shown.&lt;br /&gt;
	-- problem: so with this in mind, it is possible, that we have a mandatory field in our configuration with no value, but still be pausible&lt;br /&gt;
	-- since it only has to submit a value, if it is shown. but in the case it is shown, it has to submit a value&lt;br /&gt;
	-- what we do: build a table fieldnameToCheck : { showSelectorFieldname : valuetoshow }&lt;br /&gt;
	-- btw: this table fieldnameToCheck should only containe one element. if the programmer has the field &amp;quot;fieldnameToCheck&amp;quot; put in more than&lt;br /&gt;
	-- one show on select, the resulting form is erratic.&lt;br /&gt;
	local showOnSelectComplex = {}&lt;br /&gt;
	for param, paramdata in pairs(_CFG.parameter) do&lt;br /&gt;
		if not self.class.mySfDynamicFieldAttribute(self.class, param, 'disable', false) and paramdata.sf and paramdata.sf.show_on_select then&lt;br /&gt;
			local sos = self.class.mySfDynamicFieldAttribute(self.class, param, 'show_on_select', paramdata.sf.show_on_select)&lt;br /&gt;
			_debug(self, 3, '  got this in return: ' .. (type(sos) == 'string' and tostring(sos) or type(sos)))&lt;br /&gt;
			if type(sos) ~= 'table' then&lt;br /&gt;
				sos = tostring(sos)&lt;br /&gt;
				if not showOnSelectComplex[sos] then&lt;br /&gt;
					showOnSelectComplex[sos] = {}&lt;br /&gt;
				end&lt;br /&gt;
				-- this being a string makes sense only if input type is checkbox. we leave the responsibility to the programmer, though&lt;br /&gt;
				showOnSelectComplex[sos][param] = FoundationClass.globalConfig.selectedCheckboxSubmitValue&lt;br /&gt;
			else&lt;br /&gt;
				-- assume type table&lt;br /&gt;
				for selectedValue, showFields in pairs(sos) do&lt;br /&gt;
					if type(showFields) ~= 'table' then&lt;br /&gt;
						showFields = tostring(showFields)&lt;br /&gt;
						if not showOnSelectComplex[showFields] then&lt;br /&gt;
							showOnSelectComplex[showFields] = {}&lt;br /&gt;
						end&lt;br /&gt;
						showOnSelectComplex[showFields][param] = selectedValue&lt;br /&gt;
					else&lt;br /&gt;
						-- one last iteration&lt;br /&gt;
						for _, showField in pairs(showFields) do&lt;br /&gt;
							showFields = tostring(showFields)&lt;br /&gt;
							if not showOnSelectComplex[showField] then&lt;br /&gt;
								showOnSelectComplex[showField] = {}&lt;br /&gt;
							end&lt;br /&gt;
							showOnSelectComplex[showField][param] = selectedValue&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	_debug(self, 3, '  have this showOnSelectComplex: ' .. FoundationClass.myTableTools.printTable(showOnSelectComplex))&lt;br /&gt;
	-- now do the plausibility test&lt;br /&gt;
	for param, paramdata in pairs(_CFG.parameter) do&lt;br /&gt;
		if not self.class.mySfDynamicFieldAttribute(self.class, param, 'disable', false) and paramdata.sf then&lt;br /&gt;
			if not self.class.mySfDynamicFieldAttribute(self.class, param, 'hidden', false) then&lt;br /&gt;
				-- it is not set to hidden, so evaluate&lt;br /&gt;
				if args[param] and (type(args[param]) ~= 'string' or mw.ustring.len(args[param]) &amp;gt; 0) then&lt;br /&gt;
				-- first, see if it's there&lt;br /&gt;
					local value = args[param]&lt;br /&gt;
					local values&lt;br /&gt;
					if paramdata.values then&lt;br /&gt;
						values = self.class.mySfDynamicFieldAttribute(self.class, param, 'values', paramdata.values)&lt;br /&gt;
					end&lt;br /&gt;
					if type(value) == 'string' and mw.ustring.match(value, '^[0-9]+$') then&lt;br /&gt;
						-- because argument data coming form a parameter and not from database means a number is displayed as a string&lt;br /&gt;
						-- problem: if we store an only numbers containing entry in values, this will fail, i.e. paramdate.values = {'0', '123'} can never work&lt;br /&gt;
						value = tonumber(value)&lt;br /&gt;
					end&lt;br /&gt;
					if paramdata.cardinality == 'single' then&lt;br /&gt;
						if values and not FoundationClass.myTableTools.inTable(values, value) and ((paramdata.sf.input_type ~= 'combobox' and paramdata.sf.input_type ~= 'tokens') or paramdata.sf.existing_values_only) then&lt;br /&gt;
							-- 'values'-restriction given but value given not in values&lt;br /&gt;
							-- only loophole being tokens or combobox and NOT existring_values_only&lt;br /&gt;
							self:addError(&amp;quot;Ungültiger Wert für parameter ''&amp;quot; .. param .. &amp;quot;'' festgestellt: &amp;quot; .. mw.text.encode(tostring(value)))&lt;br /&gt;
						end&lt;br /&gt;
					elseif values and ((paramdata.sf.input_type ~= 'combobox' and paramdata.sf.input_type ~= 'tokens') or paramdata.sf.existing_values_only) then&lt;br /&gt;
						-- multivaluefield and 'values'-restriction given&lt;br /&gt;
						-- only loophole being tokens or combobox and NOT existring_values_only&lt;br /&gt;
						local vals = {}&lt;br /&gt;
						if type(args[param]) == 'table' then&lt;br /&gt;
							-- which can be, if we are initializing by data&lt;br /&gt;
							vals = args[param]&lt;br /&gt;
						else&lt;br /&gt;
							for fragment in mw.text.gsplit(args[param], _CFG.global.delimiter, true) do&lt;br /&gt;
								if fragment and mw.ustring.len(mw.text.trim(fragment)) &amp;gt; 0 then&lt;br /&gt;
									fragment = mw.text.trim(fragment)&lt;br /&gt;
									if mw.ustring.match(fragment, '^[0-9]+$') then&lt;br /&gt;
										fragment = tonumber(fragment)&lt;br /&gt;
									end&lt;br /&gt;
									table.insert(vals, fragment)&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						for _, v in pairs(vals) do&lt;br /&gt;
							if not FoundationClass.myTableTools.inTable(values, v) then&lt;br /&gt;
								self:addError(&amp;quot;Ungültiger Wert für parameter ''&amp;quot; .. param .. &amp;quot;'' festgestellt: &amp;quot; .. mw.text.encode(v))&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				elseif FoundationClass.myTableTools.inTable(_CFG.form.fieldOrder, param) and paramdata.severity == 'mandatory' then&lt;br /&gt;
					-- param not found but should be (since it is a form param) and it is also marked as mandatory and not set to hidden --&amp;gt; &lt;br /&gt;
					-- before we assume error lets check for the one loophole: field could be part of a &amp;quot;show on select&amp;quot;, thus being mandatory but not shown&lt;br /&gt;
					local issueError = true&lt;br /&gt;
					if showOnSelectComplex[param] then&lt;br /&gt;
						-- yeah, the field is part of a &amp;quot;show on select&amp;quot;. we only issue an error, if its selector indicates a show&lt;br /&gt;
						issueError = false&lt;br /&gt;
						for fieldname, showValue in pairs(showOnSelectComplex[param]) do&lt;br /&gt;
							if tostring(args[fieldname]) == tostring(showValue) then&lt;br /&gt;
								-- so it is shown and therefore should contain a value&lt;br /&gt;
								issueError = true&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if issueError then&lt;br /&gt;
						self:addError(&amp;quot;Pflichtfeld ''&amp;quot; .. param .. &amp;quot;'' fehlt!&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				_debug(self, 1, '  field ' .. param .. ' is set to hidden. Not processing!')&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			_debug(self, 1, '  field ' .. param .. ' is disabled or no sf-table given. Not processing!')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return _amIPlausible(self)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _privateMethod = function (self)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass._privateMethod() to do something')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of public methods&lt;br /&gt;
function FoundationClass:addCategory(category)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addCategory(category) with category ' .. (category and tostring(category) or 'EMPTY') .. ', from ' .. tostring(self))&lt;br /&gt;
	local category = category&lt;br /&gt;
	if category and mw.ustring.len(category) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  found handler ' .. tostring(_private[self].superHandler) .. ', so we are probably not on the right page to lease a category. omitting categorizing into category &amp;quot;' .. category .. '&amp;quot;')&lt;br /&gt;
			--_debug(self, 3, '  refering category to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			--_private[self].superHandler:addCategory(category)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(_private[self].categories, category)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addError(errortext)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addError(errortext), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  with errortext ' .. tostring(errortext))&lt;br /&gt;
	local errortext = errortext&lt;br /&gt;
	if errortext and mw.ustring.len(errortext) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  refering error to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			errortext = (self:getUid() and (self:getUid() .. ': ') or '') .. errortext&lt;br /&gt;
			_private[self].superHandler:addError(errortext)&lt;br /&gt;
		end&lt;br /&gt;
		-- have to store it myself, too. otherwise, I would always be plausible...&lt;br /&gt;
		table.insert(_private[self].errors, errortext)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addInfobox()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addInfobox(), from ' .. tostring(self))&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addOutput(content)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addOutput(), from ' .. tostring(self))&lt;br /&gt;
	if type(content) == 'table' then&lt;br /&gt;
		_private[self].output:node(content)&lt;br /&gt;
		return true&lt;br /&gt;
	elseif mw.ustring.len(tostring(content)) &amp;gt; 0 then&lt;br /&gt;
		_private[self].output:wikitext(content)&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addPageBody()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addPageBody(), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 2, ' rendering errors and warnings and adding them to output')&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	_private[self].output:node(self:renderErrors())&lt;br /&gt;
			:node(self:renderWarnings())&lt;br /&gt;
	if self:goodToGo() then&lt;br /&gt;
		_private[self].output:wikitext('Please implement method &amp;lt;code&amp;gt;addPageBody()&amp;lt;/code&amp;gt; to display page content!')&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addError(errortext)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addError(errortext), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  with errortext ' .. tostring(errortext))&lt;br /&gt;
	local errortext = errortext&lt;br /&gt;
	if errortext and mw.ustring.len(errortext) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  refering error to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			errortext = (self:getUid() and (self:getUid() .. ': ') or '') .. errortext&lt;br /&gt;
			_private[self].superHandler:addError(errortext)&lt;br /&gt;
		end&lt;br /&gt;
		-- have to store it myself, too. otherwise, I would always be plausible...&lt;br /&gt;
		table.insert(_private[self].errors, errortext)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addWarning(warning)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addWarning(errortext), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  with warning ' .. tostring(warning))&lt;br /&gt;
	local warning = warning&lt;br /&gt;
	if warning and mw.ustring.len(warning) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  refering error to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			warning = (self:getUid() and (self:getUid() .. ': ') or '') .. warning&lt;br /&gt;
			_private[self].superHandler:addError(warning)&lt;br /&gt;
		end&lt;br /&gt;
		-- have to store it myself, too. otherwise, I would always be plausible...&lt;br /&gt;
		table.insert(_private[self].warnings, warning)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:getCoreData()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:getCoreData(), from ' .. tostring(self))&lt;br /&gt;
	return _private[self].coreData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:getUid()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:getUid(), from ' .. tostring(self))&lt;br /&gt;
	return _private[self].uid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:goodToGo()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:goodToGo(), from ' .. tostring(self))&lt;br /&gt;
	return _amIPlausible(self) and _private[self].initialized&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:initFromArgs(args)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:initFromArgs(args), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local args = args&lt;br /&gt;
	if not args or type(args) ~= 'table' then&lt;br /&gt;
		local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		args = getArgs(frame)&lt;br /&gt;
	end&lt;br /&gt;
	if not _private[self].loadedDataMyself then&lt;br /&gt;
		-- if we didn't load our data ourselves, assume that it comes from the store and assume, it's plausible&lt;br /&gt;
		_plausibilityTest(self, args)&lt;br /&gt;
		self:myPlausibilityTest(args)&lt;br /&gt;
	end&lt;br /&gt;
	if _amIPlausible(self) then&lt;br /&gt;
		-- first set my uid&lt;br /&gt;
		if not _private[self].coreData[FoundationClass.globalConfig.uidFieldName] then&lt;br /&gt;
			_private[self].coreData[FoundationClass.globalConfig.uidFieldName] = self:getUid()&lt;br /&gt;
		end&lt;br /&gt;
		-- if I use smw as store, also set my class&lt;br /&gt;
		if FoundationClass.usesDataStore(self.class, 'smw') and not _private[self].coreData[FoundationClass.globalConfig.smwClassProperty] then&lt;br /&gt;
			_private[self].coreData[FoundationClass.globalConfig.smwClassProperty] = self.class.name&lt;br /&gt;
		end&lt;br /&gt;
		-- get the data from args into _private[self].coreData&lt;br /&gt;
		for param, paramdata in pairs(_CFG.parameter) do&lt;br /&gt;
			if paramdata.cardinality == 'single' then&lt;br /&gt;
				_private[self].coreData[param] = args[param]&lt;br /&gt;
			else&lt;br /&gt;
				-- multivaluefield and given&lt;br /&gt;
				if type(args[param]) == 'table' then&lt;br /&gt;
					_private[self].coreData[param] = args[param]&lt;br /&gt;
				else&lt;br /&gt;
					local values&lt;br /&gt;
					if args[param] then&lt;br /&gt;
						values = {}&lt;br /&gt;
						for fragment in mw.text.gsplit(args[param], _CFG.global.delimiter, true) do&lt;br /&gt;
							if fragment and mw.ustring.len(mw.text.trim(fragment)) &amp;gt; 0 then&lt;br /&gt;
								table.insert(values, mw.text.trim(fragment))&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					_private[self].coreData[param] = values&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- here we do some individual argument processing&lt;br /&gt;
		_debug(self, 3, ' calling self:myArgumentProcessing(_private[self].coreData)')&lt;br /&gt;
		_private[self].coreData = self:myArgumentProcessing(_private[self].coreData)&lt;br /&gt;
		_debug(self, 3, ' object initialized with data:&amp;lt;pre&amp;gt;' .. FoundationClass.myTableTools.printTable(_private[self].coreData) .. '&amp;lt;/pre&amp;gt;')&lt;br /&gt;
		--this can cause fatal error, if coreData contains to much data, for instance references to title-objects&lt;br /&gt;
		_private[self].initialized = true&lt;br /&gt;
	end&lt;br /&gt;
	return _private[self].initialized&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:initFromData(data)&lt;br /&gt;
	-- this takes data that comes from a data store and initializes itself with it&lt;br /&gt;
	-- if we use data store smw, this makes a conversion from propery indexed data to parameter indexed data&lt;br /&gt;
	-- if we use both data stores, data from cargo has precedence&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:initFromData() to do something, from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  got data:&amp;lt;pre&amp;gt;' .. FoundationClass.myTableTools.printTable(data) .. '&amp;lt;/pre&amp;gt;')&lt;br /&gt;
	local data = data&lt;br /&gt;
	_private[self].loadedDataFromDataStore = true&lt;br /&gt;
	if FoundationClass.usesDataStore(self.class, 'smw') then	-- if we have store cargo, we take the dat as is.&lt;br /&gt;
		-- transform the data array from { property_name : value } to { paramter : value }&lt;br /&gt;
		local properties = FoundationClass.smwGetProperty2ParameterTranslationTable(self.class)&lt;br /&gt;
		for property, param in pairs(properties) do&lt;br /&gt;
			local property_ = property&lt;br /&gt;
			local property = mw.ustring.gsub(property_, '_', ' ')&lt;br /&gt;
			if data[property_] and not data[param] then&lt;br /&gt;
				data[param] = data[property_]&lt;br /&gt;
				data[property_] = nil&lt;br /&gt;
			end&lt;br /&gt;
			if data[property] and not data[param] then&lt;br /&gt;
				data[param] = data[property]&lt;br /&gt;
				data[property] = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	data = self:myDataAdjustments(data)&lt;br /&gt;
	if FoundationClass.myTableTools.size(data) &amp;gt; 0 then&lt;br /&gt;
		return self:initFromArgs(data)&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:initMyself(uid)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:initMyself() to fetch my own data from datastore, from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local uid = uid or self:getUid()&lt;br /&gt;
	local myData = {}&lt;br /&gt;
	if uid and FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
		_debug(self, 2, ' using datastore \'cargo\' with uid: ' .. uid)&lt;br /&gt;
		-- build the query&lt;br /&gt;
		local query = { tables = _CFG.global.cargoTable, fields = {}, where = ''}&lt;br /&gt;
		local wherefield = FoundationClass.globalConfig.uidFieldName&lt;br /&gt;
		local wherefor = '&amp;quot;' .. uid .. '&amp;quot;'&lt;br /&gt;
		query.where = wherefield .. '=' .. wherefor&lt;br /&gt;
		local declaration = FoundationClass.cargoGenerateTableStructure(self.class)&lt;br /&gt;
		for field, _ in pairs(declaration) do&lt;br /&gt;
			table.insert(query.fields, field)&lt;br /&gt;
		end&lt;br /&gt;
		local result = FoundationClass.myCargoUtil.query(query, {limit = 1})&lt;br /&gt;
		if result and result[1] and type(result[1]) == 'table' and FoundationClass.myTableTools.size(result[1]) &amp;gt; 0 then&lt;br /&gt;
			-- now we have data, call initFromData()&lt;br /&gt;
			_debug(self, 2, '  Got data from cargo query, storing it')&lt;br /&gt;
			myData = result[1]&lt;br /&gt;
		elseif not FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Cargo query for \'' .. wherefield .. '=' .. wherefor .. '\' did not yield any result.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Cargo query for \'' .. wherefield .. '=' .. wherefor .. '\' did not yield any result.')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if uid and FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
		_debug(self, 2, ' using datastore \'smw\' with uid: ' .. uid)&lt;br /&gt;
		-- build the query&lt;br /&gt;
		local query = { select = {}, fields = {}, where = ''}&lt;br /&gt;
		query.select[FoundationClass.globalConfig.smwClassProperty] = self.class.name&lt;br /&gt;
		local wherefield = FoundationClass.globalConfig.uidFieldName&lt;br /&gt;
		local wherefor = '&amp;quot;' .. uid .. '&amp;quot;'&lt;br /&gt;
		query.select[wherefield] = wherefor &lt;br /&gt;
		local properties = FoundationClass.smwGetProperty2ParameterTranslationTable(self.class)&lt;br /&gt;
		for property, _ in pairs(properties) do&lt;br /&gt;
			table.insert(query.fields, property)&lt;br /&gt;
		end&lt;br /&gt;
		local result = FoundationClass.mySmwUtil.query(query, {limit = 1})&lt;br /&gt;
		if result and result[1] and type(result[1]) == 'table' and FoundationClass.myTableTools.size(result[1]) &amp;gt; 0 then&lt;br /&gt;
			for property, smwdata in pairs(result[1]) do&lt;br /&gt;
				if not myData[property] then&lt;br /&gt;
					myData[property] = smwdata&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not FoundationClass.myTableTools.size(myData) then&lt;br /&gt;
		if not uid then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: No valid uid was provided. Was type \'' .. type(uid) .. '.')&lt;br /&gt;
			self:addError('Could not initialize by myself: No valid uid was provided. Was type \'' .. type(uid) .. '.')&lt;br /&gt;
		elseif FoundationClass.usesDataStore(self.class, 'both') then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Neither Cargo nor Smw provided any data. Was looking for \'' .. FoundationClass.globalConfig.uidFieldName .. ' with uid ' .. &lt;br /&gt;
				uid .. ' in class ' .. self.class.name .. '.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Neither Cargo nor Smw provided any data. Was looking for \'' .. FoundationClass.globalConfig.uidFieldName .. ' with uid ' .. &lt;br /&gt;
				uid .. ' in class ' .. self.class.name .. '.')&lt;br /&gt;
		elseif FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Cargo query for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Cargo query for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
		else&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Smw query in class \'' .. self.class.name .. '\' for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Smw query in class \'' .. self.class.name .. '\' for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- now we have data, call initFromData()&lt;br /&gt;
		_debug(self, 2, '  Got data from query, calling self:initFromData(myData)')&lt;br /&gt;
		_private[self].loadedDataMyself = true&lt;br /&gt;
		return self:initFromData(myData)&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:render()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:render(), from ' .. tostring(self))&lt;br /&gt;
	self:addOutput(self:renderCategories())&lt;br /&gt;
	local ret = tostring(_private[self].output)&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.class.myConfiguration.global.debugLevel&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		ret = ret .. '\n\n' .. '&amp;lt;h2&amp;gt;Debug level is ' .. debugLevel .. '&amp;lt;/h2&amp;gt;\n' .. ClassDebug:printLog(debugLevel)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:renderCategories()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:renderCategories(), from ' .. tostring(self))&lt;br /&gt;
	node = mw.html.create('')&lt;br /&gt;
	if _private[self].categories and #_private[self].categories &amp;gt; 0 then&lt;br /&gt;
		for _, category in pairs(_private[self].categories) do&lt;br /&gt;
			node:wikitext('[[Category:' .. category .. ']]')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return node&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:renderErrors()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:renderErrors(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local error = require('Module:Error').error&lt;br /&gt;
	node = mw.html.create('')&lt;br /&gt;
	if #_private[self].errors &amp;gt; 0 then&lt;br /&gt;
		if _CFG.global.gardeningCategory and mw.title.getCurrentTitle().namespace ~= 10 then&lt;br /&gt;
			-- we have errors and we are currently not in template namespace. place article in gardening category&lt;br /&gt;
			self:addCategory(_CFG.global.gardeningCategory)&lt;br /&gt;
		end&lt;br /&gt;
		node:wikitext('&amp;lt;h2 style=&amp;quot;font-weight:bold;background-color:light-red;color:red&amp;quot;&amp;gt;Fehler&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		for _, str in pairs(_private[self].errors) do&lt;br /&gt;
			node:wikitext(error{ message=str, tag='div'})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return node&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:renderWarnings()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:renderWarnings(), from ' .. tostring(self))&lt;br /&gt;
	node = mw.html.create('')&lt;br /&gt;
	if #_private[self].warnings &amp;gt; 0 then&lt;br /&gt;
		node:wikitext('&amp;lt;h2&amp;gt;Hinweise&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		local lis = mw.html.create('')&lt;br /&gt;
		for _, str in pairs(_private[self].warnings) do&lt;br /&gt;
			lis:tag('li')&lt;br /&gt;
				:wikitext(str)&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
		node:tag('ul')&lt;br /&gt;
			:node(lis)&lt;br /&gt;
	end&lt;br /&gt;
	return node&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:setSortkey(sortkey)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:setSortkey(sortkey) with sortkey ' .. (sortkey and tostring(sortkey) or 'EMPTY') .. ', from ' .. tostring(self))&lt;br /&gt;
	local sortkey = sortkey&lt;br /&gt;
	if sortkey and mw.ustring.len(sortkey) &amp;gt; 0 then&lt;br /&gt;
		if not _private[self].superHandler then&lt;br /&gt;
			local frame = mw.getCurrentFrame()&lt;br /&gt;
			frame:callParserFunction('DEFAULTSORT:' .. sortkey, 'noerror')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:setUid(uid)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:setUid(uid), from ' .. tostring(self))&lt;br /&gt;
	if uid and (type(uid) == 'table' or type(uid) == 'integer') then&lt;br /&gt;
		_private[self].uid = uid&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:storeData()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:storeData(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local thisPage = mw.title.getCurrentTitle()&lt;br /&gt;
	local ret = false&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	if FoundationClass.usesDataStore(self.class, 'cargo') and thisPage.namespace == 10 and lang:ucfirst(thisPage.text) == lang:ucfirst(_CFG.template.name) then&lt;br /&gt;
		-- we must check for cargo data store first, because declaration must take place on namespace template where we have no data...&lt;br /&gt;
		_debug(self, 2, ' proceeding (cargo data store detected, poceeding to declare)')&lt;br /&gt;
		-- declaration of the cargo-table&lt;br /&gt;
		local declaration = self.class.cargoGenerateTableStructure(self.class)&lt;br /&gt;
		-- remember: self refers to an object not an class(!!!!) and this method is a static, so we have to call it directly and not with the colon operator&lt;br /&gt;
		local ret = FoundationClass.myCargoUtil.declare(_CFG.global.cargoTable, declaration)&lt;br /&gt;
		if mw.ustring.len(ret) &amp;gt; 0 then&lt;br /&gt;
			self:addWarning(ret)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if _amIPlausible(self) and _private[self].initialized and not _private[self].loadedDataMyself then&lt;br /&gt;
		_debug(self, 2, ' proceeding (plausible, initialized and got data from extern)')&lt;br /&gt;
		if FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
			-- now store the cargo data&lt;br /&gt;
			local stash = {}&lt;br /&gt;
			local declaration = FoundationClass.cargoGenerateTableStructure(self.class)&lt;br /&gt;
			for field, _ in pairs(declaration) do&lt;br /&gt;
				if _private[self].coreData[field] then&lt;br /&gt;
					if type(_private[self].coreData[field]) == 'table' then&lt;br /&gt;
						stash[field] = table.concat(_private[self].coreData[field], _CFG.global.delimiter)&lt;br /&gt;
					else&lt;br /&gt;
						stash[field] = _private[self].coreData[field]&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- individual adjustments&lt;br /&gt;
			stash = self:myStashAdjustments(stash, 'cargo')&lt;br /&gt;
			-- we dont want myStashAdjustments add any fields that is not a cargo field (in case it accidently added a field, that was meant for smw)&lt;br /&gt;
			if stash and type(stash) == 'table' then&lt;br /&gt;
				for field, _ in pairs(stash) do&lt;br /&gt;
					if not declaration[field] then&lt;br /&gt;
						stash[field] = nil&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if stash and FoundationClass.myTableTools.size(stash) &amp;gt; 0 then&lt;br /&gt;
				local result = FoundationClass.myCargoUtil.store(_CFG.global.cargoTable, stash)&lt;br /&gt;
				if mw.ustring.len(result) &amp;gt; 0 then&lt;br /&gt;
					self:addWarning(result)&lt;br /&gt;
				end&lt;br /&gt;
				ret = true&lt;br /&gt;
			else&lt;br /&gt;
				ret = false&lt;br /&gt;
			end&lt;br /&gt;
		end	-- of if FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
		if FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
			-- now store smw properties&lt;br /&gt;
			local stash = {}&lt;br /&gt;
			local properties = FoundationClass.smwGetProperty2ParameterTranslationTable(self.class)&lt;br /&gt;
			-- first get all parameter and their data in stash&lt;br /&gt;
			for _, parameter in pairs(properties) do&lt;br /&gt;
				if _private[self].coreData[parameter] then&lt;br /&gt;
					stash[parameter] = _private[self].coreData[parameter]&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- individual adjustments, still with parameter as keys&lt;br /&gt;
			stash = self:myStashAdjustments(stash, 'smw')&lt;br /&gt;
			-- now convert the stash keys from parameter to property&lt;br /&gt;
			-- that also takes care of any fields, that were accidently added for a cargo store but have no property assigned&lt;br /&gt;
			if stash and FoundationClass.myTableTools.size(stash) &amp;gt; 0 then&lt;br /&gt;
				local stash_new = {}&lt;br /&gt;
				for property, parameter in pairs(properties) do&lt;br /&gt;
					stash_new[property] = stash[parameter]&lt;br /&gt;
				end&lt;br /&gt;
				stash = stash_new&lt;br /&gt;
			end&lt;br /&gt;
			if stash and FoundationClass.myTableTools.size(stash) &amp;gt; 0 then&lt;br /&gt;
				local result&lt;br /&gt;
				if _CFG.global.smwIsSubobject then&lt;br /&gt;
					result = FoundationClass.mySmwUtil.subobject(stash, self:getUid())&lt;br /&gt;
				else&lt;br /&gt;
					result = FoundationClass.mySmwUtil.set(stash)&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.len(result) &amp;gt; 0 then&lt;br /&gt;
					self:addWarning(result)&lt;br /&gt;
				end&lt;br /&gt;
				ret = true&lt;br /&gt;
			else&lt;br /&gt;
				ret = false&lt;br /&gt;
			end&lt;br /&gt;
		end	-- of if FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:method()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:method() to do something, from ' .. tostring(self))&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- these are special methods, so they are placed here. they are kind of abstract-ish in a way, that they thow a lua exception&lt;br /&gt;
-- if you don't have them implemented on your inherited class&lt;br /&gt;
function FoundationClass.static:mySfDynamicFieldAttribute(fieldname, attribute, value)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass.static:mySfDynamicFieldAttribute(fieldname, attribute, value), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. '.static:mySfDynamicFieldAttribute(fieldname, attribute, value). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myArgumentProcessing(coreData)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myArgumentProcessing(coreData), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. ':myArgumentProcessing(coreData). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myDataAdjustments(data)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myDataAdjustments(data), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. ':myDataAdjustments(coreData). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myPlausibilityTest(args)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myPlausibilityTest(args), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. ':myPlausibilityTest(args). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myStashAdjustments(stash)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myStashAdjustments(stash), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ClassName:myStashAdjustments(stash). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return FoundationClass&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Modul:Foundationclass&amp;diff=2985</id>
		<title>Modul:Foundationclass</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Modul:Foundationclass&amp;diff=2985"/>
		<updated>2016-02-15T10:36:19Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local Class = require('Module:Middleclass').class&lt;br /&gt;
local FoundationClass = Class('FoundationClass')&lt;br /&gt;
local ClassDebug = require('Module:Debug/class')&lt;br /&gt;
local ClassSFfield = require('Module:SFfield/class')&lt;br /&gt;
&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
-- *                          properties                          *&lt;br /&gt;
-- ****************************************************************&lt;br /&gt;
&lt;br /&gt;
-- **************** initialization of table for private properties&lt;br /&gt;
local _private = setmetatable({}, {__mode = &amp;quot;k&amp;quot;})   -- weak table, storing all private attributes&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of static properties&lt;br /&gt;
--local _CFG = mw.loadData('Module:Person/config')&lt;br /&gt;
FoundationClass.static.globalConfig = mw.loadData( 'Module:Foundationclass/globalconfig' )&lt;br /&gt;
FoundationClass.static.myCargoUtil = require('Module:CargoUtil')&lt;br /&gt;
FoundationClass.static.mySmwUtil = require('Module:SmwUtil')&lt;br /&gt;
FoundationClass.static.myTableTools = require('Module:TableTools')&lt;br /&gt;
FoundationClass.static.myYesno = require('Module:Yesno')&lt;br /&gt;
-- these are later set by my child class:&lt;br /&gt;
local _debug	-- function for debugging, declared later&lt;br /&gt;
&lt;br /&gt;
-- ***************************************************************&lt;br /&gt;
-- *                           methods                           *&lt;br /&gt;
-- ***************************************************************&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of static methods&lt;br /&gt;
function FoundationClass:initialize(user_uid, superHandler)	-- constructor&lt;br /&gt;
	local user_uid = user_uid&lt;br /&gt;
	local shs = superHandler&lt;br /&gt;
	local superHandler = (superHandler and type(superHandler) == 'table' and superHandler.addError and type(superHandler.addError) == 'function') and superHandler or nil&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local idString = user_uid and ('myUid_' ..user_uid)  or ('NIL_' .. mw.title.getCurrentTitle().prefixedText)&lt;br /&gt;
	-- initialize all private properties&lt;br /&gt;
	_private[self] = {&lt;br /&gt;
		categories = {},&lt;br /&gt;
		coreData = {},&lt;br /&gt;
		dbg = ClassDebug:new('class FoundationClass: ' .. idString),&lt;br /&gt;
		errors = {},&lt;br /&gt;
		initialized = false,&lt;br /&gt;
		loadedDataFromDataStore = false,&lt;br /&gt;
		loadedDataMyself = false,&lt;br /&gt;
		output = mw.html.create(''),&lt;br /&gt;
		superHandler = superHandler,&lt;br /&gt;
		uid = user_uid,&lt;br /&gt;
		warnings = {},&lt;br /&gt;
	}&lt;br /&gt;
	if _CFG.global.category and mw.title.getCurrentTitle().namespace ~= 10 then&lt;br /&gt;
		self:addCategory(_CFG.global.category)&lt;br /&gt;
	end&lt;br /&gt;
	_debug(self, 1, 'Initializing object &amp;quot;' .. idString ..'&amp;quot;, from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 1, ' my superhandler was ' .. tostring(shs))&lt;br /&gt;
	_debug(self, 1, ' my superhandler is ' .. tostring(superHandler))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:cargoGenerateTableStructure()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:cargoGenerateTableStructure(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	-- warning: calling FoundationClass:cargoGenerateTableStructure() gives us no access to our configuration, use Class.cargoGenerateTableStructure(self) instead&lt;br /&gt;
	local declaration = {}&lt;br /&gt;
	-- first, add the uid field&lt;br /&gt;
	declaration[FoundationClass.globalConfig.uidFieldName] = 'Text (hidden)'&lt;br /&gt;
	for param, paramData in pairs(_CFG.parameter) do&lt;br /&gt;
		if paramData.cargo_type and mw.ustring.len(paramData.cargo_type) &amp;gt; 0 then&lt;br /&gt;
			if paramData.cardinality and paramData.cardinality == 'list' then&lt;br /&gt;
				declaration[param] = 'List (' .. _CFG.global.delimiter .. ') of ' .. paramData.cargo_type&lt;br /&gt;
			else&lt;br /&gt;
				declaration[param] = paramData.cargo_type&lt;br /&gt;
			end&lt;br /&gt;
			local additional_field_parameters = {}&lt;br /&gt;
			if paramData.cargo_hidden then&lt;br /&gt;
				table.insert(additional_field_parameters, 'hidden')&lt;br /&gt;
			end&lt;br /&gt;
			if paramData.cargo_size and (type(paramData.cargo_size) == 'number' or mw.ustring.match(paramData.cargo_size, '^[0-9]+$')) and&lt;br /&gt;
					FoundationClass.myTableTools.inTable(FoundationClass.globalConfig.cargoTypesElegibleForSize, mw.ustring.lower(paramData.cargo_type)) then&lt;br /&gt;
				table.insert(additional_field_parameters, 'size=' .. tostring(paramData.cargo_size))&lt;br /&gt;
			end&lt;br /&gt;
			if paramData.values and FoundationClass.myTableTools.size(paramData.values) &amp;gt; 0 and&lt;br /&gt;
					FoundationClass.myTableTools.inTable(FoundationClass.globalConfig.cargoTypesElegibleForValue, mw.ustring.lower(paramData.cargo_type)) then&lt;br /&gt;
				local av = 'allowed values='&lt;br /&gt;
				for _, v in pairs(paramData.values) do&lt;br /&gt;
					av = av .. v .. ','&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(additional_field_parameters, mw.ustring.sub(av, 1, -2))&lt;br /&gt;
			end&lt;br /&gt;
			if #additional_field_parameters &amp;gt; 0 then&lt;br /&gt;
				declaration[param] = declaration[param] .. ' (' .. table.concat(additional_field_parameters, ';') .. ')'&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return declaration&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:categorize()&lt;br /&gt;
	local thispage = mw.title.getCurrentTitle()&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local ret = ''&lt;br /&gt;
	if self and _private[self] and _private[self].uid then&lt;br /&gt;
		error('FoundationClass:categorize() must be called statically. Furthermore, it is not meant for categorizing class\'s objects but rather all pages belonging to the class\'s data pipeline (form, categories, modules, template, ...)')&lt;br /&gt;
	elseif thispage.rootText == 'Classgenerator' or thispage.rootText == 'Foundationclass' then&lt;br /&gt;
		ret = ret .. '[[Category:Class engine]]'&lt;br /&gt;
		if FoundationClass.globalConfig.classCategory and mw.ustring.len(FoundationClass.globalConfig.classCategory) &amp;gt; 0 then&lt;br /&gt;
			-- there has been a classCategory configured&lt;br /&gt;
			if thispage.text == 'Foundationclass' or (thispage.subpageText and thispage.subpageText == 'class')  then&lt;br /&gt;
				-- add class category if on a class page or on foundationclass&lt;br /&gt;
				ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. ']]'&lt;br /&gt;
			end&lt;br /&gt;
			if thispage.subpageText and (thispage.subpageText == 'config' or thispage.subpageText == 'globalconfig') then&lt;br /&gt;
				-- add class category if on a config page&lt;br /&gt;
				local basepage = mw.ustring.match(thispage.fullText, '^[^:]*:(.+)/config.*$')&lt;br /&gt;
				local classpage&lt;br /&gt;
				if basepage then&lt;br /&gt;
					classpage = basepage .. '/class'&lt;br /&gt;
				else&lt;br /&gt;
					classpage = thispage.rootText .. '/config'&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. '|' .. classpage .. ']]'&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == 10 then&lt;br /&gt;
		-- template namespace: add category if in correct namespace and there has been a templateCategory configured, also make sure, we are not part of classgenerator&lt;br /&gt;
		if FoundationClass.globalConfig.templateCategory and mw.ustring.len(FoundationClass.globalConfig.templateCategory) &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.templateCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == 14 then&lt;br /&gt;
		-- category namespace&lt;br /&gt;
		if _CFG and _CFG.global and _CFG.global.gardeningCategory == thispage.text and FoundationClass.globalConfig.gardeningSuperCategory and mw.ustring.len(FoundationClass.globalConfig.gardeningSuperCategory) and thispage.text ~= FoundationClass.globalConfig.gardeningSuperCategory then&lt;br /&gt;
			-- if class' gardening category and not the supergardening itself -&amp;gt; set gardening supercategory&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.gardeningSuperCategory .. ']]'&lt;br /&gt;
		elseif FoundationClass.globalConfig.projectSuperCategory and mw.ustring.len(FoundationClass.globalConfig.projectSuperCategory) &amp;gt; 0 then&lt;br /&gt;
			-- not a gardening category and not called by a childclass. projectSuperCategory set&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.projectSuperCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == mw.title.makeTitle('Form', 'NUL').namespace then&lt;br /&gt;
		-- form namespace: add category if in correct namespace and there has been a formCategory configured, also make sure, we are not part of classgenerator&lt;br /&gt;
		if FoundationClass.globalConfig.formCategory and #FoundationClass.globalConfig.formCategory &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.formCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == mw.title.makeTitle('Module', 'NUL').namespace then&lt;br /&gt;
		-- module namespace: add category if in correct namespace and there has been a moduleCategory configured, also make sure, we are not part of classgenerator or foundationclass&lt;br /&gt;
		if FoundationClass.globalConfig.moduleCategory and #FoundationClass.globalConfig.moduleCategory &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.moduleCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
		if thispage.subpageText and thispage.subpageText == 'class' and FoundationClass.globalConfig.classCategory and mw.ustring.len(FoundationClass.globalConfig.classCategory) &amp;gt; 0 then&lt;br /&gt;
			-- add class category if on a class page and there has been a classCategory configured&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
		if thispage.subpageText and thispage.subpageText == 'config' and FoundationClass.globalConfig.classCategory and mw.ustring.len(FoundationClass.globalConfig.classCategory) &amp;gt; 0 then&lt;br /&gt;
			-- add class category if on a config page and there has been a classCategory configured&lt;br /&gt;
			local basepage = mw.ustring.match(thispage.fullText, '^[^:]*:(.+)/config.*$')&lt;br /&gt;
			local classpage&lt;br /&gt;
			if basepage then&lt;br /&gt;
				classpage = basepage .. '/class'&lt;br /&gt;
			else&lt;br /&gt;
				classpage = thispage.rootText .. '/config'&lt;br /&gt;
			end&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.classCategory .. '|' .. classpage .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	elseif thispage.namespace == mw.title.makeTitle('Property', 'NUL').namespace then&lt;br /&gt;
		-- property namespace: add category if in correct namespace and there has been a propertyCategory configured&lt;br /&gt;
		if FoundationClass.globalConfig.propertyCategory and #FoundationClass.globalConfig.propertyCategory &amp;gt; 0 then&lt;br /&gt;
			ret = ret .. '[[Category:' .. FoundationClass.globalConfig.propertyCategory .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:categoryPage()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:categoryPage(), from ' .. tostring(self))&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 14 then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local _CFG = self.myConfiguration&lt;br /&gt;
		local form&lt;br /&gt;
		if _CFG.form.enable and _CFG.form.name and mw.ustring.len(_CFG.form.name) then&lt;br /&gt;
			form = frame:callParserFunction('#default_form:' .. _CFG.form.name)&lt;br /&gt;
		else&lt;br /&gt;
			form = 'Seiten in dieser Kategorie haben kein Standardformular'&lt;br /&gt;
		end&lt;br /&gt;
		local mbox = require('Module:Message box').main('cmbox', &lt;br /&gt;
			{&lt;br /&gt;
				type = 'notice',&lt;br /&gt;
				text = _CFG.global.description .. '\n* ' .. form .. '\n* ' .. &lt;br /&gt;
						'Seiten in  dieser Kategorie nutzen die Vorlage [[Template:' .. _CFG.template.name .. ']]'&lt;br /&gt;
			})&lt;br /&gt;
		html:wikitext(tostring(mbox))&lt;br /&gt;
			:node(self:explainDataStore())	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
	else&lt;br /&gt;
		error('FoundationClass:categoryPage() must be called from namespace category!', 2)&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:explainDataStore()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:explainDataStore(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local collapse = require('Module:Collapse').main&lt;br /&gt;
	local str = ''&lt;br /&gt;
	if FoundationClass.usesDataStore(self, 'cargo') then&lt;br /&gt;
		local declaration = self:cargoGenerateTableStructure()	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
		-- add the default fields&lt;br /&gt;
		for field, description in pairs(FoundationClass.globalConfig.cargoSpecialFields) do&lt;br /&gt;
			declaration[field] = description&lt;br /&gt;
		end&lt;br /&gt;
		local fields = {}&lt;br /&gt;
		for key, _ in pairs(declaration) do&lt;br /&gt;
			table.insert(fields, key)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(fields)&lt;br /&gt;
		local headline = 'Declaration for CARGO table &amp;quot;' .. (_CFG.global.cargoTable or 'NIL') .. '&amp;quot;'&lt;br /&gt;
		local content = '&amp;lt;ul&amp;gt;'&lt;br /&gt;
		for _, field in pairs(fields) do&lt;br /&gt;
			local text = declaration[field]&lt;br /&gt;
			if _CFG.parameter[field] and _CFG.parameter[field].description then&lt;br /&gt;
				text = text .. ', &amp;lt;small&amp;gt;' .. _CFG.parameter[field].description .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
			elseif field == FoundationClass.globalConfig.uidFieldName then&lt;br /&gt;
				text = text .. ', &amp;lt;small&amp;gt;Automatisch hinzugefügt! Wird verwendet, um individuelle Objekte innerhalb der Klasse zu identifizieren.&amp;lt;/small&amp;gt;'&lt;br /&gt;
			end&lt;br /&gt;
			content = content .. '&amp;lt;li&amp;gt; ' .. field .. ': ' .. text .. '&amp;lt;/li&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		content = content .. '&amp;lt;/ul&amp;gt;\n[[Spezial:CargoTables/'.. (_CFG.global.cargoTable or 'Instance') .. '|View Data]]'&lt;br /&gt;
		str = str ..  collapse{header = headline, content = content, left = true} .. '\n'&lt;br /&gt;
	end&lt;br /&gt;
	if FoundationClass.usesDataStore(self, 'smw') then	-- smw store&lt;br /&gt;
		local property2param = FoundationClass.smwGetProperty2ParameterTranslationTable(self)&lt;br /&gt;
		local properties = {}&lt;br /&gt;
		for property, field in pairs(property2param) do&lt;br /&gt;
			properties[property] = {&lt;br /&gt;
				individual = true, -- essentially says: no special property&lt;br /&gt;
			}&lt;br /&gt;
			if _CFG.parameter[field] then&lt;br /&gt;
				properties[property].description = _CFG.parameter[field].description&lt;br /&gt;
				properties[property].type = (_CFG.parameter[field].property_type and _CFG.parameter[field].property_type or 'Page')&lt;br /&gt;
				properties[property].values = (_CFG.parameter[field].values and #_CFG.parameter[field].values &amp;gt; 0) and ' (allowed values=' .. table.concat(_CFG.parameter[field].values, ', ') .. ')' or ''&lt;br /&gt;
			elseif field == FoundationClass.globalConfig.smwClassProperty then&lt;br /&gt;
				properties[property].description = 'Automatisch hinzugefügt! Wird verwendet, um Mitglieder dieser Klasse zu finden (funktioniert auch, ohne dass eine Kategorie definiert wird und auch fur subobjects)'&lt;br /&gt;
				properties[property].type = 'Text'&lt;br /&gt;
				properties[property].values = ''&lt;br /&gt;
			elseif field == FoundationClass.globalConfig.uidFieldName then&lt;br /&gt;
				properties[property].description = 'Automatisch hinzugefügt! Wird verwendet, um individuelle Objekte innerhalb der Klasse zu identifizieren.'&lt;br /&gt;
				properties[property].type = 'Text'&lt;br /&gt;
				properties[property].values = ''&lt;br /&gt;
			else&lt;br /&gt;
				-- should never apply&lt;br /&gt;
				properties[property].description = 'THIS should not have appeared. Please consult an admin'&lt;br /&gt;
				properties[property].type = 'WARNING!'&lt;br /&gt;
				properties[property].values = ' (see Module:Foundationclass, FoundationClass.static:explainDataStore() for more information)'&lt;br /&gt;
			end&lt;br /&gt;
			properties[property].text = ((_CFG.parameter[field] and _CFG.parameter[field].cardinality == 'list') and 'List of ' or '') .. properties[property].type .. properties[property].values ..&lt;br /&gt;
				', &amp;lt;small&amp;gt;' .. properties[property].description .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		for key, value in pairs(FoundationClass.globalConfig.smwSpecialProperties) do&lt;br /&gt;
			properties[key] = { text = value }&lt;br /&gt;
		end&lt;br /&gt;
		local propertyList = {}&lt;br /&gt;
		for key, _ in pairs(properties) do&lt;br /&gt;
			table.insert(propertyList, key)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(propertyList)&lt;br /&gt;
		local headline = 'Semantic properties used in this class:'&lt;br /&gt;
		local content = '&amp;lt;ul&amp;gt;'&lt;br /&gt;
		for _, property in pairs(propertyList) do&lt;br /&gt;
			content = content .. '&amp;lt;li&amp;gt;[[Property:' .. property .. ']]: ' .. properties[property].text .. '&amp;lt;/li&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		content = content .. '&amp;lt;/ul&amp;gt;\n'&lt;br /&gt;
		local attributes = {headers='plain', format='table', limit=0, searchlabel='Hier klicken für eine tabellarische Übersicht!'}&lt;br /&gt;
		local fields = {}&lt;br /&gt;
		for key, _ in pairs(properties) do&lt;br /&gt;
			table.insert(fields, key)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(fields)&lt;br /&gt;
		content = content .. FoundationClass.mySmwUtil.rawask({where='[[' .. FoundationClass.globalConfig.smwClassProperty .. '::' .. self.name .. ']]', fields = fields }, attributes) .. '\n'&lt;br /&gt;
		str = str .. collapse{header = headline, content = content, left = true} .. '\n'&lt;br /&gt;
	end&lt;br /&gt;
	if #mw.text.trim(str) == 0 then&lt;br /&gt;
		str = 'This template does not store any persistent data.'&lt;br /&gt;
	end&lt;br /&gt;
	str = '\n== Data Storage ==\n' .. str&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:formRedlink(target, form, linktext)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:formRedlink() to create a redlink to a form')&lt;br /&gt;
	local target = target&lt;br /&gt;
	local form = form&lt;br /&gt;
	local linktext = linktext or target&lt;br /&gt;
	local str&lt;br /&gt;
	if target and form then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		args = { form = form }&lt;br /&gt;
		if linktext then&lt;br /&gt;
			args['link text'] = linktext&lt;br /&gt;
			args['existing page link text'] = linktext&lt;br /&gt;
		end&lt;br /&gt;
		str = frame:callParserFunction{ name='#formredlink:target=' .. target, args=args }&lt;br /&gt;
	else&lt;br /&gt;
		str = 'target or form missing on call to _formredlink()'&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:gardeningCategoryPage()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:gardeningCategoryPage(), from ' .. tostring(self))&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 14 then&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		local _CFG = self.myConfiguration&lt;br /&gt;
		local mbox = require('Module:Message box').main&lt;br /&gt;
		html:wikitext(tostring(mbox('cmbox', &lt;br /&gt;
			{&lt;br /&gt;
				type = 'notice',&lt;br /&gt;
				text = 'This category shows all elements of class ' .. self.name .. ' that have at least one error in their core data. This category must be empty at all times!'&lt;br /&gt;
			})))&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(tostring(mbox('cmbox', &lt;br /&gt;
			{&lt;br /&gt;
				type = 'content',&lt;br /&gt;
				text = 'This category should be empty! Please tend to the articles contained herein!'&lt;br /&gt;
			})))&lt;br /&gt;
		-- add category if in namespace category and there has been a supercategory configured&lt;br /&gt;
		if FoundationClass.globalConfig.gardeningCategory and #FoundationClass.globalConfig.gardeningCategory &amp;gt; 0 and FoundationClass.globalConfig.gardeningCategory ~= mw.title.getCurrentTitle().text then&lt;br /&gt;
			html:wikitext('[[Category:' .. FoundationClass.globalConfig.gardeningCategory .. ']]')&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		error('FoundationClass:gardeningCategoryPage() must be called from namespace category!', 2)&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateForm()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateForm(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	if not _CFG.form.enable then&lt;br /&gt;
		return require('Module:Error').error{ message = 'Error: This class has no form page. Could not create link to form!', type = 'div' }&lt;br /&gt;
	end&lt;br /&gt;
	local tagStart = '{{{'&lt;br /&gt;
	local tagEnd = '}}}'&lt;br /&gt;
	-- create the form header&lt;br /&gt;
	local notification = mw.html.create('')&lt;br /&gt;
	if _CFG.form.notification and mw.ustring.len(_CFG.form.notification) &amp;gt; 0 then&lt;br /&gt;
		local mbox = require('Module:Message box')&lt;br /&gt;
		notification:wikitext(mbox.main('ombox', { text = _CFG.form.notification }))&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	local formheader = mw.html.create('')&lt;br /&gt;
	formheader:wikitext(self:sfGenerateFormInfoTag())&lt;br /&gt;
		:addClass('description-box')&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.global.entityTitle .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.headerText)&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
		:node(notification)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:attr('id', 'wikiPreview')&lt;br /&gt;
			:cssText('display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA')&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	-- deal with sections and free text&lt;br /&gt;
	local sections = mw.html.create('')&lt;br /&gt;
	local sectionlist = _CFG.form.sectionList and _CFG.form.sectionList or {}&lt;br /&gt;
	for _, section in pairs(sectionlist) do&lt;br /&gt;
		sections:wikitext('&amp;lt;h2&amp;gt;' .. section .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(tagStart .. 'section|' .. section .. '|level=2|autogrow=true|cols=' .. _CFG.form.textareaAttributes.cols .. &lt;br /&gt;
							'|rows=' .. math.max(8, 2*_CFG.form.textareaAttributes.rows) .. tagEnd)&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	local freetext = mw.html.create('')&lt;br /&gt;
	if _CFG.form.allowsFreeText then&lt;br /&gt;
		freetext:wikitext(tagStart .. 'standard input|free text|autogrow=true|editor=wikieditor|cols=' .. math.min(200, 2*_CFG.form.textareaAttributes.cols) .. &lt;br /&gt;
							'|rows=' .. math.min(48, 5*_CFG.form.textareaAttributes.rows) .. tagEnd)&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	-- create the form buttons&lt;br /&gt;
	local formbuttons = mw.html.create('div')	-- we have to use a div here. this somehow helps the includes/SF_FormPrinter.php to correcly place the fieldset (blue box) around the form&lt;br /&gt;
	if FoundationClass.myTableTools.inTable(_CFG.form.buttons, 'summary') then&lt;br /&gt;
		formbuttons:tag('p')&lt;br /&gt;
			:wikitext(tagStart .. 'standard input&amp;amp;#124;summary' .. tagEnd)&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	for _, button in pairs(_CFG.form.buttons) do&lt;br /&gt;
		if button ~= 'summary' then&lt;br /&gt;
			formbuttons:wikitext(tagStart .. 'standard input&amp;amp;#124;' .. button .. tagEnd)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	formbuttons:addClass('formbuttons')&lt;br /&gt;
		:done()&lt;br /&gt;
	-- assemble everything, so start the html object&lt;br /&gt;
	local html = mw.html.create('div')&lt;br /&gt;
	html:node(formheader)&lt;br /&gt;
		:wikitext(tagStart .. 'for template|' .. _CFG.template.name .. '|label=' .. _CFG.global.entityTitle .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:sfGenerateFormTable())&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(&amp;quot;'''(*) Pflichtfeld'''&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(tagStart .. 'end template' .. tagEnd)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(sections)&lt;br /&gt;
		:node(freetext)&lt;br /&gt;
		:node(formbuttons)&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		html:newline()&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext('&amp;lt;h2&amp;gt;Debug level is ' .. debugLevel .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(ClassDebug:printLog(debugLevel))&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormEntry()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormEntry(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	local thispage = mw.title.getCurrentTitle()&lt;br /&gt;
	html:wikitext('&amp;lt;h2&amp;gt;' .. _CFG.global.entityTitle .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.teaserText)&lt;br /&gt;
			:done()&lt;br /&gt;
		:newline()&lt;br /&gt;
	if _CFG.form.typeCreateLink and (mw.ustring.lower(_CFG.form.typeCreateLink) == 'forminput' or mw.ustring.lower(_CFG.form.typeCreateLink) == 'formlink') then&lt;br /&gt;
		html:tag('p')&lt;br /&gt;
			:wikitext(_CFG.form.createInfotext)&lt;br /&gt;
			:wikitext(self:sfGenerateFormLink())	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
			:done()&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormInfoTag()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormInfoTag(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	if not _CFG.form.enable then&lt;br /&gt;
		return require('Module:Error').error{ message = 'Error: This class has no form page. Could not create link to form!', type = 'div' }&lt;br /&gt;
	end&lt;br /&gt;
	local tagStart = '{{{'&lt;br /&gt;
	local tagEnd = '}}}'&lt;br /&gt;
	local queryString = ''&lt;br /&gt;
	if (not _CFG.form.typeCreateLink or mw.ustring.lower(_CFG.form.typeCreateLink) ~= 'forminput') and _CFG.form.createLinkPageName and #_CFG.form.createLinkPageName &amp;gt; 0 then&lt;br /&gt;
		local pageName = _CFG.form.createLinkPageName&lt;br /&gt;
		if _CFG.global.namespace and mw.ustring.len(_CFG.global.namespace) &amp;gt; 0 and not mw.ustring.match(pageName, '^' .. _CFG.global.namespace .. ':.+$') then&lt;br /&gt;
			pageName = _CFG.global.namespace .. ':' .. pageName&lt;br /&gt;
		end&lt;br /&gt;
		queryString = '|page name=' .. pageName&lt;br /&gt;
	end&lt;br /&gt;
	return tagStart .. 'info' .. queryString .. '|add title=' .. _CFG.form.labelCreate .. '|edit title=' .. _CFG.form.labelEdit .. tagEnd&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormLink()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormInput(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	if not _CFG.form.enable or not _CFG.form.name or #_CFG.form.name == 0 then&lt;br /&gt;
		return require('Module:Error').error{ message = 'Error: This class has no form page. Could not create link to form!', type = 'div' }&lt;br /&gt;
	end&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local ret = ''&lt;br /&gt;
	if _CFG.form.typeCreateLink and (_CFG.form.typeCreateLink == 'forminput' or _CFG.form.typeCreateLink == 'formlink') then&lt;br /&gt;
		if _CFG.form.typeCreateLink == 'forminput' then&lt;br /&gt;
			local args = { size = 40 }&lt;br /&gt;
			if _CFG.form.createInputPlaceholder and mw.ustring.len(_CFG.form.createInputPlaceholder) &amp;gt; 0 then&lt;br /&gt;
				args.placeholder = _CFG.form.createInputPlaceholder&lt;br /&gt;
			end&lt;br /&gt;
			if _CFG.form.InputQueryString and mw.ustring.len(_CFG.form.InputQueryString) &amp;gt; 0 then&lt;br /&gt;
				args['query string'] = _CFG.form.InputQueryString&lt;br /&gt;
			end&lt;br /&gt;
			args['button text'] = _CFG.form.labelCreate&lt;br /&gt;
			if _CFG.global.namespace and mw.ustring.len(_CFG.global.namespace) &amp;gt; 0 then&lt;br /&gt;
				if args['query string'] then&lt;br /&gt;
					args['query string'] = args['query string'] .. '&amp;amp;' .. 'namespace=' .. _CFG.global.namespace&lt;br /&gt;
				else&lt;br /&gt;
					args['query string'] = 'namespace=' .. _CFG.global.namespace&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			ret = frame:callParserFunction{name = '#forminput:form=' .. _CFG.form.name, args = args}&lt;br /&gt;
		else&lt;br /&gt;
			local args = {&lt;br /&gt;
				tooltip = _CFG.form.createInfotext&lt;br /&gt;
			}&lt;br /&gt;
			if _CFG.form.createLinkQueryString and mw.ustring.len(_CFG.form.createLinkQueryString) &amp;gt; 0 then&lt;br /&gt;
				args['query string'] = _CFG.form.createLinkQueryString&lt;br /&gt;
			end&lt;br /&gt;
			local linkType = _CFG.form.createLinkType&lt;br /&gt;
			if linkType then&lt;br /&gt;
				linkType = mw.ustring.lower(linkType)&lt;br /&gt;
				if linkType ~= 'button' and linkType ~= 'post button' then&lt;br /&gt;
					linkType = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			args['link text'] = _CFG.form.labelCreate&lt;br /&gt;
			args['link type'] = linkType&lt;br /&gt;
			ret = frame:callParserFunction{name = '#formlink:form=' .. _CFG.form.name, args = args}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfGenerateFormTable(fieldlist, tableid)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfGenerateFormTable(fieldlist), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local fieldlist = fieldlist or _CFG.form.fieldOrder&lt;br /&gt;
	-- set some form defaults&lt;br /&gt;
	ClassSFfield:setDefaultSize(_CFG.form.fieldSize)&lt;br /&gt;
	ClassSFfield:setDefaultTextAreaCols(_CFG.form.textareaAttributes.cols)&lt;br /&gt;
	ClassSFfield:setDefaultTextAreaEditor(_CFG.form.textareaAttributes.editor)&lt;br /&gt;
	ClassSFfield:setDefaultTextAreaRows(_CFG.form.textareaAttributes.rows)&lt;br /&gt;
	-- now create the form table&lt;br /&gt;
	local hidden = mw.html.create('')&lt;br /&gt;
	local formtable = mw.html.create('table')&lt;br /&gt;
	for _, fieldname in pairs(fieldlist) do&lt;br /&gt;
		if _CFG.parameter[fieldname] and not self:mySfDynamicFieldAttribute(fieldname, 'disable', false)  then&lt;br /&gt;
			local field = self:sfInitField(fieldname)&lt;br /&gt;
			if field then&lt;br /&gt;
				if field:get('hidden') then&lt;br /&gt;
					hidden:wikitext(field:render())&lt;br /&gt;
				else&lt;br /&gt;
					formtable:node(field:createTr(_CFG.parameter[fieldname].label, _CFG.parameter[fieldname].description))&lt;br /&gt;
				end&lt;br /&gt;
			elseif _CFG.parameter[fieldname].label and _CFG.parameter[fieldname].description and (not _CFG.parameter[fieldname].td_type or mw.ustring.len(_CFG.parameter[fieldname].td_type) == 0) then&lt;br /&gt;
				mbox = require('Module:Message box').main('cmbox', { type = 'notice', text = &amp;quot;'''&amp;quot; .. _CFG.parameter[fieldname].label .. &amp;quot;:''' &amp;quot; .._CFG.parameter[fieldname].description})&lt;br /&gt;
				formtable:tag('tr')&lt;br /&gt;
					:attr('id', ClassSFfield:getShowOnSelectIdPrefix() .. mw.uri.encode(fieldname, 'WIKI'))&lt;br /&gt;
					:tag('td')&lt;br /&gt;
						:attr('colspan', 2)&lt;br /&gt;
						:wikitext(tostring(mbox))&lt;br /&gt;
						:done()&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	formtable:addClass(FoundationClass.globalConfig.formTableClass)&lt;br /&gt;
		:css('width', 'auto')&lt;br /&gt;
	if tableid then&lt;br /&gt;
		formtable:attr('id', tableid)&lt;br /&gt;
	end&lt;br /&gt;
	formtable:done()&lt;br /&gt;
		:node(hidden)&lt;br /&gt;
	return formtable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:sfInitField(fieldname)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:sfInitField(fieldname) to initialize field ' .. fieldname or 'NOT SET' .. ', from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local field&lt;br /&gt;
	if _CFG.parameter[fieldname] and _CFG.parameter[fieldname].sf and not self:mySfDynamicFieldAttribute(fieldname, 'disable', false) then&lt;br /&gt;
		field = ClassSFfield:new(fieldname)&lt;br /&gt;
		if _CFG.parameter[fieldname].cardinality and _CFG.parameter[fieldname].cardinality == 'list' then&lt;br /&gt;
			field:set('list', self:mySfDynamicFieldAttribute(fieldname, 'list', true))&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG.parameter[fieldname].severity and _CFG.parameter[fieldname].severity == 'mandatory' then&lt;br /&gt;
			field:set('mandatory', self:mySfDynamicFieldAttribute(fieldname, 'mandatory', true))&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG.parameter[fieldname].values then&lt;br /&gt;
			field:set('values', self:mySfDynamicFieldAttribute(fieldname, 'values', _CFG.parameter[fieldname].values))&lt;br /&gt;
		end&lt;br /&gt;
		if _CFG.parameter[fieldname].sf then&lt;br /&gt;
			for attr, val in pairs(_CFG.parameter[fieldname].sf) do&lt;br /&gt;
				field:set(mw.ustring.gsub(attr, '_', ' '),&lt;br /&gt;
						self:mySfDynamicFieldAttribute(fieldname, attr, val)	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
					)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return field&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:smwGetProperty2ParameterTranslationTable()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:smwGetProperty2ParameterTranslationTable(), from ' .. tostring(self))&lt;br /&gt;
	if not FoundationClass.usesDataStore(self, 'smw') then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not self.smwProperty2ParameterTranslationTable or FoundationClass.myTableTools.size(self.smwProperty2ParameterTranslationTable) == 0 then&lt;br /&gt;
		local _CFG = self.myConfiguration&lt;br /&gt;
		local translation = {}&lt;br /&gt;
		translation[mw.ustring.gsub(FoundationClass.globalConfig.smwClassProperty, ' ', '_')] = mw.ustring.gsub(FoundationClass.globalConfig.smwClassProperty, ' ', '_')&lt;br /&gt;
		translation[mw.ustring.gsub(FoundationClass.globalConfig.uidFieldName, ' ', '_')] = mw.ustring.gsub(FoundationClass.globalConfig.uidFieldName, ' ', '_')&lt;br /&gt;
		for param, data in pairs(_CFG.parameter) do&lt;br /&gt;
			if data.property_name and data.property_name:len() &amp;gt; 0 then&lt;br /&gt;
				translation[mw.ustring.gsub(data.property_name, ' ', '_')] = param&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self.smwProperty2ParameterTranslationTable = translation&lt;br /&gt;
	end&lt;br /&gt;
	return self.smwProperty2ParameterTranslationTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:templateDocumentation(arg)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:templateDocumentation(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local arg = arg&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
	local thispage = mw.title.getCurrentTitle()&lt;br /&gt;
	local luaBanner = require('Module:Lua banner')&lt;br /&gt;
	-- first generate the template data for the &amp;quot;parameters&amp;quot;-section&lt;br /&gt;
	local parameter = {}&lt;br /&gt;
	for _, param in pairs(_CFG.form.fieldOrder) do&lt;br /&gt;
		if _CFG.parameter[param] and _CFG.parameter[param].td_type then&lt;br /&gt;
			table.insert(parameter, param)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local templateData = ''&lt;br /&gt;
	if #parameter &amp;gt; 0 then&lt;br /&gt;
		local jsonData = '{\n\t&amp;quot;description&amp;quot;: &amp;quot;' .. _CFG.global.description .. '&amp;quot;,\n' ..&lt;br /&gt;
			'\t&amp;quot;params&amp;quot;: {\n'&lt;br /&gt;
		for _, param in pairs(parameter) do&lt;br /&gt;
			paramdata = _CFG.parameter[param]&lt;br /&gt;
			jsonData = jsonData .. '\t\t&amp;quot;' .. param .. '&amp;quot;: {\n'&lt;br /&gt;
			jsonData = jsonData .. '\t\t\t&amp;quot;type&amp;quot;: &amp;quot;' .. mw.ustring.lower(paramdata.td_type) .. '&amp;quot;,\n'&lt;br /&gt;
			if paramdata.td_default then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;default&amp;quot;: &amp;quot;' .. paramdata.td_default .. '&amp;quot;,\n'&lt;br /&gt;
			end&lt;br /&gt;
			if paramdata.description then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;description&amp;quot;: &amp;quot;' .. mw.ustring.gsub(paramdata.description, '&amp;quot;', '\'\'') .. '&amp;quot;,\n'&lt;br /&gt;
			end&lt;br /&gt;
			if paramdata.label then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;label&amp;quot;: &amp;quot;' .. paramdata.label .. '&amp;quot;,\n'&lt;br /&gt;
			end&lt;br /&gt;
			if paramdata.severity then&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;suggested&amp;quot;: ' .. ((paramdata.severity == 'suggested' or paramdata.severity == 'optional') and 'true,\n' or 'false,\n')&lt;br /&gt;
				jsonData = jsonData .. '\t\t\t&amp;quot;required&amp;quot;: ' .. ((paramdata.severity == 'mandatory' or paramdata.severity == 'required') and 'true,\n' or 'false,\n')&lt;br /&gt;
			end&lt;br /&gt;
			jsonData = mw.ustring.sub(jsonData, 1, -3) .. '\n\t\t},\n'&lt;br /&gt;
		end&lt;br /&gt;
		jsonData = mw.ustring.sub(jsonData, 1, -3) .. '\n\t}\n}'&lt;br /&gt;
		if debugLevel then&lt;br /&gt;
			templateData = '&amp;lt;pre&amp;gt;' .. jsonData .. '&amp;lt;/pre&amp;gt;'&lt;br /&gt;
		else&lt;br /&gt;
			templateData = frame:extensionTag('templatedata', jsonData)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		templateData = 'Dieses Template verfügt über keine nutzbaren (statischen) parameter.'&lt;br /&gt;
	end&lt;br /&gt;
	-- then assemble the code for the usage section&lt;br /&gt;
	local code = '{{' .. thispage.rootText .. '\n'&lt;br /&gt;
	for _, param in pairs(parameter) do&lt;br /&gt;
		code = code .. '|' .. param .. '=\n'&lt;br /&gt;
	end&lt;br /&gt;
	code = code .. '}}\n'&lt;br /&gt;
	-- the 'see also' links&lt;br /&gt;
	local seeAlso = mw.html.create('')&lt;br /&gt;
	local seeAlsoList = mw.html.create('')&lt;br /&gt;
	if _CFG.template.templateDocumentationSeeAlso then&lt;br /&gt;
		if type(_CFG.template.templateDocumentationSeeAlso) == 'table' then&lt;br /&gt;
			for _, link in pairs(_CFG.template.templateDocumentationSeeAlso) do&lt;br /&gt;
				if mw.ustring.find(link, ':', 1, true) then&lt;br /&gt;
					link = mw.ustring.match(link, '^[^:]*:(.+)$')&lt;br /&gt;
				end&lt;br /&gt;
				seeAlsoList:tag('li')&lt;br /&gt;
					:wikitext('{{[[:Template:' .. link .. '|' .. link .. ']]}}')&lt;br /&gt;
					:done()&lt;br /&gt;
					:newline()&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local link = _CFG.global.templateDocumentationSeeAlso&lt;br /&gt;
			if mw.ustring.find(link, ':', 1, true) then&lt;br /&gt;
				link = mw.ustring.match(link, '^[^:]*:(.+)$')&lt;br /&gt;
			end&lt;br /&gt;
			seeAlsoList:tag('li')&lt;br /&gt;
				:wikitext('{{[[:Template:' .. link .. '|' .. link .. ']]}}')&lt;br /&gt;
				:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
		end&lt;br /&gt;
		seeAlso:wikitext('&amp;lt;h2&amp;gt;See also&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:tag('ul')&lt;br /&gt;
				:node(seeAlsoList)&lt;br /&gt;
				:done()&lt;br /&gt;
				:newline()&lt;br /&gt;
	end&lt;br /&gt;
	-- assemble&lt;br /&gt;
	local html = mw.html.create('')&lt;br /&gt;
	html:wikitext('&amp;lt;h2&amp;gt;Description&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(luaBanner._main({'Module:' .. thispage.rootText, 'Module:' .. thispage.rootText .. '/class',&lt;br /&gt;
					'Module:' .. thispage.rootText .. '/config', 'Module:Foundationclass', 'Module:Middleclass'}))&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(_CFG.global.description .. ((_CFG.global.category and mw.ustring.len(_CFG.global.category) &amp;gt; 0) and ('\n\n' .. mw.site.namespaces[14].name .. ': [[:Category:' .. _CFG.global.category .. ']]\n') or ''))&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(self:explainDataStore())	-- remember: self refers to a class, not an object and this method is static&lt;br /&gt;
		:newline()&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;Parameters&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:wikitext(templateData)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext('&amp;lt;h2&amp;gt;Usage&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		:wikitext(frame:expandTemplate{ title = 'Code', args = {'html4strict', code} })&lt;br /&gt;
		:newline()&lt;br /&gt;
		:node(seeAlso)&lt;br /&gt;
		:done()&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		html:newline()&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext('&amp;lt;h2&amp;gt;Debug level is ' .. debugLevel .. '&amp;lt;/h2&amp;gt;')&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(ClassDebug:printLog(debugLevel))&lt;br /&gt;
	end&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:usesDataStore(storeType)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:usesDataStore(storeType) to do assertain, if store &amp;quot;' .. storeType .. '&amp;quot; is used, from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.myConfiguration&lt;br /&gt;
	return (FoundationClass.globalConfig.dataStore == 'both' or FoundationClass.globalConfig.dataStore == mw.ustring.lower(storeType)) and &lt;br /&gt;
		(mw.ustring.lower(storeType) == 'smw' and _CFG.global.smwUseStorage) or (mw.ustring.lower(storeType) == 'cargo' and _CFG.global.cargoTable and #_CFG.global.cargoTable &amp;gt; 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass.static:staticMethod(var)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass.static:staticMethod() to do something, from ' .. tostring(self))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of private methods&lt;br /&gt;
local _amIPlausible = function (self)&lt;br /&gt;
	return (#_private[self].errors == 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
_debug = function (self, level, text)&lt;br /&gt;
	if _private[self] and _private[self].dbg then&lt;br /&gt;
		local debugLevel = FoundationClass.globalConfig.debugLevel or self.class.myConfiguration.global.debugLevel&lt;br /&gt;
		if debugLevel and level &amp;lt;= debugLevel then&lt;br /&gt;
			_private[self].dbg:log(level, text)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local debugLevel = FoundationClass.globalConfig.debugLevel or self.myConfiguration.global.debugLevel&lt;br /&gt;
		if debugLevel and level &amp;lt;= debugLevel then&lt;br /&gt;
			ClassDebug:log(level, text, tostring(self) .. '.static')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _plausibilityTest = function (self, args)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass._plausibilityTest(self, args)')&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local args = args&lt;br /&gt;
	-- first see, whether we are in the correct namespace (that is, if we are not initialzed from a datastore)&lt;br /&gt;
	if not _private[self].loadedDataFromDataStore and _CFG.global.namespace and #_CFG.global.namespace &amp;gt; 0 and (_CFG.global.namespace ~= mw.title.getCurrentTitle().nsText) then&lt;br /&gt;
		self:addError(&amp;quot;Diese Seite befindet sich in einem ungültigen Namesraum. Eingestellt ist ''&amp;quot; .. _CFG.global.namespace .. &amp;quot;'',  festgestellt wurde: &amp;quot; .. ((mw.title.getCurrentTitle().nsText and #mw.title.getCurrentTitle().nsText &amp;gt; 0) and mw.title.getCurrentTitle().nsText or 'keiner'))&lt;br /&gt;
	end&lt;br /&gt;
	-- prepare for the &amp;quot;show on select&amp;quot;-complex&lt;br /&gt;
	-- motivation:&lt;br /&gt;
	-- when you have a selector with a show on select field, sf shows some fields dynamically. sf even lets you set these dynamically shown fields&lt;br /&gt;
	-- to mandatory but checks for this only, if the field is shown.&lt;br /&gt;
	-- problem: so with this in mind, it is possible, that we have a mandatory field in our configuration with no value, but still be pausible&lt;br /&gt;
	-- since it only has to submit a value, if it is shown. but in the case it is shown, it has to submit a value&lt;br /&gt;
	-- what we do: build a table fieldnameToCheck : { showSelectorFieldname : valuetoshow }&lt;br /&gt;
	-- btw: this table fieldnameToCheck should only containe one element. if the programmer has the field &amp;quot;fieldnameToCheck&amp;quot; put in more than&lt;br /&gt;
	-- one show on select, the resulting form is erratic.&lt;br /&gt;
	local showOnSelectComplex = {}&lt;br /&gt;
	for param, paramdata in pairs(_CFG.parameter) do&lt;br /&gt;
		if not self.class.mySfDynamicFieldAttribute(self.class, param, 'disable', false) and paramdata.sf and paramdata.sf.show_on_select then&lt;br /&gt;
			local sos = self.class.mySfDynamicFieldAttribute(self.class, param, 'show_on_select', paramdata.sf.show_on_select)&lt;br /&gt;
			_debug(self, 3, '  got this in return: ' .. (type(sos) == 'string' and tostring(sos) or type(sos)))&lt;br /&gt;
			if type(sos) ~= 'table' then&lt;br /&gt;
				sos = tostring(sos)&lt;br /&gt;
				if not showOnSelectComplex[sos] then&lt;br /&gt;
					showOnSelectComplex[sos] = {}&lt;br /&gt;
				end&lt;br /&gt;
				-- this being a string makes sense only if input type is checkbox. we leave the responsibility to the programmer, though&lt;br /&gt;
				showOnSelectComplex[sos][param] = FoundationClass.globalConfig.selectedCheckboxSubmitValue&lt;br /&gt;
			else&lt;br /&gt;
				-- assume type table&lt;br /&gt;
				for selectedValue, showFields in pairs(sos) do&lt;br /&gt;
					if type(showFields) ~= 'table' then&lt;br /&gt;
						showFields = tostring(showFields)&lt;br /&gt;
						if not showOnSelectComplex[showFields] then&lt;br /&gt;
							showOnSelectComplex[showFields] = {}&lt;br /&gt;
						end&lt;br /&gt;
						showOnSelectComplex[showFields][param] = selectedValue&lt;br /&gt;
					else&lt;br /&gt;
						-- one last iteration&lt;br /&gt;
						for _, showField in pairs(showFields) do&lt;br /&gt;
							showFields = tostring(showFields)&lt;br /&gt;
							if not showOnSelectComplex[showField] then&lt;br /&gt;
								showOnSelectComplex[showField] = {}&lt;br /&gt;
							end&lt;br /&gt;
							showOnSelectComplex[showField][param] = selectedValue&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	_debug(self, 3, '  have this showOnSelectComplex: ' .. FoundationClass.myTableTools.printTable(showOnSelectComplex))&lt;br /&gt;
	-- now do the plausibility test&lt;br /&gt;
	for param, paramdata in pairs(_CFG.parameter) do&lt;br /&gt;
		if not self.class.mySfDynamicFieldAttribute(self.class, param, 'disable', false) and paramdata.sf then&lt;br /&gt;
			if not self.class.mySfDynamicFieldAttribute(self.class, param, 'hidden', false) then&lt;br /&gt;
				-- it is not set to hidden, so evaluate&lt;br /&gt;
				if args[param] and (type(args[param]) ~= 'string' or mw.ustring.len(args[param]) &amp;gt; 0) then&lt;br /&gt;
				-- first, see if it's there&lt;br /&gt;
					local value = args[param]&lt;br /&gt;
					local values&lt;br /&gt;
					if paramdata.values then&lt;br /&gt;
						values = self.class.mySfDynamicFieldAttribute(self.class, param, 'values', paramdata.values)&lt;br /&gt;
					end&lt;br /&gt;
					if type(value) == 'string' and mw.ustring.match(value, '^[0-9]+$') then&lt;br /&gt;
						-- because argument data coming form a parameter and not from database means a number is displayed as a string&lt;br /&gt;
						-- problem: if we store an only numbers containing entry in values, this will fail, i.e. paramdate.values = {'0', '123'} can never work&lt;br /&gt;
						value = tonumber(value)&lt;br /&gt;
					end&lt;br /&gt;
					if paramdata.cardinality == 'single' then&lt;br /&gt;
						if values and not FoundationClass.myTableTools.inTable(values, value) and ((paramdata.sf.input_type ~= 'combobox' and paramdata.sf.input_type ~= 'tokens') or paramdata.sf.existing_values_only) then&lt;br /&gt;
							-- 'values'-restriction given but value given not in values&lt;br /&gt;
							-- only loophole being tokens or combobox and NOT existring_values_only&lt;br /&gt;
							self:addError(&amp;quot;Ungültiger Wert für parameter ''&amp;quot; .. param .. &amp;quot;'' festgestellt: &amp;quot; .. mw.text.encode(tostring(value)))&lt;br /&gt;
						end&lt;br /&gt;
					elseif values and ((paramdata.sf.input_type ~= 'combobox' and paramdata.sf.input_type ~= 'tokens') or paramdata.sf.existing_values_only) then&lt;br /&gt;
						-- multivaluefield and 'values'-restriction given&lt;br /&gt;
						-- only loophole being tokens or combobox and NOT existring_values_only&lt;br /&gt;
						local vals = {}&lt;br /&gt;
						if type(args[param]) == 'table' then&lt;br /&gt;
							-- which can be, if we are initializing by data&lt;br /&gt;
							vals = args[param]&lt;br /&gt;
						else&lt;br /&gt;
							for fragment in mw.text.gsplit(args[param], _CFG.global.delimiter, true) do&lt;br /&gt;
								if fragment and mw.ustring.len(mw.text.trim(fragment)) &amp;gt; 0 then&lt;br /&gt;
									fragment = mw.text.trim(fragment)&lt;br /&gt;
									if mw.ustring.match(fragment, '^[0-9]+$') then&lt;br /&gt;
										fragment = tonumber(fragment)&lt;br /&gt;
									end&lt;br /&gt;
									table.insert(vals, fragment)&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						for _, v in pairs(vals) do&lt;br /&gt;
							if not FoundationClass.myTableTools.inTable(values, v) then&lt;br /&gt;
								self:addError(&amp;quot;Ungültiger Wert für parameter ''&amp;quot; .. param .. &amp;quot;'' festgestellt: &amp;quot; .. mw.text.encode(v))&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				elseif FoundationClass.myTableTools.inTable(_CFG.form.fieldOrder, param) and paramdata.severity == 'mandatory' then&lt;br /&gt;
					-- param not found but should be (since it is a form param) and it is also marked as mandatory and not set to hidden --&amp;gt; &lt;br /&gt;
					-- before we assume error lets check for the one loophole: field could be part of a &amp;quot;show on select&amp;quot;, thus being mandatory but not shown&lt;br /&gt;
					local issueError = true&lt;br /&gt;
					if showOnSelectComplex[param] then&lt;br /&gt;
						-- yeah, the field is part of a &amp;quot;show on select&amp;quot;. we only issue an error, if its selector indicates a show&lt;br /&gt;
						issueError = false&lt;br /&gt;
						for fieldname, showValue in pairs(showOnSelectComplex[param]) do&lt;br /&gt;
							if tostring(args[fieldname]) == tostring(showValue) then&lt;br /&gt;
								-- so it is shown and therefore should contain a value&lt;br /&gt;
								issueError = true&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if issueError then&lt;br /&gt;
						self:addError(&amp;quot;Pflichtfeld ''&amp;quot; .. param .. &amp;quot;'' fehlt!&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				_debug(self, 1, '  field ' .. param .. ' is set to hidden. Not processing!')&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			_debug(self, 1, '  field ' .. param .. ' is disabled or no sf-table given. Not processing!')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return _amIPlausible(self)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _privateMethod = function (self)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass._privateMethod() to do something')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- **************** declaration of public methods&lt;br /&gt;
function FoundationClass:addCategory(category)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addCategory(category) with category ' .. (category and tostring(category) or 'EMPTY') .. ', from ' .. tostring(self))&lt;br /&gt;
	local category = category&lt;br /&gt;
	if category and mw.ustring.len(category) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  found handler ' .. tostring(_private[self].superHandler) .. ', so we are probably not on the right page to lease a category. omitting categorizing into category &amp;quot;' .. category .. '&amp;quot;')&lt;br /&gt;
			--_debug(self, 3, '  refering category to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			--_private[self].superHandler:addCategory(category)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(_private[self].categories, category)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addError(errortext)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addError(errortext), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  with errortext ' .. tostring(errortext))&lt;br /&gt;
	local errortext = errortext&lt;br /&gt;
	if errortext and mw.ustring.len(errortext) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  refering error to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			errortext = (self:getUid() and (self:getUid() .. ': ') or '') .. errortext&lt;br /&gt;
			_private[self].superHandler:addError(errortext)&lt;br /&gt;
		end&lt;br /&gt;
		-- have to store it myself, too. otherwise, I would always be plausible...&lt;br /&gt;
		table.insert(_private[self].errors, errortext)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addInfobox()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addInfobox(), from ' .. tostring(self))&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addOutput(content)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addOutput(), from ' .. tostring(self))&lt;br /&gt;
	if type(content) == 'table' then&lt;br /&gt;
		_private[self].output:node(content)&lt;br /&gt;
		return true&lt;br /&gt;
	elseif mw.ustring.len(tostring(content)) &amp;gt; 0 then&lt;br /&gt;
		_private[self].output:wikitext(content)&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addPageBody()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addPageBody(), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 2, ' rendering errors and warnings and adding them to output')&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	_private[self].output:node(self:renderErrors())&lt;br /&gt;
			:node(self:renderWarnings())&lt;br /&gt;
	if self:goodToGo() then&lt;br /&gt;
		_private[self].output:wikitext('Please implement method &amp;lt;code&amp;gt;addPageBody()&amp;lt;/code&amp;gt; to display page content!')&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addError(errortext)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addError(errortext), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  with errortext ' .. tostring(errortext))&lt;br /&gt;
	local errortext = errortext&lt;br /&gt;
	if errortext and mw.ustring.len(errortext) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  refering error to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			errortext = (self:getUid() and (self:getUid() .. ': ') or '') .. errortext&lt;br /&gt;
			_private[self].superHandler:addError(errortext)&lt;br /&gt;
		end&lt;br /&gt;
		-- have to store it myself, too. otherwise, I would always be plausible...&lt;br /&gt;
		table.insert(_private[self].errors, errortext)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:addWarning(warning)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:addWarning(errortext), from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  with warning ' .. tostring(warning))&lt;br /&gt;
	local warning = warning&lt;br /&gt;
	if warning and mw.ustring.len(warning) &amp;gt; 0 then&lt;br /&gt;
		if _private[self].superHandler then&lt;br /&gt;
			_debug(self, 3, '  refering error to handler ' .. tostring(_private[self].superHandler))&lt;br /&gt;
			warning = (self:getUid() and (self:getUid() .. ': ') or '') .. warning&lt;br /&gt;
			_private[self].superHandler:addError(warning)&lt;br /&gt;
		end&lt;br /&gt;
		-- have to store it myself, too. otherwise, I would always be plausible...&lt;br /&gt;
		table.insert(_private[self].warnings, warning)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:getCoreData()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:getCoreData(), from ' .. tostring(self))&lt;br /&gt;
	return _private[self].coreData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:getUid()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:getUid(), from ' .. tostring(self))&lt;br /&gt;
	return _private[self].uid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:goodToGo()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:goodToGo(), from ' .. tostring(self))&lt;br /&gt;
	return _amIPlausible(self) and _private[self].initialized&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:initFromArgs(args)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:initFromArgs(args), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local args = args&lt;br /&gt;
	if not args or type(args) ~= 'table' then&lt;br /&gt;
		local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		args = getArgs(frame)&lt;br /&gt;
	end&lt;br /&gt;
	if not _private[self].loadedDataMyself then&lt;br /&gt;
		-- if we didn't load our data ourselves, assume that it comes from the store and assume, it's plausible&lt;br /&gt;
		_plausibilityTest(self, args)&lt;br /&gt;
		self:myPlausibilityTest(args)&lt;br /&gt;
	end&lt;br /&gt;
	if _amIPlausible(self) then&lt;br /&gt;
		-- first set my uid&lt;br /&gt;
		if not _private[self].coreData[FoundationClass.globalConfig.uidFieldName] then&lt;br /&gt;
			_private[self].coreData[FoundationClass.globalConfig.uidFieldName] = self:getUid()&lt;br /&gt;
		end&lt;br /&gt;
		-- if I use smw as store, also set my class&lt;br /&gt;
		if FoundationClass.usesDataStore(self.class, 'smw') and not _private[self].coreData[FoundationClass.globalConfig.smwClassProperty] then&lt;br /&gt;
			_private[self].coreData[FoundationClass.globalConfig.smwClassProperty] = self.class.name&lt;br /&gt;
		end&lt;br /&gt;
		-- get the data from args into _private[self].coreData&lt;br /&gt;
		for param, paramdata in pairs(_CFG.parameter) do&lt;br /&gt;
			if paramdata.cardinality == 'single' then&lt;br /&gt;
				_private[self].coreData[param] = args[param]&lt;br /&gt;
			else&lt;br /&gt;
				-- multivaluefield and given&lt;br /&gt;
				if type(args[param]) == 'table' then&lt;br /&gt;
					_private[self].coreData[param] = args[param]&lt;br /&gt;
				else&lt;br /&gt;
					local values&lt;br /&gt;
					if args[param] then&lt;br /&gt;
						values = {}&lt;br /&gt;
						for fragment in mw.text.gsplit(args[param], _CFG.global.delimiter, true) do&lt;br /&gt;
							if fragment and mw.ustring.len(mw.text.trim(fragment)) &amp;gt; 0 then&lt;br /&gt;
								table.insert(values, mw.text.trim(fragment))&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					_private[self].coreData[param] = values&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- here we do some individual argument processing&lt;br /&gt;
		_debug(self, 3, ' calling self:myArgumentProcessing(_private[self].coreData)')&lt;br /&gt;
		_private[self].coreData = self:myArgumentProcessing(_private[self].coreData)&lt;br /&gt;
		_debug(self, 3, ' object initialized with data:&amp;lt;pre&amp;gt;' .. FoundationClass.myTableTools.printTable(_private[self].coreData) .. '&amp;lt;/pre&amp;gt;')&lt;br /&gt;
		--this can cause fatal error, if coreData contains to much data, for instance references to title-objects&lt;br /&gt;
		_private[self].initialized = true&lt;br /&gt;
	end&lt;br /&gt;
	return _private[self].initialized&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:initFromData(data)&lt;br /&gt;
	-- this takes data that comes from a data store and initializes itself with it&lt;br /&gt;
	-- if we use data store smw, this makes a conversion from propery indexed data to parameter indexed data&lt;br /&gt;
	-- if we use both data stores, data from cargo has precedence&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:initFromData() to do something, from ' .. tostring(self))&lt;br /&gt;
	_debug(self, 3, '  got data:&amp;lt;pre&amp;gt;' .. FoundationClass.myTableTools.printTable(data) .. '&amp;lt;/pre&amp;gt;')&lt;br /&gt;
	local data = data&lt;br /&gt;
	_private[self].loadedDataFromDataStore = true&lt;br /&gt;
	if FoundationClass.usesDataStore(self.class, 'smw') then	-- if we have store cargo, we take the dat as is.&lt;br /&gt;
		-- transform the data array from { property_name : value } to { paramter : value }&lt;br /&gt;
		local properties = FoundationClass.smwGetProperty2ParameterTranslationTable(self.class)&lt;br /&gt;
		for property, param in pairs(properties) do&lt;br /&gt;
			local property_ = property&lt;br /&gt;
			local property = mw.ustring.gsub(property_, '_', ' ')&lt;br /&gt;
			if data[property_] and not data[param] then&lt;br /&gt;
				data[param] = data[property_]&lt;br /&gt;
				data[property_] = nil&lt;br /&gt;
			end&lt;br /&gt;
			if data[property] and not data[param] then&lt;br /&gt;
				data[param] = data[property]&lt;br /&gt;
				data[property] = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	data = self:myDataAdjustments(data)&lt;br /&gt;
	if FoundationClass.myTableTools.size(data) &amp;gt; 0 then&lt;br /&gt;
		return self:initFromArgs(data)&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:initMyself(uid)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:initMyself() to fetch my own data from datastore, from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local uid = uid or self:getUid()&lt;br /&gt;
	local myData = {}&lt;br /&gt;
	if uid and FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
		_debug(self, 2, ' using datastore \'cargo\' with uid: ' .. uid)&lt;br /&gt;
		-- build the query&lt;br /&gt;
		local query = { tables = _CFG.global.cargoTable, fields = {}, where = ''}&lt;br /&gt;
		local wherefield = FoundationClass.globalConfig.uidFieldName&lt;br /&gt;
		local wherefor = '&amp;quot;' .. uid .. '&amp;quot;'&lt;br /&gt;
		query.where = wherefield .. '=' .. wherefor&lt;br /&gt;
		local declaration = FoundationClass.cargoGenerateTableStructure(self.class)&lt;br /&gt;
		for field, _ in pairs(declaration) do&lt;br /&gt;
			table.insert(query.fields, field)&lt;br /&gt;
		end&lt;br /&gt;
		local result = FoundationClass.myCargoUtil.query(query, {limit = 1})&lt;br /&gt;
		if result and result[1] and type(result[1]) == 'table' and FoundationClass.myTableTools.size(result[1]) &amp;gt; 0 then&lt;br /&gt;
			-- now we have data, call initFromData()&lt;br /&gt;
			_debug(self, 2, '  Got data from cargo query, storing it')&lt;br /&gt;
			myData = result[1]&lt;br /&gt;
		elseif not FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Cargo query for \'' .. wherefield .. '=' .. wherefor .. '\' did not yield any result.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Cargo query for \'' .. wherefield .. '=' .. wherefor .. '\' did not yield any result.')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if uid and FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
		_debug(self, 2, ' using datastore \'smw\' with uid: ' .. uid)&lt;br /&gt;
		-- build the query&lt;br /&gt;
		local query = { select = {}, fields = {}, where = ''}&lt;br /&gt;
		query.select[FoundationClass.globalConfig.smwClassProperty] = self.class.name&lt;br /&gt;
		local wherefield = FoundationClass.globalConfig.uidFieldName&lt;br /&gt;
		local wherefor = '&amp;quot;' .. uid .. '&amp;quot;'&lt;br /&gt;
		query.select[wherefield] = wherefor &lt;br /&gt;
		local properties = FoundationClass.smwGetProperty2ParameterTranslationTable(self.class)&lt;br /&gt;
		for property, _ in pairs(properties) do&lt;br /&gt;
			table.insert(query.fields, property)&lt;br /&gt;
		end&lt;br /&gt;
		local result = FoundationClass.mySmwUtil.query(query, {limit = 1})&lt;br /&gt;
		if result and result[1] and type(result[1]) == 'table' and FoundationClass.myTableTools.size(result[1]) &amp;gt; 0 then&lt;br /&gt;
			for property, smwdata in pairs(result[1]) do&lt;br /&gt;
				if not myData[property] then&lt;br /&gt;
					myData[property] = smwdata&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not FoundationClass.myTableTools.size(myData) then&lt;br /&gt;
		if not uid then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: No valid uid was provided. Was type \'' .. type(uid) .. '.')&lt;br /&gt;
			self:addError('Could not initialize by myself: No valid uid was provided. Was type \'' .. type(uid) .. '.')&lt;br /&gt;
		elseif FoundationClass.usesDataStore(self.class, 'both') then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Neither Cargo nor Smw provided any data. Was looking for \'' .. FoundationClass.globalConfig.uidFieldName .. ' with uid ' .. &lt;br /&gt;
				uid .. ' in class ' .. self.class.name .. '.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Neither Cargo nor Smw provided any data. Was looking for \'' .. FoundationClass.globalConfig.uidFieldName .. ' with uid ' .. &lt;br /&gt;
				uid .. ' in class ' .. self.class.name .. '.')&lt;br /&gt;
		elseif FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Cargo query for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Cargo query for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
		else&lt;br /&gt;
			_debug(self, 2, '  Could not initialize by myself: Smw query in class \'' .. self.class.name .. '\' for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
			self:addError('Could not initialize by myself: Smw query in class \'' .. self.class.name .. '\' for \'' .. FoundationClass.globalConfig.uidFieldName .. '=' .. uid .. '\' did not yield any result.')&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- now we have data, call initFromData()&lt;br /&gt;
		_debug(self, 2, '  Got data from query, calling self:initFromData(myData)')&lt;br /&gt;
		_private[self].loadedDataMyself = true&lt;br /&gt;
		return self:initFromData(myData)&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:render()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:render(), from ' .. tostring(self))&lt;br /&gt;
	self:addOutput(self:renderCategories())&lt;br /&gt;
	local ret = tostring(_private[self].output)&lt;br /&gt;
	local debugLevel = FoundationClass.globalConfig.debugLevel or self.class.myConfiguration.global.debugLevel&lt;br /&gt;
	if debugLevel then&lt;br /&gt;
		ret = ret .. '\n\n' .. '&amp;lt;h2&amp;gt;Debug level is ' .. debugLevel .. '&amp;lt;/h2&amp;gt;\n' .. ClassDebug:printLog(debugLevel)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:renderCategories()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:renderCategories(), from ' .. tostring(self))&lt;br /&gt;
	node = mw.html.create('')&lt;br /&gt;
	if _private[self].categories and #_private[self].categories &amp;gt; 0 then&lt;br /&gt;
		for _, category in pairs(_private[self].categories) do&lt;br /&gt;
			node:wikitext('[[Category:' .. category .. ']]')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return node&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:renderErrors()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:renderErrors(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local error = require('Module:Error').error&lt;br /&gt;
	node = mw.html.create('')&lt;br /&gt;
	if #_private[self].errors &amp;gt; 0 then&lt;br /&gt;
		if _CFG.global.gardeningCategory and mw.title.getCurrentTitle().namespace ~= 10 then&lt;br /&gt;
			-- we have errors and we are currently not in template namespace. place article in gardening category&lt;br /&gt;
			self:addCategory(_CFG.global.gardeningCategory)&lt;br /&gt;
		end&lt;br /&gt;
		node:wikitext('&amp;lt;h2 style=&amp;quot;font-weight:bold;background-color:light-red;color:red&amp;quot;&amp;gt;Fehler&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		for _, str in pairs(_private[self].errors) do&lt;br /&gt;
			node:wikitext(error{ message=str, tag='div'})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return node&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:renderWarnings()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:renderWarnings(), from ' .. tostring(self))&lt;br /&gt;
	node = mw.html.create('')&lt;br /&gt;
	if #_private[self].warnings &amp;gt; 0 then&lt;br /&gt;
		node:wikitext('&amp;lt;h2&amp;gt;Hinweise&amp;lt;/h2&amp;gt;')&lt;br /&gt;
		local lis = mw.html.create('')&lt;br /&gt;
		for _, str in pairs(_private[self].warnings) do&lt;br /&gt;
			lis:tag('li')&lt;br /&gt;
				:wikitext(str)&lt;br /&gt;
				:done()&lt;br /&gt;
		end&lt;br /&gt;
		node:tag('ul')&lt;br /&gt;
			:node(lis)&lt;br /&gt;
	end&lt;br /&gt;
	return node&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:setSortkey(sortkey)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:setSortkey(sortkey) with sortkey ' .. (sortkey and tostring(sortkey) or 'EMPTY') .. ', from ' .. tostring(self))&lt;br /&gt;
	local sortkey = sortkey&lt;br /&gt;
	if sortkey and mw.ustring.len(sortkey) &amp;gt; 0 then&lt;br /&gt;
		if not _private[self].superHandler then&lt;br /&gt;
			local frame = mw.getCurrentFrame()&lt;br /&gt;
			frame:callParserFunction('DEFAULTSORT:' .. sortkey, 'noerror')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:setUid(uid)&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:setUid(uid), from ' .. tostring(self))&lt;br /&gt;
	if uid and (type(uid) == 'table' or type(uid) == 'integer') then&lt;br /&gt;
		_private[self].uid = uid&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:storeData()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:storeData(), from ' .. tostring(self))&lt;br /&gt;
	local _CFG = self.class.myConfiguration&lt;br /&gt;
	local thisPage = mw.title.getCurrentTitle()&lt;br /&gt;
	local ret = false&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	if FoundationClass.usesDataStore(self.class, 'cargo') and thisPage.namespace == 10 and lang:ucfirst(thisPage.text) == lang:ucfirst(_CFG.template.name) then&lt;br /&gt;
		-- we must check for cargo data store first, because declaration must take place on namespace template where we have no data...&lt;br /&gt;
		_debug(self, 2, ' proceeding (cargo data store detected, poceeding to declare)')&lt;br /&gt;
		-- declaration of the cargo-table&lt;br /&gt;
		local declaration = self.class.cargoGenerateTableStructure(self.class)&lt;br /&gt;
		-- remember: self refers to an object not an class(!!!!) and this method is a static, so we have to call it directly and not with the colon operator&lt;br /&gt;
		local ret = FoundationClass.myCargoUtil.declare(_CFG.global.cargoTable, declaration)&lt;br /&gt;
		if mw.ustring.len(ret) &amp;gt; 0 then&lt;br /&gt;
			self:addWarning(ret)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if _amIPlausible(self) and _private[self].initialized and not _private[self].loadedDataMyself then&lt;br /&gt;
		_debug(self, 2, ' proceeding (plausible, initialized and got data from extern)')&lt;br /&gt;
		if FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
			-- now store the cargo data&lt;br /&gt;
			local stash = {}&lt;br /&gt;
			local declaration = FoundationClass.cargoGenerateTableStructure(self.class)&lt;br /&gt;
			for field, _ in pairs(declaration) do&lt;br /&gt;
				if _private[self].coreData[field] then&lt;br /&gt;
					if type(_private[self].coreData[field]) == 'table' then&lt;br /&gt;
						stash[field] = table.concat(_private[self].coreData[field], _CFG.global.delimiter)&lt;br /&gt;
					else&lt;br /&gt;
						stash[field] = _private[self].coreData[field]&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- individual adjustments&lt;br /&gt;
			stash = self:myStashAdjustments(stash, 'cargo')&lt;br /&gt;
			-- we dont want myStashAdjustments add any fields that is not a cargo field (in case it accidently added a field, that was meant for smw)&lt;br /&gt;
			if stash and type(stash) == 'table' then&lt;br /&gt;
				for field, _ in pairs(stash) do&lt;br /&gt;
					if not declaration[field] then&lt;br /&gt;
						stash[field] = nil&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if stash and FoundationClass.myTableTools.size(stash) &amp;gt; 0 then&lt;br /&gt;
				local result = FoundationClass.myCargoUtil.store(_CFG.global.cargoTable, stash)&lt;br /&gt;
				if mw.ustring.len(result) &amp;gt; 0 then&lt;br /&gt;
					self:addWarning(result)&lt;br /&gt;
				end&lt;br /&gt;
				ret = true&lt;br /&gt;
			else&lt;br /&gt;
				ret = false&lt;br /&gt;
			end&lt;br /&gt;
		end	-- of if FoundationClass.usesDataStore(self.class, 'cargo') then&lt;br /&gt;
		if FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
			-- now store smw properties&lt;br /&gt;
			local stash = {}&lt;br /&gt;
			local properties = FoundationClass.smwGetProperty2ParameterTranslationTable(self.class)&lt;br /&gt;
			-- first get all parameter and their data in stash&lt;br /&gt;
			for _, parameter in pairs(properties) do&lt;br /&gt;
				if _private[self].coreData[parameter] then&lt;br /&gt;
					stash[parameter] = _private[self].coreData[parameter]&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- individual adjustments, still with parameter as keys&lt;br /&gt;
			stash = self:myStashAdjustments(stash, 'smw')&lt;br /&gt;
			-- now convert the stash keys from parameter to property&lt;br /&gt;
			-- that also takes care of any fields, that were accidently added for a cargo store but have no property assigned&lt;br /&gt;
			if stash and FoundationClass.myTableTools.size(stash) &amp;gt; 0 then&lt;br /&gt;
				local stash_new = {}&lt;br /&gt;
				for property, parameter in pairs(properties) do&lt;br /&gt;
					stash_new[property] = stash[parameter]&lt;br /&gt;
				end&lt;br /&gt;
				stash = stash_new&lt;br /&gt;
			end&lt;br /&gt;
			if stash and FoundationClass.myTableTools.size(stash) &amp;gt; 0 then&lt;br /&gt;
				local result&lt;br /&gt;
				if _CFG.global.smwIsSubobject then&lt;br /&gt;
					result = FoundationClass.mySmwUtil.subobject(stash, self:getUid())&lt;br /&gt;
				else&lt;br /&gt;
					result = FoundationClass.mySmwUtil.set(stash)&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.len(result) &amp;gt; 0 then&lt;br /&gt;
					self:addWarning(result)&lt;br /&gt;
				end&lt;br /&gt;
				ret = true&lt;br /&gt;
			else&lt;br /&gt;
				ret = false&lt;br /&gt;
			end&lt;br /&gt;
		end	-- of if FoundationClass.usesDataStore(self.class, 'smw') then&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:method()&lt;br /&gt;
	_debug(self, 1, 'entering FoundationClass:method() to do something, from ' .. tostring(self))&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- these are special methods, so they are placed here. they are kind of abstract-ish in a way, that they thow a lua exception&lt;br /&gt;
-- if you don't have them implemented on your inherited class&lt;br /&gt;
function FoundationClass.static:mySfDynamicFieldAttribute(fieldname, attribute, value)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass.static:mySfDynamicFieldAttribute(fieldname, attribute, value), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. '.static:mySfDynamicFieldAttribute(fieldname, attribute, value). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myArgumentProcessing(coreData)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myArgumentProcessing(coreData), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. ':myArgumentProcessing(coreData). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myDataAdjustments(data)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myDataAdjustments(data), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. ':myDataAdjustments(coreData). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myPlausibilityTest(args)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myPlausibilityTest(args), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ' .. tostring(self.class) .. ':myPlausibilityTest(args). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function FoundationClass:myStashAdjustments(stash)&lt;br /&gt;
	_debug(self, 1, 'ERROR: entering FoundationClass:myStashAdjustments(stash), from ' .. tostring(self))&lt;br /&gt;
	error('You have to implement ClassName:myStashAdjustments(stash). See Module:Foundationclass for documentation on this! (calling from ' .. tostring(self) .. ')', 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return FoundationClass&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Formular:Kapitel&amp;diff=2984</id>
		<title>Formular:Kapitel</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Formular:Kapitel&amp;diff=2984"/>
		<updated>2016-02-15T07:20:26Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Änderung 2983 von Calebros (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{#invoke:Chapter|sfGenerateFormEntry}}{{#invoke:Chapter|categorize}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{#invoke:Chapter|sfGenerateForm}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Note: The class engine sets category &amp;quot;CamNet forms&amp;quot; automatically in function categorize --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Formular:Kapitel&amp;diff=2983</id>
		<title>Formular:Kapitel</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Formular:Kapitel&amp;diff=2983"/>
		<updated>2016-02-15T07:19:43Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;{{{info|add title=Kapitel erzeugen|edit title=Kapitel bearbeiten}}}&amp;lt;h2&amp;gt;Kapitel&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;Hier wird neben ein paar Kerndaten das komplette Spielgeschehen (so detailliert wie möglich und gewünscht) eingetragen, um das kollektive Gedächtnis zu unterstützen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;wikiPreview&amp;quot; style=&amp;quot;display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Kapitel-Kerndaten&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{{for template|Chapter|label=Kapitel}}}&lt;br /&gt;
&amp;lt;table class=&amp;quot;formtable&amp;quot; style=&amp;quot;width:auto;&amp;quot;&amp;gt;&amp;lt;tr id=&amp;quot;row_title&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Titel&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|title|size=80|mandatory|placeholder=Title der Spielsitzung|input type=text}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_number&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Kapitelnummer&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|number|default=12|input type=regexp|regexp=^[0-9]*[^0-9]1?[0-9]+$|mandatory|base type=text|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_start_date&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Startdatum&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|start_date|size=16|enable input field|show week numbers|mandatory|maxlength=13|last date=2001/12/31|date format=dd.mm.yy|first date=1999/09/01|default=2000/04/23|input type=datepicker|show reset button|week start=1|highlight days of week=0,6}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_end_date&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Enddatum&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|end_date|size=16|enable input field|show week numbers|mandatory|maxlength=13|last date=2001/12/31|date format=dd.mm.yy|first date=1999/09/01|default=2000/06/01|input type=datepicker|show reset button|week start=1|highlight days of week=0,6}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_location&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Austragungsort&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|location|values from concept=Places|default=New York|input type=combobox|mandatory|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_auxiliary_settings&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Weitere Orte&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|auxiliary_settings|values from concept=Places|list|mapping property=Has display title|input type=tokens|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_pcs&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Klüngelmitglieder&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|pcs|existing values only|input type=tokens|values=Andrew,Franzi,Liz,Mark,Neil,Olaf,Peter,Sebak,Susan,Vincenzo|list|mapping property=Has display title|mandatory|default=Franzi, Liz, Mark, Neil, Olaf, Peter, Susan|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_npcs&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Weitere Teilnehmer&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|npcs|placeholder=Bitte auswählen!|input type=tokens|list|values from category=Personen|mandatory|mapping property=Has display title|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_session_date&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Spieldatum&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|session_date|enable input field|mandatory|maxlength=13|date format=dd.mm.yy|size=16|show week numbers|input type=datepicker|show reset button|week start=1|highlight days of week=0,6}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_session_duration&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Spieldauer&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|session_duration|message=Bitte eine Zahl zwischen 1 und 19 angeben|input type=regexp|regexp=/^1?[0-9]$/|mandatory|base type=text|size=2}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_session_location&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Spielort&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|session_location|size=80|mandatory|default=Paderborn|input type=text}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_description&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Beschreibung&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|description|editor=wikieditor|input type=textarea|cols=80|rows=10|mandatory|autogrow}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;'''(*) Pflichtfeld'''&lt;br /&gt;
&amp;lt;h1&amp;gt;Gesammelte Informationen&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Informatioen&amp;lt;/h2&amp;gt;&lt;br /&gt;
Habt ihr wichtige Informationen erhalten, die ihr lieber kondensiert hinterlegen wollt?&lt;br /&gt;
{{{field|gathered_information|holds template}}}&lt;br /&gt;
&amp;lt;h1&amp;gt;Bemerkenswerte Ereignisse&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Ereignisse&amp;lt;/h2&amp;gt;&lt;br /&gt;
Wenn im Kapitel bemerkenswerten Ereignisse statt gefunden haben, die so wichtig erscheinen, dass sie eine Erwähnung auf der Zeitlinie (und ggf. eine Platzierung auf der Karte) wert sind, diese bitte hier eintragen.&lt;br /&gt;
{{{field|associated_events|holds template}}}&lt;br /&gt;
&amp;lt;h1&amp;gt;Zusätzliche Kartenmarkierungen&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Kartenmarkierungen&amp;lt;/h2&amp;gt;&lt;br /&gt;
Neben den Eventmarkierungen die automatisch gesetzt werden, können hier noch weitere Kartenmarkierungen für wichtige Orte gesetzt werden.&lt;br /&gt;
{{{field|additional_map_marker|holds template}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;h1&amp;gt;Geschehnisse&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{{standard input|free text|autogrow=true|editor=wikieditor|cols=160|rows=12|preload=Template:Boilerplate chapter}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{{for template|Info|label=Informationsfragment|embed in field=Chapter[gathered_information]|multiple|add button text=Information anlegen|minimum instances=0}}}&amp;lt;table class=&amp;quot;formtable&amp;quot; style=&amp;quot;width:auto;&amp;quot;&amp;gt;&amp;lt;tr id=&amp;quot;row_payload&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Information&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|payload|editor=wikieditor|input type=textarea|rows=4|mandatory|cols=80|autogrow}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_source&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Quelle&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|source|values from concept=Sources|list|mapping property=has display title|mandatory|input type=tokens|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_target&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Objekt&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|target|placeholder=Person, Organisation, Thema|input type=tokens|list|mapping property=Has display title|mandatory|values from concept=Targets|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_type&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Typ&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|type|existing values only|values=Hintergrund,Fähigkeiten,Verbindungen,Agenda,Kommentare|input type=combobox|mandatory|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;{{{end template}}}&lt;br /&gt;
{{{for template|Event|label=Ereignis|embed in field=Chapter[associated_events]|multiple|add button text=Ereignis anlegen|minimum instances=0}}}&amp;lt;table class=&amp;quot;formtable&amp;quot; style=&amp;quot;width:auto;&amp;quot;&amp;gt;&amp;lt;tr id=&amp;quot;row_title&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Titel&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|title|size=80|mandatory|placeholder=Kurzbeschreibung|input type=text}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_date&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Datum&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_date|enable input field|mandatory|show reset button|date format=dd.mm.yyyy|size=80|default=01.06.2000|input type=datepicker|show week numbers|week start=1|highlight days of week=0,6}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_placing&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Verortung&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_placing|values=Schauplatz,frei|input type=radiobutton|show on select=Schauplatz=&amp;gt;row_event_location;frei=&amp;gt;row_event_address;frei=&amp;gt;row_event_coordinates;|default=frei|mandatory}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_location&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Schauplatz&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_location|values from concept=Places|input type=combobox|mandatory|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_address&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Adresse&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_address|size=80|input type=text}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_coordinates&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Koordinaten&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_coordinates|zoom=13|center=40.7412551,-73.9940724|input type=googlemaps|height=300|geoservice=googlemaps|width=400}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_incity&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Stadt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_incity|placeholder=Stadtname|input type=combobox|values from category=Städte|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_persons&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Personen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_persons|placeholder=Namen|list|values from category=Personen|input type=tokens|mapping property=Has display title|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_event_description&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Beschreibung&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|event_description|editor=wikieditor|input type=textarea|cols=80|rows=10|mandatory|autogrow}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;{{{end template}}}&lt;br /&gt;
{{{for template|Marker|label=Kartenmarker|embed in field=Chapter[additional_map_marker]|multiple|add button text=Kartenmarker setzen|minimum instances=0}}}&amp;lt;table class=&amp;quot;formtable&amp;quot; style=&amp;quot;width:auto;&amp;quot;&amp;gt;&amp;lt;tr id=&amp;quot;row_name&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|name|mandatory|size=80|input type=text}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_marker_localization&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Verortung&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|marker_localization|values=Adresse,Koordinaten|input type=radiobutton|show on select=Koordinaten=&amp;gt;row_marker_coordinates;Adresse=&amp;gt;row_marker_address;|default=Adresse|mandatory}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_marker_address&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Adresse&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|marker_address|mandatory|size=80|input type=text}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_marker_coordinates&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Koordinaten&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|marker_coordinates|zoom=13|center=40.7412551,-73.9940724|input type=googlemaps|geoservice=googlemaps|mandatory|height=300|width=400}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_marker_incity&amp;quot;&amp;gt;&amp;lt;td&amp;gt;Stadt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|marker_incity|placeholder=Stadtname|input type=combobox|values from category=Städte|size=80}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;tr id=&amp;quot;row_marker_description&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Beschreibung&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{{field|marker_description|editor=wikieditor|input type=textarea|rows=4|mandatory|cols=80|autogrow}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;{{{end template}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;formbuttons&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|changes}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{for template|Navbox chapter|label=Kapitelnavigationsbox}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Modul:Chapter&amp;diff=2982</id>
		<title>Modul:Chapter</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Modul:Chapter&amp;diff=2982"/>
		<updated>2016-02-15T07:17:43Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local Class = require('Module:Chapter/class')&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
&lt;br /&gt;
function p.categorize(frame)&lt;br /&gt;
	return tostring(Class:categorize())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.categoryPage(frame)&lt;br /&gt;
	return tostring(Class:categoryPage())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.explainDataStore(frame)&lt;br /&gt;
	return tostring(Class:explainDataStore())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gardeningCategoryPage(frame)&lt;br /&gt;
	return tostring(Class:gardeningCategoryPage())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sfGenerateForm(frame)&lt;br /&gt;
	return '&amp;lt;pre&amp;gt;' .. mw.text.nowiki(tostring(Class:sfGenerateForm())) .. '&amp;lt;/pre&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sfGenerateFormEntry(frame)&lt;br /&gt;
	return tostring(Class:sfGenerateFormEntry())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sfGenerateFormLink(frame)&lt;br /&gt;
	return tostring(Class:sfGenerateFormLink())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.templateDocumentation(frame)&lt;br /&gt;
	return tostring(Class:templateDocumentation())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local me = Class:new(mw.title.getCurrentTitle().prefixedText)&lt;br /&gt;
	me:initFromArgs(args)&lt;br /&gt;
	me:storeData()&lt;br /&gt;
	me:addInfobox()&lt;br /&gt;
	me:addPageBody()&lt;br /&gt;
 	return me:render()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Modul:Chapter&amp;diff=2981</id>
		<title>Modul:Chapter</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Modul:Chapter&amp;diff=2981"/>
		<updated>2016-02-15T07:17:03Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local Class = require('Module:Chapter/class')&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
&lt;br /&gt;
function p.categorize(frame)&lt;br /&gt;
	return tostring(Class:categorize())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.categoryPage(frame)&lt;br /&gt;
	return tostring(Class:categoryPage())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.explainDataStore(frame)&lt;br /&gt;
	return tostring(Class:explainDataStore())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gardeningCategoryPage(frame)&lt;br /&gt;
	return tostring(Class:gardeningCategoryPage())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sfGenerateForm(frame)&lt;br /&gt;
	return mw.text.nowiki(tostring(Class:sfGenerateForm()))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sfGenerateFormEntry(frame)&lt;br /&gt;
	return tostring(Class:sfGenerateFormEntry())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sfGenerateFormLink(frame)&lt;br /&gt;
	return tostring(Class:sfGenerateFormLink())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.templateDocumentation(frame)&lt;br /&gt;
	return tostring(Class:templateDocumentation())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local me = Class:new(mw.title.getCurrentTitle().prefixedText)&lt;br /&gt;
	me:initFromArgs(args)&lt;br /&gt;
	me:storeData()&lt;br /&gt;
	me:addInfobox()&lt;br /&gt;
	me:addPageBody()&lt;br /&gt;
 	return me:render()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Kazemde_Utandi&amp;diff=2310</id>
		<title>Kazemde Utandi</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Kazemde_Utandi&amp;diff=2310"/>
		<updated>2016-01-31T12:11:41Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=Kazemde Utandi.jpg | displayname=Kazemde Utandi | fullname=Kazemde Utandi | category=NSC | player=Tobi | type=Vampir | sect=Unabhä…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Kazemde Utandi.jpg&lt;br /&gt;
| displayname=Kazemde Utandi&lt;br /&gt;
| fullname=Kazemde Utandi&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Unabhängig&lt;br /&gt;
| clan=Jünger des Set&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| original_generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=40&lt;br /&gt;
| residence=Madrid&lt;br /&gt;
| office=&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hintergrund ==&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=* Hat Beziehungen zu [[Hesha]], welcher Art auch immer&lt;br /&gt;
* [[Peter]] schuldet ihm einen Gefallen seit [[Dunkle Schwestern]]&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Sanford_Brown&amp;diff=2308</id>
		<title>Sanford Brown</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Sanford_Brown&amp;diff=2308"/>
		<updated>2016-01-31T12:03:42Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=Sanford Brown.jpg | displayname=Sanford | fullname=Adeptus Magnus Sanford Brown | category=NSC | player=Tobi | type=Vampir | sect=C…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Sanford Brown.jpg&lt;br /&gt;
| displayname=Sanford&lt;br /&gt;
| fullname=Adeptus Magnus Sanford Brown&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Tremere&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| original_generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=32&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=Gildehaus der fünf Bezirke&lt;br /&gt;
| chapter_of_first_appearance=&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hintergrund ==&lt;br /&gt;
Der ehemalige Sheriff von Washington hat sich recht schnell in seine neue Aufgabe eingefunden. Ebenfalls ein praktizierender Kampfmagier obliegt es zurzeit ihm, bei Neuankömmlingen die im hiesigen Grenzgebiet so wichtigen Grundlagen zur Selbstverteidigung zu schaffen. Gut unterrichtete Quellen (sprich die Flüsterkolonne, der Flurfunkt und die Gerüchteküche) wissen indes zu berichten, dass Sanford mehr als nur die Hälfte seiner Nächte außerhalb des Gildehauses verbringt und wohl noch anderen Tätigkeiten nachgeht.&lt;br /&gt;
| abilities=* Thaumaturgie&lt;br /&gt;
** Lockruf der Flammen&lt;br /&gt;
| relations=* Hat früher als Sheriff von [[Washington]] für den damaligen Prinzen [[Vitel]] gearbeitet.&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Pf%C3%B6rtner_Talbott&amp;diff=2306</id>
		<title>Pförtner Talbott</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Pf%C3%B6rtner_Talbott&amp;diff=2306"/>
		<updated>2016-01-31T11:51:13Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=Pförtner Talbott.jpg | displayname=Pförtner Talbott | fullname=Pförtner Talbott | category=NSC | player=Tobi | type=Mensch | sec…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Pförtner Talbott.jpg&lt;br /&gt;
| displayname=Pförtner Talbott&lt;br /&gt;
| fullname=Pförtner Talbott&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Mensch&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Tremere&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| original_generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=60&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=Gildehaus der fünf Bezirke&lt;br /&gt;
| chapter_of_first_appearance=&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hintergrund ==&lt;br /&gt;
Der Bruder Pförtner (der hinter seinem Rücken von einigen Witzbolden auch gerne Torwächter genannt wird) ist nunmehr seit fast 40 Jahren im Dienst des Gildehauses und wacht über den im Barnard College gelegenen Haupteingang. Er ist beliebt bei den Tremerenovizen und menschlichen Studierenden gleichermaßen und hat meist immer ein freundliches Wort auf den Lippen. Ob er geghoult worden ist (von wem auch immer), ist Thema vieler Diskussionen. Fest steht, dass er in einem besonderen Verhältnis zur Regenta steht.&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Nathanael_Berendt&amp;diff=2304</id>
		<title>Nathanael Berendt</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Nathanael_Berendt&amp;diff=2304"/>
		<updated>2016-01-31T11:51:08Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=Nathanael Berendt.jpg | displayname=Regentus Secundus Berendt | fullname=Regentus secundus Dr. Dr. med. thau. rer. nat. Nathanael B…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Nathanael Berendt.jpg&lt;br /&gt;
| displayname=Regentus Secundus Berendt&lt;br /&gt;
| fullname=Regentus secundus Dr. Dr. med. thau. rer. nat. Nathanael Berendt&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Tremere&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| original_generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=65&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=Gildehaus der fünf Bezirke&lt;br /&gt;
| chapter_of_first_appearance=&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hintergrund ==&lt;br /&gt;
Regentus Berendt ist ein Meister der offensiven Magie: er wird unter den zehn besten Kampfmagier des Clan Tremere geführt. Trotz seines hohen Alters – Gerüchte besagen, dass er als Mediziner und Forscher im ausgehenden 18. Jhd. in Deutschland gelebt hat – war er noch nie Regent eines eigenen Clanhauses. Einige schreiben dies seiner regen Wandertätigkeit zu, ist er doch häufig nahe großer Konfliktherde anzutreffen. Andere wiederrum sind überzeugt, dass Berendt genau weiß, was er will und gelernt hat abzuwarten. Eines ist sicher: Die Wetten, dass in seinen Adern Eiswasser anstatt Blut fließt, laufen noch immer. Aktuelle Quote ist übrigens 4:1.&lt;br /&gt;
&lt;br /&gt;
Sein Verbleib im Gildehaus nach der Schlacht von New York hat einige Beobachter überrascht. Generell wird dies der unsicheren Lage an der Grenze zum Sabattgebiet zugeschrieben. Regenta Sturbridge war jedenfalls nur allzu gerne bereit, einen der beiden frei gewordenen Regentenplätze Dr. Berendt anzuvertrauen. Ob dies nur übergangsweise der Fall ist oder ob daraus eine permanente Abordnung wird, bleibt abzuwarten.&lt;br /&gt;
&lt;br /&gt;
Seine aktuellen Verantwortungsfelder im Clanhaus von New York sind:&lt;br /&gt;
* Leitung des Clanhauses des Südens&lt;br /&gt;
* Lehre&lt;br /&gt;
* Buchführung&lt;br /&gt;
* Personal- und Rechnungswesen&lt;br /&gt;
* Bibliothek&lt;br /&gt;
| abilities=* Thaumaturgie&lt;br /&gt;
** Lockruf der Flammen&lt;br /&gt;
** Hände der Vernichtung&lt;br /&gt;
| relations=Arbeitet häufiger mit [[Gustav Degenhardt|Regentus secundus Prof. Dr. Gustav Degenhardt]] zusammen.&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Pf%C3%B6rtner_Talbott.jpg&amp;diff=1708</id>
		<title>Datei:Pförtner Talbott.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Pf%C3%B6rtner_Talbott.jpg&amp;diff=1708"/>
		<updated>2016-01-31T11:50:31Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Gustav_Degenhardt.jpg&amp;diff=1707</id>
		<title>Datei:Gustav Degenhardt.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Gustav_Degenhardt.jpg&amp;diff=1707"/>
		<updated>2016-01-31T11:48:16Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:William_Norton.jpg&amp;diff=1706</id>
		<title>Datei:William Norton.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:William_Norton.jpg&amp;diff=1706"/>
		<updated>2016-01-31T11:47:54Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=William_Norton&amp;diff=2302</id>
		<title>William Norton</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=William_Norton&amp;diff=2302"/>
		<updated>2016-01-31T11:44:42Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=William Norton.jpg | displayname=Regentus Secundus Norton | fullname=Regentus secundus Prof. William Norton | category=NSC | player…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=William Norton.jpg&lt;br /&gt;
| displayname=Regentus Secundus Norton&lt;br /&gt;
| fullname=Regentus secundus Prof. William Norton&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Axel&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Tremere&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| original_generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=70&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=Gildehaus der fünf Bezirke&lt;br /&gt;
| chapter_of_first_appearance=&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hintergrund ==&lt;br /&gt;
Regentus Norton ist ein Meister aller Formen der Übergangsmagie. Seine Fähigkeit verschiedene zustände gleichzeitig zu bewahren ermöglichte Ihm die Verbindung der Clanhäuser in Wien teilweise zu kopieren, bzw. tiefgründige Beiträge zur Teleportionslehre beizusteuern. Der Kunst der Teleportion unterliegt strenger Auflagen und wird nur an ausgewählte Adepten und Regenten weitervermittelt. Seine ehemalige Tätigkeit als Physikprofessor an der NYU bildet die Grundlage seiner didaktischen Fähigkeiten. Er hat bisher zwei Einladungen ausgeschlagen nach Wien zu ziehen und dort ein eigenes  Chantrie neu zu formen. Es heißt Regentin Sturbridge wüsste zu verhindern, dass einer ihr prestigeträchtigsten Lehrer geht. &lt;br /&gt;
&lt;br /&gt;
Seine aktuellen Verantwortungsfelder im Clanhaus von New York sind:&lt;br /&gt;
* Leitung des Clanhauses des Ostens&lt;br /&gt;
* Lehre&lt;br /&gt;
* Verbindung der Clanhäuser&lt;br /&gt;
| abilities=* Thaumaturgie&lt;br /&gt;
** Bewegung durch den Geist (Hauptpfad)&lt;br /&gt;
** Pfad der Fortgeschrittenen Teleportion&lt;br /&gt;
| relations=Kann mit allen gut.&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Gustav_Degenhardt&amp;diff=2300</id>
		<title>Gustav Degenhardt</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Gustav_Degenhardt&amp;diff=2300"/>
		<updated>2016-01-31T11:43:00Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=Gustav Degenhardt.jpg | displayname=Regentus Secundus Degenhardt | fullname=Regentus secundus Prof. Dr. Gustav Degenhardt | categor…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Gustav Degenhardt.jpg&lt;br /&gt;
| displayname=Regentus Secundus Degenhardt&lt;br /&gt;
| fullname=Regentus secundus Prof. Dr. Gustav Degenhardt&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Axel&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Tremere&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| original_generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=50&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=Gildehaus der fünf Bezirke&lt;br /&gt;
| chapter_of_first_appearance=&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Hintergrund ==&lt;br /&gt;
Regentus Degenhardt ist ein Meister der hermetischen Schöpfungslehre. Er beherrscht nahezu jedes Ritual dieses Pfades. Darüber hinaus ist er mit der Erweiterung des Clanhauses beauftragt. Nach den Kämpfen in New York unterzog er die notwendigen Umbauarbeiten, um die Flüchtlinge zu beherbergen. Degenhardt stammt aus dem preußischen Königreich und hat lange Jahre des Studiums hinter sich. Fleiß und Engagement sind Grundeigenschaften, die von ihm erwartet werden. Wehe dem Adepten, der sich Liederlichkeit oder Faulheit hingibt. Als einer der ältesten Regenten des Clanhauses New York und Verfechter der bewährten Traditionen, hätte die Leitung ihm zu Teil werden können, doch die Ratsherrin Meerlinda erkannte, dass seine Fähigkeiten in der Lehre zu kostbar waren, um sie für etwas Prestige zu opfern.&lt;br /&gt;
&lt;br /&gt;
Seine aktuellen Verantwortungsfelder im Clanhaus von New York sind:&lt;br /&gt;
* Leitung des Clanhauses des Nordens&lt;br /&gt;
* Lehre (Pfade, Alchemie, Transmutation)&lt;br /&gt;
* Ausbau und Umbauarbeiten&lt;br /&gt;
* Verwaltung diverser Paraphernalien&lt;br /&gt;
| abilities=* Thaumaturgie&lt;br /&gt;
** Pfad der Schöpfung (Hauptpfad)&lt;br /&gt;
** Pfad der Elemente&lt;br /&gt;
| relations=Arbeitet häufiger mit [[Nathanael Berendt|Regentus secundus Berendt]] zusammen.&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Nathanael_Berendt.jpg&amp;diff=1705</id>
		<title>Datei:Nathanael Berendt.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Nathanael_Berendt.jpg&amp;diff=1705"/>
		<updated>2016-01-31T11:38:28Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:No%C3%A9mi_St._John.jpg&amp;diff=1704</id>
		<title>Datei:Noémi St. John.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:No%C3%A9mi_St._John.jpg&amp;diff=1704"/>
		<updated>2016-01-31T11:38:15Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Berman&amp;diff=2166</id>
		<title>Berman</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Berman&amp;diff=2166"/>
		<updated>2015-05-19T05:53:25Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Richard Berman.jpg&lt;br /&gt;
| displayname=Richard Berman&lt;br /&gt;
| fullname=Richard A. Berman&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Axel&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Ventrue&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=Seneschall&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=Die Schale der Verständigung&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
&lt;br /&gt;
Die Öffentlichkeit weiß wenig über Richard Berman. Sein Industrieapparat &amp;quot;Berman Industries&amp;quot;, der sich vor allem auf Schwerindustrie (Zementfabriken, Bauunternehmen, Stahlindustrie, usw.) beschränkt, ist zwar allgemein bekannt und ein national operierender Konzern in den Staaten. Weniger jedoch kennt man seine Holding Gesellschaft &amp;quot;Hildebrandt-Kleinfort-Bernal&amp;quot; (HKB), die in New York ihren Stammsitz hat und durch mehrere Proxies an vielen nationalen wie internationalen Firmen Aktien hält.&lt;br /&gt;
&lt;br /&gt;
Politisch hat sich Berman hauptsächlich auf New York und dessen näheres Umfeld beschränkt. Einzig Investionen bei Bekannten und Freunden tätigte er gelegentlich, um kleinere Gefallen als Gegenleistung zu erhalten. Seine Beziehungen zu den Ventrue in Amerika waren stets gut, er gilt als angesehener Geschäftsmann, der mit manchmal gerade unheimlich gutem Kalkül Aktiengeschäfte tätigt, fast als wüsste er Dinge, die Anderen entgehen.&lt;br /&gt;
&lt;br /&gt;
Es kam ab und an zu Reibereien mit Ansässigen anderer Clans, die aber stets in beiderseitigem Einverständnis beigelegt werden konnten. Er hatte in der Vergangenheit jeoch des öfteren Streit mit den Anhängern des Clans Brujah wie denen des Clans Nosferatu. Weswegen er eine leicht distanzierte Haltung zu diesen einnahm. Seit dem Krieg scheint diese Distanz merklich kleiner geworden zu sein, auch wenn viele seiner Clansbrüder sich das durch erhöhten Nutzwert dieser beiden Clans während des Konfliktes erklären.&lt;br /&gt;
&lt;br /&gt;
Vor dem Känpfen entwickelte er Ambitionen mehr Kontrolle über die öffentliche Organe der Stadt zu erhalten. Aus diesem Grund unterstützte er auch eine New Yorker Polizei Familie, dessen Familienvater Aussichten auf den Posten des Policecommissioners hatte.&lt;br /&gt;
Einige Spendengalas, Öffentliche Diskussionen und Benefizkonzerte später erreichte Mr. Hamilton den Posten des Vice-Commissioners und hatte erstmals Chancen auf den Posten seines Vorgesetzten. &lt;br /&gt;
Doch dann fiel dieses Projekt fast in sich zusammen, als die Ehefrau des Comissioners plötzlich entführt wurde.&lt;br /&gt;
&lt;br /&gt;
Nun 3 Monate später scheint sich alles wieder einzufinden. Ob die Investition trotzdem abgeschrieben werden muss oder sich im Endeffekt als wertvoller den je herausstellt, bleibt abzuwarten.&lt;br /&gt;
&lt;br /&gt;
Wie unser Klüngel mittlerweile weiß, ist er eigentlich ein [[Nosferatu]], der diesen Fakt jedoch geheimhält.&lt;br /&gt;
| abilities=Verdunklung, gut genug um Susan gegenüber seine Maske aufrecht zu erhalten.&lt;br /&gt;
| relations=Hat Susan und David während Davids Wahlkampf in New York unterstützt.&lt;br /&gt;
Ist häufig im Umfeld von Vitel gesehen worden.&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
* In Wahrheit ein Nosferatu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Sen._Escalon&amp;diff=2114</id>
		<title>Sen. Escalon</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Sen._Escalon&amp;diff=2114"/>
		<updated>2015-05-18T12:24:40Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Sen. Escalon.jpg&lt;br /&gt;
| displayname=Sen. Escalon&lt;br /&gt;
| fullname=&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Ghul&lt;br /&gt;
| sect=&lt;br /&gt;
| clan=&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=Liz&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=45&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven = unbekannt&lt;br /&gt;
| chapter_of_first_appearance=Rückkehr nach Hazatlan&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Aesir&amp;diff=2184</id>
		<title>Aesir</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Aesir&amp;diff=2184"/>
		<updated>2015-05-08T19:04:42Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Elvis.jpg&lt;br /&gt;
| displayname=Elvis&lt;br /&gt;
| fullname=Elvis&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=SL&lt;br /&gt;
| type=Gargyl&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Tremere&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=St. Patrick's Cathedral&lt;br /&gt;
| chapter_of_first_appearance=Das Auge des Hazimel&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Thompson&amp;diff=2284</id>
		<title>Thompson</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Thompson&amp;diff=2284"/>
		<updated>2015-05-03T19:25:53Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Thompson.jpg&lt;br /&gt;
| displayname=&lt;br /&gt;
| fullname=&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Mensch&lt;br /&gt;
| sect=&lt;br /&gt;
| clan=&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=&lt;br /&gt;
| residence=&lt;br /&gt;
| office=&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=Die Sünden des Blutes&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=* Angestellter von [[Hesha]]&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Al-Ashrad&amp;diff=2288</id>
		<title>Al-Ashrad</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Al-Ashrad&amp;diff=2288"/>
		<updated>2015-05-03T19:25:33Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=al-Ashrad.jpg | displayname= | fullname= | category=NSC | player=Tobi | type=Vampir | sect=Camarilla | clan=Assamiten | antitribu=1…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=al-Ashrad.jpg&lt;br /&gt;
| displayname=&lt;br /&gt;
| fullname=&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Assamiten&lt;br /&gt;
| antitribu=1&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=&lt;br /&gt;
| residence=&lt;br /&gt;
| office=&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=Dunkle Schwestern&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Tegyrius&amp;diff=2286</id>
		<title>Tegyrius</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Tegyrius&amp;diff=2286"/>
		<updated>2015-05-03T19:24:51Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Die Seite wurde neu angelegt: „{{Infobox Character | image=Tegyrius.jpg | displayname=Tegyrius | fullname=Großvizir Tegyrius | category=NSC | player=Tobi | type=Vampir | sect=Camarilla | cl…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Tegyrius.jpg&lt;br /&gt;
| displayname=Tegyrius&lt;br /&gt;
| fullname=Großvizir Tegyrius&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Assamiten&lt;br /&gt;
| antitribu=1&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=&lt;br /&gt;
| residence=&lt;br /&gt;
| office=&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=Dunkle Schwestern&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Thompson.jpg&amp;diff=1698</id>
		<title>Datei:Thompson.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Thompson.jpg&amp;diff=1698"/>
		<updated>2015-05-03T19:21:51Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Tegyrius.jpg&amp;diff=1697</id>
		<title>Datei:Tegyrius.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Tegyrius.jpg&amp;diff=1697"/>
		<updated>2015-05-03T19:20:56Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Al-Ashrad.jpg&amp;diff=1696</id>
		<title>Datei:Al-Ashrad.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Al-Ashrad.jpg&amp;diff=1696"/>
		<updated>2015-05-03T19:19:53Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Clemence.jpg&amp;diff=1695</id>
		<title>Datei:Clemence.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Clemence.jpg&amp;diff=1695"/>
		<updated>2015-05-03T19:01:01Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Charakterbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Charakterbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Madrid.jpg&amp;diff=1694</id>
		<title>Datei:Madrid.jpg</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Madrid.jpg&amp;diff=1694"/>
		<updated>2015-05-03T18:56:32Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Stadtbild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Stadtbild]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Christopher_Markus&amp;diff=2280</id>
		<title>Christopher Markus</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Christopher_Markus&amp;diff=2280"/>
		<updated>2014-11-01T22:01:34Z</updated>

		<summary type="html">&lt;p&gt;Calebros: /* Vorgeschichte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Christopher_Markus.jpg&lt;br /&gt;
| displayname=Christopher Markus&lt;br /&gt;
| fullname=Christopher Markus&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=SL&lt;br /&gt;
| type=Ghul&lt;br /&gt;
| sect=&lt;br /&gt;
| clan=&lt;br /&gt;
| antitribu=&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=32&lt;br /&gt;
| residence=New York&lt;br /&gt;
| office=&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=Die Sünden des Blutes&lt;br /&gt;
| died=&lt;br /&gt;
| died_in_chapter=&lt;br /&gt;
| background=&lt;br /&gt;
&lt;br /&gt;
Solange er sich zurückerinnern kann, lebte er auf der Straße und überlebte die meisten Winter nur mit sehr viel Glück.&lt;br /&gt;
Das änderte sich erst, als er in Kontakt mit Leidensgenossen trat, die ihren Platz im großen New York gefunden hatten.&lt;br /&gt;
Damals ahnte er noch nicht, das es sich bei Ihnen um Kainskinder handelte.&lt;br /&gt;
&lt;br /&gt;
Christopher gehörte kurze Zeit später zu einer Nosferatu-Schar rund um Blockhead, Miss Piggy und Deadeye.&lt;br /&gt;
Alle drei fielen jedoch dem Ding unter New York zum Opfer.&lt;br /&gt;
&lt;br /&gt;
Christopher überlebte, weil er zum entsprechenden Zeitpunkt dankenswerter Weise unterwegs war.&lt;br /&gt;
Nun sucht er einen neuen Platz für sich, ab dem er auch seine Kenntnisse vom New Yorker Fleischvertrieb anbringen kann.&lt;br /&gt;
| abilities=&lt;br /&gt;
* Verdunklung (1&lt;br /&gt;
| relations=&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Federico&amp;diff=2112</id>
		<title>Federico</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Federico&amp;diff=2112"/>
		<updated>2014-10-29T21:37:33Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Character&lt;br /&gt;
| image=Federico.jpg&lt;br /&gt;
| displayname=Federico de Soya&lt;br /&gt;
| fullname=Don Federico Juan Carlos Ramirez de Soya&lt;br /&gt;
| category=NSC&lt;br /&gt;
| player=Tobi&lt;br /&gt;
| type=Vampir&lt;br /&gt;
| sect=Camarilla&lt;br /&gt;
| clan=Lasombra&lt;br /&gt;
| antitribu=1&lt;br /&gt;
| sire=&lt;br /&gt;
| generation=9&lt;br /&gt;
| embraced=&lt;br /&gt;
| embraced is estimate=&lt;br /&gt;
| apparent age=45&lt;br /&gt;
| residence=&lt;br /&gt;
| office=&lt;br /&gt;
| haven=&lt;br /&gt;
| chapter_of_first_appearance=Das Auge des Hazimel&lt;br /&gt;
| died=1&lt;br /&gt;
| died_in_chapter=Die Eroberung von New York&lt;br /&gt;
| background=&lt;br /&gt;
| abilities=&lt;br /&gt;
| relations=* Ist gut befreundet mit [[Bedford]], sie scheinen eine gemeinsame Vergangenheit zu haben.&lt;br /&gt;
* Erzeuger von [[Ricardo|Ricardo Montalban]], das Verhältnis zwischen ihnen muss man aber gegenwärtig als &amp;quot;feindlich&amp;quot; bezeichnen.&lt;br /&gt;
* Erzeuger von [[Liz|Elisabeth Ann McMillan]] im Zuge des Repopularisierungsprojektes von [[Prinz]] [[Benison|Benison Hodge]] in [[Atlanta]] nach dem Blutfluch.&lt;br /&gt;
* Hatte in [[Atlanta]] einen [[Ghul]]: [[Sen. Escalon]].&lt;br /&gt;
| agenda=&lt;br /&gt;
| comments=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Diskussion:Erciyes_Fragmente&amp;diff=4295</id>
		<title>Diskussion:Erciyes Fragmente</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Diskussion:Erciyes_Fragmente&amp;diff=4295"/>
		<updated>2014-06-01T09:19:24Z</updated>

		<summary type="html">&lt;p&gt;Calebros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My ladies, gentlemen,&lt;br /&gt;
&lt;br /&gt;
ich schlage vor, wir diskutieren nebenbei was wir eigentlich aus all den Prophezeiungen gelernt haben - diesmal ohne gleichzeitig die Stadt vor diesem Ding retten zu müssen.&lt;br /&gt;
&lt;br /&gt;
Wir haben drei Prophezeiungen erhalten, nennen wir sie nach ihren Anfangssätzen &amp;quot;500&amp;quot; (Five hundred years shall seven be joined, Quelle [[Prophecies - The Red Eye|hier]]), &amp;quot;Life&amp;quot; (I gave you life eternal, Caine cried; aus [[The 12 Curses of Caine]]) und &amp;quot;Prophets&amp;quot; (Hearken to the prophets words of blood-filled dreams and shortened nights; gibt es [[Prophecies_-_To_Dream_of_Blood|hier]]). ''500'' und ''Life'' sind von v.B., ''Prophets'' von Shepherd. In ''500'' geht es offenbar um den Untergang der Camarilla, in ''Life'' um die Flüche, die Kain den Clansgründern auferlegt hat und in ''Prophets'' um, nun, das scheint am wenigsten sicher zu sein. Alle drei sind uns als vertrauenswürdig und unbedingt ernst zu nehmen präsentiert worden. Nichts einfacher natürlich, als ein paar Geschichten zusammen zu stricken, die nachfolgende Generationen in eben die Richtung laufen lassen, die man gerne vorgeben möchte. Aber gut, nehmen wir die Sache ernst, zumindest für den Moment:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Life'' ist relativ geradlinig. Wir erfahren, dass die Clanschwächen Flüche sind, die Kain den Clansgründern auferlegt hat, nachdem diese die zweite Generation angegriffen haben. Bemerkenswert sind m.E. vier Details. Erstens, Saulot der Heiler wird nicht von Kain verflucht, weil er sich nicht am Kampf beteiligt hat. Er ist der einzige, der sich an Kains Regeln gehalten hat. Zweitens ist ist die Rede davon, dass Kain auch erbost ist, weil die 3. Generation die Macht, die er ihnen über Menschen gegeben hat, missbraucht hat. Drittens wird ein Erwecken des Fluches angedroht für den Fall, dass Kains Zorn noch einmal erregt wird. Und viertens ist Kain hier ein good guy, eine Art enttäuschter und zorniger Papa, der seine missratenen Kinder auf den rechten Weg führen möchte.&lt;br /&gt;
&lt;br /&gt;
Punkt eins und vier sind zu meinem Schrecken selbsterklärend. Das Problem is nicht Kain selbst, das Problem ist die dritte Generation. Das ist nun ausgerechnet, was der Sabbath predigt. Außerdem - Saulot ist ein Heiler, Kains Lieblingsenkel und überhaupt ein toller Hecht. Ich darf gar nicht daran denken, was das für die Geschichte meines Clans bedeutet. Es ist darüber hinaus aber auch wichtig für das Verständnis von ''500''. Punkt zwei ist einfach, wenn gemeint ist, dass die dritte Generation ohne Erlaubnis die vierte gezeugt hat. Aber ist das gemeint? Schließlich der verwirrende Punkt drei. Einerseits scheint klar: Jetzt gerade wird der Fluch erweckt. Wir haben es bei den Tzimisce erlebt. Aber es kann nicht der Fluch sein, von dem im Rest des Textes die Rede ist. Da geht es um die Clanschwäche, nicht darum, dass die Fähigkeit, Fleisch zu formen, verloren geht. Ein späterer Einschub? Eine unklare Ausdruckweise? Fehlende Teile? Keine Ahnung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''500'' ist ein bisschen komplizierter. Seite eins legt nahe, dass die Camarilla als der Versuch aufgefasst werden kann, den Fluch der Engel (also den des Vampirismus) zu überkommen, indem sie Einigkeit versucht, die uns verboten ist. Allerdings fehlen wohl ein paar Zeilen, die allen Unterschied der Welt ausmachen können.&lt;br /&gt;
&lt;br /&gt;
Dann: Ein neuer Feind, das Kind seiner (also des Camarillavampirs) Arroganz, zweimal tot, dreimal geboren. Das ist eine de Stellen, über die wir nachdenken könnten. Einmal mal tot, zwei mal geboren, das sind wir (zumindest in der offiziellen Lesart), dreimal geboren wäre ... ein Vampir, der in Starre lag und wieder erwacht? Jemand exsanguiniertes, der zurückgebracht wurde? Jemand, der jenseits des Schleiers war und wieder in unsere Welt zurückgekehrt ist? Ein Vampir, der Amaranth überlebt hat im Körper seines Mörders? Vielleicht allzu weit hergeholt. Denn &amp;quot;hungry for death, nurturing on devoured souls, savoring war as sustenance&amp;quot; klngt eher nach den Vorsintflutlichen. Wir wurden ja von anderer Seite aus gewarnt, dass der Krieg die Alten erwachen lässt.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;So let the ancient fear...&amp;quot; Die Regeln der Camarilla sind nur Versuche, Diablerie an den Vorsintflutlichen zu verhindern, aber es ist nicht zu verhindern. Interessant wird es m.E. ab &amp;quot;The ancient war...&amp;quot;. Ist das der Kampf der dritten gegen die zweite Generation? Jetzt vertauschen sich die Rollen: Es ist die dritte Generation, die um ihr Leben fürchten muss (&amp;quot;your blood is the new battlefield&amp;quot; des alten Krieges)? &lt;br /&gt;
&lt;br /&gt;
&amp;quot;And even those, whom you have cursed&amp;quot; - Ich lese das so: Die dritte Generation hat die Clans geschaffen, um sich selbst zu retten. Z.B. um sich selbst von Kains Fluch zu befreien. Das stände im Widerspruch zu ''Life''. Interessant: Die Clans brechen ihre Bande. Wieder so eine unklare Stelle. Sind die Caitiff gemeint? Leute wie wir, die gegen Claninteressen handeln? Oder so Dinge wie der Tzimisce in der Kanalisation, den wir beseitigt haben? Irgendjemand auf den das Folgende zutrifft? Denn auf jeden Fall werden sie &amp;quot;feast upon your souls in ecstasy&amp;quot; - wer immer gemeint ist, wird die dritte Generation diablerisieren.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Allies abandon theor station&amp;quot; - die Gangrel&lt;br /&gt;
&amp;quot;And twisted bloodlines clamor from without&amp;quot; - Antitribu&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Then shall that black crown which is so reviled sit on the most beloved brow&amp;quot; Das sind die Zeilen, die mich am stärksten beunruhigen. Die dunkle Krone tragen Diableristen. Und wer ist der Geliebteste? Es könnte irgend ein Geliebter sein. Liz, Collin, Neill, Franziska, Susan, David, Hannah, Tiberius, die Liste geht ewig weiter. Es könnte aber auch der Vampir gemeint sein, den ''Life'' als Kains Liebling beschrieben hat: Saulot. In jedem Fall stellt sich die Frage: Wer wird diablerisiert? Kain selbst? Die anderen Vorsintflutlichen? Das ist alles so unüberschaubar groß, dass ich mich einfach nur in mein Labor zurückziehen möchte. Soll die Welt doch untergehen, wenn ich vorher noch ein wenig Zeit mit Franziska verbringen kann.&lt;br /&gt;
&lt;br /&gt;
Dann: Die Camarilla stürzt von innen, dem Willen der Engel ist Genüge getan. &lt;br /&gt;
&lt;br /&gt;
Schließlich: Der rote Stern (hatten wir), der blutige Halbmond (kommt noch). Kann es eigentlich sein, das nicht alle den Stern sehen können? Kam mir so vor.&lt;br /&gt;
&lt;br /&gt;
Rätselhaft: Es geht einerseits um die sieben Camarilla-Clans, andererseits aber um die Vorsintflutlichen, welche ja mindestens zu dreizehnt waren. Wie geht das zusammen? &lt;br /&gt;
&lt;br /&gt;
Auch rätselhaft: Wer diablerisiert denn nun die dritte Generation? Tausende von jungen Vampiren? Oder Saulot?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Prophets'' finde ich den schwierigsten Text, nicht nur weil er so viele Kommentare enthält, sondern auch weil es so viele undeutliche Passagen gibt. Unterscheiden wir zwischen der Einleitung und Teil I. Die Kommentare zur Einleitung legen nahe, dass es auch noch die Teile II und III gibt, aber wir besitzen sie bislang nicht. Wenn ich die Sache richtig verstanden habe, arbeitet Shepherd aber noch an Übersetzungen, also wer weiß.&lt;br /&gt;
&lt;br /&gt;
Die Einleitung stellt uns drei Propheten vor, den Seher, den Krieger und den Gelehrten. Ich denke, wir können davon ausgehen, dass es sich um sehr alte Vampire handelt. Da ''Prophets'' später auf die Diablerie an Brujah Bezug nimmt (und wir gehen davon aus, dass sie prophezeit wird, zum Zeitpunkt der Abfassung also noch nicht eingetreten ist), reden wir hier wahrscheinlich von 4. Generation oder älter. Drei der Dreizehn könnten z.B. gemeint sein. &lt;br /&gt;
&lt;br /&gt;
Wenn es drei Propheten gibt, ist unklar, warum im ersten Satz nur von einem Propheten die Rede ist (&amp;quot;the prophet's words&amp;quot;, nicht etwa &amp;quot;the prophets' words&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Vier Ereignisse werden schon in Satz eins angekündigt: bluterfüllte Träume, verkürzte Nächte, &amp;quot;hunger risen to claim its own&amp;quot; und &amp;quot;arrogance turned to ash&amp;quot;. Worauf sich die ersten beiden beziehen, ist mir nicht klar. Drei ist mindestens ein alter Vampir, wahrscheinlich ein Vorsintflutlicher, der sich hungrig erhebt, um seinen eigenen Clan zu vernichten. Die Ravnos kommen einem in den Sinn - aber es kann immer mehr als einer gemeint sein. Vier ist mir wieder unklar. Allerdings ist auf S.2 von ''500'' von Asche und Arroganz die Rede, wenn auch nicht im selben Satz. Ich bin mir sehr unsicher, ob das etwas miteinander zu tun hat. Kurz: Drei Ereignisse rätselhaft, eines mindestens zum Teil schon eingetreten.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;ancient horrors are but dreams of things to come&amp;quot; -- ''Prophets'' ist so schwierig, weil es ständig mehrere Lesarten gibt. Eins: Früher ist etwas Schlimmes geschehen, lernt daraus (in Traumvisionen) für die Zukunft. (Passt z.B. auf den Konflikt zwischen zweiter und dritter Generation und der kommenden Schlacht zwischen dritter Generation und dem Rest, auf den ''500'' hinweisen könnte.) Zwei: Früher ist etwas Schlimmes geschehen, was nun kommt ist um so viel schlimmer wie die Realität schlimmer ist als ein Traum. Passt genauso, enthält aber nicht unbedingt die Chance zu lernen. Drei: Die 3. Generation (ancient horrors) mag Euch schlimm erscheinen, wer jetzt kommt (Kain) ist weitaus schlimmer. Hm.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;from them shall come warning, from them shall come wisdom, from them shall come slaughter&amp;quot; Erste Frage: Worauf bezieht sich &amp;quot;them&amp;quot;? Die ancient horrors? Die Träume? Oder die &amp;quot;things to come&amp;quot;? Alles grammatisch möglich. Wahrscheinlich sind eins oder zwei. Eine interessante Frage ist nun, wie man den Satz vorher liest. Eine zweite ist, ob hier vor Nebenwirkungen gewarnt werden soll oder ob das ganze Prophezeiungsgeschäft in Frage gestellt wird. Lesarten: (a) Einige Alte werden warnen, einige Weisheit bringen, einige töten. (b) Alle Alten bringen alles drei. (c) die Träume (Prophezeiungen) bergen neben Weisheit und Warnung auch Gefahr. (d) die Träume enthalten zwar Weisheit und Warnung, lösen aber eigentlich das Verderben, vor dem man sich schützen will, erst aus. &lt;br /&gt;
&lt;br /&gt;
Teil I ist grob unterteilt in drei Teile. I.i macht einige grundsätzliche Bemerkungen, I.ii und I.iii führen uns das Schicksal zweier Vorsintflutlicher und ihrer Clans vor Augen.&lt;br /&gt;
&lt;br /&gt;
ad I.i: &amp;quot;Within the get of Cain there is a hunger stirring&amp;quot; Ich denke, wir dürfen davon ausgehen, dass es sich hier entweder um den Hunger der erwachenden Altvorderen oder um die Gier ihrer Nachkommen, sie zu diablerisieren, geht.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Once, twice thrice the call to power and death will rend the sould of the thirteen&amp;quot; Die 13 sind die Clansgründer. Im Folgenden ist von Diablerie die REde, wir können wohl davon ausgehen, dass es sich beim &amp;quot;Call&amp;quot; um Diablerie handelt. Unwahrscheinlich, dass alle 13 drei Mal Diablerie überleben. Daher ist vielleicht gemeint: Alle 13 werden drei Mal erschüttert, weil jeweils einer von ihnen diablerisiert wird - und dann passiert etwas Schlimmes. Das passt damit zusammen, dass im Folgenden zwei Episoden erzählt werden von Vorsintflutlichen, die diablerisiert wurden. Es passt nicht gut zusammen mit dem, was man von Kappadocius vermuten kann, von Lasombra und möglicherweise anderen.&lt;br /&gt;
&lt;br /&gt;
ad I.ii: Dieser Teil und der Folgende geben jeweils an, was mit einem Vorsintflutlichen geschehen ist, wie es seinem Clan ergeht und dann kommt noch eine Art Warnung oder Hinweis. Hier geht es um Brujah. Sein Clam hat nicht sein Blut, seine Fähigkeiten hatten mit dem Verändern der Zeit selbst zu tun, sein Clan ist nur noch schnell. Wir erfahren vom Wissensdurst der Brujah. Hinweis: &amp;quot;There is no salvation in killing nor do the damned ever forget.&amp;quot; Mir ist nicht klar, warum wir das gesagt bekommen.&lt;br /&gt;
&lt;br /&gt;
ad I.iii: Hier geht es um Saulot. Die Tremere haben ihn, na, dass wissen wir ja nun alle. Zum Clan heißt es: &amp;quot;His children shall be made into demons, hunted for evils that are not their own.&amp;quot; Auf die Gefahr hin, dass ich euch auf den Geist gehe und nur nicht wahr haben will, was mein Clan getan hat: Auch hier gibt es mehrere Lesarten. Natürlich die offensichtliche: Hier wird die Schmutzkampagne beschrieben, mit der die Tremere die Salubri überzogen haben. Und die weniger offensichtliche: Kinder Saulots (Salubri? Einige Salubri?) sind (von ihm?) in Dämonen verwandelt worden. Und Kinder Saulots (nicht unbedingt identisch mit denen aus dem vorigen Satz) sind verfolgt worden für Übel, die nicht die ihren sind (sondern z.B. Saulots oder der Dämonen)... &lt;br /&gt;
&lt;br /&gt;
Der Hinweis ist besonders rätselhaft: &amp;quot;Beware the anger of the banished/Beware the fury of the abandoned/Ten times ten times ten they wait/Secret in shadows savouring hatred&amp;quot; 1000 Jahre oder 1000 Verbannte und Verlassene? Und: von wem ist hier die Rede? Es muss irgendetwas mit Saulot zu tun haben. Sind die (von Saulot?) Verbannten und die (von Saulot freiwillig) Verlassenen dieselben? Oder geht es hier wieder um zwei verschiedene Parteien? Wen? Die offensichtliche Interpretation allerdings ist wiederum: Die Salubri sind verbannt (von der Camarilla) und auch verlassen (von Saulot, unfreiwillig). Seit 1000 Jahren warten sie (worauf?) und hegen ihren Hass (wirklich? Die sind doch ausgerechnet so friedliebend...).&lt;br /&gt;
&lt;br /&gt;
So, das ist, was mir für den Moment einfällt. Ihr seid dran. &lt;br /&gt;
&lt;br /&gt;
All the best, &lt;br /&gt;
&lt;br /&gt;
Peter&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
	<entry>
		<id>https://camnet.oetterer.eu/index.php?title=Datei:Prophecies_-_The_Red_Eye_-_annotated.pdf&amp;diff=1689</id>
		<title>Datei:Prophecies - The Red Eye - annotated.pdf</title>
		<link rel="alternate" type="text/html" href="https://camnet.oetterer.eu/index.php?title=Datei:Prophecies_-_The_Red_Eye_-_annotated.pdf&amp;diff=1689"/>
		<updated>2014-05-31T09:18:47Z</updated>

		<summary type="html">&lt;p&gt;Calebros: Kategorie:Dokument&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Dokument]]&lt;/div&gt;</summary>
		<author><name>Calebros</name></author>
	</entry>
</feed>