public void UseWeapon(Weapon weapon) { int damage = RNG.NumberBetween(weapon.MinDamage, weapon.MaxDamage); if (damage == 0) { RaiseMessage("You missed the " + CurrentMonster.Name); } else { CurrentMonster.CurrentHitPoints -= damage; RaiseMessage("You hit the" + CurrentMonster.Name + " for " + damage + " points."); } //Check if the monster died if (CurrentMonster.IsDead) { LootCurrentMonster(); //Refresh location MoveTo(CurrentLocation); } else { LetMonsterAttack(); } }
public void LevelUp() { Level += 1; MaxHealthPoints += RNG.NumberBetween(0, IvHealthPoints); Strength += RNG.NumberBetween(0, IvStrength); Resistance += RNG.NumberBetween(0, IvResistance); Intelligence += RNG.NumberBetween(0, IvIntelligence); Mind += RNG.NumberBetween(0, IvMind); Speed += RNG.NumberBetween(0, IvSpeed); }
private void LetMonsterAttack() { int damageToPlayer = RNG.NumberBetween(0, CurrentMonster.MaxDamage); RaiseMessage("The " + CurrentMonster.Name + " did " + damageToPlayer + " points of damage."); CurrentHitPoints -= damageToPlayer; if (IsDead) { RaiseMessage("The " + CurrentMonster.Name + " killed you."); MoveHome(); } }
internal Monster NewInstanceOfMonster() { Monster newMonster = new Monster(ID, Name, MaxDamage, RewardExperiencePoints, RewardGold, CurrentHitPoints, MaxHitPoints); //Add items to looted item list based on drop rates foreach (LootItem lootItem in LootTable.Where(lootitem => RNG.NumberBetween(1, 100) <= lootitem.DropPercentage)) { newMonster.LootItems.Add(new InventoryItem(lootItem.Details, 1)); } //If no items were dropped, return the default drops if (newMonster.LootItems.Count == 0) { foreach (LootItem lootItem in LootTable.Where(x => x.IsDefaultItem)) { newMonster.LootItems.Add(new InventoryItem(lootItem.Details, 1)); } } return(newMonster); }
public void UsePotion(HealingPotion potion) { //add healing amount to player's currentHP CurrentHP += potion.AmountToHeal; //current hp cannot exceed maxHP if (CurrentHP > MaxHP) { CurrentHP = MaxHP; } //remove potion from inventory RemoveItemFromInventory(potion, 1); //display message RaiseMessage("You drink a " + potion.Name + "."); //enemy attacks //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(); } }
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(); } } }