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)
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)
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)
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)
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)