public void UseWeapon(Weapon weapon) { int damageToMonster = RandomNumberGenerator.NumberBetween( weapon.MinimumDamage, weapon.MaximumDamage); _currentMonster.CurrentHitPoints -= damageToMonster; RaiseMessage("You hit the " + _currentMonster.Name + " for " + damageToMonster + " points."); if (_currentMonster.CurrentHitPoints <= 0) { RaiseMessage(""); RaiseMessage("You defeated the " + _currentMonster.Name); AddExperiencePoints(_currentMonster.RewardExperiencePoints); RaiseMessage("You receive " + _currentMonster.RewardExperiencePoints + " experience points"); Gold += _currentMonster.RewardGold; RaiseMessage("You receive " + _currentMonster.RewardGold + " gold"); List <InventoryItem> lootedItems = new List <InventoryItem>(); foreach (LootItem lootItem in _currentMonster.LootTable) { if (RandomNumberGenerator.NumberBetween(1, 100) <= lootItem.DropPercentage) { lootedItems.Add(new InventoryItem(lootItem.Details, 1)); } } if (lootedItems.Count == 0) { foreach (LootItem lootItem in _currentMonster.LootTable) { if (lootItem.IsDefaultItem) { lootedItems.Add(new InventoryItem(lootItem.Details, 1)); } } } foreach (InventoryItem inventoryItem in lootedItems) { AddItemToInventory(inventoryItem.Details); if (inventoryItem.Quantity == 1) { RaiseMessage("You loot " + inventoryItem.Quantity + " " + inventoryItem.Details.Name); } else { RaiseMessage("You loot " + inventoryItem.Quantity + " " + inventoryItem.Details.NamePlural); } } RaiseMessage(""); MoveTo(CurrentLocation); } else { int damageToPlayer = RandomNumberGenerator.NumberBetween( 0, _currentMonster.MaximumDamage); RaiseMessage("The " + _currentMonster.Name + " did " + damageToPlayer + " points of damage."); CurrentHitPoints -= damageToPlayer; if (CurrentHitPoints <= 0) { RaiseMessage("The " + _currentMonster.Name + " killed you.", true); MoveHome(); } } }
public void UseWeapon(Weapon weapon) { // Determine the amount of damage to do to the monster int damageToMonster = RandomNumberGenerator.NumberBetween(weapon.MinimumDamage, weapon.MaximumDamage); // Apply the damage to the monster's CurrentHitPoints _currentMonster.CurrentHitPoints -= damageToMonster; // Display message RaiseMessage("You hit the " + _currentMonster.Name + " for " + damageToMonster + " points."); // Check if the monster is dead if (_currentMonster.CurrentHitPoints <= 0) { // Monster is dead RaiseMessage(""); RaiseMessage("You defeated the " + _currentMonster.Name); // Give player experience points for killing the monster AddExperiencePoints(_currentMonster.RewardExperiencePoints); RaiseMessage("You receive " + _currentMonster.RewardExperiencePoints + " experience points"); // Give player gold for killing the monster Gold += _currentMonster.RewardGold; RaiseMessage("You receive " + _currentMonster.RewardGold + " gold"); // Get random loot items from the monster List <InventoryItem> lootedItems = new List <InventoryItem>(); // Add items to the lootedItems list, comparing a random number to the drop percentage foreach (LootItem lootItem in _currentMonster.LootTable) { if (RandomNumberGenerator.NumberBetween(1, 100) <= lootItem.DropPercentage) { lootedItems.Add(new InventoryItem(lootItem.Details, 1)); } } // If no items were randomly selected, then add the default loot item(s). if (lootedItems.Count == 0) { foreach (LootItem lootItem in _currentMonster.LootTable) { if (lootItem.IsDefaultItem) { lootedItems.Add(new InventoryItem(lootItem.Details, 1)); } } } // Add the looted items to the player's inventory foreach (InventoryItem inventoryItem in lootedItems) { AddItemToInventory(inventoryItem.Details); if (inventoryItem.Quantity == 1) { RaiseMessage("You loot " + inventoryItem.Quantity + " " + inventoryItem.Details.Name); } else { RaiseMessage("You loot " + inventoryItem.Quantity + " " + inventoryItem.Details.NamePlural); } } // Add a blank line to the messages box, just for appearance. RaiseMessage(""); // Move player to current location (to heal player and create a new monster to fight) MoveTo(CurrentLocation); } else { // Monster is still alive // Determine the amount of damage the monster does to the player int damageToPlayer = RandomNumberGenerator.NumberBetween(0, _currentMonster.MaximumDamage); // Display message RaiseMessage("The " + _currentMonster.Name + " did " + damageToPlayer + " points of damage."); // Subtract damage from player CurrentHitPoints -= damageToPlayer; if (CurrentHitPoints <= 0) { Gameover(); } } }
private void UseWeaponInBattle(Weapon weapon) { // Player gets to swing first // Determine amount of damage to do to the monster int damageToMonster = RandomNumberGenerator.NumberBetween( weapon.MinimumDamage, weapon.MaximumDamage); // Apply the damage to the monster's CurrentHitPoints _currentMonster.CurrentHitPoints -= damageToMonster; RaiseMessage("You hit the " + _currentMonster.Name + " for " + damageToMonster + " points."); // Check if the monster is dead if (_currentMonster.CurrentHitPoints <= 0) { // Monster is dead RaiseMessage(""); RaiseMessage("You defeated the " + _currentMonster.Name); // Give player experience points for killing the monster AddExperiencePoints(_currentMonster.RewardExperiencePoints); RaiseMessage("You receive " + _currentMonster.RewardExperiencePoints + " experience points"); // Give player gold for killing the monster Gold += _currentMonster.RewardGold; RaiseMessage("You receive " + _currentMonster.RewardGold + " gold"); // Add the LootItems from the Monster to Inventory foreach (InventoryItem inventoryItem in _currentMonster.LootItems) { AddItemToInventory(inventoryItem.Details); if (inventoryItem.Quantity == 1) { RaiseMessage("You loot " + inventoryItem.Quantity + " " + inventoryItem.Details.Name); } else { RaiseMessage("You loot " + inventoryItem.Quantity + " " + inventoryItem.Details.NamePlural); } } // Add a blank line to the messages box, just for appearance RaiseMessage(""); // Move player to current location (to heal player and create a new monster to fight) MoveTo(CurrentLocation); } else { // Monster is still alive after attack // Determine the amount of damage the monster does to the player int damageToPlayer = RandomNumberGenerator.NumberBetween( 0, _currentMonster.MaximumDamage); // Display message about the damage to player RaiseMessage("The " + _currentMonster.Name + " did " + damageToPlayer + " points of damage."); // Subtract damage from player CurrentHitPoints -= damageToPlayer; if (CurrentHitPoints <= 0) // Player died!! { // Display message about player's untimely demise RaiseMessage("The " + _currentMonster.Name + " killed you."); // Move player to "Home" MoveHome(); } } }