public void UseWeapon(Weapon weapon) { //determine amount of damage to do int damageToEnemy = RNG.NumberBetween(weapon.MinDamage, weapon.MaxDamage); //apply damage to enemy's currentHP _currentEnemy.CurrentHP -= damageToEnemy; //display message RaiseMessage("You hit the " + _currentEnemy.Name + " for " + damageToEnemy + " damage."); //check if enemy is dead if (_currentEnemy.CurrentHP <= 0) { RaiseMessage(""); RaiseMessage("You defeated the " + _currentEnemy.Name); //give player EXP AddEXP(_currentEnemy.RewardEXP); RaiseMessage("You receive " + _currentEnemy.RewardEXP + " experience."); //give player gold Gold += _currentEnemy.RewardGold; RaiseMessage("You receive " + _currentEnemy.RewardGold + " gold."); //get random loot List <InventoryItem> lootedItems = new List <InventoryItem>(); //add items to lootedItems list, comparing random number to drop percentage foreach (LootItem lootItem in _currentEnemy.LootTable) { if (RNG.NumberBetween(1, 100) <= lootItem.DropPercentage) { lootedItems.Add(new InventoryItem(lootItem.Details, 1)); } } //if no items were randomly selected, add default loot item(s) if (lootedItems.Count == 0) { foreach (LootItem lootItem in _currentEnemy.LootTable) { if (lootItem.IsDefaultItem) { lootedItems.Add(new InventoryItem(lootItem.Details, 1)); } } } //add looted items to 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 blank line to messages RaiseMessage(""); //move player to current location to respawn enemy and heal player MoveTo(CurrentLocation); } else { //Enemy is still alive //determine enemy damage to player int damageToPlayer = RNG.NumberBetween(0, _currentEnemy.MaxDamage); //display message RaiseMessage("The " + _currentEnemy.Name + " did " + damageToPlayer + " damage to you."); //subtract damage from player CurrentHP -= damageToPlayer; if (CurrentHP <= 0) { //display message RaiseMessage("The " + _currentEnemy + " defeated you."); //Move player to home MoveHome(); } } }