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

MonsterInstance

単一のモンスターのランタイムデータコンテナ — 種族、フォーム、ステータス、技、特性、持ち物、なつき度など。これは、Roster にインデックスアクセスしたとき(例:player.PlayerRoster[0])に返ってくるオブジェクトなので、あなたのゲームコードが最も頻繁に操作する型です。

名前空間: OpenMon.MCE.Monster

SDK インターフェースではなく、具体的なデータ型

OpenMon.MCE.SDK のインターフェースとは異なり、MonsterInstance は具体的なシリアライズ可能クラスです。以下のメンバーは、ほとんどの購入者が使用する主要なサーフェスです。完全なクラスには追加のメンバー(繁殖、進化、エンカウント、スプライトのヘルパー)があります。完全な API についてはソースコード(Source ティア)を参照してください。

定義​

[Serializable]
public class MonsterInstance : Loggable<MonsterInstance>, IWorldDataContainer, ICommandParameter
{
public MonsterEntry Species;
public Form Form;
public bool IsNullEntry { get; }
public DataByFormEntry FormData { get; }

public MonsterStatData StatData;
public MonsterPhysicalData PhysicalData;
public OriginData OriginData;

public bool HasNickname;
public string Nickname;
public string CurrentTrainer;
public byte Friendship;
public uint CurrentHP;

public MoveSlot[] CurrentMoves;
public List<Move> LearntMoves;
public Item HeldItem;

public bool CanBattle { get; }
public float Height { get; }
public float Weight { get; }

public MonsterInstance(MCESettings settings, MonsterDatabaseInstance database,
MonsterEntry species, Form form, byte level, /* ...many optional overrides... */);

public string GetNameOrNickName(ILocalizer localizer);
public (int NewHP, int PreviousHP, bool TriggeredForceSurvive) ChangeHP(int amount, bool forceSurvive = false);
public void CompletelyHeal();
public bool IsAtMaxHP();
public void RaiseExperience(ExperienceLookupTable lookupTable, uint amount, Action<LevelUpData> levelUpCallback);
public int GetExperienceForNextLevel(ExperienceLookupTable lookupTable);
public void ChangeFriendship(int amount, SceneInfoAsset currentScene, ILocalizer localizer);
public Dictionary<Stat, uint> GetStats(BattleManager battleManager);
public (MonsterType, MonsterType) GetTypes(MCESettings settings, BattleManager battleManager);
public Ability GetAbility();
public void SetAbility(Ability ability);
public bool KnowsMove(Move move);
public bool CanLearnMove(Move move);
public List<MoveSlot> GetMovesWithPP();
public MonsterInstance Clone();
}

フィールドとプロパティ​

Species​

このモンスターの種族。

型: MonsterEntry

Form​

このモンスターのフォーム(地方バリアント、性別フォーム、色違いなど)。

型: Form

IsNullEntry​

このエントリは null か? Unity が空のロスタースロットをシリアライズするとき、すべてが null に設定されたインスタンスを作成するため、有用です。

型: bool(読み取り専用) — Species == null || Form == null のとき true。

FormData​

このモンスター種族のフォームデータ(種族値、タイプ、覚える技などを保持するフォームごとのレコード)を取得します。

型: DataByFormEntry(読み取り専用) — Species[Form] と同等。

StatData​

このモンスターのステータスデータ。ここにモンスターのレベル(StatData.Level、byte)が存在し、その Nature と CurrentLevelExperience も含まれます。

型: MonsterStatData

PhysicalData​

このモンスターの物理データ(性別、身長/体重の修正子)。性別は PhysicalData.Gender で読み取ります。

型: MonsterPhysicalData

OriginData​

このモンスターの出自データ(地方、場所、捕獲ボール、元のトレーナー、アルファかどうか)。

型: OriginData

HasNickname / Nickname​

モンスターがニックネームを持つか、そして持つ場合のニックネーム自体。

型: bool / string

CurrentTrainer​

このモンスターの現在のトレーナー。

型: string

Friendship​

このモンスターのなつき度の値。

型: byte(0〜255)

CurrentHP​

このモンスターの現在の HP。

型: uint

CurrentMoves​

モンスターの技スロット。モンスターは4つのスロットを持ち、各 MoveSlot は Move とその現在の PP を保持します。

型: MoveSlot[]

LearntMoves​

このモンスターが生涯で習得した技。

型: List<Move>

HeldItem​

このモンスターの持ち物。

型: Item

CanBattle​

このモンスターはバトルできるか? CurrentHP > 0 かつモンスターがタマゴでないとき true。

型: bool(読み取り専用)

Height​

モンスターの身長を取得します(フォームの身長 × 物理的な身長修正子)。

型: float(読み取り専用)

Weight​

モンスターの体重を取得します(フォームの体重 × 物理修正子、その後、特性の体重修正子で調整)。

型: float(読み取り専用)

メソッド​

MonsterInstance(...) constructor​

そのデータのほとんどについてオーバーライドを持つ、モンスターインスタンスのコンストラクタです。必須なのは settings、database、species、form、level のみで — 残りは妥当なデフォルト(ランダムな性格/特性、ニックネームなし、OriginData.Type.Caught など)を持ちます。

パラメータ型説明
settingsMCESettingsMCE 参照用の内部設定
databaseMonsterDatabaseInstanceこのモンスターを作成するために使用するデータベース
speciesMonsterEntryこのモンスターの種族
formFormこのモンスターのフォーム(無効なフォームはデフォルトにフォールバック)
levelbyteこのモンスターのレベル
(多数の任意)性格、特性、性別、個体値/努力値、技、ニックネーム、トレーナー、ボール、リボン、持ち物、isEgg など
Roster.AddMonster を優先

通常のゲームプレイでは、モンスターは通常 Roster.AddMonster(...) を通じて作成します。これはこのコンストラクタに転送し、モンスターをパーティのスロットに入れてくれます。

GetNameOrNickName(ILocalizer localizer)​

このモンスターの名前またはニックネームを取得します。

パラメータ型説明
localizerILocalizerローカライザーへの参照

戻り値: string — ニックネームがあればローカライズされたニックネーム、なければローカライズされた種族名(タマゴのときは「Egg」文字列)。

ChangeHP(int amount, bool forceSurvive = false)​

このモンスターの HP をクランプされていない量だけ変更します(内部的に [0..maxHP]、forceSurvive が設定されている場合は [1..maxHP] にクランプ)。

パラメータ型説明
amountintHP を変更するクランプされていない量
forceSurviveboolモンスターにヒットを耐えさせるか?

戻り値: (int NewHP, int PreviousHP, bool TriggeredForceSurvive)。

CompletelyHeal()​

このモンスターを完全に回復します — HP を最大まで回復し、すべての技スロットの PP を補充し、状態異常をクリアします。

IsAtMaxHP()​

モンスターが最大 HP にあるか確認します。

戻り値: bool — そうであれば true。

RaiseExperience(ExperienceLookupTable lookupTable, uint amount, Action<LevelUpData> levelUpCallback)​

このモンスターの経験値を上げ、その過程でレベルアップ(およびその技習得イベント)を処理します。

パラメータ型説明
lookupTableExperienceLookupTable使用する経験値ルックアップテーブル
amountuint上げる経験値の量
levelUpCallbackAction<LevelUpData>モンスターがレベルアップするたびに発火するコールバック

GetExperienceForNextLevel(ExperienceLookupTable lookupTable)​

次のレベルに必要な経験値を取得します。

戻り値: int — 次のレベルに必要な経験値。

ChangeFriendship(int amount, SceneInfoAsset currentScene, ILocalizer localizer)​

このモンスターのなつき度を変更します([0..255] にクランプする前に、場所と捕獲ボールの修正子を適用)。

パラメータ型説明
amountint変更する量
currentSceneSceneInfoAsset現在いるシーン
localizerILocalizerローカライザーへの参照

GetStats(BattleManager battleManager)​

このモンスターの現在のステータスを取得します。

パラメータ型説明
battleManagerBattleManagerバトル中の場合はバトルマネージャーへの参照。バトル外では null を渡す

戻り値: Dictionary<Stat, uint> — 各ステータスがその計算値にマッピングされたもの。

GetTypes(MCESettings settings, BattleManager battleManager)​

このモンスターのタイプを取得します。揮発性のバトル状態によって変更される場合があります。

戻り値: (MonsterType, MonsterType) — 2つのタイプ(単一タイプのモンスターでは2つ目が null の場合がある)。

GetAbility()​

このモンスターの特性を取得します。

戻り値: Ability。

SetAbility(Ability ability)​

このモンスターの新しい特性を設定します。

パラメータ型説明
abilityAbility新しい特性

KnowsMove(Move move)​

モンスターが技を覚えているか確認します。

戻り値: bool — 覚えていれば true。

CanLearnMove(Move move)​

モンスターが技を習得できるか確認します(すなわち、技が覚える技リストにあり、まだ覚えていない)。

戻り値: bool — できれば true。

GetMovesWithPP()​

まだ PP が残っている技のリストを取得します。

戻り値: List<MoveSlot>。

Clone()​

このインスタンスをクローンします。null エントリには null を返します。ステータスデータをディープクローンし、残りをコピーします。

戻り値: MonsterInstance。

使用例​

using OpenMon.MCE.SDK;
using OpenMon.MCE.Monster;
using Zenject;

public class LeadMonsterInspector : MonoBehaviour
{
[Inject] private IMonsterCaptureEngine engine;

private void Start()
{
Roster roster = engine.Player.PlayerRoster;
if (roster.RosterSize == 0) return;

MonsterInstance lead = roster[0];

Debug.Log($"Species : {lead.Species.name}");
Debug.Log($"Level : {lead.StatData.Level}");
Debug.Log($"HP : {lead.CurrentHP}");
Debug.Log($"Friend. : {lead.Friendship}");
Debug.Log($"Can battle: {lead.CanBattle}");

// Inspect the moveset.
foreach (MoveSlot slot in lead.GetMovesWithPP())
Debug.Log($"Move: {slot.Move.name} ({slot.CurrentPP} PP)");

// Full restore.
lead.CompletelyHeal();
}
}