public void UseWeapon(Weapon weapon) { //Determine the amount of damage to do to the monster int damageToMonster = RandomNumberGenerator.NumberBetween(weapon.MinimumDamage, weapon.MaximumDamage); //Apply damage _currentMonster.CurrentHitPoints -= damageToMonster; //diplay message RaiseMessage("You hit the " + _currentMonster.Name + " for " + damageToMonster + " points."); //check if the monster is dead if (_currentMonster.CurrentHitPoints <= 0) { RaiseMessage(""); RaiseMessage("You defeated the " + _currentMonster.Name); //give exp pt AddExperiencePoints(_currentMonster.RewardExperiencePoints); RaiseMessage("You receive " + _currentMonster.RewardExperiencePoints + " experience points"); //Give gold Gold += _currentMonster.RewardGold; RaiseMessage("You got " + _currentMonster.RewardGold + " gold"); //Random loot items 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, add the default loot item if (lootedItems.Count == 0) { foreach (LootItem lootItem in _currentMonster.LootTable) { 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 blank line to messages RaiseMessage(""); //Move palyer to currrent location MoveTo(CurrentLocation); } else { //Monster is still alive //Determine amount of damage done to player int damageToPlayer = RandomNumberGenerator.NumberBetween(0, _currentMonster.MaximumDamage); //Display message RaiseMessage("The " + _currentMonster.Name + " did " + damageToPlayer + " points of damage."); //Subtract the damage CurrentHitPoints -= damageToPlayer; if (CurrentHitPoints <= 0) { RaiseMessage("The " + _currentMonster.Name + " killed you"); MoveHome(); } } }
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); if (CurrentArmor != null) { int armorReduction = CurrentArmor.Defense / (RandomNumberGenerator.NumberBetween(2, 10)); RaiseMessage(CurrentArmor.Name + " reduced " + armorReduction + " points"); damageToPlayer = damageToPlayer - armorReduction; } if (damageToPlayer < 0) { damageToPlayer = 0; } RaiseMessage("The " + _currentMonster.Name + " did " + damageToPlayer + " points of damage."); CurrentHitPoints -= damageToPlayer; if (CurrentHitPoints <= 0) { RaiseMessage("The " + _currentMonster.Name + " killed you."); RaiseMessage("You lose " + ((int)((float)this.Gold * 0.05) + " gold.")); this.Gold = this.Gold - (int)((float)this.Gold * 0.05); MoveHome(); } } }
public void UseWeapon(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"); // 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 % 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 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(); } } }
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(); } } }