private void MoveTo(Location newLocation) { //Does the location have any required items if (!player.HasRequiredItemToEnterThisLocation(newLocation)) { rtbMessages.Text += "Musíš mít " + newLocation.ItemRequiredToEnter.Name + " aby si mohl vstoupit do této lokace." + Environment.NewLine; ScrollToBottomOfMessages(); return; } if ((player.CurrentLocation != null) && (player.CurrentLocation.MonsterLivingHere != null) && (!player.KilledMobRequiredToEnter(newLocation, player.y[player.CurrentLocation.MonsterLivingHere.ID]))) { rtbMessages.Text += "Musíš zabít " + player.CurrentLocation.MonsterLivingHere.Name + " aby si mohl vstoupit do této lokace." + Environment.NewLine; ScrollToBottomOfMessages(); return; } // Update the player's current location player.CurrentLocation = newLocation; // Show/hide available movement buttons btnNorth.Visible = (newLocation.LocationToNorth != null); btnEast.Visible = (newLocation.LocationToEast != null); btnSouth.Visible = (newLocation.LocationToSouth != null); btnWest.Visible = (newLocation.LocationToWest != null); // Display current location name and description rtbLocation.Text = newLocation.Name + Environment.NewLine; rtbLocation.Text += newLocation.Description + Environment.NewLine; ScrollToBottomOfMessages(); // Completely heal the player player.CurrentHP = player.MaxHP; // Does the location have a quest? if (newLocation.QuestAvailableHere != null) { // See if the player already has the quest, and if they've completed it bool playerAlreadyHasQuest = player.HasThisQuest(newLocation.QuestAvailableHere); bool playerAlreadyCompletedQuest = player.CompletedThisQuest(newLocation.QuestAvailableHere); // See if the player already has the quest if (playerAlreadyHasQuest) { // If the player has not completed the quest yet if (!playerAlreadyCompletedQuest) { // See if the player has all the items needed to complete the quest bool playerHasAllItemsToCompleteQuest = player.HasAllQuestCompletionItems(newLocation.QuestAvailableHere); // The player has all items required to complete the quest if (playerHasAllItemsToCompleteQuest) { // Display message rtbMessages.Text += Environment.NewLine; rtbMessages.Text += "Dokončil si úkol'" + newLocation.QuestAvailableHere.Name + "'." + Environment.NewLine; ScrollToBottomOfMessages(); // Remove quest items from inventory player.RemoveQuestCompletionItems(newLocation.QuestAvailableHere); // Give quest rewards rtbMessages.Text += "Dostal si: " + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.XPReward.ToString() + " XP" + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.GoldReward.ToString() + " zlatých" + Environment.NewLine; if (newLocation.QuestAvailableHere.RewardItem != null) { rtbMessages.Text += newLocation.QuestAvailableHere.RewardItem.Name + Environment.NewLine; // Add the reward item to the player's inventory player.AddItemToInventory(newLocation.QuestAvailableHere.RewardItem); } rtbMessages.Text += Environment.NewLine; ScrollToBottomOfMessages(); player.XP += newLocation.QuestAvailableHere.XPReward; player.Gold += newLocation.QuestAvailableHere.GoldReward; int lastlevel = player.Level; player.Level = player.LevelUp(player.XP, player.Level); levelUp(lastlevel); // Mark the quest as completed // Find the quest in the player's quest list player.MarkQuestCompleted(newLocation.QuestAvailableHere); } } } else { // The player does not already have the quest // Display the messages rtbMessages.Text += "Dostal si úkol '" + newLocation.QuestAvailableHere.Name + "'." + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.Description + Environment.NewLine; rtbMessages.Text += "Aby si ho splnil, vrať se s:" + Environment.NewLine; ScrollToBottomOfMessages(); foreach (QuestCompletionItem qci in newLocation.QuestAvailableHere.QuestCompletionItems) { if (qci.Quantity == 1) { rtbMessages.Text += qci.Quantity.ToString() + " " + qci.Details.Name + Environment.NewLine; ScrollToBottomOfMessages(); } else { rtbMessages.Text += qci.Quantity.ToString() + " " + qci.Details.NamePlural + Environment.NewLine; ScrollToBottomOfMessages(); } } rtbMessages.Text += Environment.NewLine; ScrollToBottomOfMessages(); // Add the quest to the player's quest list player.Quests.Add(new PlayerQuest(newLocation.QuestAvailableHere)); } } // Does the location have a monster? if (newLocation.MonsterLivingHere != null) { if (newLocation.MonsterLivingHere.Boss == true) { if (player.y[newLocation.MonsterLivingHere.ID] != 0) { Nomob(); } else { Ismob(); } } else { Ismob(); } } else { Nomob(); } // Refresh player's inventory list UpdateInventoryListInUI(); // Refresh player's quest list UpdateQuestListInUI(); // Refresh player's weapons combobox UpdateWeaponListInUI(); // Refresh player's potions combobox UpdatePotionListInUI(); //function for "summoning" mob void Ismob() { rtbMessages.Text += "Před tebou se vynořil divoký " + newLocation.MonsterLivingHere.Name + Environment.NewLine; ScrollToBottomOfMessages(); // Make a new monster, using the values from the standard monster in the World.Monster list Mob standardMob = World.MobByID(newLocation.MonsterLivingHere.ID); currentMob = new Mob(standardMob.ID, standardMob.Name, standardMob.MaxDmg, standardMob.XPReward, standardMob.GoldReward, standardMob.CurrentHP, standardMob.MaxHP, standardMob.Boss); foreach (LootItem lootItem in standardMob.LootTable) { currentMob.LootTable.Add(lootItem); } cboWeapons.Visible = true; cboPotions.Visible = true; btnUseWeapon.Visible = true; btnUsePotion.Visible = true; } }
private void MoveTo(Location newLocation) { //Does the location have any required items if (!_player.HasRequiredItemToEnterThisLocation(newLocation)) { rtbMessages.Text += "You must have a " + newLocation.ItemRequiredToEnter.Name + " to enter this location." + Environment.NewLine; return; } // Update the player's current location _player.CurrentLocation = newLocation; // Show/hide available movement buttons btnNorth.Visible = (newLocation.LocationToNorth != null); btnEast.Visible = (newLocation.LocationToEast != null); btnSouth.Visible = (newLocation.LocationToSouth != null); btnWest.Visible = (newLocation.LocationToWest != null); // Display current location name and description rtbLocation.Text = newLocation.Name + Environment.NewLine; rtbLocation.Text += newLocation.Description + Environment.NewLine; // Completely heal the player _player.CurrentHitPoints = _player.MaximumHitPoints; // Update Hit Points in UI lblHitPoints.Text = _player.CurrentHitPoints.ToString(); // Does the location have a quest? if (newLocation.QuestAvailableHere != null) { // See if the player already has the quest, and if they've completed it bool playerAlreadyHasQuest = _player.HasThisQuest(newLocation.QuestAvailableHere); bool playerAlreadyCompletedQuest = _player.CompletedThisQuest(newLocation.QuestAvailableHere); // See if the player already has the quest if (playerAlreadyHasQuest) { // If the player has not completed the quest yet if (!playerAlreadyCompletedQuest) { // See if the player has all the items needed to complete the quest bool playerHasAllItemsToCompleteQuest = _player.HasAllQuestCompletionItems(newLocation.QuestAvailableHere); // The player has all items required to complete the quest if (playerHasAllItemsToCompleteQuest) { // Display message rtbMessages.Text += Environment.NewLine; rtbMessages.Text += "You complete the '" + newLocation.QuestAvailableHere.Name + "' quest." + Environment.NewLine; // Remove quest items from inventory _player.RemoveQuestCompletionItems(newLocation.QuestAvailableHere); // Give quest rewards rtbMessages.Text += "You receive: " + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.RewardExperiencePoints.ToString() + " experience points" + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.RewardGold.ToString() + " gold" + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.RewardItem.Name + Environment.NewLine; rtbMessages.Text += Environment.NewLine; _player.ExperiencePoints += newLocation.QuestAvailableHere.RewardExperiencePoints; _player.Gold += newLocation.QuestAvailableHere.RewardGold; // Add the reward item to the player's inventory _player.AddItemToInventory(newLocation.QuestAvailableHere.RewardItem); // Mark the quest as completed _player.MarkQuestCompleted(newLocation.QuestAvailableHere); } } } else { // The player does not already have the quest // Display the messages rtbMessages.Text += "You receive the " + newLocation.QuestAvailableHere.Name + " quest." + Environment.NewLine; rtbMessages.Text += newLocation.QuestAvailableHere.Description + Environment.NewLine; rtbMessages.Text += "To complete it, return with:" + Environment.NewLine; foreach (QuestCompletionItem qci in newLocation.QuestAvailableHere.QuestCompletionItems) { if (qci.Quantity == 1) { rtbMessages.Text += qci.Quantity.ToString() + " " + qci.Details.Name + Environment.NewLine; } else { rtbMessages.Text += qci.Quantity.ToString() + " " + qci.Details.NamePlural + Environment.NewLine; } } rtbMessages.Text += Environment.NewLine; // Add the quest to the player's quest list _player.Quests.Add(new PlayerQuest(newLocation.QuestAvailableHere)); } } // Does the location have a monster? if (newLocation.MonsterLivingHere != null) { rtbMessages.Text += "You see a " + newLocation.MonsterLivingHere.Name + Environment.NewLine; // Make a new monster, using the values from the standard monster in the World.Monster list Monster standardMonster = World.MonsterByID(newLocation.MonsterLivingHere.ID); _currentMonster = new Monster(standardMonster.ID, standardMonster.Name, standardMonster.MaximumDamage, standardMonster.RewardExperiencePoints, standardMonster.RewardGold, standardMonster.CurrentHitPoints, standardMonster.MaximumHitPoints); foreach (LootItem lootItem in standardMonster.LootTable) { _currentMonster.LootTable.Add(lootItem); } cboWeapons.Visible = true; cboPotions.Visible = true; btnUseWeapon.Visible = true; btnUsePotion.Visible = true; } else { _currentMonster = null; cboWeapons.Visible = false; cboPotions.Visible = false; btnUseWeapon.Visible = false; btnUsePotion.Visible = false; } // Refresh player's inventory list UpdateInventoryListInUI(); // Refresh player's quest list UpdateQuestListInUI(); // Refresh player's weapons combobox UpdateWeaponListInUI(); // Refresh player's potions combobox UpdatePotionListInUI(); }