Exemple #1
0
    def test_bag_has_item_type(self) -> None:
        healing_item = get_random_item(tier='common', item_type='healing')
        equipment_item = get_random_item(tier='legendary',
                                         item_type='equipment')
        recovery_item = get_random_item(tier='common', item_type='recovery')

        self.bag.add_item(healing_item)
        self.bag.add_item(equipment_item)
        self.bag.add_item(recovery_item)

        self.assertTrue(self.bag.has_item_type(is_usable=True))
        self.assertTrue(self.bag.has_item_type(is_equipment=True))
Exemple #2
0
 def test_bag_weight_measurement(self) -> None:
     item = get_random_item(tier='common', item_type='healing')
     before_new_item_weight = self.bag.weight
     self.bag.add_item(item)
     after_item_add_weight = self.bag.weight
     self.assertEqual(self.bag.weight, before_new_item_weight + item.weight)
     self.bag.remove_item(item)
     self.assertEqual(self.bag.weight, after_item_add_weight - item.weight)
Exemple #3
0
    def distribute_random_items(self) -> None:
        """
        Function to coordinate distribution of random items in the map

        The items will be placed in the half of the quantity of the walkable nodes in the map, and with the
        probabilities for each tier of item configured in the conf file, the quantity for each tier will be determined,
        and finally a random items will be picked for the respective quantities of each tier, and placed in some random
        places.

        :rtype: None
        """
        walkable_nodes = self.graph.get_walkable_nodes()

        number_of_walkable_nodes = len(walkable_nodes)
        number_of_items = floor(number_of_walkable_nodes / 2)
        probabilities = get_configuration('item_probabilities')
        common_items_number = round(number_of_items *
                                    probabilities.get('common', 0.6))
        uncommon_items_number = round(number_of_items *
                                      probabilities.get('uncommon', 0.2))
        rare_items_number = round(number_of_items *
                                  probabilities.get('rare', 0.15))
        legendary_items_number = round(number_of_items *
                                       probabilities.get('legendary', 0.05))
        item_type_distribution = {
            'common':
            ['healing'] * 45 + ['equipment'] * 30 + ['recovery'] * 25,
            'uncommon': ['healing'] * 50 + ['equipment'] * 50,
            'rare': ['healing'] * 20 + ['equipment'] * 80,
            'legendary': ['equipment'] * 80
        }

        for i in range(common_items_number + uncommon_items_number +
                       rare_items_number + legendary_items_number):
            key = random.choice(list(walkable_nodes.keys()))
            walkable_nodes.pop(key)
            tier = ''
            if common_items_number > 0:
                tier = 'common'
                common_items_number = common_items_number - 1
            elif uncommon_items_number > 0:
                tier = 'uncommon'
                uncommon_items_number = uncommon_items_number - 1
            elif rare_items_number > 0:
                tier = 'rare'
                rare_items_number = rare_items_number - 1
            elif legendary_items_number > 0:
                tier = 'legendary'
                legendary_items_number = legendary_items_number - 1

            item_type = random.choice(item_type_distribution.get(tier))
            item = get_random_item(tier, item_type)
            self.add_item_to_map(key, item)
Exemple #4
0
 def wrapper(func):
     item = get_random_item(tier, 'recovery')
     setattr(func, 'mock_recovery_item', item)
     return func
Exemple #5
0
 def test_bag_get_usable_items(self) -> None:
     item = get_random_item(tier='common', item_type='healing')
     self.bag.add_item(item)
     self.assertGreater(len(self.bag.get_usable_items()), 0)
Exemple #6
0
 def test_bag_get_equipments(self) -> None:
     equipment_item = get_random_item(tier='legendary',
                                      item_type='equipment')
     self.bag.add_item(equipment_item)
     self.assertGreater(len(self.bag.get_equipments()), 0)
Exemple #7
0
 def test_get_random_recoverable(self) -> None:
     item = get_random_item(tier='common', item_type='recovery')
     self.assertIsInstance(item, IRecoveryItem)
Exemple #8
0
 def test_get_random_equipment(self) -> None:
     item = get_random_item(tier='legendary', item_type='equipment')
     self.assertIsInstance(item, IEquipmentItem)
Exemple #9
0
 def test_get_random_healing(self) -> None:
     item = get_random_item(tier='rare', item_type='healing')
     self.assertIsInstance(item, IHealingItem)
Exemple #10
0
 def test_get_random_item(self) -> None:
     item = get_random_item(tier='common', item_type='healing')
     self.assertIsInstance(item, IItem)
Exemple #11
0
 def wrapper(func):
     item = get_random_item(tier, 'healing')
     setattr(func, 'mock_healing_item', item)
     return func
Exemple #12
0
 def wrapper(func):
     item = get_random_item(tier, 'equipment')
     setattr(func, 'mock_equipment_item', item)
     return func