Pokémon manipulieren
Dieser Artikel beschreibt wie man Pokémon manipuliert. Das beinhaltet, wie man ein Pokémon gibt/erhält, ein Pokémon aus dem Team auswählt, ein Pokémon als gesehen/gefangen markiert wird und so weiter.
Um zu sehen, wie man bestimmte Eigenschaften (z.B Geschlecht) eines Pokémon ändert, siehe den Artikel Pokémon bearbeiten.
Weiterführende Links |
|
Inhalt |
Pokémon hinzufügen
Es gibt vier Methoden, wie man dem Spieler ein Pokémon gibt. Diese lauten:
Funktion | Was es bewirkt |
pbAddPokemon(:PIKACHU,20) | Fügt dem Team des Spielers ein Pokémon hinzu (sofern Platz ist). Ist das Team des Spielers voll, wird das Pokémon stattdessen in den PC gelagert. Wenn das Pokémon hinzugefügt wurde, erscheint eine Nachricht, dass der Spieler das Pokémon erhalten hat. Der Spieler erhält anschließend die Möglichkeit, dem Pokémon einen Spitznamen zu geben. Wenn es keinen freien Platz mehr für das Pokémon gibt, erscheint eine Nachricht, dass man das Pokémon nicht aufnehmen kann. |
pbAddPokemonSilent(:PIKACHU,20) | Dasselbe wie zuvor, außer dass keine Nachricht erscheint und der Spieler dem Pokémon keinen Spitznamen geben kann. |
pbAddToParty(:PIKACHU,20) | Fügt dem Team des Spielers ein Pokémon hinzu (sofern Platz ist). Wenn das Team voll ist, erscheint eine Nachricht, dass man das Pokémon nicht aufnehmen kann. Wenn das Pokémon hinzugefügt wurde, erscheint eine Nachricht, dass der Spieler das Pokémon erhalten hat. Der Spieler erhält anschließend die Möglichkeit es einen Spitznamen zu geben. |
pbAddToPartySilent(:PIKACHU,20) | Dasselbe wie zuvor, außer dass keine Nachricht erscheint und der Spieler dem Pokémon keinen Spitznamen geben kann. |
Alle vier Methoden geben ein true zurück, wenn das Pokémon hinzugefügt wurde und ein false, wenn nicht. Das bedeutet, dass man das als Bedingung nutzen kann. Beispiel:
1 2 3 4 5 6 7 8 |
@>Conditional Branch: Script: pbAddPokemon(:EEVEE,25) @>Text: Pokémon wurde erhalten... @> : Else @>Text: Du hast keinen Platz mehr... @> : Branch End @> |
Das Conditional Branch erlaubt es einem, weitere Texte hinzuzufügen, wie z.B „Ich hoffe, Evoli geht es gut.“ oder „Oh, das ist schade.“
Man kann auch das Pokémon vorher definieren und es anschließend durch eine der Methoden oben hinzufügen. Beispiel:
1 2 |
pkmn=PokeBattle_Pokemon.new(:MAGIKARP,10,$Trainer) pbAddPokemon(pkmn) |
Dies erlaubt es einem, das Pokémon zu bearbeiten, bevor es dem Spieler gegeben wird. Siehe auch den Artikel Pokémon bearbeiten.
Jede der vier Methoden oben besitzt einen zusätzlichen Parameter am Ende, welches einem die Möglichkeit gibt, die Form des hinzugefügten Pokémon in den Pokédex aufzuzeichnen. Dieser Parameter ist standardmäßig auf true, das heißt, dass die Form standardmäßig aufgezeichnet wird. Im Normalfall wird es nicht nötig sein, diesen auf false zu setzen, da man das Pokémon vorher bearbeiten kann (Geschlecht/Form kann also vorher festgelegt werden, bevor man es hinzufügt). Die Option ist trotzdem vorhanden.
Pokémon von einem anderen Trainer hinzufügen
NPCs können dem Spieler ein Pokémon geben. Dies ist ein Unterschied zu einem Tausch, bei der der Spieler sein Pokémon gegen ein anderes tauscht. Es ist auch ein Unterschied zu Pokémon, die der Spieler in einem Pokéball findet (da der Spieler dort als Original-Trainer gilt).
Um dies zu ermöglichen, verwendet man folgenden Script:
1 |
pbAddForeignPokemon(:SHUCKLE,20,_I("Kirk"),_I("Shuckie"),0) |
Kirk und 0 sind Name und Geschlecht des Original-Trainers (0=männlich, 1=weiblich, 2=unbekannt). Der Name ist erforderlich, während das Geschlecht optional ist (Standard ist männlich). Shuckie ist der Spitzname des Pokémon (Optional). Die Anführungszeichen sind erforderlich (Wie im Beispiel oben).
Wenn das Pokémon hinzugefügt wurde, kann der Spieler das Pokémon nicht umbenennen (Genau so wenig wie der Namensbewerter). Es wird eine zufällige OT-Trainer-ID für das Pokémon generiert, die sich von der ID-Nummer des Spielers unterscheidet. Wenn das Pokémon hinzugefügt wurde, erscheint eine Nachricht.
Ist das Team des Spielers voll, wird die Funktion ein false zurückgeben, ohne eine Nachricht zu hinterlassen. Man sollte den Script dann in einer Bedingung setzen, sodass im Falle eines Fehlschlags (false) eine Nachricht erscheint (z.B „Oh, dein Team ist voll.“).
Der Script fügt dem Team nur ein Pokémon auf einmal hinzu, sodass es nach dem Hinzufügen bearbeitet werden kann. Es nimmt dabei die letzte Position im Team ein, also $Trainer.party[$Trainer.party.length-1]. Siehe den Artikel Pokémon bearbeiten.
Diese Methode besitzt am Ende einen zusätzlichen Parameter, welches einem die Möglichkeit gibt, die Form des hinzugefügten Pokémon in den Pokédex aufzuzeichnen. Dieser Parameter ist standardmäßig auf true. Das heißt, dass die Form standardmäßig mit aufgezeichnet wird. Im Gegensatz zu den Methoden weiter oben, hat man hier nicht die Möglichkeit ein Pokémon vor dem Hinzufügen zu bearbeiten. Wenn man das Geschlecht/die Form des Pokémon ändern möchte, muss man am Ende ein false hinzufügen und dann das Pokémon bearbeiten. Vergiss nicht, die Form am Ende dann per Befehl aufzuzeichnen.
Demo-Team
def pbCreatePokemon im Script-Bereich Debug_Actions kann verwendet werden, um den Spieler ein komplettes Team an Pokémon zu geben (alle auf Level 20). Das Team besteht aus:
- Pikachu
- Tauboga
- Kadabra
- Garados
- Digdri
- Chaneira
Die Pokémon kennen alle Terrain-Attacken (außer Milchgetränk).
Dieser Script existiert nur zur Demonstrationszwecken und sollte nicht im richtigen Spiel verwendet werden.
Pokémon aus dem Team entfernen
Um ein Pokémon vollständig aus dem Team zu entfernen, benutzt man folgenden Script:
1 |
pbRemovePokemonAt(index) |
index ist die Position des Pokémon im Team (Erster Platz ist 0, zweiter Platz ist 1 usw.). Der Script kann das Pokémon nicht entfernen, wenn es sich hierbei um das letzte kampffähige Pokémon handelt (also nicht besiegt und kein Ei). Diese Methode gibt keine Nachricht aus. Es gibt ein true zurück, wenn das Pokémon entfernt wurde und ein false wenn nicht (das sollte dann in einer Bedingung gesetzt werden).
Beachte dass, wenn man ein Pokémon entfernt, alle anderen Pokémon dahinter einen Slot nach vorne rücken, um die Lücke zu füllen. Behalte das im Kopf, wenn du planst, mehrere Pokémon im Team zu entfernen. Um sicherzugehen, solltest du die Reihenfolge des Löschens umkehren: Man fängt mit dem letzten Pokémon an.
Eine weniger sichere Methode ist der Befehl $Trainer.party.delete_at(index), wobei index hier für dasselbe steht, wie oben. Es besitzt die selbe Funktion wie pbRemovePokemonAt, außer dass es auch das letzte kampffähige Pokémon entfernen kann.
Pokémon überprüfen
Um zu überprüfen, ob der Spieler in seinem Team ein bestimmtes Pokémon besitzt, nutze pbHasSpecies?(PBSpecies::species).
1 2 3 4 5 |
@>Conditional Branch: Script: pbHasSpecies?(:CELEBI) @>Text: Celebi befindet sich im Team. : Else @>Text: Es befindet sich kein Celebi im Team. : Branch End |
Um zu überprüfen, ob das erste Pokémon im Team des Spielers ein bestimmtes Pokémon ist, nutze Folgendes:
1 2 3 4 5 |
@>Conditional Branch: Script: $Trainer.pokemonParty[0].species==PBSpecies::CELEBI @>Text: Das erste Pokémon im Team ist ein Celebi. : Else @>Text: Das erste Pokémon im Team ist kein Celebi. : Branch End |
Beachte, dass dieses Beispiel den Befehl $Trainer.pokemonParty benutzt, statt das übliche $Trainer.party. Dies liegt daran, dass $Trainer.pokemonParty die Eier überspringt und nur nach (geschlüpften) Pokémon schaut (Besiegte und nicht Besiegte). Es gibt auch den Befehl $Trainer.ablePokemonParty, welches zusätzlich noch besiegte Pokémon überspringt und nur nach Pokémon schaut, die kampffähig sind.
Um das erste kampffähige Pokémon im Team des Spielers zu finden (also kein Ei und nicht besiegt), nutze eins der Folgenden:
1 2 |
pbFirstAblePokemon(1) pkmn=pbFirstAblePokemon(1) |
Das erste Beispiel speichert die Position des Pokémon in die globale Variable 1, während das Zweite zusätzlich dem Pokémon den Wert pkmn zuweist (pkmn.level ist z.B das Level des Pokémon).
Um zu schauen, ob der Spieler ein bestimmtes Pokémon mit „Schicksalhafte Begegnung“ in seinem Team hat, nutze pbHasFatefulSpecies?(:species).
Pokémon auswählen
Damit der Spieler ein Pokémon aus dem Team aussuchen kann (z.B für den Attackenverlerner oder für einen Tausch), benutze folgenden Script:
1 |
pbChoosePokemon(var1,var2) |
Das öffnet den Team-Bildschirm und der Spieler sucht sich aus diesem ein Pokémon aus. Die zwei Parameter stehen für folgendes:
- var1 ist die globale Variable, an der die Teamposition des Pokémon gespeichert wird. Die Nummer ist eine Zahl zwischen 0 und 5 oder -1 wenn kein Pokémon ausgewählt wurde. Im Normalfall wird die globale Variable 1 dafür benutzt.
- var2 ist die globale Variable, wo der Name (Oder Spitzname, falls vorhanden) des Pokémon gespeichert wird. Im Normalfall wird die globale Variable 3 dafür benutzt.
Es gibt drei verschiedene Ergebnisse von pbChoosePokemon: Ein Pokémon wurde ausgewählt, ein Ei wurde ausgewählt oder nichts wurde ausgewählt (die Auswahl wurde abgebrochen).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@>Script: pbChoosePokemon(1,3) @>Conditional Branch: Variable [0001] < 0 @>Text: Du hast die Wahl abgebrochen. @>Jump To Label: Done : Branch End @>Conditional Branch: pbGetPokemon(1).egg? -- Überprüft ob das Pokémon in der globalen Variable 1 ein Ei ist. @>Text: Du hast ein Ei ausgewählt. @>Jump To Label: Done : Branch End @>Text: Du hast \v[3] ausgewählt. -- Globale Variable 3 enthält den Namen des Pokémon. @>Script: pbSet(2,pbGetPokemon(1).level) -- Legt die globale Variable 2 auf das Level des Pokémon fest. @>Text: Es befindet sich auf Level \v[2]. @>Label: Done |
Dies ist ein Beispiel dafür, wie man pbChoosePokemon nutzt. Es zeigt auch wie man das ausgewählte Pokémon erhält und Informationen bekommt.
Es gibt zwei Scripts, die sich darauf beziehen (Beide besitzen die selben zwei Parameter, wie oben beschrieben):
- pbChooseAblePokemon – Erlaubt den Spieler nur Pokémon auszusuchen, die nicht besiegt oder ein Ei sind.
- pbChooseNonEggPokemon – Der Spieler darf nur ein Pokémon aussuchen und kein Ei (das Pokémon kann auch besiegt sein).
Andere Scripts
Script | Was es bewirkt |
pbAllFainted | Gibt true zurück, wenn der Spieler kein kampffähiges Pokémon mehr im Team hat und false, wenn doch. |
pbCheckAble(0) | Ignoriert das Pokémon mit der vorgegebenen Teamposition. Gibt true zurück, wenn der Spieler ein kampffähiges Pokémon besitzt und false, wenn nicht. |
$Trainer.pokemonCount | Gibt die Anzahl an Pokémon im Team wieder (nicht besiegt und besiegt). |
$Trainer.ablePokemonCount | Gibt die Anzahl an kampffähigen Pokémon im Team wieder (nur unbesiegte Pokémon). |
pbHealAll | Heilt das Team vollständig. (der Event-Befehl „Recover All“ besitzt die selbe Funktion). |
pbHasSpecies?(:BULBASAUR) | Gibt true zurück, wenn der Spieler ein bestimmtes Pokémon im Team besitzt (Eier werden ausgelassen) oder false, wenn nicht. |
pbHasFatefulSpecies?(:BULBASAUR) | Gibt true zurück, wenn der Spieler ein bestimmtes Pokémon mit einer „Schicksalhafte Begegnung“ im Team besitzt oder false, wenn nicht. |
pbCheckMove(PBMoves::TACKLE) | Gibt die Teamposition des ersten Pokémon wieder, welches eine bestimmte Attacke kennt (Eier werden ignoriert). Gibt nil zurück, wenn kein Pokémon zutrifft. Wird benutzt, um zu entscheiden, ob eine Attacke außerhalb des Kampfes genutzt werden kann. |
pbBalancedLevel($Trainer.pokemonParty) | Gibt den Durchschnittswert aller Level im Team wieder (Plus 2). Eier werden ignoriert. Kann benutzt werden, um wilde Pokémon zu bearbeiten, damit diese stets eine Herausforderung bleiben. |
pkmn.numMoves | Gibt die Anzahl an Attacken wieder, die das Pokémon (Hier: pkmn) kennt. |
pkmn.knowsMove?(:TACKLE) | Gibt true zurück, wenn das Pokémon (Hier: pkmn) eine bestimmte Attacke kennt oder false wenn nicht. |
pbHasEgg?(:TOGEPI) | Gibt true zurück, wenn sich dieses Pokémon im Normalfall in einem Ei befinden kann oder false, wenn nicht. Dies schließt auch Roselia (auch wenn es ein entwickeltes Pokémon ist, kann es gezüchtet werden, wenn man keine Essenz benutzt) und Manaphy (auch wenn Manaphy selbst nicht in einem Ei entstehen kann) ein. |
pbGetRegionalNumber(1,PBSpecies::BULBASAUR) | Gibt die Regionaldexnummer des Pokémon für einen bestimmten Dex wieder (in diesem Beispiel der Zweite). Gibt 0 zurück, wenn das Pokémon nicht in diesem Dex auftaucht. |
pbGetNationalNumber(1,135) | Gibt die Nationaldexnummer des Pokémon mit der vorgegeben Regionaldexnummer (135) in den bestimmten Regionaldex wieder (1). |
pbSize($Trainer.pokemonParty[0]) | Gibt die „Größe“ des Pokémon in Millimeter wieder. Benutzt die DV-Werte des Pokémon und dessen persönliche ID, um den Wert zu berechnen. |
$Trainer.seen[PBSpecies::BULBASAUR] | Gibt true zurück, wenn das vorgegebene Pokémon als Gesehen gilt oder false, wenn nicht. |
$Trainer.owned[PBSpecies::BULBASAUR] | Gibt true zurück, wenn das vorgegeben Pokémon als Gefangen gilt oder false, wenn nicht. |
$Trainer.numFormsSeen[PBSpecies::BULBASAUR] | Gibt die Anzahl an gesehene Formen des vorgegebenen Pokémon wieder. Beinhaltet nicht das Geschlecht, auch wenn das Pokémon Geschlechtsunterschiede besitzt. |