Pokemon Showdown!のTeam Builderのテキストの仕様について解説します。
開発者向け情報です。
開発者向け情報です。
サンプルは以下の通りです。
なお、上記のサンプルで1つのパーティを表現しており、サンプルと同等の形式のテキストを下部に繋げることで2つ以上のパーティを表現することも可能です。
=== [gen2nintendocup2000] Wiki版_HTCカビブラ === TeamBoss (Snorlax) (M) @ Leftovers Ability: none Level: 55 - Double-Edge - Curse - Sleep Talk - Rest Steelix (M) @ Gold Berry Ability: none Level: 50 EVs: 252 HP / 252 Atk / 252 Def / 252 SpA / 252 SpD / 212 Spe - Earthquake - Curse - Roar - Explosion Machamp (M) @ Scope Lens Ability: none Level: 50 - Cross Chop - Rock Slide - Sleep Talk - Rest Starmie @ Mystic Water Ability: none Level: 50 EVs: 252 HP / 252 Def / 252 SpA / 252 SpD / 252 Spe IVs: 2 Atk - Hydro Pump - Ice Beam - Reflect - Recover Zapdos @ Mint Berry Ability: none Level: 50 - Thunder - Drill Peck - Reflect - Rest Umbreon (F) @ Miracle Berry Ability: none Level: 50 Happiness: 0 EVs: 252 HP / 252 Def / 252 SpA / 252 SpD / 252 Spe IVs: 2 Atk - Mean Look - Charm - Pursuit - Baton Pass
なお、上記のサンプルで1つのパーティを表現しており、サンプルと同等の形式のテキストを下部に繋げることで2つ以上のパーティを表現することも可能です。
- レコード種別(必須)
- "=== ["固定です。
- ルール名(必須)
- ニンテンドウカップ2000の場合、ポケスタ環境準拠の場合は"gen2nintendocup2000"、GB・VC環境準拠の場合は"gen2ou"を入力します。
- 区切り文字(必須)
- "] "固定です。
- パーティ名(必須)
- 任意の文字列でパーティ名を記述します。この文字列には、空白、角括弧、イコールが許容されます。更に、他のパーティとの重複可、空文字可です。ただし、nul文字のような一部のバイナリ文字は許容されません。スラッシュも許容されません。
- 空白と角括弧、イコールが許容されるため、読み取りプログラムを自力で実装する場合、前述のレコード種別・ルール名や後述のレコード終了と区別するために実装上の工夫が必要です。
- 実装例:前から順番に読み取り、前半5文字は無視、"文字列] "はルール名として解釈("] "が出現した時点でルール名として判定)、以降は全てパーティ名として解釈するが、最後の4文字はレコード終了を示すため除外。
- 任意の文字列でパーティ名を記述します。この文字列には、空白、角括弧、イコールが許容されます。更に、他のパーティとの重複可、空文字可です。ただし、nul文字のような一部のバイナリ文字は許容されません。スラッシュも許容されません。
- レコード終了(必須)
- " ==="固定です。
- ニックネーム(必須)
- ニックネームを記述します。種族名の後ろに1バイト空白を入れてください。
- ニックネームは1〜18文字の文字列で記述します。この文字列には、空白、丸括弧、アットマークが許容されます(ただし、これらの文字の入れ方によってはPokemon Showdown!で正しく読み取れなくなる可能性があるので、使わない方が無難です)。また、マルチバイト文字も許容されます。ただし、nul文字のような一部のバイナリ文字は許容されません。
- 空白と丸括弧とアットマークが許容されるため、読み取りプログラムを自力で実装する場合、後述の種族名や性別や持ち物名と区別するために実装上の工夫が必要です。
- 実装例:性別は種族+個体値から導出できるため無視。後ろから順番に読み取り、"@ 文字列 "は持ち物として解釈(後ろから順番に解釈し、")"が出現する前の"@"は持ち物として解釈する)(これを読み取るか")"が出現するかしたら以降は種族名若しくはニックネームとして解釈)、"(文字列) "は種族名として解釈(文字列が種族名を示さない場合は無視)(これを読み取ったら以降はニックネームとして解釈)、文頭"文字列 "はニックネームとして解釈(この時点で種族名がセットされていない場合は種族名としても解釈)する。
- 種族名(任意)
- 種族名を記述します。種族名の前に"("、後ろに") "を入れてください。
- ニックネームと種族名が同一の場合はこの項目は省略され、ニックネームが種族名として解釈されます。
- 第二世代で記述可能な種族名の一覧はこちらを参照してください。
- 性別(任意)
- 性別を記述します。♂の場合は"(M) "、♀の場合は"(F) "を記述します。
- 省略された場合は性別不明となります。
- 持ち物名(任意)
- "@ "を記述した後に持ち物名を記述し、持ち物名の後ろに1バイト空白を入れてください。
- 第二世代で記述可能な持ち物名の一覧はこちらを参照してください。
- 省略された場合は持ち物無しとなります。
- レコード終了(必須)
- 1バイトの空白を入れてください。
行が省略された場合はレベル100と解釈されます。
- レコード種別(必須)
- "Level: "固定です。
- レベル(必須)
- 第二世代の場合はレベルを2〜100の範囲で記述してください。レベルの後ろに1バイト空白を入れてください。
- レコード終了(必須)
- 1バイトの空白を入れてください。
行が省略された場合は懐き度255と解釈されます。
- レコード種別(必須)
- "Happiness: "固定です。
- 懐き度(必須)
- 0〜255の範囲で記述してください。懐き度の後ろに1バイト空白を入れてください。
- レコード終了(必須)
- 1バイトの空白を入れてください。
0〜252の範囲で記述します。第二世代の場合は1/4(小数点以下切り捨て)された値が適用されます。
行が省略された場合はHP・攻撃・防御・素早さ・特殊(特攻・特防)の努力レベルは全て252(努力レベル63として適用)となります。
ニンテンドウカップ2000かつGB・VC環境準拠の場合(ルール名に"gen2ou"と記述した場合)、レベル50のポケモンは何れかの努力レベルを4n+1〜3にする必要があります。全ての努力レベルが4nの場合、何れかの努力レベルに1を足す必要があります。全ての努力レベルが252の場合は何れかの努力レベルを251にする必要があります。なお、これらの調整により、実数値が変化することはありません。
行が省略された場合はHP・攻撃・防御・素早さ・特殊(特攻・特防)の努力レベルは全て252(努力レベル63として適用)となります。
ニンテンドウカップ2000かつGB・VC環境準拠の場合(ルール名に"gen2ou"と記述した場合)、レベル50のポケモンは何れかの努力レベルを4n+1〜3にする必要があります。全ての努力レベルが4nの場合、何れかの努力レベルに1を足す必要があります。全ての努力レベルが252の場合は何れかの努力レベルを251にする必要があります。なお、これらの調整により、実数値が変化することはありません。
- レコード種別(必須)
- "EVs: "固定です。
- HP努力レベル記述(任意)
- 0〜252の範囲で記述し、後ろに" HP "と記述してください。
- 攻撃努力レベル・防御努力レベル・特攻努力レベル・特防努力レベル・素早さ努力レベルを省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は0と解釈されます。
- 攻撃努力レベル記述(任意)
- 0〜252の範囲で記述し、後ろに" Atk "と記述してください。
- 防御努力レベル・特攻努力レベル・特防努力レベル・素早さ努力レベルを省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は0と解釈されます。
- 防御努力レベル記述(任意)
- 0〜252の範囲で記述し、後ろに" Def "と記述してください。
- 特攻努力レベル・特防努力レベル・素早さ努力レベルを省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は0と解釈されます。
- 特攻努力レベル記述(任意)
- 0〜252の範囲で記述し、後ろに" SpA "と記述してください。
- 更に後ろに"/ "を記述してください(第二世代の場合は特攻努力レベルと特防努力レベルを同一にする必要があるため、特攻努力レベルを省略しない場合は特防努力レベルは省略不可)。
- 省略された場合は0と解釈されます。
- 特防努力レベル記述(任意)
- 0〜252の範囲で記述し、後ろに" SpD "と記述してください。
- 素早さ努力レベルを省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は0と解釈されます。
- 素早さ努力レベル記述(任意)
- 0〜252の範囲で記述し、後ろに" Spe "と記述してください。
- 省略された場合は0と解釈されます。
- レコード終了(必須)
- 1バイトの空白を入れてください。
0〜31の範囲で記述します。第二世代の場合は1/2(小数点以下切り捨て)された値が適用されます。
(第二世代の場合、GUI上では0〜15の範囲で記述します)
行が省略された場合はHP・攻撃・防御・素早さ・特殊(特攻・特防)の個体値は全て31(個体値15として適用)となります。
(第二世代の場合、GUI上では0〜15の範囲で記述します)
行が省略された場合はHP・攻撃・防御・素早さ・特殊(特攻・特防)の個体値は全て31(個体値15として適用)となります。
- レコード種別(必須)
- "IVs: "固定です。
- HP個体値記述(任意)
- 0〜31の範囲で記述し、後ろに" HP "と記述してください。
- 攻撃個体値・防御個体値・特攻個体値・特防個体値・素早さ個体値を省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は31と解釈されます。
- 攻撃個体値記述(任意)
- 0〜31の範囲で記述し、後ろに" Atk "と記述してください。
- 防御個体値・特攻個体値・特防個体値・素早さ個体値を省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は31と解釈されます。
- 防御個体値記述(任意)
- 0〜31の範囲で記述し、後ろに" Def "と記述してください。
- 特攻個体値・特防個体値・素早さ個体値を省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は31と解釈されます。
- 特攻個体値記述(任意)
- 0〜31の範囲で記述し、後ろに" SpA "と記述してください。
- 更に後ろに"/ "を記述してください(第二世代の場合は特攻個体値と特防個体値を同一にする必要があるため、特攻個体値を省略しない場合は特防個体値は省略不可)。
- 省略された場合は31と解釈されます。
- 特防個体値記述(任意)
- 0〜31の範囲で記述し、後ろに" SpD "と記述してください。
- 素早さ個体値を省略しない場合は、更に後ろに"/ "を記述してください。
- 省略された場合は31と解釈されます。
- 素早さ個体値記述(任意)
- 0〜31の範囲で記述し、後ろに" Spe "と記述してください。
- 省略された場合は31と解釈されます。
- レコード終了(必須)
- 1バイトの空白を入れてください。
ファイルフォーマット上は任意であり、省略された場合は技無しになります。
しかし、第二世代の場合は技が1つも無いとルール違反になるため、事実上必須項目です。
しかし、第二世代の場合は技が1つも無いとルール違反になるため、事実上必須項目です。
- レコード種別(必須)
- "- "固定です。
- 技名(必須)
- 技名を記述します。技名の後ろに1バイト空白を入れてください。
- 第二世代で記述可能な技名の一覧はこちらを参照してください。
- "Hidden Power "の場合、後ろに"[英語のタイプ名] "と記述する記法が許容されています。この記法を行う場合、個体値は当該タイプのめざめるパワーとなる最大の個体値を指定する必要があります。
- 例えば、"Hidden Power [Water] "の場合、個体値はEDFF、ShowdownのTeam Builderのテキストの記法で言うと"IVs: 14 HP / 28 Atk / 26 Def "を指定する必要があります。
- レコード終了(必須)
- 1バイトの空白を入れてください。
このページへのコメント
努力レベルのバリデーションチェックを誤って理解していたので訂正しました。
パーティ名やニックネームについて、許容されない文字を調べたのでその結果を反映しました。
パーティ名について、空白、角括弧、イコールが許容されることを追記しました。
個体値について、GUI上では0〜15の範囲で指定するというのを追記しました。
ニックネームについて書き忘れたので追記しました。