def _set_initial_camera_focus(self): client = self._client if camera.deserialize(client=client): return if client.active_sim is not None: camera.focus_on_sim(follow=True, client=client) else: camera.set_to_default()
def on_loading_screen_animation_finished(self): super().on_loading_screen_animation_finished() active_sim = services.get_active_sim() if active_sim is None: return if active_sim.is_on_active_lot(): return camera.focus_on_sim(services.get_active_sim())
def _do_behavior(self): subject = self.interaction.get_participant(self.participant) if subject is None: return if self.participant == ParticipantType.Lot: focus_on_lot(lerp_time=self.time_to_position) return if subject.is_sim: focus_on_sim(sim=subject, follow=self.follow, client=subject.client) if subject.has_component(CAMERA_VIEW_COMPONENT): focus_on_object_from_position( obj_position=subject.position, camera_position=subject.get_camera_position())
def start_baby_neglect(baby): baby._started_neglect_moment = True sim_info = baby.sim_info dialog = Baby.NEGLECT_NOTIFICATION(sim_info, SingleSimResolver(sim_info)) dialog.show_dialog() neglect_effect = vfx.PlayEffect(sim_info, 's40_Sims_neglected', sims4.hash_util.hash32('_FX_')) neglect_effect.start() camera.focus_on_sim(sim_info, follow=False) sim_info_manager = services.sim_info_manager() with genealogy_caching(): for member_id in sim_info.genealogy.get_immediate_family_sim_ids_gen(): member_info = sim_info_manager.get(member_id) member_info.add_buff_from_op(Baby.NEGLECT_BUFF_IMMEDIATE_FAMILY.buff_type, Baby.NEGLECT_BUFF_IMMEDIATE_FAMILY.buff_reason) empty_bassinet = _replace_bassinet(sim_info) empty_bassinet.set_state(Baby.NEGLECT_EMPTY_BASSINET_STATE.state, Baby.NEGLECT_EMPTY_BASSINET_STATE) services.client_manager().get_first_client().selectable_sims.remove_selectable_sim_info(sim_info) services.get_persistence_service().del_sim_proto_buff(sim_info.id) sim_info_manager.remove_permanently(sim_info)
def start_baby_neglect(baby): baby._started_neglect_moment = True sim_info = baby.sim_info dialog = Baby.NEGLECT_NOTIFICATION(sim_info, SingleSimResolver(sim_info)) dialog.show_dialog() neglect_effect = vfx.PlayEffect(sim_info, 's40_Sims_neglected', sims4.hash_util.hash32('_FX_')) neglect_effect.start() camera.focus_on_sim(sim_info, follow=False) sim_info_manager = services.sim_info_manager() with genealogy_caching(): for member_id in sim_info.genealogy.get_immediate_family_sim_ids_gen(): member_info = sim_info_manager.get(member_id) member_info.add_buff_from_op( Baby.NEGLECT_BUFF_IMMEDIATE_FAMILY.buff_type, Baby.NEGLECT_BUFF_IMMEDIATE_FAMILY.buff_reason) empty_bassinet = _replace_bassinet(sim_info) empty_bassinet.set_state(Baby.NEGLECT_EMPTY_BASSINET_STATE.state, Baby.NEGLECT_EMPTY_BASSINET_STATE) services.client_manager().get_first_client( ).selectable_sims.remove_selectable_sim_info(sim_info) services.get_persistence_service().del_sim_proto_buff(sim_info.id) sim_info_manager.remove_permanently(sim_info)
def execute_removal_moment(self, baby): baby.is_being_removed = True sim_info = baby.sim_info if self.notification is not None: dialog = self.notification(sim_info, SingleSimResolver(sim_info)) dialog.show_dialog() if self.vfx is not None: vfx = self.vfx(baby) vfx.start() camera.focus_on_sim(baby, follow=False) sim_info_manager = services.sim_info_manager() if self.buff is not None: with genealogy_caching(): for member_id in sim_info.genealogy.get_immediate_family_sim_ids_gen( ): member_info = sim_info_manager.get(member_id) if member_info.lod != SimInfoLODLevel.MINIMUM: member_info.add_buff_from_op(self.buff.buff_type, self.buff.buff_reason) baby.cancel_interactions_running_on_object( FinishingType.TARGET_DELETED, cancel_reason_msg='Baby is being removed.') empty_bassinet = replace_bassinet(sim_info, safe_destroy=True) if self.empty_state is not None: empty_bassinet.set_state(self.empty_state.state, self.empty_state) client = sim_info.client if client is not None: client.set_next_sim_or_none(only_if_this_active_sim_info=sim_info) client.selectable_sims.remove_selectable_sim_info(sim_info) sim_info.inject_into_inactive_zone(DeathTracker.DEATH_ZONE_ID, start_away_actions=False, skip_instanced_check=True, skip_daycare=True) sim_info.household.remove_sim_info(sim_info, destroy_if_empty_household=True) sim_info.transfer_to_hidden_household() sim_info.request_lod(SimInfoLODLevel.MINIMUM)
def move_to_sim(sim_identifier, follow=True): sim = TurboManagerUtil.Sim.get_sim_instance(sim_identifier) camera.focus_on_sim( sim=sim, follow=follow, client=services.client_manager().get_first_client())
def _do_behavior(self): subject = self.interaction.get_participant(self.participant) if subject is not None: focus_on_sim(sim=subject, follow=self.follow, client=subject.client)