Ejemplo n.º 1
0
    def test(cls, inst, *args, target=DEFAULT, context=None, **kwargs) -> TestResult:  # pylint: disable=no-self-argument
        try:
            inst_or_cls = inst if inst is not None else cls
            selection_group = SelectionGroupService.get(services.active_household_id())

            Logger.log("testing SimHouseholdNpcOffInteraction, context: {} {}"
                       .format(args, kwargs))

            if target:
                info_target = target.sim_info

            if context.target_sim_id is not None:
                target_id = context.target_sim_id
                info_target = services.sim_info_manager().get(target_id)

            Logger.log('info_target: {}'.format(info_target))

            if not selection_group.is_household_npc(info_target):
                return TestResult(False, "sim is not a household npc", inst)

            if info_target.household_id != services.active_household_id():
                return TestResult(False, "sim is not a member of the active household", inst)

            return (super(SimHouseholdNpcOffInteraction, inst_or_cls)
                    .test(*args, target=target, context=context, **kwargs))
        except BaseException:
            Logger.log(traceback.format_exc())
Ejemplo n.º 2
0
def canys_sim_info_is_enabled_in_skewer(original, self):
    try:
        selection_group = SelectionGroupService.get(
            services.active_household_id(), True)

        if selection_group and selection_group.is_household_npc(self):
            return False

        return original(self)
    except BaseException:
        Logger.log(traceback.format_exc())
        return True
Ejemplo n.º 3
0
def tn_sim_info_is_npc(_original, self):
    if services.active_sim_info() == self:
        return False

    if services.active_household_id() == self.household_id:
        selection_group = SelectionGroupService.get(
            services.active_household_id(), True)

        if not selection_group:
            return False

        return selection_group.is_household_npc(self)

    return True
Ejemplo n.º 4
0
def tn_zone_director_residential_base_is_any_sim_always_greeted(
        original, self):
    active_lot_household = services.current_zone(
    ).get_active_lot_owner_household()
    selection_group = SelectionGroupService.get(services.active_household_id())

    if active_lot_household is None:
        return original(self)

    for sim_info in active_lot_household.sim_infos:
        if sim_info.id not in selection_group.selectable_sims:
            continue

        return True

    return original(self)
Ejemplo n.º 5
0
    def _run_interaction_gen(self, timeline):
        try:
            Logger.log("running household npc off interaction...")

            super()._run_interaction_gen(timeline)

            sim_info = self.target.sim_info

            if self.context.target_sim_id is not None:
                sim_info = (services.sim_info_manager()
                            .get(self.context.target_sim_id))

            Logger.log("got sim info {} {}"
                       .format(sim_info.first_name, sim_info.last_name))

            selection_group = SelectionGroupService.get(services.active_household_id())
            selection_group.remove_household_npc(sim_info)

            Logger.log("sim is now a normal household member!")

            return True

        except BaseException:
            Logger.log(traceback.format_exc())
Ejemplo n.º 6
0
def tn_init_services(_zone, household_id, _active_sim_id):
    try:
        SelectionGroupService.get(household_id)
    except BaseException:
        Logger.log(traceback.format_exc())