Saltar al contenido principal

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

Tipo de datos concreto, no una interfaz del SDK

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.).

ParametroTipoDescripcion
settingsMCESettingsConfiguracion interna para la referencia de MCE
databaseMonsterDatabaseInstanceBase de datos usada para crear este monstruo
speciesMonsterEntryEspecie de este monstruo
formFormForma de este monstruo (una forma invalida recae en la predeterminada)
levelbyteNivel de este monstruo
(muchos opcionales)naturaleza, habilidad, genero, IVs/EVs, movimientos, apodo, entrenador, ball, cintas, objeto equipado, isEgg, y mas
Prefiera Roster.AddMonster

En 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.

ParametroTipoDescripcion
localizerILocalizerReferencia 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).

ParametroTipoDescripcion
amountintLa cantidad sin acotar por la que cambiar el HP
forceSurviveboolForzar 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.

ParametroTipoDescripcion
lookupTableExperienceLookupTableTabla de consulta de experiencia a usar
amountuintCantidad de experiencia a aumentar
levelUpCallbackAction<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]).

ParametroTipoDescripcion
amountintCantidad a cambiar
currentSceneSceneInfoAssetEscena actual en la que estamos
localizerILocalizerReferencia al localizador

GetStats(BattleManager battleManager)​

Recupera las estadisticas actuales de este monstruo.

ParametroTipoDescripcion
battleManagerBattleManagerReferencia 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.

ParametroTipoDescripcion
abilityAbilityNueva 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();
}
}