IMonsterDatabase
Read-only contract for querying the Monster Database. This is the public API surface for all database queries.
Namespace: 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)
Get a monster entry by its national dex number.
| 参数 | 类型 | 描述 |
|---|---|---|
dexNumber | uint | The unique dex number |
Returns: MonsterEntry or null if not found.
GetMonster(string name)
Get a monster entry by its species name.
| 参数 | 类型 | 描述 |
|---|---|---|
name | string | The species name (case-sensitive) |
Returns: MonsterEntry or null if not found.
GetAllMonsters()
Get all registered monster entries in the database.
Returns: IReadOnlyList<MonsterEntry> -- all species, ordered by dex number.
GetMove(string name)
Get a move by its name.
Returns: Move or null if not found.
GetAllMoves()
Get all registered moves.
Returns: IReadOnlyList<Move> -- all 668+ moves.
GetAbility(string name)
Get an ability by its name.
Returns: Ability or null if not found.
GetAllAbilities()
Get all registered abilities.
Returns: IReadOnlyList<Ability>.
GetItem(string name)
Get an item by its name.
Returns: Item or null if not found.
GetAllItems()
Get all registered items.
Returns: IReadOnlyList<Item>.
GetAllTypes()
Get all registered monster types.
Returns: IReadOnlyList<MonsterType> -- the 18 standard types (or custom types if modified).
GetTypeEffectiveness(MonsterType, MonsterType)
Get the type effectiveness multiplier for one type attacking another.
| 参数 | 类型 | 描述 |
|---|---|---|
attackingType | MonsterType | The move's type |
defendingType | MonsterType | The target's type (single type) |
Returns: float -- 0.0 (immune), 0.5 (not very effective), 1.0 (neutral), or 2.0 (super effective).
This method checks one attacking type against one defending type. For dual-typed defenders, call it twice and multiply the results:
float effectiveness = db.GetTypeEffectiveness(moveType, defenderType1)
* db.GetTypeEffectiveness(moveType, defenderType2);
GetAllForms()
Get all registered forms.
Returns: IReadOnlyList<Form>.
属性
MonsterCount
Total number of monster entries in the database.
Type: int
用法示例
[Inject] private IMonsterDatabase db;
// Find a specific monster
MonsterEntry sparkbit = db.GetMonster("Sparkbit");
MonsterEntry starter = db.GetMonster(1);
// Check type matchup
float eff = db.GetTypeEffectiveness(MonsterType.Water, MonsterType.Fire);
Debug.Log($"Water vs Fire: {eff}x"); // 2.0x
// Count all Fire-type monsters
int fireCount = db.GetAllMonsters()
.Count(m => m.Type1 == MonsterType.Fire || m.Type2 == MonsterType.Fire);