public void LootCorpse(Player player, string[] input) { StringBuilder inputString = new StringBuilder(); for (int i = 1; i < input.Length; i++) { inputString.Append(input[i]); inputString.Append(' '); } string inputName = inputString.ToString().Trim(); string[] monsterName = Monster.Name.Split(' '); if (monsterName.Last() == inputName || Monster.Name.Contains(inputName)) { if (Monster.HitPoints <= 0 && Monster.WasLooted == false) { int goldLooted = Monster.Gold; player.Gold += Monster.Gold; try { Monster.Gold = 0; string lootGoldString = $"You looted {goldLooted} gold coins from the {Monster.Name}!"; OutputHelper.Display.StoreUserOutput( Settings.FormatSuccessOutputText(), Settings.FormatDefaultBackground(), lootGoldString); while (Monster.MonsterItems.Count > 0) { int playerWeight = PlayerHelper.GetInventoryWeight(player); int itemWeight = Monster.MonsterItems[0].Weight; if (playerWeight + itemWeight > player.MaxCarryWeight) { OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), "You can't carry that much!"); return; } else { player.Inventory.Add(Monster.MonsterItems[0]); } string lootItemString = $"You looted {Monster.MonsterItems[0].Name} from the {Monster.Name}!"; OutputHelper.Display.StoreUserOutput( Settings.FormatSuccessOutputText(), Settings.FormatDefaultBackground(), lootItemString); Monster.MonsterItems.RemoveAt(0); } Monster.WasLooted = true; int monsterIndex = RoomObjects.FindIndex( f => f.Name == Monster.Name); if (monsterIndex != -1) { RoomObjects.RemoveAt(monsterIndex); } } catch (InvalidOperationException) { } } else if (Monster.WasLooted) { string alreadyLootString = $"You already looted {Monster.Name}!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), alreadyLootString); } else { OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), "You cannot loot something that isn't dead!"); } } else { string noLootString = $"There is no {inputName} in the room!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), noLootString); } }
public void LookNpc(string[] input, Player player) { StringBuilder inputString = new StringBuilder(); for (int i = 1; i < input.Length; i++) { inputString.Append(input[i]); inputString.Append(' '); } string inputName = inputString.ToString().Trim(); int nameIndex = RoomObjects.FindIndex( f => f.Name == inputName || f.Name.Contains(inputName)); if (RoomObjects[nameIndex].GetType() == typeof(Vendor)) { string[] vendorName = Vendor.Name.Split(' '); if (vendorName.Last() == inputName || Vendor.Name == inputName) { for (int i = 0; i < Vendor.Desc.Length; i += Settings.GetGameWidth()) { if (Vendor.Desc.Length - i < Settings.GetGameWidth()) { OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Vendor.Desc.Substring(i, Vendor.Desc.Length - i)); continue; } OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Vendor.Desc.Substring(i, Settings.GetGameWidth())); } List <string> sameLineOutput = new List <string> { Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), "The vendor is carrying: " }; OutputHelper.Display.StoreUserOutput(sameLineOutput); TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; foreach (IItem itemForSale in Vendor.VendorItems) { List <string> sameLineOutputItem = new List <string>(); StringBuilder sb = new StringBuilder(); string itemTitle = itemForSale.Name; itemTitle = textInfo.ToTitleCase(itemTitle); sb.Append(itemTitle); sameLineOutputItem.Add(Settings.FormatRoomOutputText()); sameLineOutputItem.Add(Settings.FormatDefaultBackground()); sameLineOutputItem.Add(sb.ToString()); OutputHelper.Display.StoreUserOutput(sameLineOutputItem); } } else { string noVendorString = "There is no " + inputName + " in the room!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), noVendorString); } } else { string[] trainerName = Trainer.Name.Split(' '); if (trainerName.Last() == inputName || Trainer.Name == inputName) { for (int i = 0; i < Trainer.Desc.Length; i += Settings.GetGameWidth()) { if (Trainer.Desc.Length - i < Settings.GetGameWidth()) { OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Trainer.Desc.Substring(i, Trainer.Desc.Length - i)); continue; } OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Trainer.Desc.Substring(i, Settings.GetGameWidth())); } } else { string noTrainerString = "There is no " + inputName + " in the room!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), noTrainerString); } } }