Ejemplo n.º 1
0
        protected override void OnPopup(UIContainer popup, object[] args)
        {
            RPG.GetPopup <QuestStarted>().Hide();

            var quest = (Quest)args[0];

            popup.Size = new Size(UI.WIDTH, 115);

            var extra = quest.AdditionalRewards.Count;

            if (extra > 0)
            {
                popup.Size = new Size(popup.Size.Width, popup.Size.Height + extra * 20);
            }

            popup.Position = new Point(0, UI.HEIGHT / 2 - 50);

            var completedText = quest.IsContract ? "Contract complete" : "Quest complete";
            var color         = quest.IsContract ? Color.FromArgb(150, 180, 180, 180) : Color.FromArgb(150, 255, 180, 0);

            popup.Color = color;

            popup.Items.Add(new UIText(completedText, new Point(UI.WIDTH / 2, 0), 0.5f, Color.White, 0, true));
            popup.Items.Add(new UIText("- " + quest.Name + " -", new Point(UI.WIDTH / 2, 15), 1.4f, Color.White, 0, true));
            popup.Items.Add(new UIText("- " + quest.GetBasicRewardString() + " -", new Point(UI.WIDTH / 2, 80), 0.25f, Color.White, 0, true));

            var point = 110;

            for (int index = 0; index < quest.AdditionalRewards.Count; index++)
            {
                var reward = quest.AdditionalRewards[index];
                popup.Items.Add(new UIText("- " + reward.GetRewardString() + " -", new Point(UI.WIDTH / 2, point + (index * 15)), 0.24f, Color.White, 0, true));
            }
        }
Ejemplo n.º 2
0
        public void Unlock()
        {
            if (RPG.PlayerData.SkillExp >= PointsToUnlock)
            {
                RPG.PlayerData.SkillExp -= PointsToUnlock;
                Unlocked = true;
                RPG.GetPopup <SkillUnlocked>().Show(this);
                CoolDownTimer.Current = CoolDownTimer.CoolDownMsTime;
                var slots = RPG.SkillHandler.Slots;

                if (slots[2].IsEmpty)
                {
                    slots[2].Set(Name, true);
                }
                else
                {
                    for (int i = 0; i < slots.Length; i++)
                    {
                        var slot = slots[i];
                        if (slot.IsEmpty)
                        {
                            slot.Set(Name, true);
                            break;
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public static void Migrate(string dataVersion, string version)
        {
            switch (dataVersion)
            {
            case "0.1":
                Migrate_v010_To_v014();
                break;

            case "0.1.1":
            case "0.1.2":
            case "0.1.3":
            case "0.1.4":
            case "0.1.5":
            case "0.1.6":
            case "0.1.7":
            case "0.1.8":
            case "0.1.9":
            case "0.1.10":
            case "0.1.11":
            case "0.1.12":
                FixTutorial();
                FixWeapons();
                break;
            }

            if (dataVersion != version)
            {
                RPG.GetPopup <PatchNotes>().Show();
            }

            RPG.PlayerData.Version = RPG.Version;
        }
Ejemplo n.º 4
0
 public void Unlock()
 {
     if (RPG.PlayerData.SkillExp >= PointsToUnlock && RPG.PlayerData.Level >= LevelToUnlock)
     {
         RPG.PlayerData.SkillExp -= PointsToUnlock;
         Unlocked = true;
         RPG.GetPopup <WeaponUnlocked>().Show(this);
         EventHandler.Do(o =>
         {
             Game.Player.Character.Weapons.Give(WeaponHash, 0, false, false);
             Script.Wait(150);
             Game.Player.Character.Weapons[WeaponHash].Ammo = 100;
         });
     }
     else
     {
         if (RPG.PlayerData.SkillExp < PointsToUnlock)
         {
             RPG.Notify("Not enough SP");
         }
         else if (RPG.PlayerData.Level < LevelToUnlock)
         {
             RPG.Notify("Requires Level " + LevelToUnlock);
         }
     }
 }
Ejemplo n.º 5
0
        public override void Show(params object[] args)
        {
            var qc = RPG.GetPopup <QuestStarted>();

            while (qc.Showing)
            {
                Wait(0);
            }
            base.Show(args);
        }
Ejemplo n.º 6
0
        public void Start(bool withPopup = true)
        {
            SetupConditions();

            QuestRepository.GetStartAction(Name).Invoke(this);

            if (withPopup)
            {
                RPG.GetPopup <QuestStarted>().Show(this);
            }

            InProgress = true;
        }
Ejemplo n.º 7
0
        public static void ReturnToNormal()
        {
            RPG.SaveAllData();
            RPG.GameMode = GameMode.NotPlaying;
            RPG.GetPopup <TutorialBox>().Hide();
            Game.FadeScreenOut(500);
            var c = Player.CurrentVehicle;

            if (c != null && c.Exists())
            {
                Player.Task.WarpOutOfVehicle(c);
                if (c.Exists())
                {
                    c.Delete();
                }
            }

            while (RPG.WorldData.AllObjects.Any())
            {
                RPG.WorldData.AllObjects.First().Destroy();
            }

            Model m = PedHash.Michael;

            m.Request(1000);
            Function.Call(Hash.SET_PLAYER_MODEL, Game.Player.Handle, m.Hash);
            Script.Wait(500);
            Function.Call(Hash.DESTROY_MOBILE_PHONE);
            Script.Wait(500);
            Function.Call(Hash.CREATE_MOBILE_PHONE, 0);
            RPG.GameHandler.InitiateNpcs = false;
            RPG.GameLoaded  = false;
            RPGInit.Enabled = true;

            Game.FadeScreenIn(500);
        }
Ejemplo n.º 8
0
        public void Complete()
        {
            if (IsContract)
            {
                if (!RPG.PlayerData.Tutorial.LearntAboutIcons && RPG.PlayerData.Tutorial.PurchasedContract)
                {
                    var tut = RPG.GetPopup <TutorialBox>();
                    RPG.PlayerData.Tutorial.LearntAboutIcons = true;
                    EventHandler.Do(o =>
                    {
                        tut.Hide();
                        EventHandler.Wait(300);
                        tut.Pop("The information blip is for available quests and speech bubbles for interaction.", "The star blip is for handing in quests. Hand in the quest 'The Grind Begins'");
                    });
                }

                RPG.PlayerData.CompletedContracts++;
            }

            if (Name == "The Grind Begins")
            {
                if (!RPG.PlayerData.Tutorial.LearntAboutCrafting && RPG.PlayerData.Tutorial.LearntAboutIcons)
                {
                    var tut = RPG.GetPopup <TutorialBox>();
                    RPG.PlayerData.Tutorial.LearntAboutCrafting = true;
                    EventHandler.Do(o =>
                    {
                        tut.Hide();
                        EventHandler.Wait(300);
                        RPG.PlayerData.AddItem("Vehicle Parts", 9);
                        tut.Pop("Crafting can help you get items you need.", "Access the menu > Actions > Craft Items and craft a 'Vehicle Repair Kit'");
                    });
                }
            }

            RPG.PlayerData.AddExp(ExpReward);
            RPG.PlayerData.AddMoney(MoneyReward);

            foreach (var r in AdditionalRewards)
            {
                switch (r.RewardType)
                {
                case RewardType.Exp:
                    RPG.PlayerData.AddExp(r.IntVal);
                    break;

                case RewardType.Money:
                    RPG.PlayerData.AddMoney(r.IntVal);
                    break;

                case RewardType.UnlockSkill:
                    RPG.PlayerData.Skills.First(s => s.Name == r.StringVal).Unlocked = true;
                    break;

                case RewardType.Item:
                    RPG.PlayerData.AddItem(r.StringVal, r.IntVal);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            QuestRepository.GetCompleteAction(Name).Invoke(this);

            //Cleanup
            CleanupQuestOnDone();

            RPG.GetPopup <QuestComplete>().Show(this);
            RPG.UIHandler.View.CloseAllMenus();

            Done       = true;
            InProgress = false;

            if (IsRepeatable)
            {
                Reset();
            }
        }
Ejemplo n.º 9
0
        private void AddNotification(Notification notification)
        {
            var updated = false;

            if (_notifications.Any())
            {
                if (notification.Type == NotifyType.Kill)
                {
                    if (notification.Text.Contains("target"))
                    {
                        var toUpdate = _notifications.FirstOrDefault(n => n.Type == NotifyType.Kill && n.Text.Contains("target"));
                        if (toUpdate != null)
                        {
                            toUpdate.Tracking++;

                            _notifications.Remove(toUpdate);
                            _notifications.Add(toUpdate);
                            if (toUpdate.Tracking > 1)
                            {
                                RPG.GetPopup <KillStreaks>().Pop(toUpdate.Tracking);
                            }
                            toUpdate.Text = "targets eliminated: +" + (toUpdate.Tracking * 5) + " Exp";
                            updated       = true;
                        }
                    }
                }
                if (notification.Type == NotifyType.Loot)
                {
                    if (notification.Text.Contains("gta$"))
                    {
                        var toUpdate = _notifications.FirstOrDefault(n => n.Type == NotifyType.Loot && n.Text.Contains("gta$"));
                        if (toUpdate != null)
                        {
                            toUpdate.Tracking += notification.Tracking;

                            _notifications.Remove(toUpdate);
                            _notifications.Add(toUpdate);
                            toUpdate.Text = "looted gta$" + toUpdate.Tracking.ToString("N0");
                            updated       = true;
                        }
                    }
                }

                if (notification.Type == NotifyType.Alert)
                {
                    if (notification.Text.Contains("cannot use"))
                    {
                        var toRemove = _notifications.FirstOrDefault(n => n.Type == NotifyType.Alert && n.Text.Contains("cannot use"));
                        if (toRemove != null)
                        {
                            _notifications.Remove(toRemove);
                        }
                    }
                }
            }

            if (!updated)
            {
                if (_notifications.Count >= 5)
                {
                    _notifications.RemoveAt(0);
                }
                _notifications.Add(notification);
            }
        }
Ejemplo n.º 10
0
        public override void OnActivate()
        {
            if (SelectedObj.NotUsable)
            {
                return;
            }

            if (DataTree.Type == TreeType.Skill && (SelectedObj.Parent == null || SelectedObj.Parent.Node.Unlocked(DataTree)))
            {
                var skill = RPG.PlayerData.GetSkill(SelectedObj.Ref);
                if (skill.Unlocked && skill.Mods.Count > 0)
                {
                    RPG.UIHandler.View.RemoveMenu(this);
                    RPG.UIHandler.View.AddMenu(new TreeMenu(SkillRepository.GetModTree(SelectedObj.Ref)));
                }
                else if (!skill.Unlocked)
                {
                    if (!RPG.PlayerData.Tutorial.UnlockSkillWithSp && RPG.PlayerData.Tutorial.PressJToOpenMenu && RPG.PlayerData.Tutorial.BoughtAmmoFromShop && RPG.PlayerData.Tutorial.GetAKill)
                    {
                        var tut = RPG.GetPopup <TutorialBox>();
                        RPG.PlayerData.Tutorial.UnlockSkillWithSp = true;
                        EventHandler.Do(o =>
                        {
                            tut.Hide();
                            EventHandler.Wait(300);
                            if (!RPG.PlayerData.Tutorial.UsingSkills)
                            {
                                tut.Pop("Skills can get you the edge in your conflicts. You can further increase skills by 'activating' them in the menu once unlocked.", "Press [Caps-Lock] to use your unlocked skill.");
                            }
                        });
                    }

                    skill.Unlock();
                }
            }
            else if (DataTree.Type == TreeType.Weapon && (SelectedObj.Parent == null || SelectedObj.Parent.Node.Unlocked(DataTree)))
            {
                var wep = RPG.PlayerData.GetWeapon(SelectedObj.WepHash);
                if (wep.Unlocked)//&& skill.Mods.Count > 0
                {
                    //RPG.UIHandler.View.RemoveMenu(this);
                    //RPG.UIHandler.View.AddMenu(new TreeMenu(SkillRepository.GetModTree(SelectedObj.Ref)));
                }
                else if (!wep.Unlocked)
                {
                    wep.Unlock();
                }
            }
            else if (DataTree.Type == TreeType.SkillMod && SelectedObj.Parent.Node.Unlocked(DataTree))
            {
                var skill       = RPG.PlayerData.GetSkill(DataTree.TreeRef);
                var modUnlocked = skill.UsedMods.FirstOrDefault(m => m == SelectedObj.Ref) != null;
                if (!modUnlocked)
                {
                    if (skill.UnlockMod(SelectedObj.Ref))
                    {
                        SelectedObj.UnlockAction.Invoke(skill);
                    }
                }
            }
        }
Ejemplo n.º 11
0
        static QuestRepository()
        {
            try
            {
                Quests = new List <Quest>();

                //Starting Quest
                Quests.Add(new Quest("Welcome to GTA:RPG", "Show me you've got what it takes.", false, false, 10, 500)
                           .AddCondiiton(QuestCondition.Custom("Complete the tutorial", "Tutorial", () => RPG.PlayerData.Tutorial.TutorialDoneExceptSpeak))
                           .WithCannotBeCancelled()
                           .WithOnStart(q => EventHandler.Do(o =>
                {
                    RPG.Subtitle("???: Welcome. Welcome. So you wanna make bank yeah?", 5000);
                    EventHandler.Wait(5000);
                    RPG.Subtitle("???: Alright, let's see what you've got. Complete some basic assignments and you're in.", 5000);
                    EventHandler.Wait(5000);
                    RPG.Subtitle("???: Good luck.", 5000);
                }))
                           .WithOnComplete(q => EventHandler.Do(o =>
                {
                    EventHandler.Wait(5000);
                    RPG.PlayerData.Quests.First(qu => qu.Name == "The Grind Begins").Start();
                }))
                           );
                Quests.Add(new Quest("The Grind Begins", "Complete a contract and return to Matthew.", false, false, 15, 600)
                           .AddCondiiton(QuestCondition.Custom("Contract completed", "q_Start_contract", () => RPG.PlayerData.CompletedContracts > 0))
                           .WithCannotBeCancelled()
                           .WithOnStart(q => EventHandler.Do(o =>
                {
                    RPG.Subtitle("???: I am Apex, the top of the food chain, leader of the Apexers. The one you want to impress.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: Matthew has told me what you've done, not bad... for a rookie.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: Access our network and purchase a contract through the actions interface.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: Hope those words weren't to big for you, get a contract done, and then return to Matthew.", 5000); EventHandler.Wait(5000);
                    RPG.GetPopup <TutorialBox>().Pop("Contracts are an easy way to earn exp and loot outside of missions.", "Access the menu > Actions > Get Random Contract to get a new contract.");
                }))
                           );
                Quests.Add(new Quest("Potential", "Apex and co. are impressed by your abilities. Pass their test and prove you're truly good.", false, false, 25, 800)
                           .AddCondiiton(QuestCondition.Acquire("Acquire the package", "Boxed Package", 1))
                           .AddCondiiton(QuestCondition.Kill("Eliminate threats", 5, new Vector3(-302, -1136, 23), PedHash.Genstreet01AMO, PedHash.Genstreet01AMY)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Bandages", 2), QuestReward.Item("Simple Protective Gear", 3))
                           );
                Quests.Add(new Quest("Trouble in the Cap", "Help John Doe get some money so he can get some snacks.", false, false, 10, 800)
                           .AddCondiiton(QuestCondition.LootAnyPed("Wallets Stolen", "Men's Wallet", "prop_ld_wallet_02", 80, 5))
                           .AddCondiiton(QuestCondition.LootAnyPed("Purses Stolen", "Woman's Purse", "prop_ld_purse_01", 80, 5))
                           .AddReward(QuestReward.Item("Bandages", 2), QuestReward.Item("Simple Protective Gear", 3))
                           .WithOnComplete(q => EventHandler.Do(o =>
                {
                    EventHandler.Wait(5000);
                    RPG.PlayerData.Quests.First(qu => qu.Name == "An Assassin's Greed").Start();
                }))
                           );
                Quests.Add(new Quest("An Assassin's Greed", "Assisinate the targets till you find the stolen phone", false, false, 15, 800)
                           .AddCondiiton(QuestCondition.Loot("Phone Recovered", "Incriminating Phone", "prop_npc_phone_02", 25, 1, PedHash.Genstreet01AMO, PedHash.Genstreet01AMY)).WithSpawnedTargets(1)
                           .AddReward(QuestReward.Item("Refurbished Kevlar", 5))
                           .WithOnComplete(q => EventHandler.Do(o =>
                {
                    RPG.Subtitle("Apex: Do you know what you have done? You've just killed one of our undercover agents inside CraftsSquad.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: Be happy you were just following orders, John will get the real smack for this.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: In the mean time you better sort out the armada that's converging on your position.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: You better talk to Alicia. Look for the Sniper on your map.", 5000); EventHandler.Wait(8000);
                    RPG.Subtitle("Apex: Now.", 5000);
                }))
                           .WithAutoComplete()
                           );

                //-- John 'side-quest'
                Quests.Add(new Quest("Doe!", "Accept John's apology.", false, false, 25, 800)
                           .AddCondiiton(QuestCondition.Custom("Get to Jackson", "q_Reach_Jackson", () => Game.Player.Character.Position.DistanceTo(new Vector3(-567, -1071, 22)) < 5))
                           .AddReward(QuestReward.Item("Adv Health Kit", 5), QuestReward.Item("Adv Armor Kit", 5))
                           );

                Quests.Add(new Quest("Smash the CraftSquad", "Take out the enemies of CraftSquad", false, false, 35, 800)
                           .AddCondiiton(QuestCondition.Kill("Targets Killed", 20, PedHash.Genstreet01AMO, PedHash.Genstreet01AMY)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Adv Health Kit", 1), QuestReward.Item("Adv Armor Kit", 1))
                           .WithAutoComplete()
                           .WithOnComplete(q => EventHandler.Do(o =>
                {
                    RPG.Subtitle("Apex: Woah, you actually did it.", 3000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: Listen, good job, I'll have to think a while about this, you're suited for much bigger things.", 5000); EventHandler.Wait(5000);
                    RPG.Subtitle("Apex: We have a heist coming up, but it's not ready yet, give me some time and I'll let you know.", 5000); EventHandler.Wait(5000);
                    EventHandler.Wait(3000);
                    RPG.GetPopup <MessageToPlayer>().Show();
                }))
                           );



                //Contracts:
                Quests.Add(new Quest("Are you Chicken?", "Cluck cluck cluck, these are worse than the cows... silence them", true, true, 15, 500)
                           .AddCondiiton(QuestCondition.Kill("Chickens silenced", 5, PedHash.Hen)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Bandages", 2), QuestReward.Item("Simple Protective Gear", 3))
                           .WithSpawnedTargets()
                           );
                Quests.Add(new Quest("Moooooove them", "Mooo. Moo.. MOO? Mooo? Are you kidding me? Remove these pests.", true, true, 15, 500)
                           .AddCondiiton(QuestCondition.Kill("Moos silenced", 5, PedHash.Cow)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Bandages", 3))
                           .WithSpawnedTargets()
                           );

                Quests.Add(new Quest("Boar'd", "We've got some boars roaming around, sort em out will ya?", true, true, 15, 500)
                           .AddCondiiton(QuestCondition.Kill("Boars eliminated", 5, PedHash.Boar)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Simple Protective Gear", 3))
                           .WithSpawnedTargets()
                           );

                Quests.Add(new Quest("Makin' Bank", "Time to fill those pockets. Pick your targets yourself... Just get their cash!", true, true, 25, 1000)
                           .AddCondiiton(QuestCondition.LootAnyPed("Money bags acquired", "Sweet Green", "prop_money_bag_01", 70, 5))
                           );

                Quests.Add(new Quest("Nacho' Cheese", "I just had a crate of promising goods stolen. Get them back for me will ya?", true, true, 50, 750)
                           .AddCondiiton(QuestCondition.Loot("Crate found", "'Promising Goods'", "prop_mil_crate_01", 20, 1, PedHash.StrPunk01GMY)).WithSpawnedTargets(1)
                           .AddReward(QuestReward.Item("Ammo Pack II", 2))
                           .WithSpawnedTargets()
                           );
                Quests.Add(new Quest("Guitar Hero", "No need to fret. One of my ventures is in need of some shredding machines. Get them for me.", true, true, 50, 750)
                           .AddCondiiton(QuestCondition.Loot("Guitars Acquired", "Shredding Machine", "prop_el_guitar_01", 80, 5, PedHash.Paparazzi, PedHash.MovieStar, PedHash.PoloGoon01GMY)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Refurbished Kevlar", 5))
                           .WithSpawnedTargets()
                           );

                Quests.Add(new Quest("Grandrune", "Buddy of mine starting playing a new game, he's a roleplayer you know? Get some cowhides for him.", true, true, 15, 650)
                           .AddCondiiton(QuestCondition.Loot("Cowhides @ 130gp ea", "Cowhide", "prop_paper_box_01", 100, 5, PedHash.Cow)).WithSpawnedTargets(5)
                           .WithSpawnedTargets()
                           );
                Quests.Add(new Quest("Theftscape", "Buddy of mine starting playing a new game, he's a roleplayer you know? Get some feathers for him.", true, true, 15, 650)
                           .AddCondiiton(QuestCondition.Loot("Feathers collected", "Feather", "prop_cs_cardbox_01", 100, 50, PedHash.Hen)).WithSpawnedTargets(5)
                           .WithSpawnedTargets(10)
                           );

                Quests.Add(new Quest("Fed up", "Let's make some noise! Grab some radios, because why not? Then get me some police sirens too", true, true, 75, 1500)
                           .AddCondiiton(QuestCondition.LootAnyVehicle("Radios Salvaged", "Car Radio", "prop_mil_crate_01", 40, 3))
                           .AddCondiiton(QuestCondition.LootVehicles("Sirens stolen", "Police Sirens", "prop_mil_crate_02", 100, 1,
                                                                     VehicleHash.Police, VehicleHash.Police2, VehicleHash.Police3, VehicleHash.Police4, VehicleHash.PoliceOld1,
                                                                     VehicleHash.PoliceOld2, VehicleHash.PoliceT, VehicleHash.Policeb))
                           .AddReward(QuestReward.Item("Adv Health Kit", 2), QuestReward.Item("Adv Armor Kit", 2))
                           );

                Quests.Add(new Quest("Elimination", "You know what to do", true, true, 30, 500)
                           .AddCondiiton(QuestCondition.Kill("Kill Street Thugs", 5, PedHash.Genstreet01AMO, PedHash.Genstreet01AMY)).WithSpawnedTargets(5)
                           .AddCondiiton(QuestCondition.Kill("Kill Street Punks", 5, PedHash.StrPunk01GMY, PedHash.StrPunk01GMY)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Ammo Pack I", 1), QuestReward.Item("Health Kit", 5), QuestReward.Item("Adv Health Kit", 2), QuestReward.Item("Vehicle Repair Kit", 1))
                           .WithSpawnedTargets()
                           );

                Quests.Add(new Quest("Gutter Trash", "Cleanse them. They are not as good as you.", true, true, 15, 500)
                           .AddCondiiton(QuestCondition.Kill("Street Thugs Cleansed", 5, PedHash.Genstreet01AMO, PedHash.Genstreet01AMY)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Ammo Pack I", 1), QuestReward.Item("Health Kit", 5))
                           .WithSpawnedTargets()
                           );

                Quests.Add(new Quest("Punk'd", "These pests need to be killed. Why? You know better than to ask...", true, true, 15, 500)
                           .AddCondiiton(QuestCondition.Kill("Punk Eliminated", 5, PedHash.StrPunk01GMY, PedHash.StrPunk02GMY)).WithSpawnedTargets(5)
                           .AddReward(QuestReward.Item("Adv Health Kit", 2), QuestReward.Item("Vehicle Repair Kit", 1))
                           .WithSpawnedTargets()
                           );

                Quests.Add(new Quest("Rampage", "Trevor would like this one. Kill and destroy. That is all.", true, true, 25, 1000)
                           .AddCondiiton(QuestCondition.KillAny("Mindless kills", 10))
                           .AddCondiiton(QuestCondition.DestroyAnyVehicle("Vehicles Rekt", 5))
                           .AddReward(QuestReward.Item("Adv Health Kit", 2), QuestReward.Item("Vehicle Repair Kit", 1))
                           );
            }
            catch (Exception ex)
            {
                RPGLog.LogError(ex.GetType() + ": " + ex.Message + "\n" + ex.StackTrace);
            }
        }