527 lines
15 KiB
Scheme
Executable File
527 lines
15 KiB
Scheme
Executable File
///private header for family sfx control scripts
|
|
/// alwyn.roberts@rockstarnorth.com
|
|
///
|
|
|
|
USING "commands_audio.sch"
|
|
USING "commands_interiors.sch"
|
|
USING "commands_misc.sch"
|
|
|
|
// *******************************************************************************************
|
|
// FAMILY CONST_VALUES
|
|
// *******************************************************************************************
|
|
CONST_INT iCONST_FAMILY_SFX_INVALID -1
|
|
|
|
ENUM enumFamilySfxEntityType
|
|
FSE_0_ped = 0,
|
|
FSE_1_coord,
|
|
MAX_FAMILY_SFX_ENTITY_TYPES
|
|
ENDENUM
|
|
|
|
// *******************************************************************************************
|
|
// FAMILY STREAM PRIVATE FUNCTIONS
|
|
// *******************************************************************************************
|
|
|
|
FUNC BOOL PRIVATE_Play_Family_Stream(INT &iSfxStage, STRING streamName, VECTOR position)
|
|
|
|
SWITCH iSfxStage
|
|
CASE 0 // load and play stream...
|
|
IF LOAD_STREAM(streamName)
|
|
|
|
IF ARE_STRINGS_EQUAL(streamName, "AFT_SON_PORN")
|
|
SET_AUDIO_FLAG("DisableReplayScriptStreamRecording", TRUE)
|
|
ENDIF
|
|
|
|
PLAY_STREAM_FROM_POSITION(position)
|
|
iSfxStage = 1
|
|
ENDIF
|
|
BREAK
|
|
CASE 1 // playing stream at position...
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 str
|
|
str = "sfx \""
|
|
str += streamName
|
|
str += "\""
|
|
DrawDebugFamilyTextWithOffset(str, position, 0, HUD_COLOUR_BLUEDARK)
|
|
DrawDebugFamilySphere(position, 0.1, HUD_COLOUR_BLUEDARK)
|
|
#ENDIF
|
|
|
|
BREAK
|
|
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_FAMILY, "invalid iSfxStage ", iSfxStage, " in PRIVATE_Play_Family_Stream()")
|
|
|
|
CASSERTLN(DEBUG_FAMILY, "invalid iSfxStage in PRIVATE_Play_Family_Stream()")
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
//FUNC BOOL PRIVATE_Update_Family_Stream(enumFamilyEvents eFamilyEvent, INT &iSfxStage,
|
|
// STRING streamName, VECTOR position)
|
|
// SWITCH eFamilyEvent
|
|
// CASE FE_F_LAMAR_and_STRETCH_bbq_outside
|
|
// IF PRIVATE_Play_Family_Stream(iSfxStage, streamName, position)
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// ENDSWITCH
|
|
//
|
|
// #IF IS_DEBUG_BUILD
|
|
// CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyEvent(eFamilyEvent), " in PRIVATE_Update_Family_Stream()")
|
|
// #ENDIF
|
|
//
|
|
// CASSERTLN(DEBUG_FAMILY, "invalid eFamilyEvent PRIVATE_Update_Family_Stream()")
|
|
// RETURN FALSE
|
|
//ENDFUNC
|
|
|
|
|
|
// *******************************************************************************************
|
|
// FAMILY SFX PRIVATE FUNCTIONS
|
|
// *******************************************************************************************
|
|
|
|
FUNC BOOL PRIVATE_Play_Family_SFX_On_Entity(INT &iSfxStage, INT &iSfxID,
|
|
STRING BankName, STRING SFXName, ENTITY_INDEX entityID,
|
|
enumFamilySfxEntityType eFamilySfxEntityType, TEXT_LABEL_63 &RequestedBankName)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 str, strSFXName
|
|
INT iTaunterAnimOutLength = GET_LENGTH_OF_LITERAL_STRING(SFXName)
|
|
|
|
IF iTaunterAnimOutLength >= 8
|
|
strSFXName = GET_STRING_FROM_STRING(SFXName,
|
|
iTaunterAnimOutLength - 8,
|
|
iTaunterAnimOutLength)
|
|
ELSE
|
|
strSFXName = SFXName
|
|
ENDIF
|
|
|
|
|
|
#ENDIF
|
|
|
|
CONST_INT iSFX_0_loadStream 0
|
|
CONST_INT iSFX_1_playSound 1
|
|
CONST_INT iSFX_2_playingSound 2
|
|
CONST_INT iSFX_3_pausedSound 3
|
|
CONST_INT iSFX_4_bankLoaded 4
|
|
|
|
SWITCH iSfxStage
|
|
CASE iSFX_0_loadStream // load stream...
|
|
|
|
//url:bugstar:677528
|
|
IF (iSfxID <> iCONST_FAMILY_SFX_INVALID)
|
|
STOP_SOUND(iSfxID)
|
|
RELEASE_SOUND_ID(iSfxID)
|
|
|
|
iSfxID = iCONST_FAMILY_SFX_INVALID
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(BankName)
|
|
IF REQUEST_AMBIENT_AUDIO_BANK(BankName)
|
|
RequestedBankName = BankName
|
|
iSfxStage = iSFX_1_playSound
|
|
ENDIF
|
|
ELSE
|
|
iSfxStage = iSFX_1_playSound
|
|
ENDIF
|
|
BREAK
|
|
CASE iSFX_1_playSound // play stream...
|
|
IF NOT DOES_ENTITY_EXIST(entityID)
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY(SFXName)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Play_Family_SFX_On_Entity - ", "entity doesnt exist \"", SFXName, "\" and SFXName is empty")
|
|
#ENDIF
|
|
|
|
iSfxStage = iSFX_4_bankLoaded
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Play_Family_SFX_On_Entity - ", "entity doesnt exist \"", SFXName, "\"")
|
|
#ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
SWITCH eFamilySfxEntityType
|
|
CASE FSE_0_ped
|
|
iSfxID = GET_SOUND_ID()
|
|
PLAY_SOUND_FROM_ENTITY(iSfxID, SFXName, entityID)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_FAMILY, "PLAY_SOUND_FROM_ENTITY(", iSfxID, ", \"", SFXName, "\", ", GET_MODEL_NAME_FOR_DEBUG(GET_ENTITY_MODEL(entityID)), ")", " //BankName:\"", BankName, "\"")
|
|
#ENDIF
|
|
|
|
BREAK
|
|
CASE FSE_1_coord
|
|
iSfxID = GET_SOUND_ID()
|
|
PLAY_SOUND_FROM_COORD(iSfxID, SFXName, GET_ENTITY_COORDS(entityID))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vEntityCoord
|
|
vEntityCoord = GET_ENTITY_COORDS(entityID)
|
|
CPRINTLN(DEBUG_FAMILY, "PLAY_SOUND_FROM_COORD(", iSfxID, ", \"", SFXName, "\", ", vEntityCoord, ")", " //BankName:\"", BankName, "\"")
|
|
#ENDIF
|
|
|
|
BREAK
|
|
|
|
DEFAULT
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Play_Family_SFX_On_Entity - ", " invalid eFamilySfxEntityType FSE_", ENUM_TO_INT(eFamilySfxEntityType), "_unknown")
|
|
#ENDIF
|
|
|
|
RETURN FALSE
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
iSfxStage = iSFX_2_playingSound
|
|
BREAK
|
|
CASE iSFX_2_playingSound // play stream at entity...
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
str = "sfx \""
|
|
str += strSFXName
|
|
str += "\""
|
|
#ENDIF
|
|
|
|
IF (iSfxID <> iCONST_FAMILY_SFX_INVALID)
|
|
IF NOT HAS_SOUND_FINISHED(iSfxID)
|
|
#IF IS_DEBUG_BUILD
|
|
str += " playing"
|
|
#ENDIF
|
|
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
str += " FINISHED"
|
|
#ENDIF
|
|
|
|
iSfxStage = iSFX_0_loadStream
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
str += " INVALID?"
|
|
#ENDIF
|
|
|
|
iSfxStage = iSFX_0_loadStream
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
DrawDebugFamilyTextWithOffset(str, GET_ENTITY_COORDS(entityID), 3, HUD_COLOUR_BLUEDARK)
|
|
#ENDIF
|
|
|
|
IF (eFamilySfxEntityType <> FSE_1_coord)
|
|
IF IS_ENTITY_A_PED(entityID)
|
|
PED_INDEX pedID
|
|
pedID = GET_PED_INDEX_FROM_ENTITY_INDEX(entityID)
|
|
IF IS_ANY_SPEECH_PLAYING(pedID)
|
|
iSfxStage = iSFX_3_pausedSound
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE iSFX_3_pausedSound // ped is playing a line of dialogie, stop speech until ped has finished talking...
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
str = "sfx \""
|
|
str += strSFXName
|
|
str += "\""
|
|
str += " paused"
|
|
|
|
DrawDebugFamilyTextWithOffset(str, GET_ENTITY_COORDS(entityID), 3, HUD_COLOUR_BLUELIGHT)
|
|
#ENDIF
|
|
|
|
IF IS_ENTITY_A_PED(entityID)
|
|
PED_INDEX pedID
|
|
pedID = GET_PED_INDEX_FROM_ENTITY_INDEX(entityID)
|
|
IF NOT IS_ANY_SPEECH_PLAYING(pedID)
|
|
iSfxStage = iSFX_0_loadStream
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE iSFX_4_bankLoaded
|
|
|
|
// #IF IS_DEBUG_BUILD
|
|
// str = "bank \""
|
|
// str += BankName
|
|
// str += "\""
|
|
// str += " loaded"
|
|
//
|
|
// DrawDebugFamilyTextWithOffset(str, GET_ENTITY_COORDS(entityID), 3, HUD_COLOUR_BLUELIGHT)
|
|
// #ENDIF
|
|
|
|
// IF IS_ENTITY_A_PED(entityID)
|
|
// PED_INDEX pedID
|
|
// pedID = GET_PED_INDEX_FROM_ENTITY_INDEX(entityID)
|
|
// IF NOT IS_ANY_SPEECH_PLAYING(pedID)
|
|
// iSfxStage = iSFX_0_loadStream
|
|
// ENDIF
|
|
// ENDIF
|
|
BREAK
|
|
|
|
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_FAMILY, "invalid iSfxStage ", iSfxStage, " in PRIVATE_Play_Family_SFX_On_Entity()")
|
|
CASSERTLN(DEBUG_FAMILY, "invalid iSfxStage ", iSfxStage, " in PRIVATE_Play_Family_SFX_On_Entity()")
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
//
|
|
FUNC FLOAT PRIVATE_Get_Variable_For_Player_In_Room(enumFamilyEvents eFamilyEvent,
|
|
INTERIOR_INSTANCE_INDEX iInteriorForThisPlayer,
|
|
INTERIOR_INSTANCE_INDEX iInteriorForThisFamilyMember)
|
|
|
|
SWITCH eFamilyEvent
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE FE_M2_WIFE_using_vibrator
|
|
CASE FE_M_WIFE_using_vibrator_END
|
|
CASE FE_M7_WIFE_using_vibrator
|
|
#ENDIF
|
|
#IF IS_JAPANESE_BUILD
|
|
CASE NO_FAMILY_EVENTS
|
|
#ENDIF
|
|
// I've added a variable to this sound - if you pass a value to MichaelInRoom
|
|
// (0 when he's not, 1 when he is) to the sound using
|
|
|
|
// SET_VARIABLE_ON_SOUND(SoundID,"MichaelInRoom", FloatValue)
|
|
|
|
// it will make it sound appropriately occluded when necessary.
|
|
// It defaults to 0.
|
|
|
|
IF (iInteriorForThisPlayer = iInteriorForThisFamilyMember)
|
|
RETURN 1.0
|
|
ENDIF
|
|
|
|
RETURN 0.0
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN -1.0
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_Set_Variable_On_Family_Sound(enumFamilyEvents eFamilyEvent, INT iSfxID, FLOAT VariableValue = 0.0)
|
|
|
|
IF NOT HAS_SOUND_FINISHED(iSfxID)
|
|
|
|
SWITCH eFamilyEvent
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE FE_M2_WIFE_using_vibrator
|
|
// CASE FE_M_WIFE_using_vibrator_END
|
|
CASE FE_M7_WIFE_using_vibrator
|
|
|
|
// I've added a variable to this sound - if you pass a value to MichaelInRoom
|
|
// (0 when he's not, 1 when he is) to the sound using
|
|
|
|
// SET_VARIABLE_ON_SOUND(SoundID,"MichaelInRoom", FloatValue)
|
|
|
|
// it will make it sound appropriately occluded when necessary.
|
|
// It defaults to 0.
|
|
|
|
SET_VARIABLE_ON_SOUND(iSfxID, "MichaelInRoom", VariableValue)
|
|
RETURN TRUE
|
|
BREAK
|
|
#ENDIF
|
|
CASE FE_M_GARDENER_with_leaf_blower
|
|
|
|
// I made sounds for a bit back - if you load the bank:
|
|
// GARDEN_LEAF_BLOWER
|
|
// you can then trigger the sound
|
|
// Leaf_Blower
|
|
// from the SoundSet
|
|
// MICHAELS_GARDEN_SOUNDS
|
|
//
|
|
// To control the blowing set a variable called "Blow" on the sound
|
|
// - values range from "0" (idling) to "-1" (blowing).
|
|
|
|
SET_VARIABLE_ON_SOUND(iSfxID, "Blow", VariableValue)
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_Update_Family_Sfx(enumFamilyEvents eFamilyEvent, INT &iSfxStage, INT &iSfxID,
|
|
STRING BankName, STRING SFXName, ENTITY_INDEX entityID, TEXT_LABEL_63 &RequestedBankName, FLOAT VariableValue = 0.0)
|
|
SWITCH eFamilyEvent
|
|
|
|
CASE FE_M_FAMILY_on_laptops FALLTHRU
|
|
|
|
CASE FE_M2_SON_gaming_loop FALLTHRU
|
|
// CASE FE_M2_SON_gaming_exit FALLTHRU
|
|
CASE FE_M7_SON_gaming FALLTHRU
|
|
CASE FE_M7_SON_on_laptop_looking_for_jobs FALLTHRU
|
|
CASE FE_M_SON_smoking_weed_in_a_bong FALLTHRU
|
|
|
|
CASE FE_M_DAUGHTER_purges_in_the_bathroom FALLTHRU
|
|
CASE FE_M_DAUGHTER_sex_sounds_from_room FALLTHRU
|
|
CASE FE_M_DAUGHTER_crying_over_a_guy FALLTHRU
|
|
CASE FE_M_DAUGHTER_sniffs_drugs_in_toilet FALLTHRU
|
|
CASE FE_M_DAUGHTER_dancing_practice FALLTHRU
|
|
CASE FE_M7_DAUGHTER_studying_does_nails FALLTHRU
|
|
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE FE_M2_WIFE_using_vibrator FALLTHRU
|
|
// CASE FE_M_WIFE_using_vibrator_END FALLTHRU
|
|
CASE FE_M7_WIFE_using_vibrator FALLTHRU
|
|
#ENDIF
|
|
CASE FE_M_WIFE_gets_drink_in_kitchen FALLTHRU
|
|
CASE FE_M2_WIFE_with_shopping_bags_enter FALLTHRU
|
|
CASE FE_M7_WIFE_with_shopping_bags_enter FALLTHRU
|
|
|
|
CASE FE_M_MEXMAID_does_the_dishes FALLTHRU
|
|
CASE FE_M2_MEXMAID_clean_surface_a FALLTHRU
|
|
CASE FE_M2_MEXMAID_clean_surface_b FALLTHRU
|
|
CASE FE_M2_MEXMAID_clean_surface_c FALLTHRU
|
|
CASE FE_M7_MEXMAID_clean_surface FALLTHRU
|
|
|
|
CASE FE_M2_MEXMAID_clean_window FALLTHRU
|
|
CASE FE_M7_MEXMAID_clean_window FALLTHRU
|
|
CASE FE_M_MEXMAID_MIC4_clean_window FALLTHRU
|
|
|
|
CASE FE_M_GARDENER_with_leaf_blower FALLTHRU
|
|
// CASE FE_M_GARDENER_trimming_hedges FALLTHRU
|
|
CASE FE_M_GARDENER_cleaning_pool FALLTHRU
|
|
CASE FE_M_GARDENER_mowing_lawn FALLTHRU
|
|
CASE FE_M_GARDENER_watering_flowers FALLTHRU
|
|
// CASE FE_M_GARDENER_spraying_for_weeds FALLTHRU
|
|
|
|
// CASE FE_F_LAMAR_and_STRETCH_bbq_outside FALLTHRU
|
|
|
|
CASE FE_T0_RON_smoking_crystal FALLTHRU
|
|
CASE FE_T0_RON_drinks_moonshine_from_a_jar FALLTHRU
|
|
CASE FE_T0_RON_listens_to_radio_broadcast FALLTHRU
|
|
CASE FE_T0_RON_monitoring_police_frequency FALLTHRU
|
|
CASE FE_T0_RONEX_trying_to_pick_up_signals FALLTHRU
|
|
CASE FE_T0_RONEX_working_a_moonshine_sill FALLTHRU
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE FE_T0_TREVOR_doing_a_shit FALLTHRU
|
|
#ENDIF
|
|
CASE FE_T0_TREVOR_blowing_shit_up FALLTHRU
|
|
CASE FE_T0_TREVOR_smoking_crystal FALLTHRU
|
|
CASE FE_T0_MICHAEL_drinking_beer FALLTHRU
|
|
CASE FE_T0_KIDNAPPED_WIFE_does_garden_work FALLTHRU
|
|
CASE FE_T0_KIDNAPPED_WIFE_cleaning FALLTHRU
|
|
|
|
CASE FE_T1_FLOYD_cleaning FALLTHRU
|
|
CASE FE_T1_FLOYD_with_wade_post_docks1
|
|
IF PRIVATE_Play_Family_SFX_On_Entity(iSfxStage, iSfxID, BankName, SFXName, entityID, FSE_0_ped, RequestedBankName)
|
|
PRIVATE_Set_Variable_On_Family_Sound(eFamilyEvent, iSfxID, VariableValue)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
BREAK
|
|
|
|
CASE FE_M_SON_rapping_in_the_shower FALLTHRU
|
|
CASE FE_M_DAUGHTER_shower
|
|
IF PRIVATE_Play_Family_SFX_On_Entity(iSfxStage, iSfxID, BankName, SFXName, entityID, FSE_1_coord, RequestedBankName)
|
|
PRIVATE_Set_Variable_On_Family_Sound(eFamilyEvent, iSfxID, VariableValue)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
TEXT_LABEL_63 str
|
|
str += ("invalid eFamilyEvent ")
|
|
INT iTaunterAnimOutLength
|
|
iTaunterAnimOutLength = GET_LENGTH_OF_LITERAL_STRING(Get_String_From_FamilyEvent(eFamilyEvent))
|
|
|
|
IF iTaunterAnimOutLength >= 12
|
|
str += GET_STRING_FROM_STRING(Get_String_From_FamilyEvent(eFamilyEvent),
|
|
iTaunterAnimOutLength - 12,
|
|
iTaunterAnimOutLength)
|
|
ELSE
|
|
str += Get_String_From_FamilyEvent(eFamilyEvent)
|
|
ENDIF
|
|
str += (" in Update_Family_Sfx()")
|
|
|
|
CASSERTLN(DEBUG_FAMILY, str)
|
|
#ENDIF
|
|
|
|
RETURN PRIVATE_Play_Family_SFX_On_Entity(iSfxStage, iSfxID, BankName, SFXName, entityID, FSE_0_ped, RequestedBankName)
|
|
ENDFUNC
|
|
|
|
// *******************************************************************************************
|
|
// FAMILY STREAM & SFX CLEANUP PRIVATE FUNCTIONS
|
|
// *******************************************************************************************
|
|
|
|
FUNC BOOL PRIVATE_Cleanup_Family_Stream_And_Sfx(INT &iSfxStage, INT &iSfxID, TEXT_LABEL_63 &RequestedBankName)
|
|
STOP_STREAM()
|
|
|
|
IF (iSfxStage = 0)
|
|
AND (iSfxID = iCONST_FAMILY_SFX_INVALID)
|
|
AND IS_STRING_NULL_OR_EMPTY(RequestedBankName)
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
|
|
IF (iSfxID <> iCONST_FAMILY_SFX_INVALID)
|
|
IF (iSfxStage <> 0)
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Cleanup_Family_Stream_And_Sfx(", " iSfxStage = ", iSfxStage, " iSfxID = ", iSfxID, ")")
|
|
ELSE
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Cleanup_Family_Stream_And_Sfx(", " iSfxID = ", iSfxID, ")")
|
|
ENDIF
|
|
ELSE
|
|
IF (iSfxStage <> 0)
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Cleanup_Family_Stream_And_Sfx(", " iSfxStage = ", iSfxStage, ")")
|
|
ELSE
|
|
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Cleanup_Family_Stream_And_Sfx(", ")")
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF (iSfxStage <> 0)
|
|
STOP_STREAM() //cleanup PRIVATE_Play_Family_Stream()
|
|
iSfxStage = 0
|
|
ENDIF
|
|
IF (iSfxID <> iCONST_FAMILY_SFX_INVALID)
|
|
STOP_SOUND(iSfxID)
|
|
iSfxID = iCONST_FAMILY_SFX_INVALID
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(RequestedBankName)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_FAMILY, "RELEASE_NAMED_SCRIPT_AUDIO_BANK(\"", RequestedBankName, "\")")
|
|
#ENDIF
|
|
|
|
RELEASE_NAMED_SCRIPT_AUDIO_BANK(RequestedBankName)
|
|
|
|
IF ARE_STRINGS_EQUAL(RequestedBankName, "AFT_SON_PORN")
|
|
SET_AUDIO_FLAG("DisableReplayScriptStreamRecording", FALSE)
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_FAMILY, "bul(\"", RequestedBankName, "\")")
|
|
#ENDIF
|
|
|
|
|
|
ENDIF
|
|
RequestedBankName = ""
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|