mirror of
https://github.com/kwsch/pkNX.git
synced 2026-04-05 00:45:04 -05:00
File scoped namespaces for all lib projects netstandard2.0 => net6; now uniform. bye netframework!
208 lines
6.3 KiB
C#
208 lines
6.3 KiB
C#
using System;
|
|
using static pkNX.Structures.EvolutionType;
|
|
using static pkNX.Structures.EvolutionTypeArgumentType;
|
|
using System.Collections.Generic;
|
|
|
|
namespace pkNX.Structures;
|
|
|
|
public enum EvolutionType : byte
|
|
{
|
|
None = 0,
|
|
LevelUpFriendship = 1,
|
|
LevelUpFriendshipMorning = 2,
|
|
LevelUpFriendshipNight = 3,
|
|
LevelUp = 4,
|
|
Trade = 5,
|
|
TradeHeldItem = 6,
|
|
TradeShelmetKarrablast = 7,
|
|
UseItem = 8,
|
|
LevelUpATK = 9,
|
|
LevelUpAeqD = 10,
|
|
LevelUpDEF = 11,
|
|
LevelUpECl5 = 12,
|
|
LevelUpECgeq5 = 13,
|
|
LevelUpNinjask = 14,
|
|
LevelUpShedinja = 15,
|
|
LevelUpBeauty = 16,
|
|
UseItemMale = 17,
|
|
UseItemFemale = 18,
|
|
LevelUpHeldItemDay = 19,
|
|
LevelUpHeldItemNight = 20,
|
|
LevelUpKnowMove = 21,
|
|
LevelUpWithTeammate = 22,
|
|
LevelUpMale = 23,
|
|
LevelUpFemale = 24,
|
|
LevelUpElectric = 25,
|
|
LevelUpForest = 26,
|
|
LevelUpCold = 27,
|
|
LevelUpInverted = 28,
|
|
LevelUpAffection50MoveType = 29,
|
|
LevelUpMoveType = 30,
|
|
LevelUpWeather = 31,
|
|
LevelUpMorning = 32,
|
|
LevelUpNight = 33,
|
|
LevelUpFormFemale1 = 34,
|
|
UNUSED = 35,
|
|
LevelUpVersion = 36,
|
|
LevelUpVersionDay = 37,
|
|
LevelUpVersionNight = 38,
|
|
LevelUpSummit = 39,
|
|
LevelUpDusk = 40,
|
|
LevelUpWormhole = 41,
|
|
UseItemWormhole = 42,
|
|
CriticalHitsInBattle = 43, // Sirfetch'd
|
|
HitPointsLostInBattle = 44, // Runerigus
|
|
Spin = 45, // Alcremie
|
|
LevelUpNatureAmped = 46, // Toxtricity
|
|
LevelUpNatureLowKey = 47, // Toxtricity
|
|
TowerOfDarkness = 48, // Urshifu
|
|
TowerOfWaters = 49, // Urshifu
|
|
UseItemFullMoon = 50, // Ursaluna
|
|
UseAgileStyleMoves = 51, // Wyrdeer
|
|
UseStrongStyleMoves = 52, // Overqwil
|
|
RecoilDamageMale = 53, // Basculegion-0
|
|
RecoilDamageFemale = 54, // Basculegion-1
|
|
}
|
|
|
|
public enum EvolutionTypeArgumentType
|
|
{
|
|
NoArg,
|
|
Level,
|
|
Items,
|
|
Moves,
|
|
Species,
|
|
Stat,
|
|
Type,
|
|
Version,
|
|
}
|
|
|
|
public static class EvolutionTypeExtensions
|
|
{
|
|
public static bool IsTrade(this EvolutionType t) => t is Trade or TradeHeldItem or TradeShelmetKarrablast;
|
|
|
|
public static bool IsLevelUpRequired(this EvolutionType type) => type switch
|
|
{
|
|
None => false,
|
|
LevelUpFriendship => true,
|
|
LevelUpFriendshipMorning => true,
|
|
LevelUpFriendshipNight => true,
|
|
LevelUp => true,
|
|
Trade => false,
|
|
TradeHeldItem => false,
|
|
TradeShelmetKarrablast => false,
|
|
UseItem => false,
|
|
LevelUpATK => true,
|
|
LevelUpAeqD => true,
|
|
LevelUpDEF => true,
|
|
LevelUpECl5 => true,
|
|
LevelUpECgeq5 => true,
|
|
LevelUpNinjask => true,
|
|
LevelUpShedinja => true,
|
|
LevelUpBeauty => true,
|
|
UseItemMale => false,
|
|
UseItemFemale => false,
|
|
LevelUpHeldItemDay => true,
|
|
LevelUpHeldItemNight => true,
|
|
LevelUpKnowMove => true,
|
|
LevelUpWithTeammate => true,
|
|
LevelUpMale => true,
|
|
LevelUpFemale => true,
|
|
LevelUpElectric => true,
|
|
LevelUpForest => true,
|
|
LevelUpCold => true,
|
|
LevelUpInverted => true,
|
|
LevelUpAffection50MoveType => true,
|
|
LevelUpMoveType => true,
|
|
LevelUpWeather => true,
|
|
LevelUpMorning => true,
|
|
LevelUpNight => true,
|
|
LevelUpFormFemale1 => true,
|
|
UNUSED => false,
|
|
LevelUpVersion => true,
|
|
LevelUpVersionDay => true,
|
|
LevelUpVersionNight => true,
|
|
LevelUpSummit => true,
|
|
LevelUpDusk => true,
|
|
LevelUpWormhole => true,
|
|
UseItemWormhole => false,
|
|
CriticalHitsInBattle => false,
|
|
HitPointsLostInBattle => false,
|
|
Spin => false,
|
|
LevelUpNatureAmped => true,
|
|
LevelUpNatureLowKey => true,
|
|
TowerOfDarkness => false,
|
|
TowerOfWaters => false,
|
|
UseItemFullMoon => false,
|
|
UseAgileStyleMoves => false,
|
|
UseStrongStyleMoves => false,
|
|
RecoilDamageMale => false,
|
|
RecoilDamageFemale => false,
|
|
_ => throw new ArgumentOutOfRangeException(nameof(type), type, null),
|
|
};
|
|
|
|
private static readonly Dictionary<EvolutionType, EvolutionTypeArgumentType> ArgType = new()
|
|
{
|
|
[None] = NoArg,
|
|
[LevelUpFriendship] = NoArg,
|
|
[LevelUpFriendshipMorning] = NoArg,
|
|
[LevelUpFriendshipNight] = NoArg,
|
|
[LevelUp] = Level,
|
|
[Trade] = NoArg,
|
|
[TradeHeldItem] = Items,
|
|
[TradeShelmetKarrablast] = NoArg,
|
|
[UseItem] = Items,
|
|
|
|
[LevelUpATK] = Level,
|
|
[LevelUpAeqD] = Level,
|
|
[LevelUpDEF] = Level,
|
|
[LevelUpECl5] = Level,
|
|
[LevelUpECgeq5] = Level,
|
|
[LevelUpNinjask] = Level,
|
|
[LevelUpShedinja] = Level,
|
|
[LevelUpBeauty] = Stat,
|
|
|
|
[UseItemMale] = Items,
|
|
[UseItemFemale] = Items,
|
|
[LevelUpHeldItemDay] = Items,
|
|
[LevelUpHeldItemNight] = Items,
|
|
[LevelUpKnowMove] = Moves,
|
|
[LevelUpWithTeammate] = EvolutionTypeArgumentType.Species,
|
|
[LevelUpMale] = Level,
|
|
[LevelUpFemale] = Level,
|
|
[LevelUpElectric] = NoArg,
|
|
[LevelUpForest] = NoArg,
|
|
[LevelUpCold] = NoArg,
|
|
[LevelUpInverted] = NoArg,
|
|
[LevelUpAffection50MoveType] = EvolutionTypeArgumentType.Type,
|
|
|
|
[LevelUpMoveType] = EvolutionTypeArgumentType.Type,
|
|
[LevelUpWeather] = Level,
|
|
[LevelUpMorning] = Level,
|
|
[LevelUpNight] = Level,
|
|
[LevelUpFormFemale1] = Level,
|
|
[UNUSED] = NoArg,
|
|
[LevelUpVersion] = EvolutionTypeArgumentType.Version,
|
|
[LevelUpVersionDay] = EvolutionTypeArgumentType.Version,
|
|
[LevelUpVersionNight] = EvolutionTypeArgumentType.Version,
|
|
[LevelUpSummit] = Level,
|
|
[LevelUpDusk] = Level,
|
|
[LevelUpWormhole] = Level,
|
|
[UseItemWormhole] = Items,
|
|
|
|
[CriticalHitsInBattle] = EvolutionTypeArgumentType.Version,
|
|
[HitPointsLostInBattle] = EvolutionTypeArgumentType.Version,
|
|
[Spin] = NoArg,
|
|
[LevelUpNatureAmped] = NoArg,
|
|
[LevelUpNatureLowKey] = NoArg,
|
|
[TowerOfDarkness] = NoArg,
|
|
[TowerOfWaters] = NoArg,
|
|
[UseItemFullMoon] = Items, // Ursaluna
|
|
[UseAgileStyleMoves] = NoArg, // Wyrdeer
|
|
[UseStrongStyleMoves] = NoArg, // Overqwil
|
|
[RecoilDamageMale] = NoArg, // Basculegion-0
|
|
[RecoilDamageFemale] = NoArg, // Basculegion-1
|
|
};
|
|
|
|
public static EvolutionTypeArgumentType GetArgType(this EvolutionType t) => ArgType[t];
|
|
}
|