Ejemplo n.º 1
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            RemoveItem(masterFrederick, QuestPlayer, dustyOldMap);

            if (QuestPlayer.HasAbilityToUseItem(recruitsArms))
            {
                GiveItem(masterFrederick, QuestPlayer, recruitsArms);
            }
            else
            {
                GiveItem(masterFrederick, QuestPlayer, recruitsSleeves);
            }

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 240, true);
            long money = Money.GetMoney(0, 0, 0, 6, Util.Random(50));

            QuestPlayer.AddMoney(money, "You recieve {0} as a reward.");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 2
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            RemoveItem(dalikor, QuestPlayer, necklaceOfDoppelganger);

            // Give reward to player here ...
            if (QuestPlayer.HasAbilityToUseItem(recruitsBoots))
            {
                GiveItem(dalikor, QuestPlayer, recruitsBoots);
            }
            else
            {
                GiveItem(dalikor, QuestPlayer, recruitsQuiltedBoots);
            }

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 40, true);
            long money = Money.GetMoney(0, 0, 0, 4, Util.Random(50));

            QuestPlayer.AddMoney(money, "You recieve {0} as a reward.");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// When finishing an artifact quest remove the encounter
        /// credit.
        /// </summary>
        public override void FinishQuest()
        {
            base.FinishQuest();

            Type encounterType = ArtifactMgr.GetEncounterType(ArtifactID);

            QuestPlayer.RemoveEncounterCredit(encounterType);
        }
Ejemplo n.º 4
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 145, true);
            QuestPlayer.AddMoney(Money.GetMoney(0, 0, 0, 0, 50), "You are awarded 50 copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, 50);
        }
Ejemplo n.º 5
0
        public async Task <ActionResult <QuestPlayer> > Get(int id)
        {
            QuestPlayer questPlayer = await _db.QuestPlayers.FirstOrDefaultAsync(x => x.Id == id);

            if (questPlayer == null)
            {
                return(NotFound());
            }
            return(new ObjectResult(questPlayer));
        }
Ejemplo n.º 6
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 507, true);
            long money = Money.GetMoney(0, 0, 0, 7, Util.Random(50));

            QuestPlayer.AddMoney(money, "You recieve {0} as a reward.");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, QuestPlayer.ExperienceForNextLevel / 25, true);
            long money = Money.GetMoney(0, 0, 0, 0, QuestPlayer.Level * 10 + 30);

            QuestPlayer.AddMoney(money, "You are awarded " + Money.GetString(money) + "!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 8
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, (long)((QuestPlayer.ExperienceForNextLevel - QuestPlayer.ExperienceForCurrentLevel) / 9.42), true);
            long money = Money.GetMoney(0, 0, 0, 9, 30 + Util.Random(50));

            QuestPlayer.AddMoney(money, "You are awarded 9 silver and some copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 9
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, QuestPlayer.Level * 10, true);
            QuestPlayer.AddMoney(Money.GetMoney(0, 0, 0, 0, 35 + QuestPlayer.Level), "You are awarded " + (35 + QuestPlayer.Level) + " copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, 35 + QuestPlayer.Level);

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 10
0
        public async Task <ActionResult <QuestPlayer> > Post(QuestPlayer questPlayer)
        {
            if (questPlayer == null)
            {
                return(BadRequest());
            }

            _db.QuestPlayers.Add(questPlayer);
            await _db.SaveChangesAsync();

            return(Ok(questPlayer));
        }
Ejemplo n.º 11
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            GiveItem(ydeniaPhilpott, QuestPlayer, silverRingOfHealth);

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 20 + (QuestPlayer.Level - 1) * 5, true);
            long money = Money.GetMoney(0, 0, 0, 5, Util.Random(50));

            QuestPlayer.AddMoney(money, "You are awarded 5 silver and some copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 12
0
        public async Task <ActionResult <QuestPlayer> > Delete(int id)
        {
            QuestPlayer questPlayer = _db.QuestPlayers.FirstOrDefault(x => x.Id == id);

            if (questPlayer == null)
            {
                return(NotFound());
            }
            _db.QuestPlayers.Remove(questPlayer);
            await _db.SaveChangesAsync();

            return(Ok(questPlayer));
        }
Ejemplo n.º 13
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 507, true);
            long money = Money.GetMoney(0, 0, 0, 7, Util.Random(50));

            QuestPlayer.AddMoney(money, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.StolenEggs.FinishQuest.Text1"));
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 14
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            GiveItem(freagus, QuestPlayer, recruitsCloak);

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 12);
            long money = Money.GetMoney(0, 0, 0, 1, Util.Random(50));

            QuestPlayer.AddMoney(money, LanguageMgr.GetTranslation(QuestPlayer.Client, "Hib.ImportantDelivery.FinishQuest.RecieveReward"));
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 15
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            GiveItem(argusBowman, QuestPlayer, dullBlackGem);

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 160, true);
            long money = Money.GetMoney(0, 0, 0, 10, 30 + Util.Random(50));

            QuestPlayer.AddMoney(money, "You are awarded 10 silver and some copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 16
0
        public override void FinishQuest()
        {
            base.FinishQuest();

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 40 + (QuestPlayer.Level - 1) * 4, true);
            long money = Money.GetMoney(0, 0, 0, 7, Util.Random(50));

            QuestPlayer.AddMoney(money, "You are awarded 7 silver and some copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 17
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            GiveItem(andrewWyatt, QuestPlayer, chokerOfTheBear);

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 80, true);
            long money = Money.GetMoney(0, 0, 0, 4, Util.Random(50));

            QuestPlayer.AddMoney(money, "You are awarded 4 silver and some copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 18
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            GiveItem(godelevaDowden, QuestPlayer, reedBracer);

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 40 + (QuestPlayer.Level - 1) * 4, true);
            long money = Money.GetMoney(0, 0, 0, 7, Util.Random(50));

            QuestPlayer.AddMoney(money, "You are awarded 7 silver and some copper!");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 19
0
        public async Task <ActionResult <QuestPlayer> > Put(QuestPlayer questPlayer)
        {
            if (questPlayer == null)
            {
                return(BadRequest());
            }
            if (!_db.QuestPlayers.Any(x => x.Id == questPlayer.Id))
            {
                return(NotFound());
            }

            _db.Update(questPlayer);
            await _db.SaveChangesAsync();

            return(Ok(questPlayer));
        }
Ejemplo n.º 20
0
        public override void AbortQuest()
        {
            base.AbortQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            if (Step < 3 && QuestPlayer.Inventory.GetFirstItemByID(ticketToSvasudFaste.Id_nb, eInventorySlot.Min_Inv, eInventorySlot.Max_Inv) == null)
            {
                QuestPlayer.RemoveMoney(Money.GetMoney(0, 0, 0, 6, 0), null);
                InventoryLogging.LogInventoryAction(QuestPlayer, "(QUEST;" + Name + ")", eInventoryActionType.Quest, 600);
            }

            RemoveItem(QuestPlayer, ticketToSvasudFaste, false);
            RemoveItem(QuestPlayer, askefruerPlans, false);
            RemoveItem(QuestPlayer, ticketToMularn, false);
            RemoveItem(QuestPlayer, noteForNjiedi, false);
            RemoveItem(QuestPlayer, translatedPlans, false);
        }
Ejemplo n.º 21
0
        public override void FinishQuest()
        {
            Step = -1; // -1 indicates finished or aborted quests etc, they won't show up in the list
            QuestPlayer.Out.SendMessage(string.Format(LanguageMgr.GetTranslation(QuestPlayer.Client, "ArtifactTurnInQuest.FinishQuest.Completed", Name)), eChatType.CT_ScreenCenter, eChatLoc.CL_SystemWindow);

            // move quest from active list to finished list...
            QuestPlayer.QuestList.Remove(this);

            if (QuestPlayer.HasFinishedQuest(GetType()) == 0)
            {
                QuestPlayer.QuestListFinished.Add(this);
            }

            DeleteFromDatabase();

            QuestPlayer.Out.SendQuestListUpdate();
        }
Ejemplo n.º 22
0
        public override void Notify(DOLEvent e, object sender, EventArgs args)
        {
            GamePlayer player = sender as GamePlayer;

            if (player == null || player.IsDoingQuest(typeof(AndrewsSkins)) == null)
            {
                return;
            }

            if (e == GamePlayerEvent.GiveItem)
            {
                if (Step == 1)
                {
                    GiveItemEventArgs gArgs = (GiveItemEventArgs)args;
                    if (gArgs.Target.Name == georNadren.Name && gArgs.Item.Id_nb == bundleOfBearSkins.Id_nb)
                    {
                        RemoveItem(georNadren, QuestPlayer, bundleOfBearSkins);

                        georNadren.TurnTo(QuestPlayer);
                        georNadren.SayTo(QuestPlayer, "Ah!  These must be the skins I've been waiting for from Andrew.  My, my, these are very high quality.  He's a very skilled hunter indeed, with a fine eye for good pelts.  Excellent!  I have but one more [errand] I need for you to run for me.");

                        Step = 2;
                        return;
                    }
                }
                else if (Step == 3)
                {
                    GiveItemEventArgs gArgs = (GiveItemEventArgs)args;
                    if (gArgs.Target.Name == georNadren.Name && gArgs.Item.Id_nb == spoolOfLeatherworkingThread.Id_nb)
                    {
                        RemoveItem(georNadren, QuestPlayer, spoolOfLeatherworkingThread);

                        georNadren.TurnTo(QuestPlayer);
                        georNadren.SayTo(QuestPlayer, "Excellent!  Why, there is enough here to make several suits of armor.  Thank you friend!  Now, I think you need to return to Andrew in Cotswold and let him know I received the skins.  Thank you again, and good journeys to you " + QuestPlayer.Name + ".");

                        QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 40, true);
                        long money = Money.GetMoney(0, 0, 0, 2, Util.Random(50));
                        QuestPlayer.AddMoney(money, "You are awarded 2 silver and some copper!");
                        InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

                        Step = 4;
                        return;
                    }
                }
            }
        }
Ejemplo n.º 23
0
        public override void AbortQuest()
        {
            base.AbortQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            RemoveItem(QuestPlayer, dragonflyWhip, false);
            RemoveItem(QuestPlayer, dustyOldMap, false);

            if (QuestPlayer.HasAbilityToUseItem(recruitsVest))
            {
                RemoveItem(QuestPlayer, recruitsVest, false);
            }
            else
            {
                RemoveItem(QuestPlayer, recruitsQuiltedVest, false);
            }

            deleteDragonflyHatchling();
        }
Ejemplo n.º 24
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            ItemTemplate dye = GameServer.Database.FindObjectByKey <ItemTemplate>("light_" + getRandomDyeColor() + "_cloth_dye");

            if (dye != null)
            {
                GiveItem(arleighPenn, QuestPlayer, dye);
            }

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 2560, true);
            long money = Money.GetMoney(0, 0, 0, 0, 30 + Util.Random(50));

            QuestPlayer.AddMoney(money, "You recieve {0} for your service.");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 25
0
        public override void FinishQuest()
        {
            kealan.SayTo(QuestPlayer, "Great, the bloated spider fang and Arachneida's chitin. You did your job well! Now here, take this as a token of my gratitude.");
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 40050, true);
            long money = Money.GetMoney(0, 0, 0, 22, Util.Random(50));

            QuestPlayer.AddMoney(money, "You recieve {0} for your service.");
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);

            if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Wizard ||
                QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Sorcerer ||
                QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Cabalist ||
                QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Theurgist)
            {
                GiveItem(kealan, QuestPlayer, spiderSilkenRobe);
            }
            else if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Paladin ||
                     QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Armsman ||
                     QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Reaver ||
                     QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Mercenary)
            {
                GiveItem(kealan, QuestPlayer, ringedSpiderChitinTunic);
            }
            else if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Cleric ||
                     QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Scout ||
                     QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Minstrel)
            {
                GiveItem(kealan, QuestPlayer, studdedSpiderEyeVest);
            }
            else if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Friar)
            {
                GiveItem(kealan, QuestPlayer, spiderEmblazonedTunic);
            }
            else if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Infiltrator)
            {
                GiveItem(kealan, QuestPlayer, embossedSpiderTunic);
            }

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 26
0
        public override void AbortQuest()
        {
            base.AbortQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            RemoveItem(QuestPlayer, trainerWhip, false);

            if (QuestPlayer.HasAbilityToUseItem(recruitsVest))
            {
                RemoveItem(QuestPlayer, recruitsVest, false);
            }
            else
            {
                RemoveItem(QuestPlayer, recruitsQuiltedVest, false);
            }

            deleteGrifflet();

            GameEventMgr.RemoveHandler(QuestPlayer, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
        }
Ejemplo n.º 27
0
        public override void FinishQuest()
        {
            base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

            // Give reward to player here ...
            if (QuestPlayer.HasAbilityToUseItem(recruitsLegs))
            {
                GiveItem(dalikor, QuestPlayer, recruitsLegs);
            }
            else
            {
                GiveItem(dalikor, QuestPlayer, recruitsPants);
            }

            QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 240, true);
            long money = Money.GetMoney(0, 0, 0, 5, Util.Random(50));

            QuestPlayer.AddMoney(money, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.Frontiers.FinishQuest.Text1"));
            InventoryLogging.LogInventoryAction("(QUEST;" + Name + ")", QuestPlayer, eInventoryActionType.Quest, money);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Called when quest is finished, hands out rewards.
        /// </summary>
        public override void FinishQuest()
        {
            int inventorySpaceRequired = Rewards.BasicItems.Count + Rewards.ChosenItems.Count;

            if (QuestPlayer.Inventory.IsSlotsFree(inventorySpaceRequired, eInventorySlot.FirstBackpack, eInventorySlot.LastBackpack))
            {
                base.FinishQuest();
                QuestPlayer.Out.SendSoundEffect(11, 0, 0, 0, 0, 0);
                QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, Rewards.Experience);
                QuestPlayer.AddMoney(Rewards.Money);
                InventoryLogging.LogInventoryAction($"(QUEST;{Name})", QuestPlayer, eInventoryActionType.Quest, Rewards.Money);
                if (Rewards.GiveBountyPoints > 0)
                {
                    QuestPlayer.GainBountyPoints(Rewards.GiveBountyPoints);
                }

                if (Rewards.GiveRealmPoints > 0)
                {
                    QuestPlayer.GainRealmPoints(Rewards.GiveRealmPoints);
                }

                foreach (ItemTemplate basicReward in Rewards.BasicItems)
                {
                    GiveItem(QuestPlayer, basicReward);
                }

                foreach (ItemTemplate optionalReward in Rewards.ChosenItems)
                {
                    GiveItem(QuestPlayer, optionalReward);
                }

                QuestPlayer.Out.SendNPCsQuestEffect(QuestGiver, QuestGiver.GetQuestIndicator(QuestPlayer));
            }
            else
            {
                QuestPlayer.Out.SendMessage($"Your inventory is full, you need {inventorySpaceRequired} free slot(s) to complete this quest.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                Rewards.ChosenItems.Clear();
            }
        }
Ejemplo n.º 29
0
        public override void FinishQuest()
        {
            if (QuestPlayer.Inventory.IsSlotsFree(6, eInventorySlot.FirstBackpack, eInventorySlot.LastBackpack))
            {
                RemoveItem(Miri, QuestPlayer, sealed_pouch);

                base.FinishQuest(); // Defined in Quest, changes the state, stores in DB etc ...

                if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Shaman)
                {
                    GiveItem(QuestPlayer, ShamanEpicArms);
                    GiveItem(QuestPlayer, ShamanEpicBoots);
                    GiveItem(QuestPlayer, ShamanEpicGloves);
                    GiveItem(QuestPlayer, ShamanEpicHelm);
                    GiveItem(QuestPlayer, ShamanEpicLegs);
                    GiveItem(QuestPlayer, ShamanEpicVest);
                }
                else if (QuestPlayer.CharacterClass.ID == (byte)eCharacterClass.Healer)
                {
                    GiveItem(QuestPlayer, HealerEpicArms);
                    GiveItem(QuestPlayer, HealerEpicBoots);
                    GiveItem(QuestPlayer, HealerEpicGloves);
                    GiveItem(QuestPlayer, HealerEpicHelm);
                    GiveItem(QuestPlayer, HealerEpicLegs);
                    GiveItem(QuestPlayer, HealerEpicVest);
                }

                QuestPlayer.GainExperience(GameLiving.eXPSource.Quest, 1937768448, true);

                // mQuestPlayer.AddMoney(Money.GetMoney(0,0,0,2,Util.Random(50)), "You recieve {0} as a reward.");
            }
            else
            {
                QuestPlayer.Out.SendMessage("You do not have enough free space in your inventory!", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
            }
        }
Ejemplo n.º 30
0
        /*
         * [TestCase("Bank.result")]
         * [TestCase("Boat.result")]
         * [TestCase("Bondiana.result")]
         * [TestCase("Build.result")]
         * [TestCase("Casino.result")]
         * [TestCase("Commando.result")]
         * [TestCase("Diamond.result")]
         * [TestCase("Diehard.result")]
         * [TestCase("Energy.result")]
         * [TestCase("Examen.result")]
         * [TestCase("Fishing.result")]
         * [TestCase("Galaxy.result")]
         * [TestCase("Gladiator.result")]
         * [TestCase("Gobsaur.result")]
         * [TestCase("Hachball.result")]
         * [TestCase("Ikebana.result")]
         * [TestCase("Menzols.result")]
         * [TestCase("Murder.result")]
         * [TestCase("Newflora.result")]
         * [TestCase("Penetrator.result")]
         * [TestCase("Poroda.result")]
         * [TestCase("Prison.result")]
         * [TestCase("Rush.result")]
         * [TestCase("Siege.result")]
         * [TestCase("Spy.result")]
         * [TestCase("Tomb.result")]
         * public void TestOther(string filename)
         * {
         *  var basepath = Path.GetDirectoryName(new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath);
         *  basepath += "/../../../Data/Other/";
         *  basepath = Path.GetFullPath(basepath);
         *  TestQuest(basepath, filename);
         * }
         * [TestCase("Prison3.9.4.result")]
         * [TestCase("Prison3.9.4(1).result")]
         * [TestCase("Prison3.9.4(2).result")]
         * [TestCase("Prison3.9.4(3).result")]
         * [TestCase("Prison3.9.4(4).result")]
         * [TestCase("Prison3.9.4(5).result")]
         * [TestCase("Prison3.9.4(6).result")]
         * [TestCase("Prison3.9.4(7).result")]
         * [TestCase("Prison3.9.4(8).result")]
         * [TestCase("Prison3.9.4(9).result")]
         * [TestCase("Prison3.9.4(10).result")]
         * [TestCase("Prison3.9.4(11).result")]
         * [TestCase("Prison3.9.4(12).result")]
         * [TestCase("Prison3.9.4(13).result")]
         * [TestCase("Prison3.9.4(14).result")]
         * [TestCase("Prison3.9.4(15).result")]
         * [TestCase("Prison3.9.4(16).result")]
         * [TestCase("Prison3.9.4(17).result")]
         * [TestCase("Prison3.9.4(18).result")]
         * [TestCase("Prison3.9.4(19).result")]
         * [TestCase("Prison3.9.4(20).result")]
         * public void TestQuest(string filename)
         * {
         *  var basepath = Path.GetDirectoryName(new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath);
         *  basepath += "/../../../Data/";
         *  basepath = Path.GetFullPath(basepath);
         *  TestQuest(basepath, filename);
         * }
         */
        public void TestQuest(string basepath, string filename)
        {
            int stepCounter = 0;

            filename = Path.Combine(basepath, filename);



            using (var sr = new StreamReader(filename))
            {
                var reader  = new JsonTextReader(sr);
                var jObject = JObject.Load(reader);

                var questFilename = jObject.GetValue("Quest").Value <string>();

                var userName = jObject.GetValue("UserName").Value <string>();

                var randomSeqJson = jObject.GetValue("Random").Value <JArray>();

                QuestRandom.Clear();
                foreach (JObject item in randomSeqJson)
                {
                    var name  = item.Properties().First().Name;
                    int value = (int)item.Properties().First().Value;
                    var max   = (int)item.Properties().Last().Value;
                    QuestRandom.AddSeq(name, value, max);
                }
                QuestRandom.FinishSeq();

                var questSteps = jObject.GetValue("Steps").Value <JArray>();

                questFilename = Path.Combine(basepath, questFilename);

                var q      = new Quest(questFilename);
                var player = new QuestPlayer(q);

                int stepcount = 0;
                foreach (JObject step in questSteps)
                {
                    stepcount++;

                    string description = "";
                    try
                    {
                        description = step.GetValue("Description").Value <string>();
                        description = description.Replace("\r", "");
                    }
                    catch { }
                    var EndPathMessage = "";
                    try
                    {
                        EndPathMessage = step.GetValue("EndPathMessage").Value <string>();
                        EndPathMessage = EndPathMessage.Replace("\r", "");
                    }
                    catch { }

                    var dayspassed            = step.GetValue("dayspassed").Value <int>();
                    var CustomCriticalMessage = step.GetValue("CustomCriticalMessage").Value <string>();
                    CustomCriticalMessage = CustomCriticalMessage.Replace("\r", "");
                    var CurrentCriticalParameter = step.GetValue("CurrentCriticalParameter").Value <int>();

                    var CriticalMessage = "";
                    try
                    {
                        CriticalMessage = step.GetValue("CriticalMessage").Value <string>();
                        CriticalMessage = CriticalMessage.Replace("\r", "");
                    }
                    catch { }


                    var StrPars       = step.GetValue("StrPars").Value <JArray>();
                    var Pars          = step.GetValue("Pars").Value <JArray>();
                    var ParVisState   = step.GetValue("ParVisState").Value <JArray>();
                    var PathesWeCanGo = step.GetValue("PathesWeCanGo").Value <JArray>();
                    var Answers       = step.GetValue("Answers").Value <JArray>();
                    var RandomCount   = step.GetValue("RandomCount").Value <int>();
                    // ---------------------------------------------
                    int i, j;

                    if (CurrentCriticalParameter > 0)
                    {
                        CurrentCriticalParameter--;
                    }
                    if (player.failFlag || player.successFlag)
                    {
                        Assert.IsTrue(CriticalMessage != "");
                        Assert.AreEqual(CriticalMessage.Trim(), player.quest.Pars[CurrentCriticalParameter].CriticalMessage);
                        return;
                    }

                    var trans = player.PossibleTransitions();

                    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    string s = player.CurrentLocation().LocationDescription;
                    s           = s.Replace("\r", "");
                    description = description.Replace("\r", "");
                    Assert.AreEqual(description, s, string.Format("Invalid description (step: {0})", stepcount));
                    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


                    // Pars -------------------------------------------------
                    i = 0;
                    Assert.AreEqual(Pars.Count, player.Pars.Length);
                    foreach (JValue item in Pars)
                    {
                        int tmp1 = item.ToObject <int>();
                        int tmp2 = player.Pars[i];
                        Assert.AreEqual(tmp1, tmp2, string.Format("Invalid Pars[{1}] (step: {0})", stepcount, i));
                        i++;
                    }

                    Assert.AreEqual(dayspassed, player.daysPassed, string.Format("Invalid dayspassed (step: {0})", stepcount));
                    Assert.AreEqual(CustomCriticalMessage, player.CustomCriticalMessage, string.Format("Invalid CustomCriticalMessage (step: {0})", stepcount));

                    Assert.AreEqual(CurrentCriticalParameter, player.CurrentCriticalParameter, string.Format("Invalid CurrentCriticalParameter(step: {0})", stepcount));

                    /**/
                    // ParVisState -------------------------------------------------
                    i = 0;
                    Assert.AreEqual(ParVisState.Count, player.ParVisState.Length, string.Format("Invalid ParVisState.Count(step: {0})", stepcount));
                    foreach (JValue item in ParVisState)
                    {
                        bool tmp1 = item.ToObject <bool>();
                        bool tmp2 = player.ParVisState[i];
                        Assert.AreEqual(tmp1, tmp2, string.Format("Invalid ParVisState [{0}](step: {1})", i, stepcount));
                        i++;
                    }
                    // StrPars -------------------------------------------------
                    i = 0;
                    foreach (JValue item in StrPars)
                    {
                        var itemStr = item.ToString();
                        Assert.AreEqual(itemStr, player.ShowParameters(i), string.Format("Invalid StrPars[{0}] (step: {1})", i, stepcount));
                        i++;
                    }
                    /**/

                    if (Answers.Count != trans.Count)
                    {
                        Console.WriteLine("Expected:");
                        foreach (JObject item in Answers)
                        {
                            int    index  = item.GetValue("Index").Value <int>();
                            string value  = item.GetValue("Value").Value <string>();
                            int    number = item.GetValue("Number").Value <int>();
                            Console.WriteLine(string.Format("i: {0}, v:{1}, n:{2}", index, value, number));
                        }
                        Console.WriteLine("Actualy:");
                        foreach (var item in trans)
                        {
                            Console.WriteLine(trans);
                        }
                    }
                    Assert.AreEqual(Answers.Count, trans.Count, string.Format("Invalid Answers.Count (step: {0})", stepcount));
                    i = 0;
                    foreach (JObject item in Answers)
                    {
                        int    index1  = item.GetValue("Index").Value <int>();
                        string value1  = item.GetValue("Value").Value <string>();
                        int    number1 = item.GetValue("Number").Value <int>();

                        int    index2  = i + 1;
                        string value2  = trans[i].StartPathMessage;
                        int    number2 = trans[i].PathIndx + 1;

                        value1 = value1.Replace("\r", "");
                        value2 = value2.Replace("\r", "");
                        value2 = player.quest.ProcessString(value2, player.Pars);
                        Assert.AreEqual(index1, index2, string.Format("Invalid Answer index[{0}] (step: {1})", i, stepcount));
                        Assert.AreEqual(number1, number2, string.Format("Invalid Answer number[{0}] (step: {1})", i, stepcount));
                        Assert.AreEqual(value1, value2, string.Format("Invalid Answer value[{0}] (step: {1})", i, stepcount));

                        i++;
                    }
                    // PathesWeCanGo --------------------------------
                    i = 0;
                    j = 0;

                    Assert.AreEqual(PathesWeCanGo.Count, player.quest.LocationsValue, string.Format("Invalid PathesWeCanGo.Locations count (step: {0})", stepcount));
                    foreach (JArray items in PathesWeCanGo)
                    {
                        Assert.AreEqual(items.Count, player.quest.PathesValue, string.Format("Invalid PathesWeCanGo.Paths count (step: {0})", stepcount));
                        j = 0;
                        foreach (JValue item in items)
                        {
                            int tmp1 = item.ToObject <int>();
                            int tmp2 = player.PathesWeCanGo[i, j];

                            Assert.AreEqual(tmp1, tmp2, string.Format("Invalid PathesWeCanGo[{0}, {1}] (step: {0})", i, j, stepcount));
                            j++;
                        }
                        i++;
                    }

                    // ---------------------------------

                    JObject Answer = null;
                    try
                    {
                        Answer = step.GetValue("Answer").Value <JObject>();
                    }
                    catch (Exception e)
                    {
                    }

                    // -------------------------------

                    if (QuestRandom.RamdomCallCount() != RandomCount)
                    {
                        for (var ki = QuestRandom.RamdomCallCount() + 1; ki <= RandomCount; ++ki)
                        {
                            try
                            {
                                Console.Write(ki + " ");
                                QuestRandom.DebugPrint(ki);
                            }
                            catch { }
                        }
                        Console.WriteLine();
                    }

                    Assert.AreEqual(RandomCount, QuestRandom.RamdomCallCount(), string.Format("Invalid Ramdom call count (step: {0})", stepcount));

                    if (Answer != null)
                    {
                        int    step_index  = Answer.GetValue("Index").Value <int>();
                        string step_string = Answer.GetValue("Value").Value <string>();
                        step_string = step_string.Replace("\r", "");
                        QuestPath qp = trans[step_index - 1];
                        EndPathMessage = player.quest.ProcessString(EndPathMessage, player.Pars);
                        string ss = player.quest.ProcessString(qp.EndPathMessage, player.Pars);
                        Assert.AreEqual(EndPathMessage, ss, string.Format("Invalid EndPathMessage (step: {0})", stepcount));
                        ss = player.quest.ProcessString(qp.StartPathMessage, player.Pars);
                        Assert.AreEqual(step_string, ss, string.Format("Invalid StartPathMessage (step: {0})", stepcount));

                        Console.WriteLine("#{1} Step done: {0}", qp, ++stepCounter);

                        player.DoTransition(qp);
                    }
                }
            }



            //var q = new Quest(filename);

            //var player = new QuestPlayer(q, "211112113114213113113212121142145111311421211");
        }