Пример #1
0
        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();
            }
        }
Пример #2
0
 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);
 }
Пример #3
0
        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();
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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();
            }
        }
Пример #6
0
        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();
                }
            }
        }