Misc fixes

static-wild encounter g4 collision (abra gift), closes #1390
off by one pokepuff strings
unshuffle bk4 ribbons
pgt bad sanity events now auto-sanitized
This commit is contained in:
Kurt
2017-08-10 20:51:21 -07:00
parent 9295385098
commit 47dcb56090
5 changed files with 24 additions and 14 deletions

View File

@@ -120,6 +120,8 @@ public GameStrings(string l)
trainingbags = Get("trainingbag");
trainingstage = Get("supertraining");
puffs = Get("puff");
Array.Resize(ref puffs, puffs.Length + 1);
Array.Copy(puffs, 0, puffs, 1, puffs.Length - 1);
eggname = specieslist[0];
mail4 = Get("mail4");
@@ -236,7 +238,7 @@ private void Sanitize()
// Set the first entry of a met location to "" (nothing)
// Fix (None) tags
var none = $"({itemlist[0]})";
abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = metCXD_00000[0] = none;
abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = metCXD_00000[0] = puffs[0] = none;
}
private string[] Get(string ident)
{

View File

@@ -243,10 +243,18 @@ private static IEnumerable<IEncounterable> GenerateRawEncounters4(PKM pkm)
{ yield return z; ++ctr; }
}
var deferred = new List<IEncounterable>();
bool safariSport = pkm.Ball == 0x05 || pkm.Ball == 0x18; // never static encounters
if (!safariSport)
foreach (var z in GetValidStaticEncounter(pkm))
{ yield return z; ++ctr; }
{
if (z.Gift && pkm.Ball != 4)
deferred.Add(z);
else
{
yield return z; ++ctr;
}
}
// if (ctr != 0) yield break;
foreach (var z in GetValidWildEncounters(pkm))
{ yield return z; ++ctr; }
@@ -259,6 +267,8 @@ private static IEnumerable<IEncounterable> GenerateRawEncounters4(PKM pkm)
if (safariSport)
foreach (var z in GetValidStaticEncounter(pkm))
yield return z;
foreach (var z in deferred)
yield return z;
}
private static IEnumerable<IEncounterable> GenerateRawEncounters3(PKM pkm)
{

View File

@@ -190,7 +190,7 @@ public override PKM ConvertToPKM(SaveFile SAV)
if (!IsPokémon)
return null;
PK4 pk4 = new PK4(PK.Data);
PK4 pk4 = new PK4(PK.Data) {Sanity = 0};
var pi = PersonalTable.HGSS.GetFormeEntry(Species, PK.AltForm);
if (!IsHatched && Detail == 0)
{

View File

@@ -78,10 +78,10 @@ public override uint EXP
public override int CNT_Tough { get => Data[0x22]; set => Data[0x22] = (byte)value; }
public override int CNT_Sheen { get => Data[0x23]; set => Data[0x23] = (byte)value; }
private byte RIB0 { get => Data[0x24]; set => Data[0x24] = value; } // Sinnoh 1
private byte RIB1 { get => Data[0x25]; set => Data[0x25] = value; } // Sinnoh 2
private byte RIB2 { get => Data[0x26]; set => Data[0x26] = value; } // Unova 1
private byte RIB3 { get => Data[0x27]; set => Data[0x27] = value; } // Unova 2
private byte RIB3 { get => Data[0x24]; set => Data[0x24] = value; } // Unova 2
private byte RIB2 { get => Data[0x25]; set => Data[0x25] = value; } // Unova 1
private byte RIB1 { get => Data[0x26]; set => Data[0x26] = value; } // Sinnoh 2
private byte RIB0 { get => Data[0x27]; set => Data[0x27] = value; } // Sinnoh 1
public bool RibbonChampionSinnoh { get => (RIB0 & (1 << 0)) == 1 << 0; set => RIB0 = (byte)(RIB0 & ~(1 << 0) | (value ? 1 << 0 : 0)); }
public bool RibbonAbility { get => (RIB0 & (1 << 1)) == 1 << 1; set => RIB0 = (byte)(RIB0 & ~(1 << 1) | (value ? 1 << 1 : 0)); }
public bool RibbonAbilityGreat { get => (RIB0 & (1 << 2)) == 1 << 2; set => RIB0 = (byte)(RIB0 & ~(1 << 2) | (value ? 1 << 2 : 0)); }
@@ -139,10 +139,10 @@ public override uint EXP
public override bool IsNicknamed { get => ((IV32 >> 0) & 1) == 1; set => IV32 = (uint)((IV32 & ~0x00000001) | (uint)(value ? 0x00000001 : 0)); }
public override bool IsEgg { get => ((IV32 >> 1) & 1) == 1; set => IV32 = (uint)((IV32 & ~0x00000002) | (uint)(value ? 0x00000002 : 0)); }
private byte RIB4 { get => Data[0x3C]; set => Data[0x3C] = value; } // Hoenn 1a
private byte RIB5 { get => Data[0x3D]; set => Data[0x3D] = value; } // Hoenn 1b
private byte RIB6 { get => Data[0x3E]; set => Data[0x3E] = value; } // Hoenn 2a
private byte RIB7 { get => Data[0x3F]; set => Data[0x3F] = value; } // Hoenn 2b
private byte RIB7 { get => Data[0x3C]; set => Data[0x3C] = value; } // Hoenn 2b
private byte RIB6 { get => Data[0x3D]; set => Data[0x3D] = value; } // Hoenn 2a
private byte RIB5 { get => Data[0x3E]; set => Data[0x3E] = value; } // Hoenn 1b
private byte RIB4 { get => Data[0x3F]; set => Data[0x3F] = value; } // Hoenn 1a
public bool RibbonG3Cool { get => (RIB4 & (1 << 0)) == 1 << 0; set => RIB4 = (byte)(RIB4 & ~(1 << 0) | (value ? 1 << 0 : 0)); }
public bool RibbonG3CoolSuper { get => (RIB4 & (1 << 1)) == 1 << 1; set => RIB4 = (byte)(RIB4 & ~(1 << 1) | (value ? 1 << 1 : 0)); }
public bool RibbonG3CoolHyper { get => (RIB4 & (1 << 2)) == 1 << 2; set => RIB4 = (byte)(RIB4 & ~(1 << 2) | (value ? 1 << 2 : 0)); }

View File

@@ -15,15 +15,13 @@ public SAV_Pokepuff(SaveFile sav)
InitializeComponent();
WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
pfa = GameInfo.Strings.puffs;
pfa[0] = "---";
Setup();
new ToolTip().SetToolTip(B_Sort, "Hold CTRL to reverse sort.");
new ToolTip().SetToolTip(B_All, "Hold CTRL to best instead of varied.");
}
private readonly string[] pfa;
private readonly string[] pfa = GameInfo.Strings.puffs;
private int PuffCount { get; set; }
private void Setup()
{