Das Konzept der Sonderregeln

aus AlricgWiki, der freien Wissensdatenbank

Inhaltsverzeichnis

Was ist eine Sonderregel im Kontext von Alricg?

Eine Sonderregel ist erst einmal eine Klasse, die das Interface "SonderregelInterface" implementiert. Eine Sonderregel dient dem Zweck, Regel zu realisieren die nicht Standartmäßig in den DSA4 sind, sondern ebend einen "Sonderfall" darstellen der durch bestimmte CharElemente auftritt. Typische Beispiele sind die Spezialregeln die manche Vor-/Nachteile geben (z.B. Stubenhocker, Gebildet). Jedes CharElement das über spezielle Regeln verfügt, besitz eine Sonderregel - ist also Verknüpft mit einem Objekt einer Sonderregel Klasse. Dabei kann jedes CharElement eine andere Sonderregel besitzen, also jede Sonderregel stellt wirklich eine eingene Klasse da, die speziell für diese Regel entworfen wurde.

Beispiel

  • "Gebildet" ist eine Instanz der Klasse Vorteil. Diese Instanz ist mit einer Instanz der Sonderregel-Klasse "Gebildet" verknüpft.
  • "Stubenhocker" ist eine Instanz der Klasse Nachteil. Diese Instanz ist mit einer Instanz der Sonderregel-Klasse "Stubenhocker" verknüpft.


Wie werden Sonderregeln eingesetzt?

Eine Sonderregel wird nur dann eingesetzt, wenn sie aktiv ist. Aktiv ist eine Sonderregel genau dann, wenn ein CharElement, das mit dieser Sonderregel verknüpft ist, zum Helden gehört. Wenn also der Held z.B. über den Nachteil "Stubenhocker" verfügt, dann ist auch die Sonderregel "Stubenhocker" aktiv.
In dem Interface "SonderregelInterface" sind bestimmte Methoden vorgegeben. Jede dieser Methoden gehört zu einer bestimmten Aktion, die auf dem Helden durchgeführt wird.
So ist "changeMaxStufe(int maxWert, Link link)" mit der Aktion verbunden das von irgendeinem CharElement die maximale Stufe bestimmt wird. Dies kann z.B. ein Talent sein, ein Zauber, eine Eigenschaft oder auch ein Nachteil. Immer wenn also von irgendeinem CharElement die maximale Stufe bestimmt wird, wird bei allen aktiven Sonderregel die Methode "changeMaxStufe(int maxWert, Link link)" aufgerufen. So könnte jede Sonderregel auf alle maximal Stufen einfluß nehmen.

Beispiel

Sagen wir die Sonderregel X besagt, das die Stufe des Talents Y auf max. 6 beschränket ist. Nun muß folgedes passieren:

  • Es wird die Methode "changeMaxStufe(int maxWert, Link link)" in der Sonderregel Klasse "X" implementiert.
  • Immer wenn die maximale Stufe eines CharElements bestimmt wird, wird am Ende der Berechnung auch die Methode "changeMaxStufe(int maxWert, Link link)" einer jeder Sonderregel aufgerufen, somit auch der Sonderregel "X".
  • Bei der Sonderregel "X" wird jedem Aufruf der Methode "changeMaxStufe(int maxWert, Link link)" geprüf, ob das CharElement, für das die Max. Stufe berechnet wird das Talent Y ist. Dies ist einfach möglich da der Parameter "link" dieses CharElement liefert.
  • Ist das CharElement das Talent Y, so wird geprüft ob der bisher berechnete Wert > 6 ist. Der bisher berechnete Wert wird durch den Parameter "maxWert" übergeben. Ist dies der Fall, so wird einfach "6" zurückgeliefert und somit der maximale Wert dieses Talentes auf 6 beschränkt.

In dieser Weise funktionieren alle Methoden der Sonderregeln:
"processAddAsNewElement(Link)" wird aufgerufen, wenn der Held ein neues CharElement bekommt (z.B. sich eine SF gekauft hat) oder "changeKosten(int, Link)", wenn die Kosten für den Kauf eines CharElement bestimmt werden (Siehe JavaDoc für weitere Methoden). Außerdem gibt es spezielle Methoden die Aufgerufen werden, wenn eine Sonderregel frisch zu einem Helden hinzugefügt wird oder wieder entfernd wird (durch hinzufügen/ entfernen des entsprechenden CharElements). Diesen Methoden sind vor allem dafür gedacht um Modifikationen auf Werten vorzunehmen (z.B. die Steigerungen bei "Herausragender Eigenschaft").

Ich hoffe das damit das Konzept der Sonderregel einigermaßen klar geworden ist. Das System ist sehr flexibel und mächtig, da jede Sonderregel eingenen Code haben kann. Gleichzeitig ist es übersichtlich, da jeder spezielle Code in einer entsprechenden Klasse liegt. Ich denke das hiermit grundsätzlich alle Sonderregel in DSA4 nachgebildet werden können.

Anmerkung:

  • "Veteran" und "Breitgefächerte Bildung" sind keine Sonderregel, sondern werden über die Klassen im package "charKomponenten.spezial" realisiert.
  • Die Verwaltung der aktiven Sonderregel übernimmt der SonderregelAdmin. Es werden nicht die Sonderregeln direkt aufgerufen, sondern der Admin. Der Admin ruft dann alle aktiven Sonderregeln auf.
'Persönliche Werkzeuge