public override bool IsRequirementsFulfilled(IGameSave gameSave) { GBAGameSave gbaSave = gameSave as GBAGameSave; GameTypes gameType = gameSave.GameType; for (int i = 0; i < 40; i++) { if (gameSave.Inventory.Items[ItemTypes.Berries].GetCountOfID((ushort)(i + 133)) == 0 && gameSave.Inventory.Items[ItemTypes.PC].GetCountOfID((ushort)(i + 133)) == 0) { return(false); } } if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.HasBeatenEliteFour)); } else if (gameType == GameTypes.FireRed || gameType == GameTypes.LeafGreen) { return(gbaSave.GetGameFlag((int)FireRedLeafGreenGameFlags.HasBeatenEliteFour)); } else if (gameType == GameTypes.Emerald) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.HasBeatenEliteFour)); } return(false); }
public SecretBaseManager(GBAGameSave gameSave, byte[] data) { this.gameSave = gameSave; this.raw = data; this.secretBases = new List<SharedSecretBase>(); for (int i = 0; i < 19; i++) { byte locationID = raw[i * 160]; if (SecretBaseDatabase.GetLocationFromID(locationID) != null) this.secretBases.Add(new SharedSecretBase(ByteHelper.SubByteArray(i * 160, data, 160), this)); } Sort(); }
public override void GiveReward(IGameSave gameSave) { GBAGameSave gbaSave = gameSave as GBAGameSave; GameTypes gameType = gameSave.GameType; if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { if (TicketType == TicketTypes.EonTicket) { gbaSave.SetGameFlag((int)RubySapphireGameFlags.EonTicketActivated, true); } } else if (gameType == GameTypes.FireRed || gameType == GameTypes.LeafGreen) { if (TicketType == TicketTypes.MysticTicket) { gbaSave.SetGameFlag((int)FireRedLeafGreenGameFlags.MysticTicketActivated, true); } else if (TicketType == TicketTypes.AuroraTicket) { gbaSave.SetGameFlag((int)FireRedLeafGreenGameFlags.AuroraTicketActivated, true); } } else if (gameType == GameTypes.Emerald) { if (TicketType == TicketTypes.EonTicket) { gbaSave.SetGameFlag((int)EmeraldGameFlags.EonTicketActivated, true); } else if (TicketType == TicketTypes.MysticTicket) { gbaSave.SetGameFlag((int)EmeraldGameFlags.MysticTicketActivated, true); } else if (TicketType == TicketTypes.AuroraTicket) { gbaSave.SetGameFlag((int)EmeraldGameFlags.AuroraTicketActivated, true); } else if (TicketType == TicketTypes.OldSeaMap) { gbaSave.SetGameFlag((int)EmeraldGameFlags.OldSeaMapActivated, true); } } if (gameSave.Inventory.Items[ItemTypes.KeyItems].GetCountOfID(TicketItemID) == 0) { gameSave.Inventory.Items[ItemTypes.KeyItems].AddItem(TicketItemID, 1); } PokeManager.ManagerWindow.GotoItem(gameSave.GameIndex, ItemTypes.KeyItems, TicketItemID); }
public override bool IsCompleted(IGameSave gameSave) { if (gameSave.Inventory.Items[ItemTypes.KeyItems].GetCountOfID(TicketItemID) == 0) { return(false); } GBAGameSave gbaSave = gameSave as GBAGameSave; GameTypes gameType = gameSave.GameType; if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { if (TicketType == TicketTypes.EonTicket) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.EonTicketActivated)); } } else if (gameType == GameTypes.FireRed || gameType == GameTypes.LeafGreen) { if (TicketType == TicketTypes.MysticTicket) { return(gbaSave.GetGameFlag((int)FireRedLeafGreenGameFlags.MysticTicketActivated)); } else if (TicketType == TicketTypes.AuroraTicket) { return(gbaSave.GetGameFlag((int)FireRedLeafGreenGameFlags.AuroraTicketActivated)); } } else if (gameType == GameTypes.Emerald) { if (TicketType == TicketTypes.EonTicket) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.EonTicketActivated)); } else if (TicketType == TicketTypes.MysticTicket) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.MysticTicketActivated)); } else if (TicketType == TicketTypes.AuroraTicket) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.AuroraTicketActivated)); } else if (TicketType == TicketTypes.OldSeaMap) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.OldSeaMapActivated)); } } return(false); }
public override bool IsRequirementsFulfilled(IGameSave gameSave) { GBAGameSave gbaSave = gameSave as GBAGameSave; GameTypes gameType = gameSave.GameType; bool hasOneBike = gameSave.Inventory.Items[ItemTypes.KeyItems].GetCountOfID(259) != 0 || gameSave.Inventory.Items[ItemTypes.KeyItems].GetCountOfID(272) != 0; if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.HasBeatenEliteFour) && hasOneBike); } else if (gameType == GameTypes.Emerald) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.HasBeatenEliteFour) && hasOneBike); } return(false); }
public SecretBaseManager(GBAGameSave gameSave, byte[] data) { this.gameSave = gameSave; this.raw = data; this.secretBases = new List <SharedSecretBase>(); for (int i = 0; i < 19; i++) { byte locationID = raw[i * 160]; if (SecretBaseDatabase.GetLocationFromID(locationID) != null) { this.secretBases.Add(new SharedSecretBase(ByteHelper.SubByteArray(i * 160, data, 160), this)); } } Sort(); }
public override bool IsRequirementsFulfilled(IGameSave gameSave) { GBAGameSave gbaSave = gameSave as GBAGameSave; GameTypes gameType = gameSave.GameType; if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.HasBeatenEliteFour)); } else if (gameType == GameTypes.FireRed || gameType == GameTypes.LeafGreen) { return(gbaSave.GetGameFlag((int)FireRedLeafGreenGameFlags.HasBeatenEliteFour)); } else if (gameType == GameTypes.Emerald) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.HasBeatenEliteFour)); } return(false); }
public override bool IsRequirementsFulfilled(IGameSave gameSave) { GBAGameSave gbaSave = gameSave as GBAGameSave; GameTypes gameType = gameSave.GameType; int count = GetRegiEventsCompleted(gameSave); if (count == 0) { if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.HasBadge4)); } else if (gameType == GameTypes.Emerald) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.HasBadge4)); } } else if (count == 1) { if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.HasBadge5)); } else if (gameType == GameTypes.Emerald) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.HasBadge5)); } } else if (count == 2) { if (gameType == GameTypes.Ruby || gameType == GameTypes.Sapphire) { return(gbaSave.GetGameFlag((int)RubySapphireGameFlags.HasBadge6)); } else if (gameType == GameTypes.Emerald) { return(gbaSave.GetGameFlag((int)EmeraldGameFlags.HasBadge6)); } } return(false); }
private void OnSendToClicked(object sender, RoutedEventArgs e) { if (secretBase.HasTeam) { var gameIndex = SecretBaseSendToWindow.ShowDialog(Window.GetWindow(this), gameSave.GameIndex); if (gameIndex.HasValue) { if (gameIndex.Value == -1) { PokeManager.AddSecretBase(secretBase); } else { GBAGameSave sendToGameSave = (GBAGameSave)PokeManager.GetGameSaveAt(gameIndex.Value); if (sendToGameSave.SecretBaseManager.SharedSecretBases.Count < 19) { if (sendToGameSave.SecretBaseManager.IsLocationInUse(secretBase.LocationID)) { MessageBoxResult result2 = TriggerMessageBox.Show(Window.GetWindow(this), "Cannot send this Secret Base because its location is already in use. Would you like to select a new location?", "Location in Use", MessageBoxButton.YesNo); if (result2 == MessageBoxResult.Yes) { byte?location = SecretBaseLocationChooser.Show(Window.GetWindow(this), secretBase.LocationID, sendToGameSave.SecretBaseManager, true); if (location.HasValue && location.Value != 0 && !sendToGameSave.SecretBaseManager.IsLocationInUse(location.Value)) { SharedSecretBase newSecretBase; if (secretBase.IsPlayerSecretBase) { newSecretBase = new SharedSecretBase((PlayerSecretBase)secretBase, null); } else { newSecretBase = new SharedSecretBase((SharedSecretBase)secretBase, null); } newSecretBase.SetNewLocation(location.Value); sendToGameSave.SecretBaseManager.AddSecretBase((SharedSecretBase)newSecretBase); } } } else { if (secretBase.IsPlayerSecretBase) { sendToGameSave.SecretBaseManager.AddSecretBase((PlayerSecretBase)secretBase); } else { sendToGameSave.SecretBaseManager.AddSecretBase((SharedSecretBase)secretBase); } } } else { TriggerMessageBox.Show(Window.GetWindow(this), "This game already has the maximum amount of 19 shared Secret Bases", "Can't Send"); } } } } else { TriggerMessageBox.Show(Window.GetWindow(this), "You cannot send a Secret Base without a Pokémon Team", "Can't Send"); } }
public PlayerSecretBase(IGameSave gameSave) { this.gameSave = (GBAGameSave)gameSave; }