MonsterInstance
El contenedor de datos en tiempo de ejecucion para un unico monstruo: especie, forma, estadisticas, movimientos, habilidad, objeto equipado, amistad y mas. Este es el objeto que obtiene al indexar un Roster (p. ej. player.PlayerRoster[0]), asi que es el tipo que su codigo de juego manipula con mas frecuencia.
Namespace: OpenMon.MCE.Monster
A diferencia de las interfaces de OpenMon.MCE.SDK, MonsterInstance es una clase serializable concreta. Los miembros de abajo son la superficie principal que la mayoria de los compradores usa; la clase completa tiene miembros adicionales (cria, evolucion, ayudantes de encuentro y sprites). Consulte el codigo fuente (nivel Source) para la API completa.
Definicion
[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();
}
Campos y propiedades
Species
Especie de este monstruo.
Tipo: MonsterEntry
Form
Forma de este monstruo (variante regional, forma de genero, shiny, etc.).
Tipo: Form
IsNullEntry
Es esta entrada nula? Util porque Unity crea una instancia con todo establecido en null al serializar ranuras de roster vacias.
Tipo: bool (solo lectura) -- true cuando Species == null || Form == null.
FormData
Obtiene los datos de forma de esta especie de monstruo (el registro por forma que contiene estadisticas base, tipos, movimientos aprendibles, etc.).
Tipo: DataByFormEntry (solo lectura) -- equivalente a Species[Form].
StatData
Datos de estadisticas de este monstruo. Aqui es donde vive el nivel del monstruo (StatData.Level, un byte), junto con su Nature y CurrentLevelExperience.
Tipo: MonsterStatData
PhysicalData
Datos fisicos de este monstruo (genero, modificadores de altura/peso). Lea el genero via PhysicalData.Gender.
Tipo: MonsterPhysicalData
OriginData
Datos de origen de este monstruo (region, ubicacion, ball de captura, entrenador original, si es un alfa).
Tipo: OriginData
HasNickname / Nickname
Si el monstruo tiene un apodo, y el apodo en si cuando lo tiene.
Tipo: bool / string
CurrentTrainer
Entrenador actual de este monstruo.
Tipo: string
Friendship
El valor de amistad de este monstruo.
Tipo: byte (0-255)
CurrentHP
El HP actual de este monstruo.
Tipo: uint
CurrentMoves
Las ranuras de movimientos del monstruo. Un monstruo tiene 4 ranuras; cada MoveSlot lleva el Move y su PP actual.
Tipo: MoveSlot[]
LearntMoves
Movimientos que este monstruo ha aprendido en su vida.
Tipo: List<Move>
HeldItem
El objeto equipado de este monstruo.
Tipo: Item
CanBattle
Puede combatir este monstruo? true cuando CurrentHP > 0 y el monstruo no es un huevo.
Tipo: bool (solo lectura)
Height
Obtiene la altura del monstruo (altura de la forma x modificador de altura fisica).
Tipo: float (solo lectura)
Weight
Obtiene el peso del monstruo (peso de la forma x modificador fisico, luego ajustado por los modificadores de peso de la habilidad).
Tipo: float (solo lectura)
Metodos
MonsterInstance(...) constructor
Constructor para una instancia de monstruo con sobreescrituras para la mayoria de sus datos. Solo settings, database, species, form y level son obligatorios; el resto tiene valores por defecto razonables (naturaleza/habilidad aleatoria, sin apodo, OriginData.Type.Caught, etc.).
| Parametro | Tipo | Descripcion |
|---|---|---|
settings | MCESettings | Configuracion interna para la referencia de MCE |
database | MonsterDatabaseInstance | Base de datos usada para crear este monstruo |
species | MonsterEntry | Especie de este monstruo |
form | Form | Forma de este monstruo (una forma invalida recae en la predeterminada) |
level | byte | Nivel de este monstruo |
| (muchos opcionales) | naturaleza, habilidad, genero, IVs/EVs, movimientos, apodo, entrenador, ball, cintas, objeto equipado, isEgg, y mas |
Roster.AddMonsterEn el juego normal usted crea monstruos generalmente a traves de Roster.AddMonster(...), que reenvia a este constructor y coloca el monstruo en el equipo por usted.
GetNameOrNickName(ILocalizer localizer)
Recupera el nombre o apodo de este monstruo.
| Parametro | Tipo | Descripcion |
|---|---|---|
localizer | ILocalizer | Referencia al localizador |
Devuelve: string -- el apodo localizado si lo tiene, el nombre de especie localizado en caso contrario (o la cadena "Egg" cuando es un huevo).
ChangeHP(int amount, bool forceSurvive = false)
Cambia el HP de este monstruo en una cantidad sin acotar (acotada internamente a [0..maxHP], o [1..maxHP] cuando forceSurvive esta activo).
| Parametro | Tipo | Descripcion |
|---|---|---|
amount | int | La cantidad sin acotar por la que cambiar el HP |
forceSurvive | bool | Forzar que el monstruo sobreviva el golpe? |
Devuelve: (int NewHP, int PreviousHP, bool TriggeredForceSurvive).
CompletelyHeal()
Cura completamente a este monstruo: restaura el HP al maximo, rellena el PP de cada ranura de movimiento y limpia su estado.
IsAtMaxHP()
Verifica si el monstruo esta con la salud maxima.
Devuelve: bool -- true si lo esta.
RaiseExperience(ExperienceLookupTable lookupTable, uint amount, Action<LevelUpData> levelUpCallback)
Aumenta la experiencia de este monstruo, manejando las subidas de nivel (y sus eventos de aprendizaje de movimientos) en el camino.
| Parametro | Tipo | Descripcion |
|---|---|---|
lookupTable | ExperienceLookupTable | Tabla de consulta de experiencia a usar |
amount | uint | Cantidad de experiencia a aumentar |
levelUpCallback | Action<LevelUpData> | Callback disparado cada vez que el monstruo sube de nivel |
GetExperienceForNextLevel(ExperienceLookupTable lookupTable)
Obtiene la experiencia necesaria para el siguiente nivel.
Devuelve: int -- la experiencia requerida para el siguiente nivel.
ChangeFriendship(int amount, SceneInfoAsset currentScene, ILocalizer localizer)
Cambia la amistad de este monstruo (aplica modificadores de ubicacion y ball de captura antes de acotar a [0..255]).
| Parametro | Tipo | Descripcion |
|---|---|---|
amount | int | Cantidad a cambiar |
currentScene | SceneInfoAsset | Escena actual en la que estamos |
localizer | ILocalizer | Referencia al localizador |
GetStats(BattleManager battleManager)
Recupera las estadisticas actuales de este monstruo.
| Parametro | Tipo | Descripcion |
|---|---|---|
battleManager | BattleManager | Referencia al gestor de batalla si esta en batalla; pase null fuera de batalla |
Devuelve: Dictionary<Stat, uint> -- cada estadistica mapeada a su valor calculado.
GetTypes(MCESettings settings, BattleManager battleManager)
Recupera los tipos de este monstruo. Pueden ser modificados por estados volatiles de batalla.
Devuelve: (MonsterType, MonsterType) -- los dos tipos (el segundo puede ser null para monstruos de un solo tipo).
GetAbility()
Obtiene la habilidad de este monstruo.
Devuelve: Ability.
SetAbility(Ability ability)
Establece la nueva habilidad de este monstruo.
| Parametro | Tipo | Descripcion |
|---|---|---|
ability | Ability | Nueva habilidad |
KnowsMove(Move move)
Verifica si el monstruo conoce un movimiento.
Devuelve: bool -- true si lo conoce.
CanLearnMove(Move move)
Verifica si el monstruo puede aprender un movimiento (es decir, el movimiento esta en su conjunto aprendible y aun no lo conoce).
Devuelve: bool -- true si puede.
GetMovesWithPP()
Recupera una lista de los movimientos que todavia tienen PP.
Devuelve: List<MoveSlot>.
Clone()
Clona esta instancia. Devuelve null para una entrada nula; clona en profundidad los datos de estadisticas y copia el resto.
Devuelve: MonsterInstance.
Ejemplo de uso
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();
}
}