IMonsterDatabase
Read-only contract for querying the Monster Database. This is the public API surface for all database queries.
Read-only at runtime. Content is authored as assets in the editor and gameplay never mutates it.
Namespace: OpenMon.MCE.SDK
Definition
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; }
}
Methods
GetMonster(uint dexNumber)
Get a monster entry by its national dex number.
| Parameter | Type | Description |
|---|---|---|
dexNumber | uint | The unique dex number |
Returns: MonsterEntry or null if not found.
GetMonster(string name)
Get a monster entry by its species name.
| Parameter | Type | Description |
|---|---|---|
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 640+ 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.
| Parameter | Type | Description |
|---|---|---|
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>.
Properties
MonsterCount
Total number of monster entries in the database.
Type: int
Usage Example
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}");
}