public void Cant_start_quests_if_not_female_and_needs_female() { questStart.RequiredGender = (int)QuestStatics.Gender.Female; player.Gender = PvPStatics.GenderMale; Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.False); }
public void Cant_start_quests_if_level_too_high() { questStart.MinStartLevel = 3; player.Level = 2; Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.False); }
public void Cant_start_quests_if_quest_already_completed() { questPlayerStatuses.Add(new QuestPlayerStatus { QuestId = fakeTestId, Outcome = (int)QuestStatics.QuestOutcomes.Completed }); Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.False); }
public void Can_start_quests_if_quest_not_recently_failed() { questPlayerStatuses.Add(new QuestPlayerStatus { QuestId = fakeTestId, Outcome = (int)QuestStatics.QuestOutcomes.Failed, LastEndedTurn = turnNumber - QuestStatics.QuestFailCooldownTurnLength - 1 }); Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.True); }
public void Can_start_quest_if_prerequisite_test_is_completed() { questStart.PrerequisiteQuest = 2; questPlayerStatuses.Add(new QuestPlayerStatus { QuestId = 2, Outcome = (int)QuestStatics.QuestOutcomes.Completed }); Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.True); }
public void Cant_start_quest_if_prerequisite_test_not_completed() { questStart.PrerequisiteQuest = 2; Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.False); }
public void Cant_start_quests_that_are_not_live() { questStart.IsLive = false; Assert.That(QuestProcedures.PlayerCanBeginQuest(player, questStart, questPlayerStatuses, turnNumber), Is.False); }
public virtual ActionResult StartQuest(int Id) { var myMembershipId = User.Identity.GetUserId(); if (PvPStatics.AnimateUpdateInProgress) { TempData["Error"] = "Player update portion of the world update is still in progress."; TempData["SubError"] = "Try again a bit later when the update has progressed farther along."; return(RedirectToAction(MVC.PvP.Play())); } var me = PlayerProcedures.GetPlayerFromMembership(myMembershipId); // assert player is in an okay form to do this if (me.Mobility != PvPStatics.MobilityFull) { TempData["Error"] = "You must be animate in order to begin a quest."; return(RedirectToAction(MVC.PvP.Play())); } // assert that this player is not in a duel if (me.InDuel > 0) { TempData["Error"] = "You must finish your duel before you begin a quest."; return(RedirectToAction(MVC.PvP.Play())); } // assert that this player is not in a quest if (me.InQuest > 0) { TempData["Error"] = "You must finish your current quest before you start another."; return(RedirectToAction(MVC.PvP.Play())); } // assert player has not been in combat recently var lastAttackTimeAgo = Math.Abs(Math.Floor(me.GetLastCombatTimestamp().Subtract(DateTime.UtcNow).TotalMinutes)); if (lastAttackTimeAgo < TurnTimesStatics.GetMinutesSinceLastCombatBeforeQuestingOrDuelling()) { TempData["Error"] = "You have been in combat too recently in order to begin this quest."; TempData["SubError"] = "You must stay out of combat for another " + (TurnTimesStatics.GetMinutesSinceLastCombatBeforeQuestingOrDuelling() - lastAttackTimeAgo) + " minutes."; return(RedirectToAction(MVC.PvP.Play())); } var questStart = QuestProcedures.GetQuest(Id); // assert player is in the correct place if (me.dbLocationName != questStart.Location) { TempData["Error"] = "You are not in the correct location to begin this quest."; return(RedirectToAction(MVC.PvP.Play())); } var gameTurnNum = PvPWorldStatProcedures.GetWorldTurnNumber(); // assert player did not fail or abandon this quest too soon ago var lastTurnAttempted = QuestProcedures.GetLastTurnQuestEnded(me, questStart.Id); if (PvPWorldStatProcedures.GetWorldTurnNumber() - lastTurnAttempted < QuestStatics.QuestFailCooldownTurnLength) { TempData["Error"] = "You recently failed or abandoned this quest."; TempData["SubError"] = "You must wait another " + (QuestStatics.QuestFailCooldownTurnLength - (gameTurnNum - lastTurnAttempted)) + " turns before you can attempt this quest again."; return(RedirectToAction(MVC.PvP.Play())); } var questPlayerStatuses = QuestProcedures.GetQuestPlayerStatuses(me); var canStartQuest = QuestProcedures.PlayerCanBeginQuest(me, questStart, questPlayerStatuses, gameTurnNum); // assert player meets level / game turn requirements for this quest if (!canStartQuest) { TempData["Error"] = "You do not meet all of the criteria to begin this quest."; return(RedirectToAction(MVC.PvP.Play())); } // all checks have passed; start the player on this quest QuestProcedures.PlayerBeginQuest(me, questStart); LocationLogProcedures.AddLocationLog(me.dbLocationName, "<span class='playerMediatingNotification'><b>" + me.GetFullName() + "</b> began the quest <b>" + questStart.Name + "</b> here.</span>"); TempData["Result"] = "You started the quest " + questStart.Name + "."; return(RedirectToAction(MVC.Quest.Questing())); }