Improve Trading logic to include Banking

This commit is contained in:
Kurt 2015-10-18 18:33:38 -07:00
parent 048fbb60ce
commit 4a1ee57c58

View file

@ -591,19 +591,19 @@ namespace PKHeX
} }
// Synthetic Trading Logic // Synthetic Trading Logic
public void Trade(string SAV_Trainer, int SAV_TID, int SAV_SID, int SAV_COUNTRY, int SAV_REGION) public void Trade(string SAV_Trainer, int SAV_TID, int SAV_SID, int SAV_COUNTRY, int SAV_REGION, int SAV_GENDER, bool Bank, int Day = 1, int Month = 1, int Year = 2015)
{ {
// Eggs do not have any modifications done if they are traded // Eggs do not have any modifications done if they are traded
if (IsEgg) if (IsEgg && !(SAV_Trainer == OT_Name && SAV_TID == TID && SAV_SID == SID && SAV_GENDER == OT_Gender))
return; UpdateEgg(Day, Month, Year);
// Process to the HT if the OT of the Pokémon does not match the SAV's OT info. // Process to the HT if the OT of the Pokémon does not match the SAV's OT info.
if (!TradeOT(SAV_Trainer, SAV_TID, SAV_SID, SAV_COUNTRY, SAV_REGION)) else if (!TradeOT(SAV_Trainer, SAV_TID, SAV_SID, SAV_COUNTRY, SAV_REGION, SAV_GENDER))
TradeHT(SAV_Trainer, SAV_COUNTRY, SAV_REGION); TradeHT(SAV_Trainer, SAV_COUNTRY, SAV_REGION, SAV_GENDER, Bank);
} }
private bool TradeOT(string SAV_Trainer, int SAV_TID, int SAV_SID, int SAV_COUNTRY, int SAV_REGION) private bool TradeOT(string SAV_Trainer, int SAV_TID, int SAV_SID, int SAV_COUNTRY, int SAV_REGION, int SAV_GENDER)
{ {
// Check to see if the OT matches the SAV's OT info. // Check to see if the OT matches the SAV's OT info.
if (!(SAV_Trainer == OT_Name && SAV_TID == TID && SAV_SID == SID)) if (!(SAV_Trainer == OT_Name && SAV_TID == TID && SAV_SID == SID && SAV_GENDER == OT_Gender))
return false; return false;
CurrentHandler = 0; CurrentHandler = 0;
@ -612,16 +612,24 @@ namespace PKHeX
return true; return true;
} }
private void TradeHT(string SAV_Trainer, int SAV_COUNTRY, int SAV_REGION) private void TradeHT(string SAV_Trainer, int SAV_COUNTRY, int SAV_REGION, int SAV_GENDER, bool Bank)
{ {
if (SAV_Trainer != HT_Name || SAV_COUNTRY != Geo1_Country || SAV_REGION != Geo1_Region) if (SAV_Trainer != HT_Name || SAV_COUNTRY != Geo1_Country || SAV_REGION != Geo1_Region || SAV_GENDER != HT_Gender)
TradeGeoLocation(SAV_COUNTRY, SAV_REGION); TradeGeoLocation(SAV_COUNTRY, SAV_REGION);
CurrentHandler = 1; CurrentHandler = 1;
// Make a memory if no memory already exists. Pretty terrible way of doing this but I'd rather not overwrite existing memories. // Make a memory if no memory already exists. Pretty terrible way of doing this but I'd rather not overwrite existing memories.
if (HT_Memory == 0) if (HT_Memory == 0)
TradeMemory(); TradeMemory(Bank);
}
// Misc Updates
private void UpdateEgg(int Day, int Month, int Year)
{
Egg_Location = 30002;
Egg_Day = Day;
Egg_Month = Month;
Egg_Year = Year;
} }
private void TradeGeoLocation(int GeoCountry, int GeoRegion) private void TradeGeoLocation(int GeoCountry, int GeoRegion)
{ {
@ -645,10 +653,10 @@ namespace PKHeX
Geo1_Country = Country; Geo1_Country = Country;
Geo1_Region = Region; Geo1_Region = Region;
} }
private void TradeMemory() private void TradeMemory(bool Bank)
{ {
HT_Memory = 4; // Link trade to [VAR: General Location] HT_Memory = 4; // Link trade to [VAR: General Location]
HT_TextVar = 9; // Pokécenter HT_TextVar = Bank ? 0 : 9; // Somewhere (Bank) : Pokécenter (Trade)
HT_Intensity = 1; HT_Intensity = 1;
HT_Feeling = Util.rand.Next(0, 9); HT_Feeling = Util.rand.Next(0, 9);
} }