9.5 KiB
Falukant: Kirchenämter, Aufstieg und NPC-Besetzung
Dieses Dokument beschreibt das Zielmodell für das Kirchensystem in Falukant. Es fokussiert auf drei Probleme:
- Spieler können sich derzeit nicht sinnvoll auf höhere kirchliche Ämter bewerben.
- Nicht alle Ämter werden besetzt.
- NPCs sollen sich ebenfalls bewerben und Ämter aktiv besetzen.
Der Daemon soll die laufende Besetzung und Beförderung übernehmen. Der eigentliche Antrag des Spielers bleibt ein aktiver Spielzug in der UI.
1. Zielbild
Kirchliche Ämter sollen ein lebendes Hierarchiesystem sein:
- Leere Ämter werden nach und nach besetzt.
- Spieler und NPCs konkurrieren um offene Positionen.
- Höhere Amtsträger entscheiden über untere Ebenen.
- Wo kein Spieler-Entscheider vorhanden ist, übernimmt ein NPC-Amtsträger die Entscheidung.
- Wo ganze Hierarchieebenen leer sind, darf das System kontrolliert von unten nach oben oder über Interimslogik nachbesetzen.
2. Grundregeln
2.1 Bewerbung
- Ein Spieler beantragt ein Amt weiterhin aktiv über die UI.
- NPCs bewerben sich nicht per UI, sondern durch den Daemon.
- Es darf gleichzeitig mehrere Bewerber für dieselbe Position geben.
- Eine Bewerbung ist immer regionsbezogen.
2.2 Hierarchie
Kirchenämter bleiben über church_office_type.hierarchy_level geordnet.
Der normale Aufstiegspfad ist:
lay-preachervillage-priestparish-priestdeanarchdeaconbishoparchbishopcardinalpope
2.3 Bewerbung auf höhere Ämter
Der aktuelle Fehler "man kann sich nicht auf höhere Positionen bewerben als man gerade hat" soll ersetzt werden durch:
- Ein Charakter darf sich auf das nächsthöhere sinnvolle Amt bewerben.
- Zusätzlich darf ein Charakter sich auf ein höheres Amt bewerben, wenn sein bisher höchstes Kirchenamt die Mindestvoraussetzung erfüllt.
- Das System soll nicht nur aktuelle Ämter, sondern auch die bisher höchste kirchliche Laufbahn berücksichtigen.
Daraus folgt:
- Es reicht nicht, nur aktuelle
church_officezu prüfen. - Es muss ein Konzept von
highestChurchOfficeRankEvergeben.
3. Entscheidungsmodell für Bewerbungen
3.1 Grundsatz
Über eine Bewerbung entscheidet immer das direkt übergeordnete Amt.
Beispiele:
- Über
village-priestentscheidetparish-priest. - Über
parish-priestentscheidetdean. - Über
deanentscheidetarchdeacon.
3.2 Wenn der direkte Vorgesetzte fehlt
Falls das direkt übergeordnete Amt in der relevanten Aufsichtskette nicht besetzt ist:
- Das System sucht das nächsthöhere besetzte Amt.
- Falls überhaupt kein höheres Amt vorhanden ist, greift ein Interimsmodus.
Interimsmodus:
- Für die untersten Ebenen darf der Daemon nach Reputation und Eignung direkt besetzen.
- Für hohe Ämter oberhalb von
bishopsoll das nur sehr zurückhaltend geschehen.
4. NPC-Bewerbungen
4.1 Ziel
NPCs sollen das Kirchensystem lebendig halten und offene Ämter nach und nach füllen.
4.2 Wann NPCs sich bewerben
Der Daemon prüft täglich:
- offene Sitze pro Region und Amt
- vorhandene Spielerbewerbungen
- vorhandene NPC-Kandidaten
NPC-Bewerbungen entstehen bevorzugt wenn:
- ein Amt offen ist
- keine ausreichende Zahl an Bewerbungen existiert
- in der Region oder der Elternregion geeignete NPCs vorhanden sind
4.3 Geeignete NPCs
Ein NPC ist grundsätzlich geeignet, wenn:
- er lebt
- er nicht bereits ein gleiches oder höheres unvereinbares Kirchenamt innehat
- sein bisher höchstes Kirchenamt oder seine bisherige Laufbahn die Stufe plausibel macht
- seine Reputation ausreichend ist
Zusätzliche Faktoren für NPC-Eignung:
- Alter
- Gesundheit
- Adelstitel
- Reputation
- bestehendes Kirchenamt
- bisher höchstes Kirchenamt
5. Auswahl- und Beförderungslogik
5.1 Bewertungswert
Für jede Bewerbung wird ein Score berechnet:
churchCandidateScore
Bestandteile:
- bisher höchstes Kirchenamt
- aktuelles Kirchenamt
- Reputation
- Adelstitel
- Alter in idealem Bereich
- regionale Nähe
- ggf. geringe Bonuspunkte für lange Wartezeit
5.2 Entscheidung durch Spieler
Wenn der zuständige Vorgesetzte ein Spielercharakter ist:
- Die Bewerbung erscheint wie bisher in der UI.
- Der Spieler kann annehmen oder ablehnen.
- Solange eine Spielerentscheidung aussteht, entscheidet der Daemon nicht automatisch.
Optionaler Timeout:
- Nach längerer Untätigkeit darf später ein automatischer Verfall oder eine automatische Daemon-Entscheidung ergänzt werden.
- Das ist nicht Teil der ersten Ausbaustufe.
5.3 Entscheidung durch NPC
Wenn der zuständige Vorgesetzte ein NPC ist:
- Der Daemon entscheidet automatisch.
- Maßgeblich ist primär der Bewerber-Score.
- Zusätzlich wirkt die Reputation des NPC-Vorgesetzten als "Strengefaktor".
6. Reputation des NPC-Vorgesetzten
Wenn ein NPC ein Amt innehat, entscheidet er über die unter ihm liegende Position anhand von Reputation.
Das bedeutet:
- Ein angesehener NPC-Vorgesetzter bevorzugt reputationsstarke, standesgemäße und stabile Bewerber.
- Ein schwacher oder verrufener NPC-Vorgesetzter entscheidet unberechenbarer.
Empfohlenes Modell:
supervisorInfluence = supervisor.reputation / 100- je höher dieser Wert, desto stärker zählt der objektive Bewerber-Score
- bei niedriger Reputation steigt der Zufallsanteil
Praktische Wirkung:
- Hohe NPC-Reputation:
- bessere, berechenbarere Besetzung
- Niedrige NPC-Reputation:
- mehr Fehlbesetzungen
- mehr schwankende Entscheidungen
7. Fehlende historische Kirchenlaufbahn
Damit ein Charakter sich später auf höhere Ämter bewerben kann, braucht das System mehr als nur aktuelle church_office.
Es wird deshalb ein persistierter Höchstwert benötigt:
highestChurchOfficeRankEver
Empfehlung:
- eigener Wert am Charakter oder in einer Laufbahntabelle
- beim erstmaligen Erreichen eines höheren Kirchenamts aktualisieren
- bei Verlust des Amts nicht zurücksetzen
Ohne diesen Wert bleibt höherer Aufstieg nach Amtsverlust oder Umstrukturierung unzuverlässig.
8. Verfügbarkeit in der UI
Die UI soll später drei Dinge klar darstellen:
- aktuelle Ämter
- verfügbare Bewerbungen
- eigene höchste Kirchenlaufbahn
Zusätzlich sinnvoll:
- ob die Entscheidung durch einen Spieler oder NPC getroffen wird
- wer der zuständige Vorgesetzte ist
- ob eine Position automatisch nachbesetzt wird
9. Daemon-Aufgaben
Der Daemon soll täglich folgende Schritte ausführen:
9.1 Kirchenlage erfassen
- offene Sitze je
church_office_typeund Region zählen - aktuelle Amtsträger laden
- Spielerbewerbungen laden
- NPC-Kandidaten bestimmen
9.2 NPC-Bewerbungen erzeugen
- für vakante Positionen fehlende NPC-Bewerbungen anlegen
- keine Doppelbewerbungen für dieselbe Position erzeugen
9.3 Bewerbungen bewerten
- Bewerber-Score berechnen
- zuständigen Vorgesetzten ermitteln
- falls NPC-Vorgesetzter: Entscheidung automatisch treffen
- falls Spieler-Vorgesetzter: Bewerbung offen lassen
9.4 Beförderungen und Besetzungen durchführen
church_officeanlegen oder aktualisieren- alte widersprechende Bewerbungen schließen
highestChurchOfficeRankEveraktualisieren
9.5 Sonderfall komplett leere Hierarchie
Wenn eine Hierarchiestufe samt Vorgesetzten fehlt:
- untere Ebene darf durch den Daemon interimistisch mit dem besten Kandidaten besetzt werden
- dies soll selten und regelgeleitet geschehen
- für hohe Spitzenämter deutlich restriktiver als für niedrige Ämter
10. Event-Kommunikation zwischen Daemon und UI
Neue oder präzisierte Events:
10.1 falukantUpdateChurch
{
"event": "falukantUpdateChurch",
"user_id": 123,
"reason": "applications"
}
Zulässige reason-Werte:
applicationsappointmentpromotionvacancy_fillnpc_decision
10.2 UI-Reaktion
applications:- Bewerbungslisten neu laden
appointment:- aktuelle Ämter und verfügbare Ämter neu laden
promotion:- aktuelle Ämter, verfügbare Ämter, ggf. Sozialstatus/Ansehen neu laden
vacancy_fill:- aktuelle Ämter und verfügbare Positionen neu laden
npc_decision:- supervised applications und current positions neu laden
Zusätzlich kann weiterhin falukantUpdateStatus gesendet werden.
11. Backend-Anpassungen außerhalb des Daemons
Die Daemon-Logik allein reicht nicht. Das Backend muss angepasst werden:
getAvailableChurchPositions()darf nicht nur aktuelle Ämter als Voraussetzung ansehen- es muss die bisher höchste Kirchenlaufbahn berücksichtigen
- freie Positionen dürfen nicht nur an schon exakt lineare Amtshalter gebunden sein
- Spielerbewerbungen und NPC-Bewerbungen müssen dieselbe Bewertungslogik unterstützen
12. Empfohlene Umsetzung in Phasen
Phase C1
- Konzept
highestChurchOfficeRankEvereinführen getAvailableChurchPositions()auf höchste Kirchenlaufbahn erweitern- UI lesbar machen
Phase C2
- NPC-Bewerbungen im Daemon
- automatische NPC-Entscheidungen
Phase C3
- Interimsbesetzung für leere Hierarchien
- Feintuning von Reputation und Zufall
13. Wichtige Designentscheidungen
- Spieleraufstieg bleibt antragsbasiert
- NPCs füllen das System aktiv auf
- hohe Reputation eines NPC-Vorgesetzten verbessert die Besetzungsqualität
- höhere Ämter sollen auch dann erreichbar bleiben, wenn der Charakter das Voramt nicht mehr aktuell innehat
- komplett leere Kirchenstrukturen dürfen sich wieder aufbauen
14. Offene Punkte
- Wo genau
highestChurchOfficeRankEvergespeichert wird - ob es zusätzlich
highestChurchOfficeTypeEvergeben soll - ob automatische NPC-Entscheidungen ein Timeout für offene Spielerbewerbungen bekommen
- wie stark Reputation gegenüber Adelstitel und Alter gewichtet wird