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

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> -- すべての640以上の技。

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

使用例​

using System.Linq;

[Inject] private IMonsterCaptureEngine engine;

void Example()
{
IMonsterDatabase db = engine.Database;

// Find a specific monster — by name, or by National Dex number.
MonsterEntry sparkbit = db.GetMonster("Sparkbit");
MonsterEntry starter = db.GetMonster(1u);

// Types are ScriptableObjects, not an enum — fetch them from the database.
MonsterType fire = db.GetAllTypes().FirstOrDefault(t => t.name == "Fire");
MonsterType water = db.GetAllTypes().FirstOrDefault(t => t.name == "Water");

// Check a type matchup.
float eff = db.GetTypeEffectiveness(water, fire);
Debug.Log($"Water vs Fire: {eff}x"); // 2.0x

// Count all Fire-type species. A monster's types live on its per-form data
// (DataByFormEntry), reached through the MonsterEntry[form] indexer.
int fireCount = db.GetAllMonsters().Count(m =>
{
if (m.AvailableForms == null || m.AvailableForms.Count == 0) return false;
var data = m[m.AvailableForms[0]];
return data != null && (data.FirstType == fire || data.SecondType == fire);
});
Debug.Log($"Fire-type species: {fireCount}");
}