public LootSack(Enemy enemy) : base("Sprites/Containers/unseen_item", "Sprites/Containers/unseen_item", "Sounds/CLICK14A", enemy.FloorNumber, enemy.Inventory)
 {
     scale = 0.5f;
     for (int i = 0; i < enemy.EquipmentSlots.Children.Count - 1; i++)
     {
         RestrictedItemSlot equipSlot = enemy.EquipmentSlots.Children[i] as RestrictedItemSlot;
         ItemSlot           slot      = enemy.Inventory[i, 0] as ItemSlot;
         slot.ChangeItem(equipSlot.SlotItem);
     }
 }
Exemple #2
0
        private void SetupType()
        {
            if (playerType == PlayerType.Random)
            {
                //select random armorType
                Array pTypeValues = Enum.GetValues(typeof(PlayerType));
                playerType = (PlayerType)pTypeValues.GetValue(GameEnvironment.Random.Next(pTypeValues.Length - 1));
            }

            RestrictedItemSlot weaponslot = EquipmentSlots.Find("weaponSlot") as RestrictedItemSlot;
            RestrictedItemSlot bodyslot   = EquipmentSlots.Find("bodySlot") as RestrictedItemSlot;
            int EquipmentStartingStrenght = 3;

            ItemSlot slot_0_0 = Inventory[0, 0] as ItemSlot;

            slot_0_0.ChangeItem(new Potion("Sprites/Potions/ruby", PotionType.Health, PotionPower.minor, 5));//some starting healt potions


            ItemSlot slot_2_2 = Inventory[2, 2] as ItemSlot;

            slot_2_2.ChangeItem(new Heal());
            ItemSlot slot_3_2 = Inventory[3, 2] as ItemSlot;

            slot_3_2.ChangeItem(new MagicBolt());

            switch (playerType)
            {
            case PlayerType.Warrior:
                weaponslot.ChangeItem(new WeaponEquipment(EquipmentStartingStrenght, WeaponType.melee));
                bodyslot.ChangeItem(new BodyEquipment(EquipmentStartingStrenght, 2, ArmorType.heavy));
                SetStats(1, 4, 4, 1, 1, 1, 1);
                break;

            case PlayerType.Archer:
                weaponslot.ChangeItem(new WeaponEquipment(EquipmentStartingStrenght, WeaponType.bow));
                bodyslot.ChangeItem(new BodyEquipment(EquipmentStartingStrenght, 2, ArmorType.normal));
                SetStats(1, 1, 1, 4, 1, 1, 4);
                break;

            case PlayerType.Mage:
                weaponslot.ChangeItem(new WeaponEquipment(EquipmentStartingStrenght, WeaponType.staff));
                bodyslot.ChangeItem(new BodyEquipment(EquipmentStartingStrenght, 2, ArmorType.robes));
                SetStats(1, 1, 1, 1, 4, 4, 1);
                ItemSlot slot_1_0 = Inventory[1, 0] as ItemSlot;
                slot_1_0.ChangeItem(new Potion("Sprites/Potions/brilliant_blue", PotionType.Mana, PotionPower.minor, 5));    //some starting mana potions
                break;

            default:
                throw new Exception("invalid enemy type");
            }
        }
        /// <summary>
        /// Set up the enemy
        /// </summary>
        /// <param name="etype">The Enemy type</param>
        /// <param name="floorNumber">The floor the enemy is on</param>
        private EnemyType SetupType(EnemyType etype, int floorNumber)
        {
            if (etype == EnemyType.random)
            {
                //select random armorType
                Array eTypeValues = Enum.GetValues(typeof(EnemyType));
                etype = (EnemyType)eTypeValues.GetValue(GameEnvironment.Random.Next(eTypeValues.Length - 1));
            }

            id += " : " + etype.ToString();
            int eLvl         = GameEnvironment.Random.Next(1, floorNumber);
            int weaponChance = 15 * floorNumber; // higher chance the deeper you go
            int armorChance  = 15 * floorNumber; //

            switch (etype)
            {
            case EnemyType.warrior:
                if (weaponChance < GameEnvironment.Random.Next(100))
                {
                    RestrictedItemSlot weaponslot = EquipmentSlots.Find("weaponSlot") as RestrictedItemSlot;
                    weaponslot.ChangeItem(new WeaponEquipment(floorNumber, WeaponType.melee));
                }
                if (armorChance < GameEnvironment.Random.Next(100))
                {
                    RestrictedItemSlot bodyslot = EquipmentSlots.Find("bodySlot") as RestrictedItemSlot;
                    // bodyslot.ChangeItem(new BodyEquipment(floorNumber, 2, ArmorType.normal));
                }
                SetStats(eLvl, 3 + (eLvl), 3 + (eLvl), 2 + (eLvl / 2), 1 + (eLvl / 2), 1 + (eLvl / 2), 2 + (eLvl / 2), 20 + eLvl * 3, 2, 1);
                break;

            case EnemyType.archer:
                if (weaponChance < GameEnvironment.Random.Next(100))
                {
                    RestrictedItemSlot weaponslot = EquipmentSlots.Find("weaponSlot") as RestrictedItemSlot;
                    weaponslot.ChangeItem(new WeaponEquipment(floorNumber, WeaponType.bow));
                }
                if (armorChance < GameEnvironment.Random.Next(100))
                {
                    RestrictedItemSlot bodyslot = EquipmentSlots.Find("bodySlot") as RestrictedItemSlot;
                    //bodyslot.ChangeItem(new BodyEquipment(floorNumber, 2, ArmorType.normal));
                }
                SetStats(eLvl, 2 + (eLvl / 2), 1 + (eLvl / 2), 3 + (eLvl), 1 + (eLvl / 2), 1 + (eLvl / 2), 3 + (eLvl), 20 + eLvl * 3, 2, 1);
                break;

            case EnemyType.mage:
                if (weaponChance < GameEnvironment.Random.Next(100))
                {
                    RestrictedItemSlot weaponslot = EquipmentSlots.Find("weaponSlot") as RestrictedItemSlot;
                    weaponslot.ChangeItem(new WeaponEquipment(floorNumber, WeaponType.staff));
                }
                if (armorChance < GameEnvironment.Random.Next(100))
                {
                    RestrictedItemSlot bodyslot = EquipmentSlots.Find("bodySlot") as RestrictedItemSlot;
                    //bodyslot.ChangeItem(new BodyEquipment(floorNumber, 2, ArmorType.robes));
                }
                SetStats(eLvl, 1 + (eLvl / 2), 1 + (eLvl / 2), 1 + (eLvl / 2), 3 + (eLvl), 3 + (eLvl), 1 + (eLvl / 2), 20 + eLvl * 3, 2, 2);
                break;

            default:
                throw new Exception("invalid enemy type");
            }
            return(etype);
        }