2022-11-25 01:42:17 +00:00
|
|
|
using System;
|
|
|
|
using static PKHeX.Core.Encounters8Nest;
|
2020-10-24 18:06:05 +00:00
|
|
|
|
2022-06-18 18:04:24 +00:00
|
|
|
namespace PKHeX.Core;
|
2020-10-24 18:06:05 +00:00
|
|
|
|
2022-06-18 18:04:24 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Generation 8 Nest Encounter (Max Raid) Underground
|
|
|
|
/// </summary>
|
|
|
|
/// <inheritdoc cref="EncounterStatic8Nest{T}"/>
|
|
|
|
public sealed record EncounterStatic8U : EncounterStatic8Nest<EncounterStatic8U>
|
|
|
|
{
|
2022-11-25 01:42:17 +00:00
|
|
|
public override int Location => MaxLair;
|
2020-10-24 18:06:05 +00:00
|
|
|
|
2022-06-18 18:04:24 +00:00
|
|
|
public EncounterStatic8U(ushort species, byte form, byte level) : base(GameVersion.SWSH) // no difference in met location for hosted raids
|
|
|
|
{
|
|
|
|
Species = species;
|
|
|
|
Form = form;
|
|
|
|
Level = level;
|
|
|
|
DynamaxLevel = 8;
|
|
|
|
FlawlessIVCount = 4;
|
|
|
|
}
|
2020-10-24 18:06:05 +00:00
|
|
|
|
2022-11-25 01:42:17 +00:00
|
|
|
public static EncounterStatic8U Read(ReadOnlySpan<byte> data)
|
|
|
|
{
|
|
|
|
var spec = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data);
|
|
|
|
var move1 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[4..]);
|
|
|
|
var move2 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[6..]);
|
|
|
|
var move3 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[8..]);
|
|
|
|
var move4 = System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(data[10..]);
|
|
|
|
var moves = new Moveset(move1, move2, move3, move4);
|
|
|
|
|
|
|
|
return new EncounterStatic8U(spec, data[2], data[3])
|
|
|
|
{
|
|
|
|
Ability = (AbilityPermission)data[12],
|
|
|
|
CanGigantamax = data[13] != 0,
|
|
|
|
Moves = moves,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2022-06-18 18:04:24 +00:00
|
|
|
public override bool IsMatchExact(PKM pk, EvoCriteria evo)
|
|
|
|
{
|
|
|
|
if (pk.FlawlessIVCount < FlawlessIVCount)
|
|
|
|
return false;
|
2020-10-29 15:52:38 +00:00
|
|
|
|
2022-06-18 18:04:24 +00:00
|
|
|
return base.IsMatchExact(pk, evo);
|
2020-10-24 18:06:05 +00:00
|
|
|
}
|
2022-06-18 18:04:24 +00:00
|
|
|
|
|
|
|
// no downleveling, unlike all other raids
|
|
|
|
protected override bool IsMatchLevel(PKM pk, EvoCriteria evo) => pk.Met_Level == Level;
|
2020-10-24 18:06:05 +00:00
|
|
|
}
|