Ejemplo n.º 1
0
 def get_test_result(self, sim, cls):
     unavailable_items = Counter()
     unavailable_item_description = {}
     for item in self.ingredients:
         item_count = sim.inventory_component.get_item_quantity_by_definition(
             item.ingredient)
         if item_count < item.quantity:
             unavailable_items[
                 item.ingredient] += item.quantity - item_count
             unavailable_item_description[
                 item.ingredient] = item.missing_ingredient_additional_text
     if unavailable_items:
         tooltip = LocalizationHelperTuning.get_bulleted_list(
             ItemCost.UNAVAILABLE_TOOLTIP_HEADER(sim),
             *tuple(
                 LocalizationHelperTuning.get_object_count(
                     count,
                     ingredientDef,
                     detail_text=unavailable_item_description[ingredientDef]
                 ) for (ingredientDef, count) in unavailable_items.items()))
         return event_testing.results.TestResult(
             False,
             "Sim doesn't have the required items in inventory.",
             tooltip=lambda *_, **__: tooltip)
     return TestResult.TRUE
 def _apply_to_subject_and_target(self, subject, target, resolver):
     if subject.is_npc:
         return
     obj_counter = Counter()
     if self._object_rewards.spawn_type == ObjectRewardsTuning.SPAWNER_REWARD:
         participant = resolver.get_participant(
             self._object_rewards.spawner_participant)
         if participant is not None:
             weighted_data = participant.interaction_spawner_data()
             if weighted_data is not None:
                 self._create_object_rewards(weighted_data, obj_counter,
                                             resolver)
     elif self._object_rewards.spawn_type == ObjectRewardsTuning.TUNABLE_REWARD:
         for _ in range(self._object_rewards.quantity):
             weight_pairs = [(data.weight, data.reward)
                             for data in self._object_rewards.reward_objects
                             ]
             self._create_object_rewards(weight_pairs, obj_counter,
                                         resolver)
     if obj_counter and self._notification is not None:
         obj_names = [
             LocalizationHelperTuning.get_object_count(count, obj)
             for (obj, count) in obj_counter.items()
         ]
         dialog = self._notification(subject, resolver=resolver)
         dialog.show_dialog(
             additional_tokens=(LocalizationHelperTuning.get_bulleted_list(
                 None, *obj_names), ))
     return True
Ejemplo n.º 3
0
	def _apply_to_subject_and_target (self, subject, target, resolver, placement_override_func = None, post_object_create_func = None):
		if subject.is_npc:
			return
		obj_counter = Counter()
		quantity = self._object_rewards.quantity
		quantity += self._object_rewards.tested_bonus_quantity.get_modified_value(resolver)
		for _ in range(int(quantity)):
			weight_pairs = [(data.weight, (data.reward, data.states_on_reward_object, data.quantity)) for data in self._object_rewards.reward_objects]
			self._create_object_rewards(weight_pairs, obj_counter, resolver, subject = subject, placement_override_func = placement_override_func, post_object_create_func = post_object_create_func)
		if obj_counter and self._notification is not None:
			obj_names = [LocalizationHelperTuning.get_object_count(count, obj) for (obj, count) in obj_counter.items()]
			dialog = self._notification(subject, resolver = resolver)
			dialog.show_dialog(additional_tokens = (LocalizationHelperTuning.get_bulleted_list(None, *obj_names),))
		return True
Ejemplo n.º 4
0
 def get_interaction_tooltip(self, tooltip=None, sim=None):
     if self.ingredients:
         item_tooltip = LocalizationHelperTuning.get_bulleted_list(
             ItemCost.AVAILABLE_TOOLTIP_HEADER(sim),
             *tuple(
                 LocalizationHelperTuning.get_object_count(
                     ingredient.quantity,
                     ingredient.ingredient,
                     detail_text=ingredient.
                     missing_ingredient_additional_text)
                 for ingredient in self.ingredients))
         if tooltip is None:
             return item_tooltip
         else:
             return LocalizationHelperTuning.get_new_line_separated_strings(
                 tooltip, item_tooltip)
     return tooltip