Exemplo n.º 1
0
    def test_two_different_masters_can_any_specialization_on_10_city_size(self):

        place_size = 10
        person_power = 0.3

        for specialization in CITY_MODIFIERS.records:

            if specialization.is_NONE:
                continue

            best = 0

            for profession_1 in relations.PERSON_TYPE.records:
                for profession_2 in relations.PERSON_TYPE.records:
                    if profession_1 == profession_2:
                        continue

                    points_1 = f.place_specialization_from_person(person_points=economic.PROFESSION_TO_SPECIALIZATIONS[profession_1][specialization],
                                                                  politic_power_fraction=person_power,
                                                                  place_size_multiplier=f.place_specialization_modifier(place_size))

                    points_2 = f.place_specialization_from_person(person_points=economic.PROFESSION_TO_SPECIALIZATIONS[profession_2][specialization],
                                                                  politic_power_fraction=person_power,
                                                                  place_size_multiplier=f.place_specialization_modifier(place_size))

                    if best < points_1 + points_2:
                        best = points_1 + points_2

            self.assertTrue(c.PLACE_TYPE_NECESSARY_BORDER < best)
Exemplo n.º 2
0
    def test_three_different_masters_can_any_specialization_on_7_city_size(
            self):

        place_size = 7
        person_power = 0.3

        for specialization in CITY_MODIFIERS.records:

            if specialization.is_NONE:
                continue

            best = 0

            for profession_1 in relations.PERSON_TYPE.records:
                for profession_2 in relations.PERSON_TYPE.records:
                    for profession_3 in relations.PERSON_TYPE.records:
                        if (profession_1 == profession_2
                                or profession_1 == profession_3
                                or profession_2 == profession_3):
                            continue

                        points_1 = f.place_specialization_from_person(
                            person_points=economic.
                            PROFESSION_TO_SPECIALIZATIONS[profession_1]
                            [specialization],
                            politic_power_fraction=person_power,
                            place_size_multiplier=f.
                            place_specialization_modifier(place_size))

                        points_2 = f.place_specialization_from_person(
                            person_points=economic.
                            PROFESSION_TO_SPECIALIZATIONS[profession_2]
                            [specialization],
                            politic_power_fraction=person_power,
                            place_size_multiplier=f.
                            place_specialization_modifier(place_size))

                        points_3 = f.place_specialization_from_person(
                            person_points=economic.
                            PROFESSION_TO_SPECIALIZATIONS[profession_3]
                            [specialization],
                            politic_power_fraction=person_power,
                            place_size_multiplier=f.
                            place_specialization_modifier(place_size))

                        if best < points_1 + points_2 + points_3:
                            best = points_1 + points_2 + points_3

            self.assertTrue(c.PLACE_TYPE_NECESSARY_BORDER < best)
Exemplo n.º 3
0
    def place_effects(self):
        for attribute, modifier in self.get_economic_modifiers():
            yield effects.Effect(name=self.name, attribute=attribute, value=modifier)

        for specialization, points in self.specialization_attributes.items():
            if specialization.points_attribute is None:
                continue

            yield effects.Effect(name=self.name,
                                 attribute=specialization.points_attribute,
                                 value = f.place_specialization_from_person(person_points=points,
                                                                            politic_power_fraction=self.total_politic_power_fraction,
                                                                            place_size_multiplier=self.place.attrs.modifier_multiplier))

        if self.attrs.terrain_radius_bonus != 0:
            yield effects.Effect(name=self.name, attribute=places_relations.ATTRIBUTE.TERRAIN_RADIUS, value=self.attrs.terrain_radius_bonus)

        if self.attrs.politic_radius_bonus != 0:
            yield effects.Effect(name=self.name, attribute=places_relations.ATTRIBUTE.POLITIC_RADIUS, value=self.attrs.politic_radius_bonus)

        if self.attrs.stability_renewing_bonus != 0:
            yield effects.Effect(name=self.name, attribute=places_relations.ATTRIBUTE.STABILITY_RENEWING_SPEED, value=self.attrs.stability_renewing_bonus)
Exemplo n.º 4
0
    def place_effects(self):
        for attribute, modifier in self.get_economic_modifiers():
            yield effects.Effect(name=self.name,
                                 attribute=attribute,
                                 value=modifier)

        for specialization, points in self.specialization_attributes.items():
            if specialization.points_attribute is None:
                continue

            yield effects.Effect(
                name=self.name,
                attribute=specialization.points_attribute,
                value=f.place_specialization_from_person(
                    person_points=points,
                    politic_power_fraction=self.total_politic_power_fraction,
                    place_size_multiplier=self.place.attrs.modifier_multiplier)
            )

        if self.attrs.terrain_radius_bonus != 0:
            yield effects.Effect(
                name=self.name,
                attribute=places_relations.ATTRIBUTE.TERRAIN_RADIUS,
                value=self.attrs.terrain_radius_bonus)

        if self.attrs.politic_radius_bonus != 0:
            yield effects.Effect(
                name=self.name,
                attribute=places_relations.ATTRIBUTE.POLITIC_RADIUS,
                value=self.attrs.politic_radius_bonus)

        if self.attrs.stability_renewing_bonus != 0:
            yield effects.Effect(
                name=self.name,
                attribute=places_relations.ATTRIBUTE.STABILITY_RENEWING_SPEED,
                value=self.attrs.stability_renewing_bonus)
Exemplo n.º 5
0
 def modify_specialization_points(self, points):
     return f.place_specialization_from_person(
         person_points=points,
         politic_power_fraction=self.total_politic_power_fraction,
         place_size_multiplier=self.place.attrs.modifier_multiplier)