Neue Encounters-Methode hinzufügen

Weiterführende Links
  • Wilde Pokémon
    • Der Artikel beschreibt die bereits vorhandene Encounter-Methoden und wie man diese nutzt.

 

Inhalt

Encounter-Methode definieren

Alle Encounter-Methoden werden im obersten Bereich des Script-Bereichs PField_Encounters definiert und zwar im Modul EncounterTypes.

Weiter unten ist eine ergänzende Encounter-Methode definiert, um an dieser zu zeigen, wie man eine neue Encounter-Methode hinzufügt. Was neu hinzugefügt wurde, ist markiert worden.

Diese Zeilen nummerieren die Encounter-Methoden und gibt diese einen Namen. Der Name wird dem Spieler nicht angezeigt, allerdings werden sie in der PBS-Datei encounters.txt benutzt. Die Nummer und die Position des Namens im Namen-Array sollten dieselben sein.

Dieses Array definiert zum einen, wie viele Zeilen jeder Encounter besitzt, als auch die Chance für jeden Encounter (also die Wahrscheinlichkeit, dass man diesen Encounter begegnen wird). Jede Zahl steht im Verhältnis zu den anderen. Teilt man also eine Zahl durch die Summe aller Zahlen und multipliziert diese mit 100, dann hat man die prozentuale Wahrscheinlichkeit.

Beispiel: Der erste Eintrag dieses Arrays gehört zum Land-Encounter. Es beinhaltet 12 Zahlen. Das bedeutet, dass man beim Benutzen des Land-Encounters (in der PBS-Datei encounters.txt) 12 Zeilen für die wilden Pokémon definieren muss.

Die erste Zahl beim Land-Encounter ist eine 20 und die Summe aller Zahlen beträgt 100 (20+20+10+10+10+10+5+5+4+4+1+1). Das bedeutet, dass die Wahrscheinlichkeit für das erste Pokémon 20% beträgt.

Beachte, dass die Zahlen zusammen nicht unbedingt 100 ergeben müssen. Eine Zeile könnte auch aus [1,1,1] bestehen, bei der es 3 Encounter gibt, die allesamt die selbe Wahrscheinlichkeit besitzen (33%).

EnctypeDensities=[25,10,10,0,0,0,0,0,0,25,25,25,25,25]

Diese Werte sind die Standardwerte für die „Dichte“ der wilden Pokémon. Sie werden benutzt, wenn eine Map definierte Encounter besitzt, allerdings keine individuellen Werte für die „Dichte“.

Es sollten insgesamt nur drei verschiedene Zahlen existieren (sie dürfen nicht 0 betragen): Eines für Land-Encounters, eines für Surfer-Encounters und eines für Cave-Encounters. Standardmäßig besitzen zwei der drei Zahlen den gleichen Wert (Surfer- und Cave-Encounters, jeweils 10). Manche Encounter-Methoden verwenden kein „Dichte“-System, erfordern trotzdem eine definierte Zahl, welche nicht 0 betragen darf.

EnctypeCompileDens=[1,2,3,0,0,0,0,0,0,1,1,1,1,1]

Für Maps, bei den eine Encounter-Dichte definiert wurde, wird in diesem Array eingestellt, welche der drei Dichten für diesen Encounter benutzt wird (die erste, die zweite oder die dritte). Wie bereits erwähnt, benutzen manche Encounter-Methoden keine Dichten. Diese werden dann mit einer 0 angegeben.

Spezielle Definitionen für Encounter-Methoden

Manche Encounter-Methoden besitzen zusätzliche Eigenschaften, welches Auswirkung darauf hat, wann und wie sie definiert werden können. Zum Beispiel kann ein Cave-Encounter nicht definiert werden, wenn bereits ein Land-Encounter definiert wurde. Das liegt daran, dass die beiden inkompatibel zueinander sind.

Der Code dafür befindet sich in der Methode pbCompileEncounters, im Script-Bereich Compiler:

Dieser Code gibt eine Fehlermeldung aus, wenn sich in der PBS-Datei encounters.txt eine Map mit Cave- und Land-Encounters befindet.

Einen ähnlichen Code gibt es in der Methode pbNewEncounterType im Script-Bereich Editor_Screens. Dieser hindert den Benutzer daran, im Editor beide Encounter für eine Map zu definieren.

Wenn die neue Encounter-Methode inkompatibel zu einem der anderen Methoden sein sollte, dann sollte man einen Code wie diesen einfügen, um zu verhindern, dass beide Encounter definiert werden können.

Encounter-Methode aktivieren

Es gibt zwei Arten, einen Encounter auszulösen:

  • Einen Schritt gehen: Entweder einen Schritt auf einer bestimmten Map (Cave-Encounters) oder auf einem Tile mit einem bestimmten Terrain Tag (Grasstiles für Land-Encounter, Wassertiles für Water-Encounters).
  • Einen Encounter auslösen: Entweder durch das Nutzen eines Items (Angel) oder durch das Interagieren mit einem Event (Zertrümmerer-Felsen mit Zetrümmerer).

Wie erwähnt, kann jede dieser Möglichkeiten eine Anzahl von verschiedenen Bedingungen haben, die entscheiden, welche Encounter-Methode verwendet wird (ein bestimmtes Terrain Tag oder ein bestimmter Ort oder eine bestimmte Zeit).

Aufgrund der vielen Bedingungen ist es schwer zu erklären, wie man den neuen Encounter in den Scripts aktiviert. Das Beste ist, sich ähnliche Scripts anzuschauen und diese zu kopieren.

Erste Überprüfung

Das erste was passiert, wenn der Spieler einen Schritt geht, ist dass entschieden wird, welche Encounter-Methode benutzt werden soll. Dies wird durch die Methode pbEncounterType erledigt, im Script-Bereich PField_Encounters. Diese Methode teilt die Möglichkeiten in drei Gruppen:

  • Encounters, wenn der Spieler surft: $PokemonGlobal && $PokemonGlobal.surfing
  • Encounters, wenn die aktuelle Map eine Höhle ist: self.isCave?
  • Encounters, wenn der Spieler auf einem Grasstile steht: self.isGrass?

Um zu entscheiden, welches am besten zutrifft, können mehrere Methoden angewendet werden: Entweder nach Situation (z.B beim Ersten wird geprüft, ob der Spieler gerade surft) oder ob die aktuelle Map wilde Pokémon definiert hat, welches eine bestimmte Encounter-Methode verwenden (wie beim Zweiten und Dritten). Bei diesem Schritt wird aber noch nicht geprüft, ob der Spieler z.B auf einem Grasstile steht – Das kommt später.

pbEncounterType wählt eine bestimmte Encounter-Methode, welches für die wilden Pokémon benutzt werden kann und gibt diese anschließend zurück.

Anschließend analysiert die Methode isEncounterPossibleHere? die momentane Spielsituation und entscheidet, ob gerade wilde Pokémon möglich sind. Hier wird z.B geguckt, ob man auf einem Grasstile steht.

Um eine neue Encounter hinzuzufügen, muss man sich beide Methoden anschauen.