KONZEPT:
Gildenlevel/Gildenstufen
AUTOR:
Holger@Wunderland (10.11.1998)
EINLEITUNG:
Um die Gilden von den 'normalen' Spielerleveln abzukoppeln und die
Bedingungen zum Eintritt und/oder Aufstieg innerhalb einer Gilde
abwechslungsreicher zu machen und eine gwisse Differenzierung der
Spielermenge innerhalb einer Gilde zu erreichen, wurden Gildenlevel
eingefuehrt. Wie Gildenlevel funktionieren und wie sie definiert
werden, ist in dieser Manpage beschrieben. Die Propertie fuer das
Gildenlevel ist P_GUILD_LEVEL. Das Bedingungen-Mappping in der Gilde
ist P_GUILD_LEVELS.
WIEVIELE LEVEL?
Wieviele Level es innerhalb einer Gilde gibt, ist dem Gildenpapa
ueberlassen. Mindestzahl und Maximalzahl sind nicht fest bestimmt.
Es sind Gilden mit nur einem Level bis hin zu Gilden mit 100 Leveln
oder gar mehr (?!?) denkbar. Da es bislang noch keine Gildenlevel
gibt, kann man sich vorerst an der Anzahl der erlernbaren Faehig-
keiten orientieren. Es ist aber auch moeglich ueber das jeweilige
Spellbook den Erfolg der Fertigkeiten an das Level zu koppeln. Dem
Gildenpapa sind da keinerlei Grenzen gesetzt. :-) Notwendig ist nur,
dass das kleinste Level 1 ist und die Reihe 'fortlaufend' ist, d.h,
es keine 'Spruenge' gibt. Es muessen also auf jeden Fall immer
_alle_ erreichbaren Level in P_GUILD_LEVELS definiert sein!
WAS IST MIT DEN BEITRITTSVORAUSSETZUNGEN?
Die bisherigen Properties zur Angabe der Mindestvoraussetzungen an
ein neues Mitglied gibt es nicht mehr. Da aber Level 1 das Mindest-
level darstellt, muss ein neues Mitglied genau dessen Bedingungen
erfuellen, um der Gilde beitreten zu koennen. Erfuellt ein Spieler
die Voraussetzungen fuer Gildenlevel 1 nicht, kann er der Gilde
nicht beitreten!
WAS HEISST DENN 'BEDINGUNGEN'?
Alle 'Bedingungen' zum erreichen eines Levels sind in einem Mapping
gespeichert. Dieses Mapping wird dann vom 'Restriktor'
(/std/restrictor.c) ueberprueft. Sind alle Bedingungen im Mapping
vom Spieler erfuellt, kann der Spieler erhoehen. Ist eine Bedingung
nicht erfuellt, wird ausgegeben, woran es scheiterte.
WOVON KANN EIN LEVEL ABHAENGEN?
Der Restriktor kann folgende Werte in einem Spieler ueberpruefen:
Das Level, das Gildenlevel, Erfahrunspunkte, Abenteuerpunkte, die
'Alkoholisierung', die 'Fuellmenge' bei Essen&Trinken, die Anzahl
der gefundenen FPs, alle 4 Attribute (Intelligenz, Geschick, Kraft,
Ausdauer), den Charakter (Align), die Anzahl der freien Haende,
ob der Spieler Seher ist, ob er bestimmte Quests geloest hat, ob
er eine bestimmte Menge Geld dabei hat (die er dann zahlen muss)
und letztlich welche Rassen dieses Level nicht erreichen koennen,
bzw. welche es ausnahmsweise koennen. Letzteres hat aber wohl
nur Bedeutung fuer Level 1 (=Eintrittsbedingungen).
WICHTIG: Eventuell wird sich das noch erweitern. Es empfiehlt sich
deshalb die Manpage 'restriktionen' zu lesen!!!
Wem das alles nicht ausreicht, der kann auch eine Funktion in
dem Mapping angeben, in der er selbst noch 'Ueberpruefungen'
vornimmt. (Bei einfachen Properties, aber besser im Restriktor
einbauen lassen.)
WIE SIEHT DENN SO EIN MAPPING AUS?
Also nehmen wir als Beispiel eine einfache Gilde mit 3 Leveln. Die
Bedingungen koennten sein:
Level 1: (=Gildeneintrittsbedingungen)
- 500000 Erfahrungspunkte
- 12 Smaragde Beitrittsgeld
- Annie-Quest bestanden haben
Level 2: - 8000000 Erfahrungspunkte
- mindestens 40% aller Forschungspunkte im Mud
- absolut nuechtern
- mind. netter Charakter (Align 100)
- Intelligenz 19
Level 3: - 2000000 Erfahrungspunkte
- mindestens 400 Questpunkte
- mindestens 60% aller Forschungspunkte
- heiliger Charakter
- Geschicklichkeit 25
- nur Spieler mit Anfangsbuchstabe 'H' koennen die Stufe
erreichen.
Das 'Bedingungen'-Mapping fuer eine Gilde mit diesen 4 Stufen
saehe wie folgt aus. Jedes Level hat einen Eintrag im P_GUILD_LEVELS
Mapping (die Nummer ist der Key).
Der Inhalt eines Eintrages ist selbst auch wieder ein Mapping.
SetProp(P_GUILD_LEVELS,
([
1: ([ // Level 1 Mapping
P_XP : 500000, // 500k XPs
R_MONEY : 10368, // 864*12 Bernsteine
P_QUESTS: ({"Der Puppendoktor"}), // Anniequest
]),
2: ([ // Level 2 Mapping
P_XP : 800000, // 800k XPs
R_EXPLORED: 40, // 40% erforscht?
P_ALCOHOL : 0, // nuechtern
R_GOOD : 100, // besser als 100?
A_INT : 19, // Intelligenz 19
]),
3: ([ // Level 3 Mapping
P_XP : 2000000, // 2 Mio XPs
P_QP : 400, // 400 Questpunkte
R_EXPLORED: 60, // 60% erforscht
R_GOOD : 900, // heilig
A_DEX : 25, // Geschick 25
R_FUN : "first_letter_h", // first_letter_h(...)
]), // aufrufen
]);
Die Bedeutung der Properties ( P_* ) sollte klar sein. Die Attribute
( A_* ) entsprechen ebenfalls den Definitionen bei Lebewesen im Mud.
Damit koennen aber leider nicht alle Abfragen gebastelt werden, des-
halb bringt der Restriktor noch ein paar eigene Defines ( R_* ) mit,
die sozusagen als 'Kruecke' dienen, wo man mit Properties nicht
weiterkommt. Welche Properties, Attribute und sonstige Defines der
Restriktor genau verarbeitet, ist in 'restriktionen' beschrieben.
Ist man sich ueber die Arbeitsweise des Restriktors im klaren,
sollte das oben angegebene Beispiel leicht verstaendlich sein. Kann
jetzt der Spieler zum Beispiel beim erhoehen auf Gildenlevel 2 die
Bedingung absolut nuechtern zu sein, nicht erfuellen, bekommt er
eine entsprechende Meldung.
Bei Gildenstufe 3 wird als letzte Bedingung die Funktion
first_letter_h() mit dem Parameter this_player() aufgerufen, die
ueberprueft, ob der Spieler als ersten Buchstabe ein 'H' hat. Gibt
first_letter_h() als Result 0 zurueck, darf der Spieler erhoehen,
ansonsten wird der String ausgegeben, den first_letter_h() liefert.
WAS PASSIERT BEIM GILDENWECHSEL?
Das Gildenlevel wird fuer jede Gilde getrennt gespeichert. Ein
spieler->QueryProp(P_GUILD_LEVEL) liefert aber immer nur das Level
seiner derzeitigen Gilde. spieler->SetProp(P_GUILD_LEVEL) setzt auch
nur das Level der momentanen Gilde. Wechselt der Spieler die Gilde
und kehrt spaeter wieder in seine alte Gilde zurueck, dann hat er
automatisch wieder seine alte Gildenstufe.
SIND DIE FERTIGKEITEN JETZT AUCH VOM GILDENLEVEL ABHAENGIG?
Nein. P_GUILD_SKILLS funktioniert jetzt genauso wie die Gildenlevel.
Es muss also durchaus nicht reichen, ein bestimmtes Gildenlevel zu
haben, um eine Fertigkeit erlernen zu koennen. Beispiele zu
Fertigkeiten-Bedingungen stehen in P_GUILD_SKILLS.
WONACH RICHTET SICH JETZT DAS NORMALE SPIELERLEVEL?
Das kann man wie bisher auch in seiner eignen Gilde erhoehen und
ist nach wie vor von einer bestimmten Menge Erfahrungspunkten und
Forschungspunkten abhaengig. Das einzige was daran jetzt anders ist,
ist, dass es jetzt in ALLEN Gilden genau gleich viel kostet, sein
Level zu erhoehen. Die Bedingungen zum Aufsteigen sind ergo fuer
alle gleich.
UND DIE TITEL?
Die Titel sind jetzt auch nur vom Gildenlevel abhaengig. In
P_GUILD_TITLES sollten genau so viele Titel definiert sein, wie die
Gilde Level hat. Sind weniger definiert, wird der letzte immer
wieder gesetzt. Sind mehr definiert, hat das keinerlei Effekt.
DAS WAR JA EINFACH :-)
Genau. Und wenn Du was noch nicht verstanden hast, dann kopier Dir
einfach das Beispielmapping oben und probier ein wenig herum in
Deiner Testgilde. :)
SIEHE AUCH:
restriktionen(WL), mappings(LPC), P_GUILD_SKILLS,
P_GUILD_LEVEL, P_GUILD_LEVELS, P_GUILD_TITLES, P_LEVEL
|