def random_sex_sim_picker_callback(dialog): if pre_sex_handler is None: return False if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False picked_sim_id = TurboUIUtil.SimPickerDialog.get_tag_result(dialog) if not picked_sim_id: clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False picked_sim = TurboManagerUtil.Sim.get_sim_info(int(picked_sim_id)) if picked_sim is None: clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False pre_sex_handler.add_sim(picked_sim) random_animation = get_random_animation( pre_sex_handler.get_object_identifier(), tuple(pre_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=2459296019, title=1890248379) return False pre_sex_handler.set_animation_instance(random_animation) start_sex_interaction_from_pre_sex_handler(pre_sex_handler) return True
def _join_to_sex_single_interaction(sex_category_type, interaction_sim, interaction_target): ''' :param interaction_sim: Sim that is joining to an existing sex interaction :param interaction_target: Sim that owns an existing interaction ''' active_sex_handler = sim_ev(interaction_target).active_sex_handler if active_sex_handler is None: return False pre_sex_handler = active_sex_handler.get_pre_sex_handler(is_joining=True) pre_sex_handler.add_sim(interaction_sim) if sex_category_type is not None: sex_allowed = is_sim_allowed_for_animation(tuple(pre_sex_handler.get_actors_sim_info_gen()), sex_category_type, is_joining=True) if not sex_allowed: display_not_allowed_message(sex_allowed) return False if sex_category_type is not None: open_join_sex_animations_picker_dialog(pre_sex_handler, (interaction_sim,), sex_category_type, flip_relationship_check=True) else: random_animation = get_random_animation(pre_sex_handler.get_object_identifier(), tuple(pre_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=1395546180, title=1890248379) return False pre_sex_handler.set_animation_instance(random_animation) join_sex_interaction_from_pre_sex_handler(pre_sex_handler, (interaction_sim,), flip_relationship_check=True) return True
def open_start_sex_animations_picker_dialog(pre_sex_handler): @exception_watch() def animations_picker_callback(dialog): if pre_sex_handler is None: return False if not TurboUIUtil.ObjectPickerDialog.get_response_result(dialog): open_start_sex_animations_category_picker_dialog(pre_sex_handler) return False animation_instance = TurboUIUtil.ObjectPickerDialog.get_tag_result( dialog) pre_sex_handler.set_animation_instance(animation_instance) start_sex_interaction_from_pre_sex_handler(pre_sex_handler) return True genders_list = list() for sim_info in pre_sex_handler.get_actors_sim_info_gen(): genders_list.append(get_sim_sex_gender(sim_info)) animations_list = get_animations_with_params( pre_sex_handler.get_interaction_type(), pre_sex_handler.get_object_identifier(), genders_list) animations_rows = list() for animation in animations_list: animations_rows.append(animation.get_picker_row()) if len(animations_rows) > 1: animations_rows.insert( 0, ChoiceListRandomAnimationPickerRow( pre_sex_handler, pre_sex_handler.get_interaction_type())) if len(get_available_sex_animations()) <= 4: display_ok_dialog(text=1066517691, title=3113927949) display_picker_list_dialog(title=get_sex_category_animations_stbl_name( pre_sex_handler.get_interaction_type()), picker_rows=animations_rows, callback=animations_picker_callback)
def on_interaction_start(cls, interaction_instance): active_sex_handler = sim_ev(cls.get_interaction_sim(interaction_instance)).active_sex_handler random_animation = get_random_animation(active_sex_handler.get_object_identifier(), tuple(active_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=1395546180, title=1890248379) return False active_sex_handler.set_animation_instance(random_animation, is_animation_change=True, is_manual=True) active_sex_handler.play(is_animation_change=True) return True
def change_player_sex_interaction_location(active_sex_handler, location_object, interaction_context=None, interaction_type=None): object_identifier = SexInteractionLocationType.get_location_identifier( location_object) if TurboTypesUtil.Objects.is_game_object(location_object): location_object = TurboObjectUtil.GameObject.get_parent( location_object) game_object_id = TurboResourceUtil.Resource.get_id(location_object) location_position = get_object_fixed_position(location_object) location_level = TurboMathUtil.Location.get_location_level( TurboObjectUtil.Position.get_location(location_object)) location_angle = TurboMathUtil.Orientation.convert_orientation_to_angle( TurboMathUtil.Location.get_location_orientation( TurboObjectUtil.Position.get_location(location_object))) location_route_position = TurboObjectUtil.Position.get_position( location_object) + get_object_fixed_direction(location_object) elif interaction_context is not None: game_object_id = -1 location_position = get_floor_object_position(location_object, interaction_context) location_level = get_floor_object_level(location_object, interaction_context) location_angle = random.randint(0, 360) location_route_position = location_position else: return if interaction_type is not None: open_change_sex_location_animations_picker_dialog( active_sex_handler, interaction_type, object_identifier, game_object_id, 0, location_position.x, location_position.y, location_position.z, location_level, location_angle, location_route_position.x, location_route_position.y, location_route_position.z, location_level) else: random_animation = get_random_animation( object_identifier, tuple(active_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=2459296019, title=1890248379) return active_sex_handler.set_animation_instance(random_animation, is_manual=True) active_sex_handler.set_object_identifier(object_identifier) active_sex_handler.set_game_object_id(game_object_id) active_sex_handler.set_object_height(0) active_sex_handler.set_location(location_position.x, location_position.y, location_position.z, location_level, location_angle) active_sex_handler.set_route_position(location_route_position.x, location_route_position.y, location_route_position.z, location_level) active_sex_handler.reassign_actors() active_sex_handler.restart()
def _import_settings_menu(): def _import_done_dialog_callback(_): _open_settings_import_export_menu() def _import_settings_callback(dialog): if not TurboUIUtil.ObjectPickerDialog.get_response_result(dialog): _open_settings_import_export_menu() return False result_save_name = TurboUIUtil.ObjectPickerDialog.get_tag_result( dialog) save_file_path = _get_settings_import_export_dir() load_basic_save_data( load_file_path_override=''.join((save_file_path, result_save_name, '_general.json'))) load_disabled_animations_save_data( load_file_path_override=''.join((save_file_path, result_save_name, '_disabled_animations.json'))) apply_nudity_settings_from_basic_save_data() apply_relationship_settings_from_basic_save_data() apply_sex_settings_from_basic_save_data() apply_disabled_sex_animations_from_dict( get_disabled_animations_save_data()) recollect_sex_animation_packages() display_ok_dialog(text=3165307094, text_tokens=(result_save_name, ), title=3126397785, callback=_import_done_dialog_callback) return True save_export_dict = _get_settings_export_dict() if not save_export_dict: display_ok_dialog(text=4228795842, title=3126397785, callback=_import_done_dialog_callback) return picker_rows = list() i = 0 for (save_name, save_data) in save_export_dict.items(): save_time = save_data[1] save_date_time = datetime.datetime.fromtimestamp(save_time).strftime( '%Y-%m-%d %H:%M') picker_rows.append( TurboUIUtil.ObjectPickerDialog.ListPickerRow( i, save_name, TurboL18NUtil.get_localized_string(2878507029, tokens=(save_date_time, )), skip_tooltip=True, icon=get_action_icon(), tag=save_name)) i += 1 display_picker_list_dialog(title=3126397785, picker_rows=picker_rows, sim=get_menu_sim(), callback=_import_settings_callback)
def open_swap_sex_sims_picker_dialog(active_sex_handler, swap_sim): @exception_watch() def swap_sim_picker_callback(dialog): if active_sex_handler is None: return False if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): return False selected_sim_id = TurboUIUtil.SimPickerDialog.get_tag_result(dialog) if not selected_sim_id: return False selected_sim_info = TurboManagerUtil.Sim.get_sim_info( int(selected_sim_id)) if selected_sim_info is None: return False sim_id = TurboManagerUtil.Sim.get_sim_id(swap_sim) if sim_id == selected_sim_id: return False sim_actor_id = active_sex_handler.get_actor_id_by_sim_id(sim_id) target_actor_id = active_sex_handler.get_actor_id_by_sim_id( selected_sim_id) if sim_actor_id == -1 or target_actor_id == -1: return False active_sex_handler.swap_actors(sim_actor_id, target_actor_id) return True sims_list = list() swap_actor_id = active_sex_handler.get_actor_id_by_sim_id( TurboManagerUtil.Sim.get_sim_id(swap_sim)) swap_actor_data = active_sex_handler.get_animation_instance().get_actor( swap_actor_id) if swap_actor_data is None: return for (actor_id, actor_sim) in active_sex_handler.get_sims_list(): if actor_id == swap_actor_id: pass actor_data = active_sex_handler.get_animation_instance().get_actor( actor_id) if actor_data is None: return while is_compatible_actor(actor_sim, actor_data, swap_sim, swap_actor_data): sims_list.append(TurboManagerUtil.Sim.get_sim_id(actor_sim)) if not sims_list: display_ok_dialog(text=4051936639, title=465151699, title_tokens=(swap_sim, )) return display_sim_picker_dialog(text=4149247255, text_tokens=(swap_sim, ), title=465151699, title_tokens=(swap_sim, ), sims_id_list=sims_list, sim=swap_sim, callback=swap_sim_picker_callback)
def join_sims_picker_callback(dialog): if pre_sex_handler is None: return False if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): return False picked_sims_ids = TurboUIUtil.SimPickerDialog.get_tag_results(dialog) if not picked_sims_ids: return False picked_sims = list() for sim_id in picked_sims_ids: sim_info = TurboManagerUtil.Sim.get_sim_info(int(sim_id)) if sim_info is None: return False picked_sims.append(sim_info) for sim_info in picked_sims: pre_sex_handler.add_sim(sim_info) genders_list = list() for sim_info in pre_sex_handler.get_actors_sim_info_gen(): genders_list.append(get_sim_sex_gender(sim_info)) if sex_category_type is not None: sex_allowed = is_sim_allowed_for_animation(tuple(picked_sims), sex_category_type, is_joining=True) if not sex_allowed: display_not_allowed_message(sex_allowed) return False has_animations = False if has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), genders_list): has_animations = True if has_animations is False: display_ok_dialog(text=2693069513, title=get_sex_category_animations_stbl_name( sex_category_type)) return False open_join_sex_animations_picker_dialog(pre_sex_handler, picked_sims, sex_category_type) else: random_animation = get_random_animation( pre_sex_handler.get_object_identifier(), tuple(pre_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=2693069513, title=1890248379) return False pre_sex_handler.set_animation_instance(random_animation) join_sex_interaction_from_pre_sex_handler(pre_sex_handler, picked_sims) return True
def _delete_settings_menu(): save_export_dict = _get_settings_export_dict() def _delete_done_dialog_callback(_): _open_settings_import_export_menu() def _delete_settings_callback(dialog): if not TurboUIUtil.ObjectPickerDialog.get_response_result(dialog): _open_settings_import_export_menu() return False (result_save_name, result_save_time ) = TurboUIUtil.ObjectPickerDialog.get_tag_result(dialog) for (_save_name, _save_data) in save_export_dict.items(): _save_time = _save_data[1] while _save_name == result_save_name and _save_time == result_save_time: save_export_dict.pop(_save_name) break _save_settings_export_dict(save_export_dict) display_ok_dialog(text=3421488172, text_tokens=(result_save_name, ), title=4268061051, callback=_delete_done_dialog_callback) return True if not save_export_dict: display_ok_dialog(text=294911225, title=4268061051, callback=_delete_done_dialog_callback) return picker_rows = list() i = 0 for (save_name, save_data) in save_export_dict.items(): save_time = save_data[1] save_date_time = datetime.datetime.fromtimestamp(save_time).strftime( '%Y-%m-%d %H:%M') picker_rows.append( TurboUIUtil.ObjectPickerDialog.ListPickerRow( i, save_name, TurboL18NUtil.get_localized_string(2878507029, tokens=(save_date_time, )), skip_tooltip=True, icon=get_action_icon(), tag=(save_name, save_time))) i += 1 display_picker_list_dialog(title=4268061051, picker_rows=picker_rows, sim=get_menu_sim(), callback=_delete_settings_callback)
def _delete_settings_callback(dialog): if not TurboUIUtil.ObjectPickerDialog.get_response_result(dialog): _open_settings_import_export_menu() return False (result_save_name, result_save_time ) = TurboUIUtil.ObjectPickerDialog.get_tag_result(dialog) for (_save_name, _save_data) in save_export_dict.items(): _save_time = _save_data[1] while _save_name == result_save_name and _save_time == result_save_time: save_export_dict.pop(_save_name) break _save_settings_export_dict(save_export_dict) display_ok_dialog(text=3421488172, text_tokens=(result_save_name, ), title=4268061051, callback=_delete_done_dialog_callback) return True
def random_sex_npc_sims_picker_callback(dialog): clear_menu_sim() if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): return False picked_sims_ids = TurboUIUtil.SimPickerDialog.get_tag_results(dialog) if not picked_sims_ids: return False picked_sims = list() for sim_id in picked_sims_ids: sim_info = TurboManagerUtil.Sim.get_sim_info(int(sim_id)) if sim_info is None: return False picked_sims.append(sim_info) random_animation = get_random_animation(location_identifier, picked_sims) if random_animation is None: display_ok_dialog(text=2693069513, title=1890248379) return False pre_sex_handler = PreSexInteractionHandler( random_animation.get_sex_category(), TurboManagerUtil.Sim.get_sim_id(next(iter(picked_sims))), location_identifier, game_object_id, object_height, lot_id, location_position.x, location_position.y, location_position.z, location_level, location_angle, location_route_position.x, location_route_position.y, location_route_position.z, route_level, is_manual=is_manual) pre_sex_handler.set_animation_instance(random_animation) for sim_info in picked_sims: pre_sex_handler.add_sim(sim_info) sim_ev(sim_info).active_pre_sex_handler = pre_sex_handler start_sex_interaction_from_pre_sex_handler(pre_sex_handler) return True
def _export_name_input_callback(dialog): if not TurboUIUtil.TextInputDialog.get_response_result(dialog): _open_settings_import_export_menu() return False result_save_name = str( TurboUIUtil.TextInputDialog.get_response_output(dialog)).replace( ' ', '_') save_file_path = _get_settings_import_export_dir() save_basic_save_data( save_file_path_override=''.join((save_file_path, result_save_name, '_general.json'))) save_disabled_animations_save_data( save_file_path_override=''.join((save_file_path, result_save_name, '_disabled_animations.json'))) save_export_dict[result_save_name] = ( 1, datetime.datetime.now().timestamp()) _save_settings_export_dict(save_export_dict) display_ok_dialog(text=3705925691, text_tokens=(result_save_name, ), title=128859011, callback=_export_done_dialog_callback) return True
def _import_settings_callback(dialog): if not TurboUIUtil.ObjectPickerDialog.get_response_result(dialog): _open_settings_import_export_menu() return False result_save_name = TurboUIUtil.ObjectPickerDialog.get_tag_result( dialog) save_file_path = _get_settings_import_export_dir() load_basic_save_data( load_file_path_override=''.join((save_file_path, result_save_name, '_general.json'))) load_disabled_animations_save_data( load_file_path_override=''.join((save_file_path, result_save_name, '_disabled_animations.json'))) apply_nudity_settings_from_basic_save_data() apply_relationship_settings_from_basic_save_data() apply_sex_settings_from_basic_save_data() apply_disabled_sex_animations_from_dict( get_disabled_animations_save_data()) recollect_sex_animation_packages() display_ok_dialog(text=3165307094, text_tokens=(result_save_name, ), title=3126397785, callback=_import_done_dialog_callback) return True
def open_start_random_sex_sims_picker_dialog(origin_position, pre_sex_handler): @exception_watch() def random_sex_sim_picker_callback(dialog): if pre_sex_handler is None: return False if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False picked_sim_id = TurboUIUtil.SimPickerDialog.get_tag_result(dialog) if not picked_sim_id: clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False picked_sim = TurboManagerUtil.Sim.get_sim_info(int(picked_sim_id)) if picked_sim is None: clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False pre_sex_handler.add_sim(picked_sim) random_animation = get_random_animation( pre_sex_handler.get_object_identifier(), tuple(pre_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=2459296019, title=1890248379) return False pre_sex_handler.set_animation_instance(random_animation) start_sex_interaction_from_pre_sex_handler(pre_sex_handler) return True creator_sim_info = TurboManagerUtil.Sim.get_sim_info( pre_sex_handler.get_creator_sim_id()) test_incest_of_sims = () if get_relationship_setting( RelationshipSetting.INCEST_STATE, variable_type=bool) else (creator_sim_info, ) (min_age_limit, max_age_limit) = get_age_limits_for_sex( (creator_sim_info, )) skip_males = True skip_females = True skip_cmales = True skip_cfemales = True for sex_category_type in (SexCategoryType.TEASING, SexCategoryType.HANDJOB, SexCategoryType.FOOTJOB, SexCategoryType.ORALJOB, SexCategoryType.VAGINAL, SexCategoryType.ANAL): skip_males = not has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.MALE)) if skip_males is False: break for sex_category_type in (SexCategoryType.TEASING, SexCategoryType.HANDJOB, SexCategoryType.FOOTJOB, SexCategoryType.ORALJOB, SexCategoryType.VAGINAL, SexCategoryType.ANAL): skip_females = not has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.FEMALE)) if skip_females is False: break for sex_category_type in (SexCategoryType.TEASING, SexCategoryType.HANDJOB, SexCategoryType.FOOTJOB, SexCategoryType.ORALJOB, SexCategoryType.VAGINAL, SexCategoryType.ANAL): skip_cmales = not has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.CMALE)) if skip_cmales is False: break for sex_category_type in (SexCategoryType.TEASING, SexCategoryType.HANDJOB, SexCategoryType.FOOTJOB, SexCategoryType.ORALJOB, SexCategoryType.VAGINAL, SexCategoryType.ANAL): skip_cfemales = not has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.CFEMALE)) if skip_cfemales is False: break sims_list = list( get_nearby_sims_for_sex( origin_position, radius=16, relative_sims=test_incest_of_sims, min_sims_age=min_age_limit, max_sims_age=max_age_limit, skip_males=skip_males, skip_females=skip_females, skip_cmales=skip_cmales, skip_cfemales=skip_cfemales, skip_sims_ids=(pre_sex_handler.get_creator_sim_id(), ))) for sex_category_type in (SexCategoryType.HANDJOB, SexCategoryType.ORALJOB, SexCategoryType.TEASING, SexCategoryType.VAGINAL, SexCategoryType.ANAL, SexCategoryType.FOOTJOB): if has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), )): sims_list.insert(0, pre_sex_handler.get_creator_sim_id()) break if not sims_list: display_ok_dialog(text=2459296019, title=1890248379) clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return if len(get_available_sex_animations()) <= 4: display_ok_dialog(text=1066517691, title=3113927949) display_sim_picker_dialog(text=906772330, title=1890248379, sims_id_list=sims_list, callback=random_sex_sim_picker_callback)
def _change_warning_message(): display_ok_dialog(text=926615894, title=3579577312)
def open_join_sims_picker_dialog(pre_sex_handler, sex_category_type, selected_sims_ids=()): @exception_watch() def join_sims_picker_callback(dialog): if pre_sex_handler is None: return False if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): return False picked_sims_ids = TurboUIUtil.SimPickerDialog.get_tag_results(dialog) if not picked_sims_ids: return False picked_sims = list() for sim_id in picked_sims_ids: sim_info = TurboManagerUtil.Sim.get_sim_info(int(sim_id)) if sim_info is None: return False picked_sims.append(sim_info) for sim_info in picked_sims: pre_sex_handler.add_sim(sim_info) genders_list = list() for sim_info in pre_sex_handler.get_actors_sim_info_gen(): genders_list.append(get_sim_sex_gender(sim_info)) if sex_category_type is not None: sex_allowed = is_sim_allowed_for_animation(tuple(picked_sims), sex_category_type, is_joining=True) if not sex_allowed: display_not_allowed_message(sex_allowed) return False has_animations = False if has_animations_with_params( sex_category_type, pre_sex_handler.get_object_identifier(), genders_list): has_animations = True if has_animations is False: display_ok_dialog(text=2693069513, title=get_sex_category_animations_stbl_name( sex_category_type)) return False open_join_sex_animations_picker_dialog(pre_sex_handler, picked_sims, sex_category_type) else: random_animation = get_random_animation( pre_sex_handler.get_object_identifier(), tuple(pre_sex_handler.get_actors_sim_info_gen())) if random_animation is None: display_ok_dialog(text=2693069513, title=1890248379) return False pre_sex_handler.set_animation_instance(random_animation) join_sex_interaction_from_pre_sex_handler(pre_sex_handler, picked_sims) return True if sex_category_type is not None: max_amount_of_actors = max( get_animation_max_amount_of_actors( sex_category_type, pre_sex_handler.get_object_identifier()[0]), get_animation_max_amount_of_actors( sex_category_type, pre_sex_handler.get_object_identifier()[1])) else: max_amount_of_actors = 48 if max_amount_of_actors <= 0: if sex_category_type is not None: display_ok_dialog( text=443330929, text_tokens=(get_sex_category_animations_stbl_name( sex_category_type), ), title=get_sex_category_animations_stbl_name(sex_category_type)) else: display_ok_dialog(text=3121278879, title=1890248379) return creator_sim = TurboManagerUtil.Sim.get_sim_info( pre_sex_handler.get_creator_sim_id()) test_incest_of_sims = () if get_relationship_setting( RelationshipSetting.INCEST_STATE, variable_type=bool) else tuple( pre_sex_handler.get_actors_sim_info_gen()) (min_age_limit, max_age_limit) = get_age_limits_for_sex( tuple(pre_sex_handler.get_actors_sim_info_gen())) skip_sims_ids = [ TurboManagerUtil.Sim.get_sim_id(actor_sim_info) for actor_sim_info in pre_sex_handler.get_actors_sim_info_gen() ] sims_list = tuple( get_nearby_sims_for_sex(pre_sex_handler.get_los_position(), radius=16, relative_sims=test_incest_of_sims, min_sims_age=min_age_limit, max_sims_age=max_age_limit, skip_sims_ids=skip_sims_ids)) if not sims_list: display_ok_dialog( text=2721401338, text_tokens=(get_sex_category_stbl_name(sex_category_type), creator_sim), title=get_sex_category_animations_stbl_name(sex_category_type)) return display_sim_picker_dialog( text=747723284, title=get_sex_category_animations_stbl_name(sex_category_type), sims_id_list=sims_list, selected_sims_id_list=selected_sims_ids, selectable_amount=max_amount_of_actors - pre_sex_handler.get_sims_amount(), sim=creator_sim, callback=join_sims_picker_callback)
def open_sex_npc_sims_picker_dialog(origin_position, sex_category_type, location_identifier, game_object_id, object_height, lot_id, location_position, location_level, location_angle, location_route_position, route_level, is_manual=False): @exception_watch() def npc_sims_picker_callback(dialog): clear_menu_sim() if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): return False picked_sims_ids = TurboUIUtil.SimPickerDialog.get_tag_results(dialog) if not picked_sims_ids: return False picked_sims = list() for sim_id in picked_sims_ids: sim_info = TurboManagerUtil.Sim.get_sim_info(int(sim_id)) if sim_info is None: return False picked_sims.append(sim_info) is_sim_sex_allowed = is_sim_allowed_for_animation( picked_sims, sex_category_type) if not is_sim_sex_allowed: display_not_allowed_message(is_sim_sex_allowed) return False pre_sex_handler = PreSexInteractionHandler( sex_category_type, TurboManagerUtil.Sim.get_sim_id(next(iter(picked_sims))), location_identifier, game_object_id, object_height, lot_id, location_position.x, location_position.y, location_position.z, location_level, location_angle, location_route_position.x, location_route_position.y, location_route_position.z, route_level, is_manual=is_manual) for sim_info in picked_sims: pre_sex_handler.add_sim(sim_info) sim_ev(sim_info).active_pre_sex_handler = pre_sex_handler open_start_npc_sex_animations_picker_dialog(pre_sex_handler) return True max_amount_of_actors = get_animation_max_amount_of_actors( sex_category_type, location_identifier[0]) or get_animation_max_amount_of_actors( sex_category_type, location_identifier[1]) if max_amount_of_actors <= 0: display_ok_dialog( text=2459296019, title=get_sex_category_animations_stbl_name(sex_category_type)) return sims_list = tuple( get_nearby_sims_for_sex(origin_position, radius=32, only_npc=True)) if not sims_list: display_ok_dialog( text=3288282583, text_tokens=(get_sex_category_stbl_name(sex_category_type), ), title=get_sex_category_animations_stbl_name(sex_category_type)) return display_sim_picker_dialog( text=389626746, title=get_sex_category_animations_stbl_name(sex_category_type), sims_id_list=sims_list, selectable_amount=max_amount_of_actors, sim=get_menu_sim(), callback=npc_sims_picker_callback)
def _change_warning_message(): display_ok_dialog(text=926615894, title=2064322478)
def open_random_sex_npc_sims_picker_dialog(origin_position, location_identifier, game_object_id, object_height, lot_id, location_position, location_level, location_angle, location_route_position, route_level, is_manual=False): @exception_watch() def random_sex_npc_sims_picker_callback(dialog): clear_menu_sim() if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): return False picked_sims_ids = TurboUIUtil.SimPickerDialog.get_tag_results(dialog) if not picked_sims_ids: return False picked_sims = list() for sim_id in picked_sims_ids: sim_info = TurboManagerUtil.Sim.get_sim_info(int(sim_id)) if sim_info is None: return False picked_sims.append(sim_info) random_animation = get_random_animation(location_identifier, picked_sims) if random_animation is None: display_ok_dialog(text=2693069513, title=1890248379) return False pre_sex_handler = PreSexInteractionHandler( random_animation.get_sex_category(), TurboManagerUtil.Sim.get_sim_id(next(iter(picked_sims))), location_identifier, game_object_id, object_height, lot_id, location_position.x, location_position.y, location_position.z, location_level, location_angle, location_route_position.x, location_route_position.y, location_route_position.z, route_level, is_manual=is_manual) pre_sex_handler.set_animation_instance(random_animation) for sim_info in picked_sims: pre_sex_handler.add_sim(sim_info) sim_ev(sim_info).active_pre_sex_handler = pre_sex_handler start_sex_interaction_from_pre_sex_handler(pre_sex_handler) return True sims_list = tuple( get_nearby_sims_for_sex(origin_position, radius=32, only_npc=True)) if not sims_list: display_ok_dialog(text=3288282583, title=1890248379) return display_sim_picker_dialog(text=389626746, title=1890248379, sims_id_list=sims_list, selectable_amount=48, sim=get_menu_sim(), callback=random_sex_npc_sims_picker_callback)
def _change_warning_message(): display_ok_dialog(text=926615894, title=3857402476)
def _open_warning_message(): display_ok_dialog(text=584740058, title=3857402476)
def open_player_animations_disabler(): def ok_dialog_callback(_): _open_animation_authors_picker() display_ok_dialog(text=2011685353, title=1853900111, callback=ok_dialog_callback)
def open_autonomy_animations_disabler(): def ok_dialog_callback(_): _open_animation_authors_picker(autonomy=True) display_ok_dialog(text=2011685353, title=2284702213, callback=ok_dialog_callback)
def open_start_sex_sims_picker_dialog(origin_position, pre_sex_handler): @exception_watch() def sim_picker_callback(dialog): if pre_sex_handler is None: return False if not TurboUIUtil.SimPickerDialog.get_response_result(dialog): clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False selected_sim_id = TurboUIUtil.SimPickerDialog.get_tag_result(dialog) if not selected_sim_id: clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False selected_sim_info = TurboManagerUtil.Sim.get_sim_info( int(selected_sim_id)) if selected_sim_info is None: clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False is_sim_sex_allowed = is_sim_allowed_for_animation( tuple(pre_sex_handler.get_actors_sim_info_gen()) + (selected_sim_info, ), pre_sex_handler.get_interaction_type()) if not is_sim_sex_allowed: display_not_allowed_message(is_sim_sex_allowed) clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return False pre_sex_handler.add_sim(selected_sim_id) open_start_sex_animations_picker_dialog(pre_sex_handler) return True creator_sim_info = TurboManagerUtil.Sim.get_sim_info( pre_sex_handler.get_creator_sim_id()) test_incest_of_sims = () if get_relationship_setting( RelationshipSetting.INCEST_STATE, variable_type=bool) else (creator_sim_info, ) (min_age_limit, max_age_limit) = get_age_limits_for_sex( (creator_sim_info, )) skip_males = not has_animations_with_params( pre_sex_handler.get_interaction_type(), pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.MALE)) skip_females = not has_animations_with_params( pre_sex_handler.get_interaction_type(), pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.FEMALE)) skip_cmales = not has_animations_with_params( pre_sex_handler.get_interaction_type(), pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.CMALE)) skip_cfemales = not has_animations_with_params( pre_sex_handler.get_interaction_type(), pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), SexGenderType.CFEMALE)) sims_list = list( get_nearby_sims_for_sex( origin_position, radius=16, relative_sims=test_incest_of_sims, min_sims_age=min_age_limit, max_sims_age=max_age_limit, skip_males=skip_males, skip_females=skip_females, skip_cmales=skip_cmales, skip_cfemales=skip_cfemales, skip_sims_ids=(pre_sex_handler.get_creator_sim_id(), ))) if has_animations_with_params(pre_sex_handler.get_interaction_type(), pre_sex_handler.get_object_identifier(), (get_sim_sex_gender(creator_sim_info), )): sims_list.insert(0, pre_sex_handler.get_creator_sim_id()) if not sims_list: display_ok_dialog(text=780195446, text_tokens=(get_sex_category_stbl_name( pre_sex_handler.get_interaction_type()), creator_sim_info), title=get_sex_category_animations_stbl_name( pre_sex_handler.get_interaction_type())) clear_sims_sex_extra_data( tuple(pre_sex_handler.get_actors_sim_info_gen())) return display_sim_picker_dialog(text=906772330, title=get_sex_category_animations_stbl_name( pre_sex_handler.get_interaction_type()), sims_id_list=sims_list, callback=sim_picker_callback)
def display_global_statistics_dialog(): values = list() values.extend('' for _ in range(150)) values[10] = '' display_ok_dialog(text=2093939627, text_tokens=values, title=3778116009)
def display_sim_statistics_dialog(sim_identifier): sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier) _update_sim_statistics(sim_info) values = list() values.append(sim_info) values.extend('' for _ in range(150)) values[10] = str(get_sim_ww_statistic(sim_info, 'times_had_sex')) values[11] = str( _get_percentage(get_sim_ww_statistic(sim_info, 'times_had_incest_sex'), get_sim_ww_statistic(sim_info, 'times_had_sex'))) values[12] = str(get_sim_ww_statistic(sim_info, 'times_had_solo_sex')) values[13] = str(get_sim_ww_statistic(sim_info, 'times_been_seen_in_sex')) values[14] = str(get_sim_ww_statistic(sim_info, 'times_reacted_to_sex')) sex_ask_overall = get_sim_ww_statistic( sim_info, 'times_sex_got_accepted') + get_sim_ww_statistic( sim_info, 'times_sex_got_rejected') values[15] = str(sex_ask_overall) values[16] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_sex_got_accepted'), sex_ask_overall)) values[17] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_sex_got_rejected'), sex_ask_overall)) sex_time_overall = get_sim_ww_statistic( sim_info, 'time_spent_on_sex_teasing') + get_sim_ww_statistic( sim_info, 'time_spent_on_sex_handjob') + get_sim_ww_statistic( sim_info, 'time_spent_on_sex_footjob') + get_sim_ww_statistic( sim_info, 'time_spent_on_sex_oraljob') + get_sim_ww_statistic( sim_info, 'time_spent_on_sex_vaginal') + get_sim_ww_statistic( sim_info, 'time_spent_on_sex_anal') + get_sim_ww_statistic( sim_info, 'time_spent_on_sex_climax') values[21] = str('%.2f' % (sex_time_overall / 60)) values[22] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_teasing'), sex_time_overall)) values[23] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_handjob'), sex_time_overall)) values[24] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_footjob'), sex_time_overall)) values[25] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_oraljob'), sex_time_overall)) values[26] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_vaginal'), sex_time_overall)) values[27] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_anal'), sex_time_overall)) values[28] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'time_spent_on_sex_climax'), sex_time_overall)) sex_unique_partners_overall = get_sim_ww_statistic(sim_info, 'unique_sex_partners') values[30] = str(sex_unique_partners_overall) values[31] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'unique_sex_partner_teen'), sex_unique_partners_overall)) values[32] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'unique_sex_partner_youngadult'), sex_unique_partners_overall)) values[33] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'unique_sex_partner_adult'), sex_unique_partners_overall)) values[34] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'unique_sex_partner_elder'), sex_unique_partners_overall)) sex_cum_received_overall = get_sim_ww_statistic( sim_info, 'times_received_cum_face') + get_sim_ww_statistic( sim_info, 'times_received_cum_chest') + get_sim_ww_statistic( sim_info, 'times_received_cum_back') + get_sim_ww_statistic( sim_info, 'times_received_cum_vagina') + get_sim_ww_statistic( sim_info, 'times_received_cum_butt') + get_sim_ww_statistic( sim_info, 'times_received_cum_feet') values[40] = str(sex_cum_received_overall) values[41] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_received_cum_face'), sex_cum_received_overall)) values[42] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_received_cum_chest'), sex_cum_received_overall)) values[43] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_received_cum_back'), sex_cum_received_overall)) values[44] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_received_cum_vagina'), sex_cum_received_overall)) values[45] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_received_cum_butt'), sex_cum_received_overall)) values[46] = str( _get_percentage( get_sim_ww_statistic(sim_info, 'times_received_cum_feet'), sex_cum_received_overall)) values[50] = str('%.2f' % (get_sim_ww_statistic(sim_info, 'time_spent_nude') / 60)) values[51] = str(get_sim_ww_statistic(sim_info, 'times_been_seen_nude')) values[52] = str(get_sim_ww_statistic(sim_info, 'times_reacted_to_nudity')) values[53] = str( get_sim_ww_statistic(sim_info, 'times_talked_exhibitionism')) flashed_times_overall = get_sim_ww_statistic( sim_info, 'times_flashed_top') + get_sim_ww_statistic( sim_info, 'times_flashed_bottom') + get_sim_ww_statistic( sim_info, 'times_flashed_full') values[60] = str(flashed_times_overall) values[61] = str( _get_percentage(get_sim_ww_statistic(sim_info, 'times_flashed_top'), flashed_times_overall)) values[62] = str( _get_percentage(get_sim_ww_statistic(sim_info, 'times_flashed_bottom'), flashed_times_overall)) values[63] = str( _get_percentage(get_sim_ww_statistic(sim_info, 'times_flashed_full'), flashed_times_overall)) values[100] = str(get_sim_ww_statistic(sim_info, 'times_impregnated')) values[101] = str(get_sim_ww_statistic(sim_info, 'times_got_pregnant')) values[102] = str( get_sim_ww_statistic(sim_info, 'times_terminated_pregnancy')) values[103] = str( get_sim_ww_statistic(sim_info, 'times_used_contraception')) display_ok_dialog(text=863853338, text_tokens=values, title=1561155736, title_tokens=(sim_info, ))
def _open_warning_message(): display_ok_dialog(text=1417105284, title=3799781904)