Esempio n. 1
0
        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();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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;
 }