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)); }
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)); }
/// <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); }
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); }
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)); }
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); }
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); }
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)); }
public async Task <ActionResult <QuestPlayer> > Post(QuestPlayer questPlayer) { if (questPlayer == null) { return(BadRequest()); } _db.QuestPlayers.Add(questPlayer); await _db.SaveChangesAsync(); return(Ok(questPlayer)); }
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); }
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)); }
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)); }
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); }
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); }
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)); }
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); }
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)); }
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)); }
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); }
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(); }
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; } } } }
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(); }
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); }
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)); }
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)); }
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); }
/// <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(); } }
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); } }
/* * [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"); }