From 69ab7b197cb8a356577265bf08b2a6c474317b20 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 8 Aug 2020 17:07:05 +0200 Subject: [PATCH] Reworks PokemonBuilder. --- .../Battling/ChoiceTurn/FleeTurnChoice.cs | 2 - .../Battling/ChoiceTurn/SwitchTurnChoice.cs | 2 - PkmnLibSharp/Battling/Pokemon.cs | 1 - PkmnLibSharp/Battling/PokemonBuilder.cs | 131 ++++++++++-------- PkmnLibSharp/Generated/Pkmnlib/Pokemon.cs | 17 +++ PkmnLibSharp/Library/EffectParameter.cs | 1 - .../Library/GrowthRates/LookupGrowthRate.cs | 1 - PkmnLibSharp/Library/Species/Species.cs | 2 - PkmnLibSharp/Native/libpkmnLib.so | 4 +- PkmnLibSharp/Utilities/MarshalHelper.cs | 1 - PkmnLibSharp/Utilities/Random.cs | 2 - PkmnLibSharp/pkmnlib.json | 2 +- .../Battling/BattleLibraryHelper.cs | 1 - PkmnLibSharpTests/Battling/PokemonBuilder.cs | 21 +++ 14 files changed, 112 insertions(+), 76 deletions(-) create mode 100644 PkmnLibSharpTests/Battling/PokemonBuilder.cs diff --git a/PkmnLibSharp/Battling/ChoiceTurn/FleeTurnChoice.cs b/PkmnLibSharp/Battling/ChoiceTurn/FleeTurnChoice.cs index 5e18adc..77b7a3e 100644 --- a/PkmnLibSharp/Battling/ChoiceTurn/FleeTurnChoice.cs +++ b/PkmnLibSharp/Battling/ChoiceTurn/FleeTurnChoice.cs @@ -1,5 +1,3 @@ -using System; - namespace PkmnLibSharp.Battling.ChoiceTurn { public class FleeTurnChoice : BaseTurnChoice diff --git a/PkmnLibSharp/Battling/ChoiceTurn/SwitchTurnChoice.cs b/PkmnLibSharp/Battling/ChoiceTurn/SwitchTurnChoice.cs index dd847b1..c7ca2f2 100644 --- a/PkmnLibSharp/Battling/ChoiceTurn/SwitchTurnChoice.cs +++ b/PkmnLibSharp/Battling/ChoiceTurn/SwitchTurnChoice.cs @@ -1,5 +1,3 @@ -using System; - namespace PkmnLibSharp.Battling.ChoiceTurn { public class SwitchTurnChoice : BaseTurnChoice diff --git a/PkmnLibSharp/Battling/Pokemon.cs b/PkmnLibSharp/Battling/Pokemon.cs index 468fb05..425fded 100644 --- a/PkmnLibSharp/Battling/Pokemon.cs +++ b/PkmnLibSharp/Battling/Pokemon.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Linq; using PkmnLibSharp.Library; using PkmnLibSharp.Utilities; diff --git a/PkmnLibSharp/Battling/PokemonBuilder.cs b/PkmnLibSharp/Battling/PokemonBuilder.cs index bf0ce9b..d9213d5 100644 --- a/PkmnLibSharp/Battling/PokemonBuilder.cs +++ b/PkmnLibSharp/Battling/PokemonBuilder.cs @@ -6,9 +6,9 @@ using Random = PkmnLibSharp.Utilities.Random; namespace PkmnLibSharp.Battling { - public class PokemonBuilder + public abstract class BasePokemonBuilder where T : Pokemon { - private BattleLibrary _library; + protected readonly BattleLibrary Library; public string Species { get; } public string Forme { get; private set; } = "default"; public string Nickname { get; private set; } = ""; @@ -27,46 +27,46 @@ namespace PkmnLibSharp.Battling public List<(string moveName, MoveLearnMethod learnMethod)> LearnedMoves { get; } = new List<(string moveName, MoveLearnMethod learnMethod)>(); - public PokemonBuilder(BattleLibrary library, string species, byte level) + public BasePokemonBuilder(BattleLibrary library, string species, byte level) { - _library = library; + Library = library; Species = species; Level = level; } - public PokemonBuilder WithForme(string forme) + public BasePokemonBuilder WithForme(string forme) { Forme = forme; return this; } - public PokemonBuilder WithGender(Gender gender) + public BasePokemonBuilder WithGender(Gender gender) { Gender = gender; return this; } - public PokemonBuilder ForceShiny(bool value) + public BasePokemonBuilder ForceShiny(bool value) { IsForceShiny = value; return this; } - public PokemonBuilder WithHeldItem(string heldItem) + public BasePokemonBuilder WithHeldItem(string heldItem) { HeldItem = heldItem; return this; } - public PokemonBuilder WithNickname(string nickname) + public BasePokemonBuilder WithNickname(string nickname) { Nickname = nickname; return this; } - public PokemonBuilder LearnMove(string moveName, MoveLearnMethod moveLearnMethod) + public BasePokemonBuilder LearnMove(string moveName, MoveLearnMethod moveLearnMethod) { - if (LearnedMoves.Count > _library.StaticLibrary.Settings.MaximalMoves) + if (LearnedMoves.Count > Library.StaticLibrary.Settings.MaximalMoves) { throw new Exception("Too many moves for Pokemon."); } @@ -74,9 +74,60 @@ namespace PkmnLibSharp.Battling return this; } - public Pokemon Build() + protected byte Coloring; + protected uint Experience; + protected uint Uid; + protected int AbilityIndex; + protected bool HiddenAbility; + + protected virtual void PopulateUninitialized(Species species, Forme forme, Random random) { - if (!_library.StaticLibrary.SpeciesLibrary.TryGet(Species, out var species)) + Experience = Library.StaticLibrary.GrowthRateLibrary.CalculateExperience(species.GrowthRate, Level); + Uid = random.GetUnsigned(0, uint.MaxValue); + + if (Gender == (Gender) (-1)) + { + Gender = species.GetRandomGender(random); + } + Coloring = 0; + if (IsForceShiny.HasValue) + { + Coloring = (byte) (IsForceShiny.Value ? 1 : 0); + } + else if (random.Get(Library.StaticLibrary.Settings.ShinyRate) == 0) + { + Coloring = 1; + } + + AbilityIndex = 0; + HiddenAbility = false; + if (string.IsNullOrEmpty(Ability)) + { + AbilityIndex = forme!.GetRandomAbility(random); + } + else + { + AbilityIndex = forme!.Abilities.IndexOf(Ability); + if (AbilityIndex == -1) + { + AbilityIndex = forme.HiddenAbilities.IndexOf(Ability); + if (AbilityIndex == -1) + { + throw new Exception( + $"Invalid ability '{Ability}' for Pokemon '{species.Name}' and forme '{forme.Name}'."); + } + + HiddenAbility = true; + } + } + } + + protected abstract T Finalize(Species species, Forme forme, Item? heldItem, + IReadOnlyCollection moves, Nature nature); + + public T Build() + { + if (!Library.StaticLibrary.SpeciesLibrary.TryGet(Species, out var species)) { throw new Exception($"Species '{Species}' was not found."); } @@ -86,59 +137,21 @@ namespace PkmnLibSharp.Battling throw new Exception($"Forme '{Forme}' was not found on species '{Species}'"); } - var experience = _library.StaticLibrary.GrowthRateLibrary.CalculateExperience(species.GrowthRate, Level); var random = new Random(); - var uid = random.GetUnsigned(0, uint.MaxValue); - if (Gender == (Gender) (-1)) - { - Gender = species.GetRandomGender(random); - } - - byte coloring = 0; - if (IsForceShiny.HasValue) - { - coloring = (byte) (IsForceShiny.Value ? 1 : 0); - } - else if (random.Get(_library.StaticLibrary.Settings.ShinyRate) == 0) - { - coloring = 1; - } Item? heldItem = null; if (HeldItem != null) { - if (!_library.StaticLibrary.ItemLibrary.TryGet(HeldItem, out heldItem)) + if (!Library.StaticLibrary.ItemLibrary.TryGet(HeldItem, out heldItem)) { throw new Exception($"Item '{HeldItem}' was not found."); } } - - var abilityIndex = 0; - var isHiddenAbility = false; - if (string.IsNullOrEmpty(Ability)) - { - abilityIndex = forme!.GetRandomAbility(random); - } - else - { - abilityIndex = forme!.Abilities.IndexOf(Ability); - if (abilityIndex == -1) - { - abilityIndex = forme.HiddenAbilities.IndexOf(Ability); - if (abilityIndex == -1) - { - throw new Exception( - $"Invalid ability '{Ability}' for Pokemon '{species.Name}' and forme '{forme.Name}'."); - } - - isHiddenAbility = true; - } - } - - var moves = new LearnedMove[_library.StaticLibrary.Settings.MaximalMoves]; + + var moves = new LearnedMove[Library.StaticLibrary.Settings.MaximalMoves]; for (var i = 0; i < LearnedMoves.Count; i++) { - if (!_library.StaticLibrary.MoveLibrary.TryGet(LearnedMoves[i].moveName, out var move)) + if (!Library.StaticLibrary.MoveLibrary.TryGet(LearnedMoves[i].moveName, out var move)) { throw new Exception($"Move '{LearnedMoves[i].moveName}' was not found."); } @@ -148,13 +161,11 @@ namespace PkmnLibSharp.Battling if (string.IsNullOrEmpty(Nature)) { - Nature = _library.StaticLibrary.NatureLibrary.GetRandomNatureName(random); + Nature = Library.StaticLibrary.NatureLibrary.GetRandomNatureName(random); } - var nature = _library.StaticLibrary.NatureLibrary.GetNature(Nature); - - return new Pokemon(_library, species, forme, Level, experience, uid, Gender, coloring, heldItem, Nickname, - isHiddenAbility, (byte) abilityIndex, moves, IVs, EVs, nature); + var nature = Library.StaticLibrary.NatureLibrary.GetNature(Nature); + return Finalize(species, forme!, heldItem, moves, nature); } } } \ No newline at end of file diff --git a/PkmnLibSharp/Generated/Pkmnlib/Pokemon.cs b/PkmnLibSharp/Generated/Pkmnlib/Pokemon.cs index 4479412..21da694 100644 --- a/PkmnLibSharp/Generated/Pkmnlib/Pokemon.cs +++ b/PkmnLibSharp/Generated/Pkmnlib/Pokemon.cs @@ -80,5 +80,22 @@ namespace Pkmnlib.Generated [DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Pokemon_GetStatusName")] internal static extern IntPtr GetStatusName(IntPtr p); + /// const Pokemon * + /// unsigned char + [DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Pokemon_GetFriendship")] + internal static extern byte GetFriendship(IntPtr p); + + /// Pokemon * + /// unsigned char + /// void + [DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Pokemon_SetFriendship")] + internal static extern void SetFriendship(IntPtr p, byte value); + + /// Pokemon * + /// signed char + /// void + [DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Pokemon_ChangeFriendship")] + internal static extern void ChangeFriendship(IntPtr p, sbyte amount); + } } diff --git a/PkmnLibSharp/Library/EffectParameter.cs b/PkmnLibSharp/Library/EffectParameter.cs index 3a8ee45..2f9cc09 100644 --- a/PkmnLibSharp/Library/EffectParameter.cs +++ b/PkmnLibSharp/Library/EffectParameter.cs @@ -1,5 +1,4 @@ using System; -using Pkmnlib; using PkmnLibSharp.Utilities; namespace PkmnLibSharp.Library diff --git a/PkmnLibSharp/Library/GrowthRates/LookupGrowthRate.cs b/PkmnLibSharp/Library/GrowthRates/LookupGrowthRate.cs index 1f099a4..d4e8873 100644 --- a/PkmnLibSharp/Library/GrowthRates/LookupGrowthRate.cs +++ b/PkmnLibSharp/Library/GrowthRates/LookupGrowthRate.cs @@ -1,4 +1,3 @@ -using System; using PkmnLibSharp.Utilities; namespace PkmnLibSharp.Library.GrowthRates diff --git a/PkmnLibSharp/Library/Species/Species.cs b/PkmnLibSharp/Library/Species/Species.cs index d4b1e41..9af6afb 100644 --- a/PkmnLibSharp/Library/Species/Species.cs +++ b/PkmnLibSharp/Library/Species/Species.cs @@ -1,11 +1,9 @@ using System; using System.Collections.Generic; using Creaturelib.Generated; -using Pkmnlib; using Pkmnlib.Generated; using PkmnLibSharp.Utilities; using EvolutionData = PkmnLibSharp.Library.Evolution.EvolutionData; -using Gender = PkmnLibSharp.Library.Gender; using Random = PkmnLibSharp.Utilities.Random; namespace PkmnLibSharp.Library diff --git a/PkmnLibSharp/Native/libpkmnLib.so b/PkmnLibSharp/Native/libpkmnLib.so index e09069e..a2ff381 100755 --- a/PkmnLibSharp/Native/libpkmnLib.so +++ b/PkmnLibSharp/Native/libpkmnLib.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4837a6d8c1c891b05fb428f4c469d3df1d42edd1705ad6f3a6dd512e195bd18 -size 1095856 +oid sha256:179e2156bbb066e0f1c4380735cfd8562a5be6072be002d52cbdebadd3c82e8c +size 1096040 diff --git a/PkmnLibSharp/Utilities/MarshalHelper.cs b/PkmnLibSharp/Utilities/MarshalHelper.cs index fa5ee3a..4651e63 100644 --- a/PkmnLibSharp/Utilities/MarshalHelper.cs +++ b/PkmnLibSharp/Utilities/MarshalHelper.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Runtime.InteropServices; namespace PkmnLibSharp.Utilities diff --git a/PkmnLibSharp/Utilities/Random.cs b/PkmnLibSharp/Utilities/Random.cs index b51ae1f..d4d66c4 100644 --- a/PkmnLibSharp/Utilities/Random.cs +++ b/PkmnLibSharp/Utilities/Random.cs @@ -1,5 +1,3 @@ -using System; - namespace PkmnLibSharp.Utilities { public class Random : PointerWrapper diff --git a/PkmnLibSharp/pkmnlib.json b/PkmnLibSharp/pkmnlib.json index 38ae53e..e3b3880 100644 --- a/PkmnLibSharp/pkmnlib.json +++ b/PkmnLibSharp/pkmnlib.json @@ -1 +1 @@ -{"enums":[{"byteSize":1,"filename":"pkmnLib","name":"ScriptCategory","values":{"0":"Attack","1":"Talent","2":"Status","3":"Creature","4":"Battle","5":"Side"}},{"byteSize":4,"filename":"pkmnLib","name":"asEObjTypeFlags","values":{"1":"asOBJ_REF","1024":"asOBJ_APP_CLASS_DESTRUCTOR","1048576":"asOBJ_IMPLICIT_HANDLE","1073741824":"asOBJ_APP_ALIGN16","128":"asOBJ_ASHANDLE","1280":"asOBJ_APP_CLASS_D","131072":"asOBJ_APP_CLASS_ALLFLOATS","134217728":"asOBJ_TEMPLATE_SUBTYPE","16":"asOBJ_NOHANDLE","16384":"asOBJ_APP_FLOAT","16777216":"asOBJ_FUNCDEF","1792":"asOBJ_APP_CLASS_CD","2":"asOBJ_VALUE","2048":"asOBJ_APP_CLASS_ASSIGNMENT","2097151":"asOBJ_MASK_VALID_FLAGS","2097152":"asOBJ_SCRIPT_OBJECT","2304":"asOBJ_APP_CLASS_A","256":"asOBJ_APP_CLASS","262144":"asOBJ_NOCOUNT","268435456":"asOBJ_TYPEDEF","2816":"asOBJ_APP_CLASS_CA","32":"asOBJ_SCOPED","32768":"asOBJ_APP_ARRAY","3328":"asOBJ_APP_CLASS_DA","33554432":"asOBJ_LIST_PATTERN","3840":"asOBJ_APP_CLASS_CDA","4":"asOBJ_GC","4096":"asOBJ_APP_CLASS_COPY_CONSTRUCTOR","4194304":"asOBJ_SHARED","4352":"asOBJ_APP_CLASS_K","4864":"asOBJ_APP_CLASS_CK","512":"asOBJ_APP_CLASS_CONSTRUCTOR","524288":"asOBJ_APP_CLASS_ALIGN8","536870912":"asOBJ_ABSTRACT","5376":"asOBJ_APP_CLASS_DK","5888":"asOBJ_APP_CLASS_CDK","64":"asOBJ_TEMPLATE","6400":"asOBJ_APP_CLASS_AK","65536":"asOBJ_APP_CLASS_ALLINTS","67108864":"asOBJ_ENUM","6912":"asOBJ_APP_CLASS_CAK","7424":"asOBJ_APP_CLASS_DAK","768":"asOBJ_APP_CLASS_C","7936":"asOBJ_APP_CLASS_CDAK","8":"asOBJ_POD","8192":"asOBJ_APP_PRIMITIVE","8388608":"asOBJ_NOINHERIT"}},{"byteSize":4,"filename":"pkmnLib","name":"asECallConvTypes","values":{"0":"asCALL_CDECL","1":"asCALL_STDCALL","2":"asCALL_THISCALL_ASGLOBAL","3":"asCALL_THISCALL","4":"asCALL_CDECL_OBJLAST","5":"asCALL_CDECL_OBJFIRST","6":"asCALL_GENERIC","7":"asCALL_THISCALL_OBJLAST","8":"asCALL_THISCALL_OBJFIRST"}},{"byteSize":1,"filename":"pkmnLib","name":"Statistic","values":{"0":"Health","1":"PhysicalAttack","2":"PhysicalDefense","3":"MagicalAttack","4":"MagicalDefense","5":"Speed"}},{"byteSize":1,"filename":"pkmnLib","name":"MoveCategory","values":{"0":"Physical","1":"Special","2":"Status"}},{"byteSize":1,"filename":"pkmnLib","name":"AttackTarget","values":{"0":"Adjacent","1":"AdjacentAlly","10":"RandomOpponent","11":"Self","2":"AdjacentAllySelf","3":"AdjacentOpponent","4":"All","5":"AllAdjacent","6":"AllAdjacentOpponent","7":"AllAlly","8":"AllOpponent","9":"Any"}},{"byteSize":1,"filename":"pkmnLib","name":"EffectParameterType","values":{"0":"None","1":"Bool","2":"Int","3":"Float","4":"String"}},{"byteSize":4,"filename":"pkmnLib","name":"AttackLearnMethod","values":{"0":"Unknown","1":"Level"}},{"byteSize":1,"filename":"pkmnLib","name":"Gender","values":{"0":"Male","1":"Female","2":"Genderless"}},{"byteSize":1,"filename":"pkmnLib","name":"ItemCategory","values":{"0":"MiscItem","1":"CaptureDevice","2":"Medicine","3":"Berry","4":"MoveLearner","5":"VariantChanger","6":"KeyItem","7":"Mail"}},{"byteSize":1,"filename":"pkmnLib","name":"BattleItemCategory","values":{"0":"None","1":"Healing","2":"StatusHealing","3":"CaptureDevice","4":"MiscBattleItem"}},{"byteSize":1,"filename":"pkmnLib","name":"EvolutionMethod","values":{"0":"Level","1":"HighFriendship","10":"TradeWithHeldItem","11":"TradeWithSpecificPokemon","12":"Custom","2":"KnownMove","3":"LocationBased","4":"TimeBased","5":"HoldsItem","6":"IsGenderAndLevel","7":"EvolutionItemUse","8":"EvolutionItemUseWithGender","9":"Trade"}},{"byteSize":1,"filename":"pkmnLib","name":"TimeOfDay","values":{"0":"Night","1":"Morning","2":"Afternoon","3":"Evening"}},{"byteSize":4,"filename":"pkmnLib","name":"asETypeIdFlags","values":{"0":"asTYPEID_VOID","1":"asTYPEID_BOOL","10":"asTYPEID_FLOAT","1073741824":"asTYPEID_OBJHANDLE","11":"asTYPEID_DOUBLE","134217728":"asTYPEID_SCRIPTOBJECT","2":"asTYPEID_INT8","268435456":"asTYPEID_TEMPLATE","3":"asTYPEID_INT16","4":"asTYPEID_INT32","469762048":"asTYPEID_MASK_OBJECT","5":"asTYPEID_INT64","536870912":"asTYPEID_HANDLETOCONST","6":"asTYPEID_UINT8","67108863":"asTYPEID_MASK_SEQNBR","67108864":"asTYPEID_APPOBJECT","7":"asTYPEID_UINT16","8":"asTYPEID_UINT32","9":"asTYPEID_UINT64"}},{"byteSize":4,"filename":"pkmnLib","name":"asEContextState","values":{"0":"asEXECUTION_FINISHED","1":"asEXECUTION_SUSPENDED","2":"asEXECUTION_ABORTED","3":"asEXECUTION_EXCEPTION","4":"asEXECUTION_PREPARED","5":"asEXECUTION_UNINITIALIZED","6":"asEXECUTION_ACTIVE","7":"asEXECUTION_ERROR"}},{"byteSize":4,"filename":"pkmnLib","name":"asERetCodes","values":{"-1":"asERROR","-10":"asINVALID_DECLARATION","-11":"asINVALID_OBJECT","-12":"asINVALID_TYPE","-13":"asALREADY_REGISTERED","-14":"asMULTIPLE_FUNCTIONS","-15":"asNO_MODULE","-16":"asNO_GLOBAL_VAR","-17":"asINVALID_CONFIGURATION","-18":"asINVALID_INTERFACE","-19":"asCANT_BIND_ALL_FUNCTIONS","-2":"asCONTEXT_ACTIVE","-20":"asLOWER_ARRAY_DIMENSION_NOT_REGISTERED","-21":"asWRONG_CONFIG_GROUP","-22":"asCONFIG_GROUP_IS_IN_USE","-23":"asILLEGAL_BEHAVIOUR_FOR_TYPE","-24":"asWRONG_CALLING_CONV","-25":"asBUILD_IN_PROGRESS","-26":"asINIT_GLOBAL_VARS_FAILED","-27":"asOUT_OF_MEMORY","-28":"asMODULE_IS_IN_USE","-3":"asCONTEXT_NOT_FINISHED","-4":"asCONTEXT_NOT_PREPARED","-5":"asINVALID_ARG","-6":"asNO_FUNCTION","-7":"asNOT_SUPPORTED","-8":"asINVALID_NAME","-9":"asNAME_TAKEN","0":"asSUCCESS"}},{"byteSize":4,"filename":"pkmnLib","name":"asETypeModifiers","values":{"0":"asTM_NONE","1":"asTM_INREF","2":"asTM_OUTREF","3":"asTM_INOUTREF","4":"asTM_CONST"}},{"byteSize":4,"filename":"pkmnLib","name":"asEBehaviours","values":{"0":"asBEHAVE_CONSTRUCT","1":"asBEHAVE_LIST_CONSTRUCT","10":"asBEHAVE_SETGCFLAG","11":"asBEHAVE_GETGCFLAG","12":"asBEHAVE_ENUMREFS","13":"asBEHAVE_RELEASEREFS","14":"asBEHAVE_MAX","2":"asBEHAVE_DESTRUCT","3":"asBEHAVE_FACTORY","4":"asBEHAVE_LIST_FACTORY","5":"asBEHAVE_ADDREF","6":"asBEHAVE_RELEASE","7":"asBEHAVE_GET_WEAKREF_FLAG","8":"asBEHAVE_TEMPLATE_CALLBACK","9":"asBEHAVE_FIRST_GC"}},{"byteSize":4,"filename":"pkmnLib","name":"asEMsgType","values":{"0":"asMSGTYPE_ERROR","1":"asMSGTYPE_WARNING","2":"asMSGTYPE_INFORMATION"}},{"byteSize":4,"filename":"pkmnLib","name":"asEEngineProp","values":{"1":"asEP_ALLOW_UNSAFE_REFERENCES","10":"asEP_REQUIRE_ENUM_SCOPE","11":"asEP_SCRIPT_SCANNER","12":"asEP_INCLUDE_JIT_INSTRUCTIONS","13":"asEP_STRING_ENCODING","14":"asEP_PROPERTY_ACCESSOR_MODE","15":"asEP_EXPAND_DEF_ARRAY_TO_TMPL","16":"asEP_AUTO_GARBAGE_COLLECT","17":"asEP_DISALLOW_GLOBAL_VARS","18":"asEP_ALWAYS_IMPL_DEFAULT_CONSTRUCT","19":"asEP_COMPILER_WARNINGS","2":"asEP_OPTIMIZE_BYTECODE","20":"asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE","21":"asEP_ALTER_SYNTAX_NAMED_ARGS","22":"asEP_DISABLE_INTEGER_DIVISION","23":"asEP_DISALLOW_EMPTY_LIST_ELEMENTS","24":"asEP_PRIVATE_PROP_AS_PROTECTED","25":"asEP_ALLOW_UNICODE_IDENTIFIERS","26":"asEP_HEREDOC_TRIM_MODE","27":"asEP_MAX_NESTED_CALLS","28":"asEP_GENERIC_CALL_MODE","29":"asEP_INIT_STACK_SIZE","3":"asEP_COPY_SCRIPT_SECTIONS","30":"asEP_INIT_CALL_STACK_SIZE","31":"asEP_MAX_CALL_STACK_SIZE","32":"asEP_LAST_PROPERTY","4":"asEP_MAX_STACK_SIZE","5":"asEP_USE_CHARACTER_LITERALS","6":"asEP_ALLOW_MULTILINE_STRINGS","7":"asEP_ALLOW_IMPLICIT_HANDLE_TYPES","8":"asEP_BUILD_WITHOUT_LINE_CUES","9":"asEP_INIT_GLOBAL_VARS_AFTER_BUILD"}},{"byteSize":4,"filename":"pkmnLib","name":"asEGMFlags","values":{"0":"asGM_ONLY_IF_EXISTS","1":"asGM_CREATE_IF_NOT_EXISTS","2":"asGM_ALWAYS_CREATE"}},{"byteSize":4,"filename":"pkmnLib","name":"asETokenClass","values":{"0":"asTC_UNKNOWN","1":"asTC_KEYWORD","2":"asTC_VALUE","3":"asTC_IDENTIFIER","4":"asTC_COMMENT","5":"asTC_WHITESPACE"}},{"byteSize":4,"filename":"pkmnLib","name":"METADATATYPE","values":{"1":"MDT_TYPE","2":"MDT_FUNC","3":"MDT_VAR","4":"MDT_VIRTPROP","5":"MDT_FUNC_OR_VAR"}},{"byteSize":4,"filename":"pkmnLib","name":"asEFuncType","values":{"-1":"asFUNC_DUMMY","0":"asFUNC_SYSTEM","1":"asFUNC_SCRIPT","2":"asFUNC_INTERFACE","3":"asFUNC_VIRTUAL","4":"asFUNC_FUNCDEF","5":"asFUNC_IMPORTED","6":"asFUNC_DELEGATE"}},{"byteSize":1,"filename":"pkmnLib","name":"PkmnScriptCategory","values":{"128":"Weather","129":"Status"}},{"byteSize":1,"filename":"pkmnLib","name":"EventDataKind","values":{"0":"Damage","1":"Heal","2":"Faint","3":"Switch","4":"TurnStart","5":"TurnEnd","6":"ExperienceGain","7":"DisplayText"}},{"byteSize":1,"filename":"pkmnLib","name":"PkmnEventDataKind","values":{"128":"WeatherChange","129":"StatusChange"}},{"byteSize":1,"filename":"pkmnLib","name":"TurnChoiceKind","values":{"0":"Pass","1":"Attack","2":"Item","3":"Switch","4":"Flee"}},{"byteSize":1,"filename":"pkmnLib","name":"AttackCategory","values":{"0":"Physical","1":"Magical","2":"Status"}},{"byteSize":4,"filename":"pkmnLib","name":"syntax_option_type","values":{}},{"byteSize":4,"filename":"pkmnLib","name":"error_type","values":{"0":"_S_error_collate","1":"_S_error_ctype","10":"_S_error_badrepeat","11":"_S_error_complexity","12":"_S_error_stack","2":"_S_error_escape","3":"_S_error_backref","4":"_S_error_brack","5":"_S_error_paren","6":"_S_error_brace","7":"_S_error_badbrace","8":"_S_error_range","9":"_S_error_space"}},{"byteSize":4,"filename":"pkmnLib","name":"match_flag_type","values":{}},{"byteSize":1,"filename":"pkmnLib","name":"DamageSource","values":{"0":"AttackDamage"}},{"byteSize":1,"filename":"pkmnLib","name":"PkmnDamageSource","values":{"1":"Struggle"}}],"functions":[{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_Construct","parameters":[],"returns":"AngelScriptResolver *"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_Destruct","parameters":[{"name":"p","type":"AngelScriptResolver *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_Initialize","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"lib","type":"BattleLibrary *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_CreateScript","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"name","type":"const char *"},{"name":"script","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_FinalizeModule","parameters":[{"name":"p","type":"AngelScriptResolver *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_LoadScript","parameters":[{"name":"out","type":"Script * &"},{"name":"p","type":"AngelScriptResolver *"},{"name":"category","type":"ScriptCategory"},{"name":"scriptName","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_WriteByteCodeToFile","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"file","type":"const char *"},{"name":"stripDebugInfo","type":"bool"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_LoadByteCodeFromFile","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"file","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_WriteByteCodeToMemory","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"stripDebugInfo","type":"bool"},{"name":"size","type":"long unsigned int &"},{"name":"out","type":"unsigned char * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_LoadByteCodeFromMemory","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"memory","type":"unsigned char *"},{"name":"size","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_RegisterType","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"typeName","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_RegisterTypeMethod","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"typeName","type":"const char *"},{"name":"decl","type":"const char *"},{"name":"func","type":"Function *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_RegisterGlobalMethod","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"decl","type":"const char *"},{"name":"func","type":"Function *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelscriptScript_Destruct","parameters":[{"name":"p","type":"AngelScriptScript *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_Construct","parameters":[{"name":"out","type":"Battle * &"},{"name":"library","type":"const BattleLibrary *"},{"name":"parties","type":"const BattleParty * *"},{"name":"partiesCount","type":"long unsigned int"},{"name":"canFlee","type":"bool"},{"name":"numberOfSides","type":"unsigned char"},{"name":"creaturesPerSide","type":"unsigned char"},{"name":"randomSeed","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_Destruct","parameters":[{"name":"p","type":"Battle *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Battle_SetWeather","parameters":[{"name":"p","type":"Battle *"},{"name":"name","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_ClearWeather","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_GetWeatherName","parameters":[{"name":"p","type":"Battle *"}],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_BattleLibrary_Construct","parameters":[{"name":"out","type":"BattleLibrary * &"},{"name":"staticLib","type":"PokemonLibrary *"},{"name":"statCalculator","type":"StatCalculator *"},{"name":"damageLibrary","type":"DamageLibrary *"},{"name":"experienceLibrary","type":"ExperienceLibrary *"},{"name":"scriptResolver","type":"ScriptResolver *"},{"name":"miscLibrary","type":"MiscLibrary *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_BattleLibrary_Destruct","parameters":[{"name":"p","type":"BattleLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_DamageLibrary_Construct","parameters":[],"returns":"DamageLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_DamageLibrary_Destruct","parameters":[{"name":"p","type":"DamageLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_WeatherChangeEvent_Destruct","parameters":[{"name":"p","type":"WeatherChangeEvent *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_WeatherChangeEvent_GetWeatherName","parameters":[{"name":"p","type":"WeatherChangeEvent *"}],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_ExperienceLibrary_Construct","parameters":[],"returns":"ExperienceLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_ExperienceLibrary_HandleExperienceGain","parameters":[{"name":"p","type":"ExperienceLibrary *"},{"name":"faintedMon","type":"Creature *"},{"name":"opponents","type":"const Creature * *"},{"name":"numberOfOpponents","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_ExperienceLibrary_Destruct","parameters":[{"name":"p","type":"ExperienceLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_MiscLibrary_Construct","parameters":[],"returns":"MiscLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_MiscLibrary_Destruct","parameters":[{"name":"p","type":"MiscLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PkmnScript_ModifyCriticalStage","parameters":[{"name":"script","type":"PkmnScript *"},{"name":"attack","type":"ExecutingAttack *"},{"name":"target","type":"Creature *"},{"name":"hit","type":"unsigned char"},{"name":"critStage","type":"unsigned char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_Construct","parameters":[{"name":"library","type":"const BattleLibrary *"},{"name":"species","type":"const PokemonSpecies *"},{"name":"forme","type":"const PokemonForme *"},{"name":"level","type":"unsigned char"},{"name":"experience","type":"unsigned int"},{"name":"uid","type":"unsigned int"},{"name":"gender","type":"Gender"},{"name":"coloring","type":"unsigned char"},{"name":"heldItem","type":"const Item *"},{"name":"nickname","type":"const char *"},{"name":"hiddenAbility","type":"bool"},{"name":"abilityIndex","type":"unsigned char"},{"name":"moves","type":"const LearnedAttack * *"},{"name":"moveCount","type":"long unsigned int"},{"name":"hpIv","type":"unsigned char"},{"name":"attIv","type":"unsigned char"},{"name":"defIv","type":"unsigned char"},{"name":"sAtIv","type":"unsigned char"},{"name":"sDeIv","type":"unsigned char"},{"name":"spIv","type":"unsigned char"},{"name":"hpEv","type":"unsigned char"},{"name":"attEv","type":"unsigned char"},{"name":"defEv","type":"unsigned char"},{"name":"sAtEv","type":"unsigned char"},{"name":"sDeEv","type":"unsigned char"},{"name":"spEv","type":"unsigned char"},{"name":"nature","type":"const Nature *"}],"returns":"Pokemon *"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_Destruct","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_IsShiny","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"bool"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetNature","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"const Nature *"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetIndividualValue","parameters":[{"name":"p","type":"const Pokemon *"},{"name":"stat","type":"Statistic"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetEffortValue","parameters":[{"name":"p","type":"const Pokemon *"},{"name":"stat","type":"Statistic"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_SetStatus","parameters":[{"name":"p","type":"Pokemon *"},{"name":"name","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_ClearStatus","parameters":[{"name":"p","type":"Pokemon *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetStatusName","parameters":[{"name":"p","type":"Pokemon *"}],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_StatCalculator_Construct","parameters":[],"returns":"StatCalculator *"},{"filename":"pkmnLib","name":"PkmnLib_StatCalculator_Destruct","parameters":[{"name":"p","type":"StatCalculator *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_C_GetLastException","parameters":[],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateLevelEvolution","parameters":[{"name":"level","type":"unsigned char"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateFriendshipEvolution","parameters":[{"name":"friendship","type":"unsigned char"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateKnownMoveEvolution","parameters":[{"name":"move","type":"const MoveData *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateLocationEvolution","parameters":[{"name":"location","type":"const char *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTimeEvolution","parameters":[{"name":"time","type":"TimeOfDay"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateItemEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateGenderBasedEvolution","parameters":[{"name":"gender","type":"Gender"},{"name":"level","type":"unsigned char"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateItemUseEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateItemUseWithGenderEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"gender","type":"Gender"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTradeEvolution","parameters":[{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTradeWithItemEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTradeWithSpeciesEvolution","parameters":[{"name":"traded","type":"const PokemonSpecies *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateCustomEvolution","parameters":[{"name":"data","type":"const EffectParameter * *"},{"name":"dataLength","type":"long unsigned int"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetMethod","parameters":[{"name":"data","type":"const EvolutionData *"}],"returns":"EvolutionMethod"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetNewSpecies","parameters":[{"name":"data","type":"const EvolutionData *"}],"returns":"const PokemonSpecies *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetDataCount","parameters":[{"name":"data","type":"const EvolutionData *"}],"returns":"long unsigned int"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetData","parameters":[{"name":"data","type":"const EvolutionData *"},{"name":"index","type":"long unsigned int"},{"name":"out","type":"const EffectParameter * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Item_Construct","parameters":[{"name":"name","type":"const char *"},{"name":"category","type":"ItemCategory"},{"name":"battleCategory","type":"BattleItemCategory"},{"name":"price","type":"int"},{"name":"flags","type":"const char * *"},{"name":"flagsCount","type":"long unsigned int"},{"name":"flingPower","type":"unsigned char"}],"returns":"Item *"},{"filename":"pkmnLib","name":"PkmnLib_Item_Destruct","parameters":[{"name":"p","type":"const Item *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Item_GetFlingPower","parameters":[{"name":"p","type":"const Item *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_LibrarySettings_Construct","parameters":[{"name":"maximalLevel","type":"unsigned char"},{"name":"maximalMoves","type":"unsigned char"},{"name":"shinyRate","type":"unsigned short"}],"returns":"const LibrarySettings *"},{"filename":"pkmnLib","name":"PkmnLib_LibrarySettings_Destruct","parameters":[{"name":"p","type":"const LibrarySettings *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_LibrarySettings_GetShinyRate","parameters":[{"name":"p","type":"const LibrarySettings *"}],"returns":"unsigned short"},{"filename":"pkmnLib","name":"PkmnLib_Nature_Construct","parameters":[{"name":"increasedStat","type":"Statistic"},{"name":"decreasedStat","type":"Statistic"},{"name":"increasedModifier","type":"float"},{"name":"decreasedModifier","type":"float"}],"returns":"Nature *"},{"filename":"pkmnLib","name":"PkmnLib_Nature_Destruct","parameters":[{"name":"p","type":"const Nature *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetIncreaseModifier","parameters":[{"name":"p","type":"const Nature *"}],"returns":"float"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetDecreaseModifier","parameters":[{"name":"p","type":"const Nature *"}],"returns":"float"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetIncreasedStat","parameters":[{"name":"p","type":"const Nature *"}],"returns":"Statistic"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetDecreasedStat","parameters":[{"name":"p","type":"const Nature *"}],"returns":"Statistic"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetStatModifier","parameters":[{"name":"nature","type":"const Nature *"},{"name":"stat","type":"Statistic"}],"returns":"float"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_Construct","parameters":[{"name":"initialCapacity","type":"long unsigned int"}],"returns":"NatureLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_Destruct","parameters":[{"name":"p","type":"const NatureLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_LoadNature","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"name","type":"const char *"},{"name":"nature","type":"const Nature *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_GetNatureByName","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"name","type":"const char *"},{"name":"out","type":"const Nature * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_GetRandomNatureName","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"rand","type":"Random *"},{"name":"out","type":"const char * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_GetNatureName","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"nature","type":"const Nature *"},{"name":"out","type":"const char * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonLibrary_Construct","parameters":[{"name":"out","type":"PokemonLibrary * &"},{"name":"settings","type":"LibrarySettings *"},{"name":"species","type":"SpeciesLibrary *"},{"name":"moves","type":"MoveLibrary *"},{"name":"items","type":"ItemLibrary *"},{"name":"growthRates","type":"GrowthRateLibrary *"},{"name":"typeLibrary","type":"TypeLibrary *"},{"name":"natures","type":"NatureLibrary *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonLibrary_Destruct","parameters":[{"name":"p","type":"const PokemonLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PokemonLibrary_GetNatureLibrary","parameters":[{"name":"p","type":"const PokemonLibrary *"}],"returns":"const NatureLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_Construct","parameters":[{"name":"out","type":"const PokemonSpecies * &"},{"name":"id","type":"unsigned short"},{"name":"name","type":"const char *"},{"name":"defaultForme","type":"const PokemonForme *"},{"name":"genderRatio","type":"float"},{"name":"growthRate","type":"const char *"},{"name":"captureRate","type":"unsigned char"},{"name":"baseHappiness","type":"unsigned char"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_Destruct","parameters":[{"name":"p","type":"const PokemonSpecies *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetBaseHappiness","parameters":[{"name":"p","type":"const PokemonSpecies *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_AddEvolution","parameters":[{"name":"p","type":"PokemonSpecies *"},{"name":"evo","type":"EvolutionData *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetEvolutionCount","parameters":[{"name":"p","type":"const PokemonSpecies *"}],"returns":"long unsigned int"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetEvolution","parameters":[{"name":"p","type":"const PokemonSpecies *"},{"name":"index","type":"long unsigned int"},{"name":"out","type":"const EvolutionData * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetEvolutions","parameters":[{"name":"p","type":"const PokemonSpecies *"},{"name":"out","type":"const const EvolutionData * * &"}],"returns":"unsigned char"}]} +{"enums":[{"byteSize":1,"filename":"pkmnLib","name":"ScriptCategory","values":{"0":"Attack","1":"Talent","2":"Status","3":"Creature","4":"Battle","5":"Side"}},{"byteSize":4,"filename":"pkmnLib","name":"asEObjTypeFlags","values":{"1":"asOBJ_REF","1024":"asOBJ_APP_CLASS_DESTRUCTOR","1048576":"asOBJ_IMPLICIT_HANDLE","1073741824":"asOBJ_APP_ALIGN16","128":"asOBJ_ASHANDLE","1280":"asOBJ_APP_CLASS_D","131072":"asOBJ_APP_CLASS_ALLFLOATS","134217728":"asOBJ_TEMPLATE_SUBTYPE","16":"asOBJ_NOHANDLE","16384":"asOBJ_APP_FLOAT","16777216":"asOBJ_FUNCDEF","1792":"asOBJ_APP_CLASS_CD","2":"asOBJ_VALUE","2048":"asOBJ_APP_CLASS_ASSIGNMENT","2097151":"asOBJ_MASK_VALID_FLAGS","2097152":"asOBJ_SCRIPT_OBJECT","2304":"asOBJ_APP_CLASS_A","256":"asOBJ_APP_CLASS","262144":"asOBJ_NOCOUNT","268435456":"asOBJ_TYPEDEF","2816":"asOBJ_APP_CLASS_CA","32":"asOBJ_SCOPED","32768":"asOBJ_APP_ARRAY","3328":"asOBJ_APP_CLASS_DA","33554432":"asOBJ_LIST_PATTERN","3840":"asOBJ_APP_CLASS_CDA","4":"asOBJ_GC","4096":"asOBJ_APP_CLASS_COPY_CONSTRUCTOR","4194304":"asOBJ_SHARED","4352":"asOBJ_APP_CLASS_K","4864":"asOBJ_APP_CLASS_CK","512":"asOBJ_APP_CLASS_CONSTRUCTOR","524288":"asOBJ_APP_CLASS_ALIGN8","536870912":"asOBJ_ABSTRACT","5376":"asOBJ_APP_CLASS_DK","5888":"asOBJ_APP_CLASS_CDK","64":"asOBJ_TEMPLATE","6400":"asOBJ_APP_CLASS_AK","65536":"asOBJ_APP_CLASS_ALLINTS","67108864":"asOBJ_ENUM","6912":"asOBJ_APP_CLASS_CAK","7424":"asOBJ_APP_CLASS_DAK","768":"asOBJ_APP_CLASS_C","7936":"asOBJ_APP_CLASS_CDAK","8":"asOBJ_POD","8192":"asOBJ_APP_PRIMITIVE","8388608":"asOBJ_NOINHERIT"}},{"byteSize":4,"filename":"pkmnLib","name":"asECallConvTypes","values":{"0":"asCALL_CDECL","1":"asCALL_STDCALL","2":"asCALL_THISCALL_ASGLOBAL","3":"asCALL_THISCALL","4":"asCALL_CDECL_OBJLAST","5":"asCALL_CDECL_OBJFIRST","6":"asCALL_GENERIC","7":"asCALL_THISCALL_OBJLAST","8":"asCALL_THISCALL_OBJFIRST"}},{"byteSize":1,"filename":"pkmnLib","name":"Statistic","values":{"0":"Health","1":"PhysicalAttack","2":"PhysicalDefense","3":"MagicalAttack","4":"MagicalDefense","5":"Speed"}},{"byteSize":1,"filename":"pkmnLib","name":"MoveCategory","values":{"0":"Physical","1":"Special","2":"Status"}},{"byteSize":1,"filename":"pkmnLib","name":"AttackTarget","values":{"0":"Adjacent","1":"AdjacentAlly","10":"RandomOpponent","11":"Self","2":"AdjacentAllySelf","3":"AdjacentOpponent","4":"All","5":"AllAdjacent","6":"AllAdjacentOpponent","7":"AllAlly","8":"AllOpponent","9":"Any"}},{"byteSize":1,"filename":"pkmnLib","name":"EffectParameterType","values":{"0":"None","1":"Bool","2":"Int","3":"Float","4":"String"}},{"byteSize":4,"filename":"pkmnLib","name":"AttackLearnMethod","values":{"0":"Unknown","1":"Level"}},{"byteSize":1,"filename":"pkmnLib","name":"Gender","values":{"0":"Male","1":"Female","2":"Genderless"}},{"byteSize":1,"filename":"pkmnLib","name":"ItemCategory","values":{"0":"MiscItem","1":"CaptureDevice","2":"Medicine","3":"Berry","4":"MoveLearner","5":"VariantChanger","6":"KeyItem","7":"Mail"}},{"byteSize":1,"filename":"pkmnLib","name":"BattleItemCategory","values":{"0":"None","1":"Healing","2":"StatusHealing","3":"CaptureDevice","4":"MiscBattleItem"}},{"byteSize":1,"filename":"pkmnLib","name":"EvolutionMethod","values":{"0":"Level","1":"HighFriendship","10":"TradeWithHeldItem","11":"TradeWithSpecificPokemon","12":"Custom","2":"KnownMove","3":"LocationBased","4":"TimeBased","5":"HoldsItem","6":"IsGenderAndLevel","7":"EvolutionItemUse","8":"EvolutionItemUseWithGender","9":"Trade"}},{"byteSize":1,"filename":"pkmnLib","name":"TimeOfDay","values":{"0":"Night","1":"Morning","2":"Afternoon","3":"Evening"}},{"byteSize":4,"filename":"pkmnLib","name":"asETypeIdFlags","values":{"0":"asTYPEID_VOID","1":"asTYPEID_BOOL","10":"asTYPEID_FLOAT","1073741824":"asTYPEID_OBJHANDLE","11":"asTYPEID_DOUBLE","134217728":"asTYPEID_SCRIPTOBJECT","2":"asTYPEID_INT8","268435456":"asTYPEID_TEMPLATE","3":"asTYPEID_INT16","4":"asTYPEID_INT32","469762048":"asTYPEID_MASK_OBJECT","5":"asTYPEID_INT64","536870912":"asTYPEID_HANDLETOCONST","6":"asTYPEID_UINT8","67108863":"asTYPEID_MASK_SEQNBR","67108864":"asTYPEID_APPOBJECT","7":"asTYPEID_UINT16","8":"asTYPEID_UINT32","9":"asTYPEID_UINT64"}},{"byteSize":4,"filename":"pkmnLib","name":"asEContextState","values":{"0":"asEXECUTION_FINISHED","1":"asEXECUTION_SUSPENDED","2":"asEXECUTION_ABORTED","3":"asEXECUTION_EXCEPTION","4":"asEXECUTION_PREPARED","5":"asEXECUTION_UNINITIALIZED","6":"asEXECUTION_ACTIVE","7":"asEXECUTION_ERROR"}},{"byteSize":4,"filename":"pkmnLib","name":"asERetCodes","values":{"-1":"asERROR","-10":"asINVALID_DECLARATION","-11":"asINVALID_OBJECT","-12":"asINVALID_TYPE","-13":"asALREADY_REGISTERED","-14":"asMULTIPLE_FUNCTIONS","-15":"asNO_MODULE","-16":"asNO_GLOBAL_VAR","-17":"asINVALID_CONFIGURATION","-18":"asINVALID_INTERFACE","-19":"asCANT_BIND_ALL_FUNCTIONS","-2":"asCONTEXT_ACTIVE","-20":"asLOWER_ARRAY_DIMENSION_NOT_REGISTERED","-21":"asWRONG_CONFIG_GROUP","-22":"asCONFIG_GROUP_IS_IN_USE","-23":"asILLEGAL_BEHAVIOUR_FOR_TYPE","-24":"asWRONG_CALLING_CONV","-25":"asBUILD_IN_PROGRESS","-26":"asINIT_GLOBAL_VARS_FAILED","-27":"asOUT_OF_MEMORY","-28":"asMODULE_IS_IN_USE","-3":"asCONTEXT_NOT_FINISHED","-4":"asCONTEXT_NOT_PREPARED","-5":"asINVALID_ARG","-6":"asNO_FUNCTION","-7":"asNOT_SUPPORTED","-8":"asINVALID_NAME","-9":"asNAME_TAKEN","0":"asSUCCESS"}},{"byteSize":4,"filename":"pkmnLib","name":"asETypeModifiers","values":{"0":"asTM_NONE","1":"asTM_INREF","2":"asTM_OUTREF","3":"asTM_INOUTREF","4":"asTM_CONST"}},{"byteSize":4,"filename":"pkmnLib","name":"asEBehaviours","values":{"0":"asBEHAVE_CONSTRUCT","1":"asBEHAVE_LIST_CONSTRUCT","10":"asBEHAVE_SETGCFLAG","11":"asBEHAVE_GETGCFLAG","12":"asBEHAVE_ENUMREFS","13":"asBEHAVE_RELEASEREFS","14":"asBEHAVE_MAX","2":"asBEHAVE_DESTRUCT","3":"asBEHAVE_FACTORY","4":"asBEHAVE_LIST_FACTORY","5":"asBEHAVE_ADDREF","6":"asBEHAVE_RELEASE","7":"asBEHAVE_GET_WEAKREF_FLAG","8":"asBEHAVE_TEMPLATE_CALLBACK","9":"asBEHAVE_FIRST_GC"}},{"byteSize":4,"filename":"pkmnLib","name":"asEMsgType","values":{"0":"asMSGTYPE_ERROR","1":"asMSGTYPE_WARNING","2":"asMSGTYPE_INFORMATION"}},{"byteSize":4,"filename":"pkmnLib","name":"asEEngineProp","values":{"1":"asEP_ALLOW_UNSAFE_REFERENCES","10":"asEP_REQUIRE_ENUM_SCOPE","11":"asEP_SCRIPT_SCANNER","12":"asEP_INCLUDE_JIT_INSTRUCTIONS","13":"asEP_STRING_ENCODING","14":"asEP_PROPERTY_ACCESSOR_MODE","15":"asEP_EXPAND_DEF_ARRAY_TO_TMPL","16":"asEP_AUTO_GARBAGE_COLLECT","17":"asEP_DISALLOW_GLOBAL_VARS","18":"asEP_ALWAYS_IMPL_DEFAULT_CONSTRUCT","19":"asEP_COMPILER_WARNINGS","2":"asEP_OPTIMIZE_BYTECODE","20":"asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE","21":"asEP_ALTER_SYNTAX_NAMED_ARGS","22":"asEP_DISABLE_INTEGER_DIVISION","23":"asEP_DISALLOW_EMPTY_LIST_ELEMENTS","24":"asEP_PRIVATE_PROP_AS_PROTECTED","25":"asEP_ALLOW_UNICODE_IDENTIFIERS","26":"asEP_HEREDOC_TRIM_MODE","27":"asEP_MAX_NESTED_CALLS","28":"asEP_GENERIC_CALL_MODE","29":"asEP_INIT_STACK_SIZE","3":"asEP_COPY_SCRIPT_SECTIONS","30":"asEP_INIT_CALL_STACK_SIZE","31":"asEP_MAX_CALL_STACK_SIZE","32":"asEP_LAST_PROPERTY","4":"asEP_MAX_STACK_SIZE","5":"asEP_USE_CHARACTER_LITERALS","6":"asEP_ALLOW_MULTILINE_STRINGS","7":"asEP_ALLOW_IMPLICIT_HANDLE_TYPES","8":"asEP_BUILD_WITHOUT_LINE_CUES","9":"asEP_INIT_GLOBAL_VARS_AFTER_BUILD"}},{"byteSize":4,"filename":"pkmnLib","name":"asEGMFlags","values":{"0":"asGM_ONLY_IF_EXISTS","1":"asGM_CREATE_IF_NOT_EXISTS","2":"asGM_ALWAYS_CREATE"}},{"byteSize":4,"filename":"pkmnLib","name":"asETokenClass","values":{"0":"asTC_UNKNOWN","1":"asTC_KEYWORD","2":"asTC_VALUE","3":"asTC_IDENTIFIER","4":"asTC_COMMENT","5":"asTC_WHITESPACE"}},{"byteSize":4,"filename":"pkmnLib","name":"METADATATYPE","values":{"1":"MDT_TYPE","2":"MDT_FUNC","3":"MDT_VAR","4":"MDT_VIRTPROP","5":"MDT_FUNC_OR_VAR"}},{"byteSize":4,"filename":"pkmnLib","name":"asEFuncType","values":{"-1":"asFUNC_DUMMY","0":"asFUNC_SYSTEM","1":"asFUNC_SCRIPT","2":"asFUNC_INTERFACE","3":"asFUNC_VIRTUAL","4":"asFUNC_FUNCDEF","5":"asFUNC_IMPORTED","6":"asFUNC_DELEGATE"}},{"byteSize":1,"filename":"pkmnLib","name":"PkmnScriptCategory","values":{"128":"Weather","129":"Status"}},{"byteSize":1,"filename":"pkmnLib","name":"EventDataKind","values":{"0":"Damage","1":"Heal","2":"Faint","3":"Switch","4":"TurnStart","5":"TurnEnd","6":"ExperienceGain","7":"DisplayText"}},{"byteSize":1,"filename":"pkmnLib","name":"PkmnEventDataKind","values":{"128":"WeatherChange","129":"StatusChange"}},{"byteSize":1,"filename":"pkmnLib","name":"TurnChoiceKind","values":{"0":"Pass","1":"Attack","2":"Item","3":"Switch","4":"Flee"}},{"byteSize":1,"filename":"pkmnLib","name":"AttackCategory","values":{"0":"Physical","1":"Magical","2":"Status"}},{"byteSize":4,"filename":"pkmnLib","name":"syntax_option_type","values":{}},{"byteSize":4,"filename":"pkmnLib","name":"error_type","values":{"0":"_S_error_collate","1":"_S_error_ctype","10":"_S_error_badrepeat","11":"_S_error_complexity","12":"_S_error_stack","2":"_S_error_escape","3":"_S_error_backref","4":"_S_error_brack","5":"_S_error_paren","6":"_S_error_brace","7":"_S_error_badbrace","8":"_S_error_range","9":"_S_error_space"}},{"byteSize":4,"filename":"pkmnLib","name":"match_flag_type","values":{}},{"byteSize":1,"filename":"pkmnLib","name":"DamageSource","values":{"0":"AttackDamage"}},{"byteSize":1,"filename":"pkmnLib","name":"PkmnDamageSource","values":{"1":"Struggle"}}],"functions":[{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_Construct","parameters":[],"returns":"AngelScriptResolver *"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_Destruct","parameters":[{"name":"p","type":"AngelScriptResolver *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_Initialize","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"lib","type":"BattleLibrary *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_CreateScript","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"name","type":"const char *"},{"name":"script","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_FinalizeModule","parameters":[{"name":"p","type":"AngelScriptResolver *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_LoadScript","parameters":[{"name":"out","type":"Script * &"},{"name":"p","type":"AngelScriptResolver *"},{"name":"category","type":"ScriptCategory"},{"name":"scriptName","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_WriteByteCodeToFile","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"file","type":"const char *"},{"name":"stripDebugInfo","type":"bool"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_LoadByteCodeFromFile","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"file","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_WriteByteCodeToMemory","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"stripDebugInfo","type":"bool"},{"name":"size","type":"long unsigned int &"},{"name":"out","type":"unsigned char * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_LoadByteCodeFromMemory","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"memory","type":"unsigned char *"},{"name":"size","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_RegisterType","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"typeName","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_RegisterTypeMethod","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"typeName","type":"const char *"},{"name":"decl","type":"const char *"},{"name":"func","type":"Function *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelScriptResolver_RegisterGlobalMethod","parameters":[{"name":"p","type":"AngelScriptResolver *"},{"name":"decl","type":"const char *"},{"name":"func","type":"Function *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_AngelscriptScript_Destruct","parameters":[{"name":"p","type":"AngelScriptScript *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_Construct","parameters":[{"name":"out","type":"Battle * &"},{"name":"library","type":"const BattleLibrary *"},{"name":"parties","type":"const BattleParty * *"},{"name":"partiesCount","type":"long unsigned int"},{"name":"canFlee","type":"bool"},{"name":"numberOfSides","type":"unsigned char"},{"name":"creaturesPerSide","type":"unsigned char"},{"name":"randomSeed","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_Destruct","parameters":[{"name":"p","type":"Battle *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Battle_SetWeather","parameters":[{"name":"p","type":"Battle *"},{"name":"name","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_ClearWeather","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Battle_GetWeatherName","parameters":[{"name":"p","type":"Battle *"}],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_BattleLibrary_Construct","parameters":[{"name":"out","type":"BattleLibrary * &"},{"name":"staticLib","type":"PokemonLibrary *"},{"name":"statCalculator","type":"StatCalculator *"},{"name":"damageLibrary","type":"DamageLibrary *"},{"name":"experienceLibrary","type":"ExperienceLibrary *"},{"name":"scriptResolver","type":"ScriptResolver *"},{"name":"miscLibrary","type":"MiscLibrary *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_BattleLibrary_Destruct","parameters":[{"name":"p","type":"BattleLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_DamageLibrary_Construct","parameters":[],"returns":"DamageLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_DamageLibrary_Destruct","parameters":[{"name":"p","type":"DamageLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_WeatherChangeEvent_Destruct","parameters":[{"name":"p","type":"WeatherChangeEvent *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_WeatherChangeEvent_GetWeatherName","parameters":[{"name":"p","type":"WeatherChangeEvent *"}],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_ExperienceLibrary_Construct","parameters":[],"returns":"ExperienceLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_ExperienceLibrary_HandleExperienceGain","parameters":[{"name":"p","type":"ExperienceLibrary *"},{"name":"faintedMon","type":"Creature *"},{"name":"opponents","type":"const Creature * *"},{"name":"numberOfOpponents","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_ExperienceLibrary_Destruct","parameters":[{"name":"p","type":"ExperienceLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_MiscLibrary_Construct","parameters":[],"returns":"MiscLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_MiscLibrary_Destruct","parameters":[{"name":"p","type":"MiscLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PkmnScript_ModifyCriticalStage","parameters":[{"name":"script","type":"PkmnScript *"},{"name":"attack","type":"ExecutingAttack *"},{"name":"target","type":"Creature *"},{"name":"hit","type":"unsigned char"},{"name":"critStage","type":"unsigned char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_Construct","parameters":[{"name":"library","type":"const BattleLibrary *"},{"name":"species","type":"const PokemonSpecies *"},{"name":"forme","type":"const PokemonForme *"},{"name":"level","type":"unsigned char"},{"name":"experience","type":"unsigned int"},{"name":"uid","type":"unsigned int"},{"name":"gender","type":"Gender"},{"name":"coloring","type":"unsigned char"},{"name":"heldItem","type":"const Item *"},{"name":"nickname","type":"const char *"},{"name":"hiddenAbility","type":"bool"},{"name":"abilityIndex","type":"unsigned char"},{"name":"moves","type":"const LearnedAttack * *"},{"name":"moveCount","type":"long unsigned int"},{"name":"hpIv","type":"unsigned char"},{"name":"attIv","type":"unsigned char"},{"name":"defIv","type":"unsigned char"},{"name":"sAtIv","type":"unsigned char"},{"name":"sDeIv","type":"unsigned char"},{"name":"spIv","type":"unsigned char"},{"name":"hpEv","type":"unsigned char"},{"name":"attEv","type":"unsigned char"},{"name":"defEv","type":"unsigned char"},{"name":"sAtEv","type":"unsigned char"},{"name":"sDeEv","type":"unsigned char"},{"name":"spEv","type":"unsigned char"},{"name":"nature","type":"const Nature *"}],"returns":"Pokemon *"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_Destruct","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_IsShiny","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"bool"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetNature","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"const Nature *"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetIndividualValue","parameters":[{"name":"p","type":"const Pokemon *"},{"name":"stat","type":"Statistic"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetEffortValue","parameters":[{"name":"p","type":"const Pokemon *"},{"name":"stat","type":"Statistic"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_SetStatus","parameters":[{"name":"p","type":"Pokemon *"},{"name":"name","type":"const char *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_ClearStatus","parameters":[{"name":"p","type":"Pokemon *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetStatusName","parameters":[{"name":"p","type":"Pokemon *"}],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_GetFriendship","parameters":[{"name":"p","type":"const Pokemon *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_SetFriendship","parameters":[{"name":"p","type":"Pokemon *"},{"name":"value","type":"unsigned char"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Pokemon_ChangeFriendship","parameters":[{"name":"p","type":"Pokemon *"},{"name":"amount","type":"signed char"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_StatCalculator_Construct","parameters":[],"returns":"StatCalculator *"},{"filename":"pkmnLib","name":"PkmnLib_StatCalculator_Destruct","parameters":[{"name":"p","type":"StatCalculator *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_C_GetLastException","parameters":[],"returns":"const char *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateLevelEvolution","parameters":[{"name":"level","type":"unsigned char"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateFriendshipEvolution","parameters":[{"name":"friendship","type":"unsigned char"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateKnownMoveEvolution","parameters":[{"name":"move","type":"const MoveData *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateLocationEvolution","parameters":[{"name":"location","type":"const char *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTimeEvolution","parameters":[{"name":"time","type":"TimeOfDay"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateItemEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateGenderBasedEvolution","parameters":[{"name":"gender","type":"Gender"},{"name":"level","type":"unsigned char"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateItemUseEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateItemUseWithGenderEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"gender","type":"Gender"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTradeEvolution","parameters":[{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTradeWithItemEvolution","parameters":[{"name":"item","type":"const Item *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateTradeWithSpeciesEvolution","parameters":[{"name":"traded","type":"const PokemonSpecies *"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_CreateCustomEvolution","parameters":[{"name":"data","type":"const EffectParameter * *"},{"name":"dataLength","type":"long unsigned int"},{"name":"into","type":"const PokemonSpecies *"}],"returns":"const EvolutionData *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetMethod","parameters":[{"name":"data","type":"const EvolutionData *"}],"returns":"EvolutionMethod"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetNewSpecies","parameters":[{"name":"data","type":"const EvolutionData *"}],"returns":"const PokemonSpecies *"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetDataCount","parameters":[{"name":"data","type":"const EvolutionData *"}],"returns":"long unsigned int"},{"filename":"pkmnLib","name":"PkmnLib_EvolutionData_GetData","parameters":[{"name":"data","type":"const EvolutionData *"},{"name":"index","type":"long unsigned int"},{"name":"out","type":"const EffectParameter * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_Item_Construct","parameters":[{"name":"name","type":"const char *"},{"name":"category","type":"ItemCategory"},{"name":"battleCategory","type":"BattleItemCategory"},{"name":"price","type":"int"},{"name":"flags","type":"const char * *"},{"name":"flagsCount","type":"long unsigned int"},{"name":"flingPower","type":"unsigned char"}],"returns":"Item *"},{"filename":"pkmnLib","name":"PkmnLib_Item_Destruct","parameters":[{"name":"p","type":"const Item *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Item_GetFlingPower","parameters":[{"name":"p","type":"const Item *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_LibrarySettings_Construct","parameters":[{"name":"maximalLevel","type":"unsigned char"},{"name":"maximalMoves","type":"unsigned char"},{"name":"shinyRate","type":"unsigned short"}],"returns":"const LibrarySettings *"},{"filename":"pkmnLib","name":"PkmnLib_LibrarySettings_Destruct","parameters":[{"name":"p","type":"const LibrarySettings *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_LibrarySettings_GetShinyRate","parameters":[{"name":"p","type":"const LibrarySettings *"}],"returns":"unsigned short"},{"filename":"pkmnLib","name":"PkmnLib_Nature_Construct","parameters":[{"name":"increasedStat","type":"Statistic"},{"name":"decreasedStat","type":"Statistic"},{"name":"increasedModifier","type":"float"},{"name":"decreasedModifier","type":"float"}],"returns":"Nature *"},{"filename":"pkmnLib","name":"PkmnLib_Nature_Destruct","parameters":[{"name":"p","type":"const Nature *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetIncreaseModifier","parameters":[{"name":"p","type":"const Nature *"}],"returns":"float"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetDecreaseModifier","parameters":[{"name":"p","type":"const Nature *"}],"returns":"float"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetIncreasedStat","parameters":[{"name":"p","type":"const Nature *"}],"returns":"Statistic"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetDecreasedStat","parameters":[{"name":"p","type":"const Nature *"}],"returns":"Statistic"},{"filename":"pkmnLib","name":"PkmnLib_Nature_GetStatModifier","parameters":[{"name":"nature","type":"const Nature *"},{"name":"stat","type":"Statistic"}],"returns":"float"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_Construct","parameters":[{"name":"initialCapacity","type":"long unsigned int"}],"returns":"NatureLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_Destruct","parameters":[{"name":"p","type":"const NatureLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_LoadNature","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"name","type":"const char *"},{"name":"nature","type":"const Nature *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_GetNatureByName","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"name","type":"const char *"},{"name":"out","type":"const Nature * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_GetRandomNatureName","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"rand","type":"Random *"},{"name":"out","type":"const char * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_NatureLibrary_GetNatureName","parameters":[{"name":"p","type":"NatureLibrary *"},{"name":"nature","type":"const Nature *"},{"name":"out","type":"const char * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonLibrary_Construct","parameters":[{"name":"out","type":"PokemonLibrary * &"},{"name":"settings","type":"LibrarySettings *"},{"name":"species","type":"SpeciesLibrary *"},{"name":"moves","type":"MoveLibrary *"},{"name":"items","type":"ItemLibrary *"},{"name":"growthRates","type":"GrowthRateLibrary *"},{"name":"typeLibrary","type":"TypeLibrary *"},{"name":"natures","type":"NatureLibrary *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonLibrary_Destruct","parameters":[{"name":"p","type":"const PokemonLibrary *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PokemonLibrary_GetNatureLibrary","parameters":[{"name":"p","type":"const PokemonLibrary *"}],"returns":"const NatureLibrary *"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_Construct","parameters":[{"name":"out","type":"const PokemonSpecies * &"},{"name":"id","type":"unsigned short"},{"name":"name","type":"const char *"},{"name":"defaultForme","type":"const PokemonForme *"},{"name":"genderRatio","type":"float"},{"name":"growthRate","type":"const char *"},{"name":"captureRate","type":"unsigned char"},{"name":"baseHappiness","type":"unsigned char"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_Destruct","parameters":[{"name":"p","type":"const PokemonSpecies *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetBaseHappiness","parameters":[{"name":"p","type":"const PokemonSpecies *"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_AddEvolution","parameters":[{"name":"p","type":"PokemonSpecies *"},{"name":"evo","type":"EvolutionData *"}],"returns":"void"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetEvolutionCount","parameters":[{"name":"p","type":"const PokemonSpecies *"}],"returns":"long unsigned int"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetEvolution","parameters":[{"name":"p","type":"const PokemonSpecies *"},{"name":"index","type":"long unsigned int"},{"name":"out","type":"const EvolutionData * &"}],"returns":"unsigned char"},{"filename":"pkmnLib","name":"PkmnLib_PokemonSpecies_GetEvolutions","parameters":[{"name":"p","type":"const PokemonSpecies *"},{"name":"out","type":"const const EvolutionData * * &"}],"returns":"unsigned char"}]} diff --git a/PkmnLibSharpTests/Battling/BattleLibraryHelper.cs b/PkmnLibSharpTests/Battling/BattleLibraryHelper.cs index 814caf2..262f7cf 100644 --- a/PkmnLibSharpTests/Battling/BattleLibraryHelper.cs +++ b/PkmnLibSharpTests/Battling/BattleLibraryHelper.cs @@ -1,5 +1,4 @@ using System.Linq; -using NUnit.Framework; using PkmnLibSharp.Battling; using PkmnLibSharp.Library; using PkmnLibSharp.Library.GrowthRates; diff --git a/PkmnLibSharpTests/Battling/PokemonBuilder.cs b/PkmnLibSharpTests/Battling/PokemonBuilder.cs new file mode 100644 index 0000000..c2aecdd --- /dev/null +++ b/PkmnLibSharpTests/Battling/PokemonBuilder.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using PkmnLibSharp.Battling; +using PkmnLibSharp.Library; +using PkmnLibSharp.Library.Items; + +namespace PkmnLibSharpTests.Battling +{ + public class PokemonBuilder : BasePokemonBuilder + { + public PokemonBuilder(BattleLibrary library, string species, byte level) : base(library, species, level) + { + } + + + protected override Pokemon Finalize(Species species, Forme forme, Item? heldItem, IReadOnlyCollection moves, Nature nature) + { + return new Pokemon(Library, species, forme!, Level, Experience, Uid, Gender, Coloring, + heldItem, Nickname, HiddenAbility, (byte) AbilityIndex, moves, IVs, EVs, nature); + } + } +} \ No newline at end of file