329 lines
9.5 KiB
Markdown
329 lines
9.5 KiB
Markdown
# 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:
|
|
|
|
1. `lay-preacher`
|
|
2. `village-priest`
|
|
3. `parish-priest`
|
|
4. `dean`
|
|
5. `archdeacon`
|
|
6. `bishop`
|
|
7. `archbishop`
|
|
8. `cardinal`
|
|
9. `pope`
|
|
|
|
### 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_office` zu prüfen.
|
|
- Es muss ein Konzept von `highestChurchOfficeRankEver` geben.
|
|
|
|
## 3. Entscheidungsmodell für Bewerbungen
|
|
|
|
### 3.1 Grundsatz
|
|
|
|
Über eine Bewerbung entscheidet immer das direkt übergeordnete Amt.
|
|
|
|
Beispiele:
|
|
|
|
- Über `village-priest` entscheidet `parish-priest`.
|
|
- Über `parish-priest` entscheidet `dean`.
|
|
- Über `dean` entscheidet `archdeacon`.
|
|
|
|
### 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 `bishop` soll 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_type` und 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_office` anlegen oder aktualisieren
|
|
- alte widersprechende Bewerbungen schließen
|
|
- `highestChurchOfficeRankEver` aktualisieren
|
|
|
|
### 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`
|
|
|
|
```json
|
|
{
|
|
"event": "falukantUpdateChurch",
|
|
"user_id": 123,
|
|
"reason": "applications"
|
|
}
|
|
```
|
|
|
|
Zulässige `reason`-Werte:
|
|
|
|
- `applications`
|
|
- `appointment`
|
|
- `promotion`
|
|
- `vacancy_fill`
|
|
- `npc_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 `highestChurchOfficeRankEver` einfü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 `highestChurchOfficeRankEver` gespeichert wird
|
|
- ob es zusätzlich `highestChurchOfficeTypeEver` geben soll
|
|
- ob automatische NPC-Entscheidungen ein Timeout für offene Spielerbewerbungen bekommen
|
|
- wie stark Reputation gegenüber Adelstitel und Alter gewichtet wird
|
|
|