メインコンテンツまでスキップ

IMonsterDatabase

モンスターデータベースを照会するための読み取り専用コントラクトです。すべてのデータベースクエリのパブリックAPIサーフェスです。

名前空間: OpenMon.MCE.SDK

定義

public interface IMonsterDatabase
{
MonsterEntry GetMonster(uint dexNumber);
MonsterEntry GetMonster(string name);
IReadOnlyList<MonsterEntry> GetAllMonsters();

Move GetMove(string name);
IReadOnlyList<Move> GetAllMoves();

Ability GetAbility(string name);
IReadOnlyList<Ability> GetAllAbilities();

Item GetItem(string name);
IReadOnlyList<Item> GetAllItems();

IReadOnlyList<MonsterType> GetAllTypes();
float GetTypeEffectiveness(MonsterType attackingType, MonsterType defendingType);

IReadOnlyList<Form> GetAllForms();

int MonsterCount { get; }
}

メソッド

GetMonster(uint dexNumber)

全国図鑑番号でモンスターエントリを取得します。

パラメータ説明
dexNumberuintユニークな図鑑番号

戻り値: MonsterEntry。見つからない場合は null

GetMonster(string name)

種族名でモンスターエントリを取得します。

パラメータ説明
namestring種族名(大文字小文字区別)

戻り値: MonsterEntry。見つからない場合は null

GetAllMonsters()

データベース内のすべてのモンスターエントリを取得します。

戻り値: IReadOnlyList<MonsterEntry> -- 図鑑番号順のすべての種族。

GetMove(string name)

名前で技を取得します。

戻り値: Move。見つからない場合は null

GetAllMoves()

登録されているすべての技を取得します。

戻り値: IReadOnlyList<Move> -- 668以上の全技。

GetAbility(string name)

名前で特性を取得します。

戻り値: Ability。見つからない場合は null

GetAllAbilities()

登録されているすべての特性を取得します。

戻り値: IReadOnlyList<Ability>

GetItem(string name)

名前でアイテムを取得します。

戻り値: Item。見つからない場合は null

GetAllItems()

登録されているすべてのアイテムを取得します。

戻り値: IReadOnlyList<Item>

GetAllTypes()

登録されているすべてのモンスタータイプを取得します。

戻り値: IReadOnlyList<MonsterType> -- 標準の18タイプ(変更した場合はカスタムタイプ)。

GetTypeEffectiveness(MonsterType, MonsterType)

あるタイプが別のタイプを攻撃する際のタイプ相性倍率を取得します。

パラメータ説明
attackingTypeMonsterType技のタイプ
defendingTypeMonsterTypeターゲットのタイプ(単タイプ)

戻り値: float -- 0.0(無効)、0.5(いまひとつ)、1.0(等倍)、または 2.0(こうかばつぐん)。

デュアルタイプ

このメソッドは1つの攻撃タイプと1つの防御タイプをチェックします。デュアルタイプの防御側には、2回呼び出して結果を乗算してください:

float effectiveness = db.GetTypeEffectiveness(moveType, defenderType1)
* db.GetTypeEffectiveness(moveType, defenderType2);

GetAllForms()

登録されているすべてのフォームを取得します。

戻り値: IReadOnlyList<Form>

プロパティ

MonsterCount

データベース内のモンスターエントリの総数。

: int

使用例

[Inject] private IMonsterDatabase db;

// 特定のモンスターを検索
MonsterEntry sparkbit = db.GetMonster("Sparkbit");
MonsterEntry starter = db.GetMonster(1);

// タイプ相性をチェック
float eff = db.GetTypeEffectiveness(MonsterType.Water, MonsterType.Fire);
Debug.Log($"Water vs Fire: {eff}x"); // 2.0x

// ほのおタイプの全モンスターをカウント
int fireCount = db.GetAllMonsters()
.Count(m => m.Type1 == MonsterType.Fire || m.Type2 == MonsterType.Fire);