mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-03-21 17:48:28 -05:00
Small tweaks to HGSS ball check
small lol would need fully implemented pal park trash byte checks, big sad leave stuff stubbed for now, can clamp down later. restrict some method sigs for IEncounterTemplate (rather than more-derived IEncounterable) for consistency
This commit is contained in:
parent
f14cfaf08d
commit
6f9daaed04
|
|
@ -127,8 +127,8 @@ public IEnumerable<IEncounterable> GetEncounters(PKM pk, EvoCriteria[] chain, Le
|
|||
|
||||
private static bool IsBallCompatible(IFixedBall e, PKM pk) => e.FixedBall switch
|
||||
{
|
||||
Ball.Safari when pk.Ball is (byte)Ball.Safari => true,
|
||||
Ball.Sport when pk.Ball is (byte)Ball.Sport => true,
|
||||
Ball.Safari => pk.Ball is (byte)Ball.Safari,
|
||||
Ball.Sport => pk.Ball is (byte)Ball.Sport && pk is not BK4 || pk is BK4 { BallDPPt: (byte)Ball.Poke }, // side transfer forgetting ball
|
||||
_ => pk.Ball is not ((byte)Ball.Safari or (byte)Ball.Sport),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ public sealed class LegalityCheckLocalization
|
|||
public string BallSpecies { get; set; } = "Can't obtain species in Ball.";
|
||||
public string BallSpeciesPass { get; set; } = "Ball possible for species.";
|
||||
public string BallUnavailable { get; set; } = "Ball unobtainable in origin Generation.";
|
||||
public string BallG4Sinnoh { get; set; } = "Ball value for D/P/Pt (0x83) is not within range.";
|
||||
public string BallG4Johto { get; set; } = "Extended Ball value for HG/SS (0x86) is not within range.";
|
||||
|
||||
public string ContestZero { get; set; } = "Contest Stats should be 0.";
|
||||
public string ContestZeroSheen { get; set; } = "Contest Stat Sheen should be 0.";
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ public static class LegalityCheckResultCodeExtensions
|
|||
BallSpecies => localization.BallSpecies,
|
||||
BallSpeciesPass => localization.BallSpeciesPass,
|
||||
BallUnavailable => localization.BallUnavailable,
|
||||
BallG4Sinnoh => localization.BallG4Sinnoh,
|
||||
BallG4Johto => localization.BallG4Johto,
|
||||
|
||||
// Contest
|
||||
ContestZero => localization.ContestZero,
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ public enum LegalityCheckResultCode : ushort
|
|||
BallSpecies,
|
||||
BallSpeciesPass,
|
||||
BallUnavailable,
|
||||
BallG4Sinnoh,
|
||||
BallG4Johto,
|
||||
|
||||
// Contest
|
||||
ContestZero,
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public static BallVerificationResult VerifyBall(LegalityAnalysis data)
|
|||
return VerifyBall(enc, current, pk);
|
||||
}
|
||||
|
||||
private static BallVerificationResult VerifyEvolvedShedinja(IEncounterable enc, Ball current, PKM pk, LegalInfo info)
|
||||
private static BallVerificationResult VerifyEvolvedShedinja(IEncounterTemplate enc, Ball current, PKM pk, LegalInfo info)
|
||||
{
|
||||
// Nincada evolving into Shedinja normally reverts to Poké Ball.
|
||||
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ private CheckResult VerifyFormArgument(LegalityAnalysis data, IFormArgument f)
|
|||
};
|
||||
}
|
||||
|
||||
private CheckResult CheckPrimeape(LegalityAnalysis data, PKM pk, uint arg, IEncounterable enc)
|
||||
private CheckResult CheckPrimeape(LegalityAnalysis data, PKM pk, uint arg, IEncounterTemplate enc)
|
||||
{
|
||||
if (arg == 0)
|
||||
return GetValid(FormArgumentValid);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public override void Verify(LegalityAnalysis data)
|
|||
Verify(data, pk, enc);
|
||||
}
|
||||
|
||||
internal void Verify(LegalityAnalysis data, PKM pk, IEncounterable enc)
|
||||
internal void Verify(LegalityAnalysis data, PKM pk, IEncounterTemplate enc)
|
||||
{
|
||||
if (enc is IEncounterServerDate { IsDateRestricted: true } encounterDate)
|
||||
VerifyServerDate2000(data, pk, enc, encounterDate);
|
||||
|
|
@ -23,7 +23,7 @@ internal void Verify(LegalityAnalysis data, PKM pk, IEncounterable enc)
|
|||
VerifyRandomCorrelationSwitch(data, pk, enc);
|
||||
}
|
||||
|
||||
private void VerifyRandomCorrelationSwitch(LegalityAnalysis data, PKM pk, IEncounterable enc)
|
||||
private void VerifyRandomCorrelationSwitch(LegalityAnalysis data, PKM pk, IEncounterTemplate enc)
|
||||
{
|
||||
if (enc is IOverworldCorrelation8 z)
|
||||
{
|
||||
|
|
@ -85,7 +85,7 @@ private void VerifyCorrelation8(LegalityAnalysis data, IOverworldCorrelation8 z,
|
|||
data.AddLine(GetInvalid(PIDTypeMismatch));
|
||||
}
|
||||
|
||||
private void VerifyServerDate2000(LegalityAnalysis data, PKM pk, IEncounterable enc, IEncounterServerDate date)
|
||||
private void VerifyServerDate2000(LegalityAnalysis data, PKM pk, IEncounterTemplate enc, IEncounterServerDate date)
|
||||
{
|
||||
const int epoch = 2000;
|
||||
var actualDay = new DateOnly(pk.MetYear + epoch, pk.MetMonth, pk.MetDay);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using static PKHeX.Core.LegalityCheckResultCode;
|
||||
using static PKHeX.Core.CheckIdentifier;
|
||||
|
||||
|
|
@ -16,9 +17,44 @@ public override void Verify(LegalityAnalysis data)
|
|||
internal void Verify(LegalityAnalysis data, G4PKM pk)
|
||||
{
|
||||
// Verify misc values that were introduced in HG/SS
|
||||
VerifySplitBall(data, pk);
|
||||
VerifyWalkingMood(data, pk);
|
||||
VerifyShinyLeaf(data, pk);
|
||||
|
||||
var palPark = PalParkTransferOrigin.None;
|
||||
var enc = data.EncounterOriginal;
|
||||
if (enc.Generation == 3)
|
||||
{
|
||||
palPark = CheckPalParkTransfer(pk);
|
||||
if (palPark == PalParkTransferOrigin.Invalid)
|
||||
return;
|
||||
VerifyMetLocation3(data, pk, palPark);
|
||||
}
|
||||
VerifySplitBall(data, pk, palPark);
|
||||
}
|
||||
|
||||
private void VerifyMetLocation3(LegalityAnalysis data, G4PKM pk, PalParkTransferOrigin palPark)
|
||||
{
|
||||
var extended = pk.MetLocationExtended;
|
||||
if (extended == 0 && palPark.HasFlag(PalParkTransferOrigin.DP))
|
||||
return; // OK
|
||||
if (extended == pk.MetLocationDP && palPark.HasFlag(PalParkTransferOrigin.PtHGSS))
|
||||
return; // OK
|
||||
|
||||
data.AddLine(GetInvalid(TransferMetLocation, Locations.Transfer3));
|
||||
}
|
||||
|
||||
private static PalParkTransferOrigin CheckPalParkTransfer(G4PKM pk)
|
||||
{
|
||||
// The Pt/HG/SS location value is unset; others will not be true.
|
||||
if (pk.MetLocationExtended == 0)
|
||||
return pk.PossiblyPalParkDP ? PalParkTransferOrigin.DP : PalParkTransferOrigin.Invalid;
|
||||
|
||||
var result = PalParkTransferOrigin.None;
|
||||
if (pk.PossiblyPalParkPt)
|
||||
result |= PalParkTransferOrigin.Pt;
|
||||
if (pk.PossiblyPalParkHGSS)
|
||||
result |= PalParkTransferOrigin.HGSS;
|
||||
return result;
|
||||
}
|
||||
|
||||
private void VerifyShinyLeaf(LegalityAnalysis data, G4PKM pk)
|
||||
|
|
@ -30,15 +66,50 @@ private void VerifyShinyLeaf(LegalityAnalysis data, G4PKM pk)
|
|||
data.AddLine(GetInvalid(G4ShinyLeafBitsInvalid));
|
||||
}
|
||||
|
||||
private static void VerifySplitBall(LegalityAnalysis data, G4PKM pk)
|
||||
private static void VerifySplitBall(LegalityAnalysis data, G4PKM pk, PalParkTransferOrigin palPark)
|
||||
{
|
||||
// Version is a true match. If not from HG/SS, should not have HG/SS ball value set.
|
||||
if (pk.BallHGSS == 0 && pk.BallDPPt == pk.Ball)
|
||||
return;
|
||||
// Sanity check the D/P/Pt value.
|
||||
if (!IsValidBallDP(pk.BallDPPt))
|
||||
data.AddLine(GetInvalid(CheckIdentifier.Ball, BallG4Sinnoh));
|
||||
if (!IsValidBallHGSS(data, pk, palPark))
|
||||
data.AddLine(GetInvalid(CheckIdentifier.Ball, BallG4Johto));
|
||||
}
|
||||
|
||||
private static bool IsValidBallHGSS(LegalityAnalysis data, G4PKM pk, PalParkTransferOrigin palPark)
|
||||
{
|
||||
var ball = pk.BallHGSS;
|
||||
var enc = data.EncounterOriginal;
|
||||
// If not from HG/SS, should not have HG/SS ball value set.
|
||||
// Battle Revolution does not copy this byte.
|
||||
if (!IsCreatedInHGSS(pk, enc, palPark) || pk is BK4)
|
||||
return ball == 0;
|
||||
|
||||
// If it could have been D/P/Pt transfer, then allow the not-HG/SS state.
|
||||
if ((palPark & (PalParkTransferOrigin.DPPt)) != 0)
|
||||
{
|
||||
if (ball == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
var dp = pk.BallDPPt;
|
||||
// Assume D/P/Pt ball is valid (flagged separately).
|
||||
// Ball being equal is OK.
|
||||
// Ball being HG/SS exclusive is OK if D/P/Pt is default (4).
|
||||
return ball == dp || (dp is (byte)Ball.Poke && !IsValidBallDP(ball));
|
||||
}
|
||||
|
||||
// Any other ball value (HG/SS ball) isn't available/displayed correctly.
|
||||
private static bool IsValidBallDP(byte ball) => ball <= (int)Ball.Cherish;
|
||||
|
||||
private static bool IsCreatedInHGSS(G4PKM pk, IEncounterTemplate enc, PalParkTransferOrigin palPark)
|
||||
{
|
||||
// Only set the HG/SS value if it originated in HG/SS and was not an event (pre-filled data only; not Manaphy egg!).
|
||||
if (!pk.HGSS || data.Info.EncounterOriginal is PCD) // PCD: not Manaphy via PGT
|
||||
data.AddLine(GetInvalid(CheckIdentifier.Ball, BallEncMismatch));
|
||||
// Pal Park transfers into HG/SS set this value as well.
|
||||
if (pk.HGSS)
|
||||
return enc is not PCD; // PCD: not Manaphy via PGT
|
||||
if (palPark.HasFlag(PalParkTransferOrigin.HGSS))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void VerifyWalkingMood(LegalityAnalysis data, G4PKM pk)
|
||||
|
|
@ -55,9 +126,23 @@ private static void VerifyWalkingMood(LegalityAnalysis data, G4PKM pk)
|
|||
if (pk.WalkingMood == 0)
|
||||
return;
|
||||
|
||||
const Severity severity = Severity.Fishy;
|
||||
if (pk.IsEgg)
|
||||
data.AddLine(GetInvalid(Egg, G4PartnerMoodEgg));
|
||||
data.AddLine(Get(Egg, severity, G4PartnerMoodEgg));
|
||||
else if (!data.IsStoredSlot(StorageSlotType.Party) && ParseSettings.ActiveTrainer is SAV4HGSS)
|
||||
data.AddLine(GetInvalid(Egg, G4PartnerMoodZero));
|
||||
data.AddLine(Get(Misc, severity, G4PartnerMoodZero));
|
||||
}
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum PalParkTransferOrigin
|
||||
{
|
||||
None,
|
||||
DP = 1 << 0,
|
||||
Pt = 1 << 1,
|
||||
HGSS = 1 << 2,
|
||||
Invalid = 1 << 3,
|
||||
|
||||
DPPt = DP | Pt,
|
||||
PtHGSS = Pt | HGSS,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ internal void Verify(LegalityAnalysis data, PK5 pk)
|
|||
VerifyNSparkle(data, pk, enc);
|
||||
}
|
||||
|
||||
private static void VerifyFame(LegalityAnalysis data, PK5 pk, IEncounterable enc)
|
||||
private static void VerifyFame(LegalityAnalysis data, PK5 pk, IEncounterTemplate enc)
|
||||
{
|
||||
var fame = pk.PokeStarFame;
|
||||
if (fame == 0)
|
||||
|
|
@ -35,7 +35,7 @@ private static void VerifyFame(LegalityAnalysis data, PK5 pk, IEncounterable enc
|
|||
data.AddLine(GetInvalid(Misc, G5PokeStarImpossibleValue));
|
||||
}
|
||||
|
||||
private static void VerifyNSparkle(LegalityAnalysis data, PK5 pk, IEncounterable enc)
|
||||
private static void VerifyNSparkle(LegalityAnalysis data, PK5 pk, IEncounterTemplate enc)
|
||||
{
|
||||
// Ensure NSparkle is only present on N's encounters.
|
||||
if (enc is EncounterStatic5N)
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ private static void VerifySociability(LegalityAnalysis data, PK8 pk)
|
|||
}
|
||||
}
|
||||
|
||||
private void VerifyGigantamax(LegalityAnalysis data, PK8 pk, IEncounterable enc)
|
||||
private void VerifyGigantamax(LegalityAnalysis data, PK8 pk, IEncounterTemplate enc)
|
||||
{
|
||||
bool originGMax = enc is IGigantamaxReadOnly { CanGigantamax: true };
|
||||
if (originGMax != pk.CanGigantamax)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ internal void Verify(LegalityAnalysis data, PK9 pk)
|
|||
VerifyPreDLC(data, pk, enc);
|
||||
}
|
||||
|
||||
private void VerifyPreDLC(LegalityAnalysis data, PK9 pk, IEncounterable enc)
|
||||
private void VerifyPreDLC(LegalityAnalysis data, PK9 pk, IEncounterTemplate enc)
|
||||
{
|
||||
if (enc is { Species: (int)Species.Larvesta, Form: 0 } and not EncounterEgg9)
|
||||
DisallowLevelUpMove(24, (ushort)Move.BugBite, pk, data);
|
||||
|
|
@ -49,7 +49,7 @@ private void VerifyPreDLC(LegalityAnalysis data, PK9 pk, IEncounterable enc)
|
|||
data.AddLine(GetInvalid(BallUnavailable));
|
||||
}
|
||||
|
||||
private void VerifyEncounter(LegalityAnalysis data, PK9 pk, IEncounterable enc)
|
||||
private void VerifyEncounter(LegalityAnalysis data, PK9 pk, IEncounterTemplate enc)
|
||||
{
|
||||
if (enc is EncounterEgg9 g)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public override void Verify(LegalityAnalysis data)
|
|||
}
|
||||
}
|
||||
|
||||
private static bool IsMysteryGiftNoNickname(IEncounterable enc)
|
||||
private static bool IsMysteryGiftNoNickname(IEncounterTemplate enc)
|
||||
{
|
||||
if (enc is not MysteryGift { IsEgg: false })
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public override void Verify(LegalityAnalysis data)
|
|||
/// <summary>
|
||||
/// Checks if any player (human) was the original OT.
|
||||
/// </summary>
|
||||
internal static bool IsPlayerOriginalTrainer(IEncounterable enc) => enc switch
|
||||
internal static bool IsPlayerOriginalTrainer(IEncounterTemplate enc) => enc switch
|
||||
{
|
||||
IFixedTrainer { IsFixedTrainer: true } => false,
|
||||
MysteryGift { IsEgg: false } => false,
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ private void VerifyHOMETracker(LegalityAnalysis data, PKM pk)
|
|||
public void VerifyVCEncounter(PKM pk, IEncounterTemplate original, EncounterTransfer7 transfer, LegalityAnalysis data)
|
||||
{
|
||||
if (pk.MetLocation != transfer.Location)
|
||||
data.AddLine(GetInvalid(TransferMetLocation));
|
||||
data.AddLine(GetInvalid(TransferMetLocation, transfer.Location));
|
||||
|
||||
var expectEgg = pk is PB8 ? Locations.Default8bNone : transfer.EggLocation;
|
||||
if (pk.EggLocation != expectEgg)
|
||||
|
|
|
|||
|
|
@ -298,7 +298,6 @@ private static void SetDefaultManaphyEggDetails(PK4 pk4, ITrainerInfo trainer)
|
|||
pk4.Move3 = 346; pk4.Move3_PP = 15;
|
||||
pk4.Ability = (int)Core.Ability.Hydration;
|
||||
pk4.FatefulEncounter = true;
|
||||
pk4.Ball = (int)Core.Ball.Poke;
|
||||
|
||||
// Manaphy is the only PGT gift egg! (and the only gift that needs a version to be set)
|
||||
var version = trainer.Version;
|
||||
|
|
@ -315,6 +314,7 @@ private static void SetDefaultManaphyEggDetails(PK4 pk4, ITrainerInfo trainer)
|
|||
pk4.Nickname = SpeciesName.GetEggName(lang, 4);
|
||||
pk4.EggLocation = Locations.Ranger4;
|
||||
pk4.EggMetDate = pk4.MetDate = EncounterDate.GetDateNDS();
|
||||
pk4.Ball = (int)Core.Ball.Poke;
|
||||
}
|
||||
|
||||
public bool HasPID => PK.PID > 1; // 0=Random, 1=Random (Anti-Shiny). 0 was never used in any Gen4 gift (all non-shiny).
|
||||
|
|
|
|||
|
|
@ -302,6 +302,7 @@ public PK4 ConvertToPK4()
|
|||
FatefulEncounter = FatefulEncounter,
|
||||
};
|
||||
|
||||
// Transfer into D/P.
|
||||
// Yay for reusing string buffers! The game allocates a buffer and reuses it when creating strings.
|
||||
// Trash from the {unknown source} is currently in buffer. Set it to the Nickname region.
|
||||
var trash = StringConverter345.GetTrashBytes(pk4.Language);
|
||||
|
|
@ -309,10 +310,15 @@ public PK4 ConvertToPK4()
|
|||
trash.CopyTo(nickTrash[4..]); // min of 1 char and terminator, ignore first 2.
|
||||
|
||||
if (IsEgg)
|
||||
{
|
||||
// Force hatch.
|
||||
pk4.Nickname = SpeciesName.GetSpeciesNameGeneration(pk4.Species, pk4.Language, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
pk4.IsNicknamed = IsNicknamed;
|
||||
StringConverter345.TransferGlyphs34(NicknameTrash, Language, Japanese ? 5 : 10, nickTrash);
|
||||
pk4.IsNicknamed = !IsEgg && IsNicknamed;
|
||||
}
|
||||
|
||||
// Trash from the current string (Nickname) is in our string buffer. Slap the OT name over-top.
|
||||
var destOT = pk4.OriginalTrainerTrash;
|
||||
|
|
@ -328,7 +334,7 @@ public PK4 ConvertToPK4()
|
|||
}
|
||||
|
||||
// Remove HM moves
|
||||
ReadOnlySpan<ushort> banned = PersonalInfo3.MachineMovesHidden;
|
||||
var banned = PersonalInfo3.MachineMovesHidden;
|
||||
if (banned.Contains(Move1)) pk4.Move1 = 0;
|
||||
if (banned.Contains(Move2)) pk4.Move2 = 0;
|
||||
if (banned.Contains(Move3)) pk4.Move3 = 0;
|
||||
|
|
|
|||
|
|
@ -327,12 +327,6 @@ public override string HandlingTrainerName
|
|||
#endregion
|
||||
|
||||
// Methods
|
||||
public void SetSaveRevision(int ranchSaveRevision)
|
||||
{
|
||||
if (ranchSaveRevision == 0)
|
||||
StripPtHGSSContent(this);
|
||||
}
|
||||
|
||||
protected override byte[] Encrypt()
|
||||
{
|
||||
RefreshChecksum();
|
||||
|
|
|
|||
|
|
@ -198,9 +198,9 @@ public sealed override ushort EggLocation
|
|||
{
|
||||
get
|
||||
{
|
||||
ushort hgssloc = EggLocationExtended;
|
||||
if (hgssloc != 0)
|
||||
return hgssloc;
|
||||
ushort pthgss = EggLocationExtended;
|
||||
if (pthgss != 0)
|
||||
return pthgss;
|
||||
return EggLocationDP;
|
||||
}
|
||||
set
|
||||
|
|
@ -217,9 +217,9 @@ public sealed override ushort EggLocation
|
|||
}
|
||||
else
|
||||
{
|
||||
int pthgss = PtHGSS ? value : 0; // only set to PtHGSS loc if encountered in game
|
||||
var pthgss = PtHGSS ? value : default; // only set to PtHGSS loc if encountered in game
|
||||
EggLocationDP = value;
|
||||
EggLocationExtended = (ushort)pthgss;
|
||||
EggLocationExtended = pthgss;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -247,13 +247,29 @@ public sealed override ushort MetLocation
|
|||
}
|
||||
else
|
||||
{
|
||||
int pthgss = PtHGSS ? value : 0; // only set to PtHGSS loc if encountered in game
|
||||
var shouldSet = ShouldSetMetLocationExtended();
|
||||
var pthgss = shouldSet ? value : default; // only set to PtHGSS loc if encountered in game
|
||||
MetLocationDP = value;
|
||||
MetLocationExtended = (ushort)pthgss;
|
||||
MetLocationExtended = pthgss;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool ShouldSetMetLocationExtended()
|
||||
{
|
||||
if (!Gen3)
|
||||
return PtHGSS;
|
||||
|
||||
// If transferred from Gen3 into Pt or HG/SS via Pal Park, they set these values.
|
||||
var hasValue = MetLocationExtended != 0 || BallHGSS != 0;
|
||||
var wasDP = PossiblyPalParkDP;
|
||||
if (wasDP && !hasValue)
|
||||
return false; // Keep D/P.
|
||||
if (PossiblyPalParkPt || PossiblyPalParkHGSS)
|
||||
return hasValue || !wasDP;
|
||||
return false; // Assume D/P.
|
||||
}
|
||||
|
||||
public sealed override byte Ball
|
||||
{
|
||||
// HG/SS added new ball IDs mid-generation, and the previous Gen4 games couldn't handle invalid ball values.
|
||||
|
|
@ -261,6 +277,7 @@ public sealed override byte Ball
|
|||
// However, this info is not set in event gift data!
|
||||
// Event gift data contains a pre-formatted PK4 template, which is slightly mutated.
|
||||
// No HG/SS ball values were used in these event gifts, and no HG/SS ball values are set (0).
|
||||
// Pal Park transfers into HG/SS set this value as well.
|
||||
|
||||
// To get the display ball (assume HG/SS +), return the higher of the two values.
|
||||
get => Math.Max(BallHGSS, BallDPPt);
|
||||
|
|
@ -272,13 +289,32 @@ public sealed override byte Ball
|
|||
BallDPPt = Clamp(value, Core.Ball.Cherish);
|
||||
|
||||
// Only set the HG/SS value if it originated in HG/SS and was not an event.
|
||||
if (!HGSS || FatefulEncounter)
|
||||
BallHGSS = 0;
|
||||
else
|
||||
if (WasCreatedInHGSS)
|
||||
BallHGSS = Clamp(value, Core.Ball.Sport);
|
||||
else
|
||||
BallHGSS = 0;
|
||||
}
|
||||
}
|
||||
|
||||
private bool WasCreatedInHGSS
|
||||
{
|
||||
get
|
||||
{
|
||||
if (HGSS)
|
||||
return !FatefulEncounter || EggLocation != 0; // Ranger Manaphy was the only egg ever distributed.
|
||||
return Gen3 && PossiblyPalParkHGSS;
|
||||
}
|
||||
}
|
||||
|
||||
// Must only be used for Gen3 origin Pokémon that could have been transferred via Pal Park.
|
||||
public bool PossiblyPalParkDP => MetLocationExtended == 0 && IsTrashPalParkDP();
|
||||
public bool PossiblyPalParkPt => MetLocationExtended != 0 && IsTrashPalParkPt();
|
||||
public bool PossiblyPalParkHGSS => MetLocationExtended != 0 && IsTrashPalParkHGSS();
|
||||
|
||||
private bool IsTrashPalParkDP() => true; // todo
|
||||
private bool IsTrashPalParkPt() => true; // todo
|
||||
private bool IsTrashPalParkHGSS() => true; // todo
|
||||
|
||||
// Synthetic Trading Logic
|
||||
public bool BelongsTo(ITrainerInfo tr)
|
||||
{
|
||||
|
|
@ -309,12 +345,16 @@ public void UpdateHandler(ITrainerInfo tr)
|
|||
}
|
||||
|
||||
// Enforce D/P content only (no Pt or HG/SS)
|
||||
protected void StripPtHGSSContent(PKM pk)
|
||||
protected void StripPtHGSSContent<T>(T pk) where T : G4PKM
|
||||
{
|
||||
if (Form != 0 && !PersonalTable.DP[Species].HasForms && Species != 201)
|
||||
pk.Form = 0;
|
||||
if (HeldItem > Legal.MaxItemID_4_DP)
|
||||
pk.HeldItem = 0;
|
||||
|
||||
// pk.MetLocationExtended = 0;
|
||||
// pk.EggLocationExtended = 0;
|
||||
pk.BallHGSS = 0;
|
||||
}
|
||||
|
||||
protected T ConvertTo<T>() where T : G4PKM, new()
|
||||
|
|
@ -380,12 +420,14 @@ protected T ConvertTo<T>() where T : G4PKM, new()
|
|||
FatefulEncounter = FatefulEncounter,
|
||||
|
||||
MetLevel = MetLevel,
|
||||
MetLocation = MetLocation,
|
||||
MetLocationDP = MetLocationDP,
|
||||
MetLocationExtended = MetLocationExtended,
|
||||
MetYear = MetYear,
|
||||
MetMonth = MetMonth,
|
||||
MetDay = MetDay,
|
||||
|
||||
EggLocation = EggLocation,
|
||||
EggLocationDP = EggLocationDP,
|
||||
EggLocationExtended = EggLocationExtended,
|
||||
EggYear = EggYear,
|
||||
EggMonth = EggMonth,
|
||||
EggDay = EggDay,
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "Can't obtain species in Ball.",
|
||||
"BallSpeciesPass": "Ball possible for species.",
|
||||
"BallUnavailable": "Ball unobtainable in origin Generation.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "Contest Stats should be 0.",
|
||||
"ContestZeroSheen": "Contest Stat Sheen should be 0.",
|
||||
"ContestSheenGEQ_0": "Contest Stat Sheen should be >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "Can't obtain species in Ball.",
|
||||
"BallSpeciesPass": "Ball possible for species.",
|
||||
"BallUnavailable": "Ball unobtainable in origin Generation.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "Contest Stats should be 0.",
|
||||
"ContestZeroSheen": "Contest Stat Sheen should be 0.",
|
||||
"ContestSheenGEQ_0": "Contest Stat Sheen should be >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "La especie no se puede obtener en esta Bola.",
|
||||
"BallSpeciesPass": "Bola posible para esta especie.",
|
||||
"BallUnavailable": "Bola imposible en la generación de origen.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "Las estadísticas de concurso deberían ser 0.",
|
||||
"ContestZeroSheen": " La estadística de concurso Brillo debería ser 0.",
|
||||
"ContestSheenGEQ_0": "La estadística de concurso Brillo debería ser >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "La especie no se puede obtener en esta Ball.",
|
||||
"BallSpeciesPass": "Ball posible para esta especie.",
|
||||
"BallUnavailable": "Ball imposible en la generación de origen.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "Las estadísticas de concurso deberían ser 0.",
|
||||
"ContestZeroSheen": " La estadística de concurso Brillo debería ser 0.",
|
||||
"ContestSheenGEQ_0": "La estadística de concurso Brillo debería ser >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "L'espèce ne peut pas être capturée avec cette Ball.",
|
||||
"BallSpeciesPass": "Ball possible pour l'espèce.",
|
||||
"BallUnavailable": "Ball impossible à obtenir dans la génération du jeu.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "Les Stats de Concours doivent être 0.",
|
||||
"ContestZeroSheen": "La Stat de Concours Lustre doit être à 0.",
|
||||
"ContestSheenGEQ_0": "La Stat de Concours Lustre doit être >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "Impossibile ottenere questa specie in questa Ball.",
|
||||
"BallSpeciesPass": "Ball possibile per la specie.",
|
||||
"BallUnavailable": "Ball inottenibile nella generazione di origine.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "Le statistiche delle Gare dovrebbero essere 0.",
|
||||
"ContestZeroSheen": "Il Lustro dovrebbe essere 0.",
|
||||
"ContestSheenGEQ_0": "Il Lustro dovrebbe essere >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "このボールでは捕獲できません。",
|
||||
"BallSpeciesPass": "ポケモンによっては捕獲可能なボール。",
|
||||
"BallUnavailable": "元の世代では入手できないボール。",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "コンディションは0でなければなりません。",
|
||||
"ContestZeroSheen": "けづやは0でなければなりません。",
|
||||
"ContestSheenGEQ_0": "けづやは >= {0} でなければなりません。",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "이 포켓몬 종류를 잡을 수 없는 볼입니다.",
|
||||
"BallSpeciesPass": "이 포켓몬 종류를 잡을 수 있는 볼입니다.",
|
||||
"BallUnavailable": "만난 게임에서 얻을 수 없는 볼입니다.",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "컨디션은 0이어야 합니다.",
|
||||
"ContestZeroSheen": "Contest Stat Sheen should be 0.",
|
||||
"ContestSheenGEQ_0": "Contest Stat Sheen should be >= {0}.",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "不能以该球捕获宝可梦。",
|
||||
"BallSpeciesPass": "球对该种类合法。",
|
||||
"BallUnavailable": "在原来世代该球不可获得。",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "华丽大赛状态值应为0。",
|
||||
"ContestZeroSheen": "华丽大赛光泽度应为0。",
|
||||
"ContestSheenGEQ_0": "华丽大赛光泽度应 >= {0}。",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "存档中记录的被消耗“种族-形态”与该融合槽位应有的“种族-形态”不一致。"
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"BallSpecies": "無法使用此球種捕獲該寶可夢。",
|
||||
"BallSpeciesPass": "可使用此球種捕獲該種類寶可夢。",
|
||||
"BallUnavailable": "於此寶可夢出身游戲世代中,該球種不可獲得。",
|
||||
"BallG4Sinnoh": "Ball value for D/P/Pt (0x83) is not within range.",
|
||||
"BallG4Johto": "Extended Ball value for HG/SS (0x86) is not within range.",
|
||||
"ContestZero": "華麗大賽狀態值應置「0」。",
|
||||
"ContestZeroSheen": "華麗大賽光澤度應置「0」。",
|
||||
"ContestSheenGEQ_0": "華麗大賽光澤度應大於或等於「 {0} 」。",
|
||||
|
|
@ -372,4 +374,4 @@
|
|||
"BulkHeldItemInventoryNotAcquired_0": "{0} has not been acquired in player inventory.",
|
||||
"BulkHeldItemInventoryUnassigned_0": "{0} is not marked as assigned in player inventory.",
|
||||
"BulkFusionSourceInvalid": "The subsumed Species-Form stored in the save file does not match the expected Species-Form of the fused slot."
|
||||
}
|
||||
}
|
||||
|
|
@ -90,6 +90,23 @@ TrashEditor=Sonderzeichen
|
|||
About.L_Thanks=Danke an alle Mitwirkenden!
|
||||
About.Tab_Changelog=Änderungen
|
||||
About.Tab_Shortcuts=Shortcuts
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=Hinzufügen
|
||||
BatchEditor.B_Go=Ausführen
|
||||
BatchEditor.RB_Boxes=Boxen
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Versteckt nicht erhältliche Pokémon, wenn diese nicht in den Spielstand importiert werden können.
|
||||
LocalizedDescription.FlagIllegal=Illegale Pokémon in den Boxen markieren
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Level:
|
|||
SAV_Database.Label_HeldItem=Getragenes Item:
|
||||
SAV_Database.Label_HiddenPowerPrefix=Kraftreserve:
|
||||
SAV_Database.Label_Nature=Wesen:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=Spezies:
|
||||
SAV_Database.Menu_Close=Datei
|
||||
SAV_Database.Menu_DeleteClones=Lösche Klone
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=Special Characters
|
|||
About.L_Thanks=Thanks to all the researchers!
|
||||
About.Tab_Changelog=Changelog
|
||||
About.Tab_Shortcuts=Shortcuts
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=Add
|
||||
BatchEditor.B_Go=Run
|
||||
BatchEditor.RB_Boxes=Boxes
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Hides unavailable Species if the currently loaded save file cannot import them.
|
||||
LocalizedDescription.FlagIllegal=Flag Illegal Slots in Save File
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Level:
|
|||
SAV_Database.Label_HeldItem=Held Item:
|
||||
SAV_Database.Label_HiddenPowerPrefix=Hidden Power:
|
||||
SAV_Database.Label_Nature=Nature:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=Species:
|
||||
SAV_Database.Menu_Close=File
|
||||
SAV_Database.Menu_DeleteClones=Delete Clones
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=Caracteres especiales
|
|||
About.L_Thanks=¡Gracias a todos los investigadores!
|
||||
About.Tab_Changelog=Registro de cambios
|
||||
About.Tab_Shortcuts=Accesos directos
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=Añadir
|
||||
BatchEditor.B_Go=Ejecutar
|
||||
BatchEditor.RB_Boxes=Cajas
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Propiedades adicionales para mostrar junto a las propiedades por defecto.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Ocultar Especie no disponible si la partida cargada no puede importarla.
|
||||
LocalizedDescription.FlagIllegal=Detectar ilegal
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Nivel:
|
|||
SAV_Database.Label_HeldItem=Objeto Equipado:
|
||||
SAV_Database.Label_HiddenPowerPrefix=Poder Oculto:
|
||||
SAV_Database.Label_Nature=Naturaleza:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=Especie:
|
||||
SAV_Database.Menu_Close=Archivo
|
||||
SAV_Database.Menu_DeleteClones=Eliminar clones
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=Caracteres especiales
|
|||
About.L_Thanks=¡Gracias a todos los investigadores!
|
||||
About.Tab_Changelog=Registro de cambios
|
||||
About.Tab_Shortcuts=Accesos directos
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=Añadir
|
||||
BatchEditor.B_Go=Ejecutar
|
||||
BatchEditor.RB_Boxes=Cajas
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Siempre muestra el informe de l
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Siempre omite la opción que pregunta si desea exportar un informe de legalidad al portapapeles.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Mostrar todas las propiedades del encuentro (generadas automáticamente) al exportar un informe detallado.
|
||||
LocalizedDescription.ExtraProperties=Propiedades adicionales para mostrar junto a las propiedades por defecto.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Ocultar Especie no disponible si la partida cargada no puede importarla.
|
||||
LocalizedDescription.FlagIllegal=Detectar ilegal
|
||||
LocalizedDescription.FocusBorderDeflate=Sangría de borde de enfoque para controles de imágenes dibujadas personalizadas.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Nivel:
|
|||
SAV_Database.Label_HeldItem=Objeto Equipado:
|
||||
SAV_Database.Label_HiddenPowerPrefix=Poder Oculto:
|
||||
SAV_Database.Label_Nature=Naturaleza:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=Especie:
|
||||
SAV_Database.Menu_Close=Archivo
|
||||
SAV_Database.Menu_DeleteClones=Eliminar clones
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=personnages spéciaux
|
|||
About.L_Thanks=Merci à tous les chercheurs !
|
||||
About.Tab_Changelog=Suivi de changements
|
||||
About.Tab_Shortcuts=Raccourcis
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=Ajouter
|
||||
BatchEditor.B_Go=Exécuter
|
||||
BatchEditor.RB_Boxes=Boîtes
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Hides unavailable Species if the currently loaded save file cannot import them.
|
||||
LocalizedDescription.FlagIllegal=Marquer les Pokémon illégaux dans la sauvegarde
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Niveau :
|
|||
SAV_Database.Label_HeldItem=Objet :
|
||||
SAV_Database.Label_HiddenPowerPrefix=Puiss. Cachée :
|
||||
SAV_Database.Label_Nature=Nature :
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=Espèce :
|
||||
SAV_Database.Menu_Close=Fichier
|
||||
SAV_Database.Menu_DeleteClones=Supprimer les clones
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=Caratteri Speciali
|
|||
About.L_Thanks=Grazie a tutti i ricercatori!
|
||||
About.Tab_Changelog=Log modifiche
|
||||
About.Tab_Shortcuts=Scorciatoie
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=Aggiungi
|
||||
BatchEditor.B_Go=Avvia
|
||||
BatchEditor.RB_Boxes=Box
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Nascondi specie non disponibili se il salvatggio caricato non è in grado di importarli.
|
||||
LocalizedDescription.FlagIllegal=Segnala Slot Illegali nel Salvataggio
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Livello:
|
|||
SAV_Database.Label_HeldItem=Strumento Tenuto:
|
||||
SAV_Database.Label_HiddenPowerPrefix=Introforza:
|
||||
SAV_Database.Label_Nature=Natura:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=Specie:
|
||||
SAV_Database.Menu_Close=File
|
||||
SAV_Database.Menu_DeleteClones=Elimina Cloni
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=Special Characters
|
|||
About.L_Thanks=Thanks to all the researchers!
|
||||
About.Tab_Changelog=変更履歴
|
||||
About.Tab_Shortcuts=ショートカット
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=追加
|
||||
BatchEditor.B_Go=実行
|
||||
BatchEditor.RB_Boxes=ボックス
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=読み込まれているセーブファイルにインポートできないポケモンがいた場合、非表示にします。
|
||||
LocalizedDescription.FlagIllegal=不正ポケモンのアイコンを表示。
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=Lv
|
|||
SAV_Database.Label_HeldItem=持ち物
|
||||
SAV_Database.Label_HiddenPowerPrefix=めざめるパワー
|
||||
SAV_Database.Label_Nature=性格
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=ポケモン
|
||||
SAV_Database.Menu_Close=ファイル
|
||||
SAV_Database.Menu_DeleteClones=複製を削除
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=특수 문자
|
|||
About.L_Thanks=모든 기여자분들께 감사드립니다!
|
||||
About.Tab_Changelog=변경 사항
|
||||
About.Tab_Shortcuts=간편 사용법
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=추가
|
||||
BatchEditor.B_Go=실행
|
||||
BatchEditor.RB_Boxes=박스
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=Hides unavailable Species if the currently loaded save file cannot import them.
|
||||
LocalizedDescription.FlagIllegal=세이브 파일에서 적법하지 않은 포켓몬 표시
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=레벨:
|
|||
SAV_Database.Label_HeldItem=지닌 물건:
|
||||
SAV_Database.Label_HiddenPowerPrefix=잠재파워:
|
||||
SAV_Database.Label_Nature=성격:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=종류:
|
||||
SAV_Database.Menu_Close=파일
|
||||
SAV_Database.Menu_DeleteClones=복제된 포켓몬 삭제
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=特殊字符
|
|||
About.L_Thanks=感谢所有研究人员!
|
||||
About.Tab_Changelog=更新日志
|
||||
About.Tab_Shortcuts=快捷键
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=增加
|
||||
BatchEditor.B_Go=运行
|
||||
BatchEditor.RB_Boxes=盒子
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=始终显示详细的合法性
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=始终跳过询问是否将合法性报告导出至剪贴板的提示选项。
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=导出详细报告时显示遭遇的所有信息(自动生成)。
|
||||
LocalizedDescription.ExtraProperties=除了显示的默认信息之外,还尝试显示额外的信息。
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=隐藏当前存档无法导入的宝可梦种类。
|
||||
LocalizedDescription.FlagIllegal=标记非法。
|
||||
LocalizedDescription.FocusBorderDeflate=自定义调整图标模块与的边框距离。
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=等级:
|
|||
SAV_Database.Label_HeldItem=持有物:
|
||||
SAV_Database.Label_HiddenPowerPrefix=觉醒力量:
|
||||
SAV_Database.Label_Nature=性格:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=种类:
|
||||
SAV_Database.Menu_Close=文件
|
||||
SAV_Database.Menu_DeleteClones=删除重复
|
||||
|
|
|
|||
|
|
@ -90,6 +90,23 @@ TrashEditor=特殊字元
|
|||
About.L_Thanks=向各界研究人員致謝!
|
||||
About.Tab_Changelog=更新日誌
|
||||
About.Tab_Shortcuts=快捷鍵
|
||||
BatchEdit.mnu_-=-
|
||||
BatchEdit.mnu_!=!
|
||||
BatchEdit.mnu_«=«
|
||||
BatchEdit.mnu_»=»
|
||||
BatchEdit.mnu_*=*
|
||||
BatchEdit.mnu_/=/
|
||||
BatchEdit.mnu_&&=&&
|
||||
BatchEdit.mnu_%=%
|
||||
BatchEdit.mnu_^=^
|
||||
BatchEdit.mnu_+=+
|
||||
BatchEdit.mnu_<=<
|
||||
BatchEdit.mnu_===
|
||||
BatchEdit.mnu_>=>
|
||||
BatchEdit.mnu_|=|
|
||||
BatchEdit.mnu_≤=≤
|
||||
BatchEdit.mnu_≥=≥
|
||||
BatchEdit.mnu_Set=Set
|
||||
BatchEditor.B_Add=增加
|
||||
BatchEditor.B_Go=運行
|
||||
BatchEditor.RB_Boxes=盒子
|
||||
|
|
@ -219,6 +236,8 @@ LocalizedDescription.ExportLegalityAlwaysVerbose=Always displays the verbose leg
|
|||
LocalizedDescription.ExportLegalityNeverClipboard=Always skips the prompt option asking if you would like to export a legality report to clipboard.
|
||||
LocalizedDescription.ExportLegalityVerboseProperties=Display all properties of the encounter (auto-generated) when exporting a verbose report.
|
||||
LocalizedDescription.ExtraProperties=Extra entity properties to try and show in addition to the default properties displayed.
|
||||
LocalizedDescription.FilterMismatchGrayscale=Grayscale amount to apply to an entity that does not match a filter (0.0 = no grayscale, 1.0 = fully grayscale).
|
||||
LocalizedDescription.FilterMismatchOpacity=Opacity of an entity that does not match a filter.
|
||||
LocalizedDescription.FilterUnavailableSpecies=隱藏無法匯入當前儲存資料之寶可夢種類
|
||||
LocalizedDescription.FlagIllegal=標記不合法
|
||||
LocalizedDescription.FocusBorderDeflate=Focus border indentation for custom drawn image controls.
|
||||
|
|
@ -1022,6 +1041,7 @@ SAV_Database.Label_CurLevel=等級:
|
|||
SAV_Database.Label_HeldItem=携帶物品:
|
||||
SAV_Database.Label_HiddenPowerPrefix=覺醒力量:
|
||||
SAV_Database.Label_Nature=性格:
|
||||
SAV_Database.Label_Nickname=Nickname:
|
||||
SAV_Database.Label_Species=種類:
|
||||
SAV_Database.Menu_Close=檔案
|
||||
SAV_Database.Menu_DeleteClones=刪除重複
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ public static void ReformatDark(Control z)
|
|||
else if (z is ButtonBase b)
|
||||
{
|
||||
b.FlatStyle = FlatStyle.Popup;
|
||||
if (b.Image is Bitmap bmp)
|
||||
if (b is Button { Image: Bitmap bmp })
|
||||
b.Image = WinFormsUtil.BlackToWhite(bmp);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user