////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Name: NightClubPedsHeader.sch // // Description: functionality for managing peds and ped activities in the nightclubs // // Written by: Philip O'Duffy // // Date: 19-Jan-18(ISO 8601) // ////////////////////////////////////////////////////////////////////////////////////////////////////////////// USING "commands_network.sch" USING "net_include.sch" USING "net_activity_creator.sch" USING "rage_builtins.sch" USING "globals.sch" USING "net_gang_boss_common.sch" USING "net_simple_cutscene_common.sch" USING "nightclubpeds_compvars.sch" USING "ped_component_packing.sch" #IF IS_DEBUG_BUILD USING "profiler.sch" USING "net_spawn_debug.sch" #ENDIF FUNC STRING actNCStateString(ACT_NIGHTCLUB_ACT_STATE actState) SWITCH actState CASE NC_STAGE_INIT RETURN "NC_STAGE_INIT" CASE NC_STAGE_ACTIVITY_CREATE_PED_PROPS RETURN "NC_STAGE_ACTIVITY_CREATE_PED_PROPS" CASE NC_STAGE_CREATE_PEDS RETURN "NC_STAGE_CREATE_PEDS" CASE NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY RETURN "NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY" CASE NC_STAGE_UPDATE_PED_BEHAVIOUR RETURN "NC_STAGE_UPDATE_PED_BEHAVIOUR" CASE NC_STAGE_INIT_PED_CULLING RETURN "NC_STAGE_INIT_PED_CULLING" CASE NC_STAGE_REMOVE_CULLED_PEDS RETURN "NC_STAGE_REMOVE_CULLED_PEDS" CASE NC_STAGE_POPULATE_CULLED_PED_ARRAY RETURN "NC_STAGE_POPULATE_CULLED_PED_ARRAY" CASE NC_STAGE_CLEANUP_PROPS_PEDS_AND_TERMINATE RETURN "NC_STAGE_CLEANUP_PROPS_PEDS_AND_TERMINATE" CASE NC_STAGE_RECREATE RETURN "NC_STAGE_RECREATE" ENDSWITCH RETURN "" ENDFUNC CONST_INT iNCMaxSyncSceneEntityInSequence 4 CONST_INT iNCMaxSyncScenePedInSequence 2 CONST_INT MAX_NUMBER_OF_NIGHTCLUB_ACTIVITY_SLOTS 20 //CONST_INT MAX_NUMBER_OF_NIGHTCLUB_CULL_BOXES 1 CONST_INT MAX_NUMBER_NC_PED_OFFSET_CHILDREN 3 CONST_INT MAX_NUMBER_NC_PED_ANIMS_PROCESSED_PER_FRAME 9 FUNC STRING getAudioTagString(NIGHTCLUB_AUDIO_TAGS eAudioTag) SWITCH eAudioTag CASE AUDIO_TAG_NULL RETURN "AUDIO_TAG_NULL" CASE AUDIO_TAG_LOW RETURN "AUDIO_TAG_LOW" CASE AUDIO_TAG_MEDIUM RETURN "AUDIO_TAG_MEDIUM" CASE AUDIO_TAG_HIGH RETURN "AUDIO_TAG_HIGH" CASE AUDIO_TAG_HIGH_HANDS RETURN "AUDIO_TAG_HIGH_HANDS" ENDSWITCH RETURN "" ENDFUNC ENUM ACT_NIGHTCLUB_PED_STATE NC_POS_ACT_STAGE_IDLE = 0, NC_POS_ACT_STAGE_WALKING_TO_FIRST_ACTIVITY, NC_POS_ACT_STAGE_PERFORMING_FIRST_ACTIVITY, NC_POS_ACT_STAGE_WALKING_TO_SECOND_ACTIVITY, NC_POS_ACT_STAGE_PERFORMING_SECOND_ACTIVITY ENDENUM FUNC STRING actNCPosActStateString(ACT_NIGHTCLUB_PED_STATE actState) SWITCH actState CASE NC_POS_ACT_STAGE_IDLE RETURN "NC_POS_ACT_STAGE_IDLE" CASE NC_POS_ACT_STAGE_WALKING_TO_FIRST_ACTIVITY RETURN "NC_POS_ACT_STAGE_WALKING_TO_FIRST_ACTIVITY" CASE NC_POS_ACT_STAGE_PERFORMING_FIRST_ACTIVITY RETURN "NC_POS_ACT_STAGE_PERFORMING_FIRST_ACTIVITY" CASE NC_POS_ACT_STAGE_WALKING_TO_SECOND_ACTIVITY RETURN "NC_POS_ACT_STAGE_WALKING_TO_SECOND_ACTIVITY" CASE NC_POS_ACT_STAGE_PERFORMING_SECOND_ACTIVITY RETURN "NC_POS_ACT_STAGE_PERFORMING_SECOND_ACTIVITY" ENDSWITCH RETURN "" ENDFUNC ENUM NC_PED_TYPES NC_NULL_PED = -1, NC_BOUNCER_HALLWAY, NC_BOUNCER_HEAD, NC_BOUNCER_DJ_BOOTH, NC_BOUNCER_TOILET, NC_BOUNCER_VIP, NC_BOUNCER_DANCEFLOOR, NC_DEFAULT_BARMAN_DOWNSTAIRS, NC_UPGRADE_BARMAN_DOWNSTAIRS, NC_UPGRADE_BARMAN_UPSTAIRS, NC_HEAD_BARMAN_UPSTAIRS, NC_DJ, NC_HIPSTER_M, NC_HIPSTER_F, NC_WORKER, NC_LAZLOW, NC_TRACEY, NC_JACK_H, NC_TONY, NC_TEST_GIB, NC_JUSTIN, NC_BUSINESS_CLOAKROOM, NC_PODIUM_STYLE_1_M_1, NC_PODIUM_STYLE_1_M_2, NC_PODIUM_STYLE_2_M_1, NC_PODIUM_STYLE_2_M_2, NC_PODIUM_STYLE_3_M_1, NC_PODIUM_STYLE_3_M_2, NC_PODIUM_STYLE_1_F_1, NC_PODIUM_STYLE_1_F_2, NC_PODIUM_STYLE_2_F_1, NC_PODIUM_STYLE_2_F_2, NC_PODIUM_STYLE_3_F_1, NC_PODIUM_STYLE_3_F_2, NC_WAREHOUSE_TECH, NC_BUSBOY_TOILET, NC_SOL_FOTIOS, NC_SOL_JAKOB, NC_SOL_MANAGER, NC_SOL_MIKE, NC_SOL_ROBT, NC_SOL_GIRL, NC_BLAM_RUPERT, NC_BLAM_RYANH, NC_BLAM_RYANS, NC_DIX_MANAGER, NC_DIX_GUY, NC_DIX_GIRL, NC_TAL_AURELIA, NC_TAL_IGNAZIO, NC_TAL_GUY, NC_TAL_GIRL, NC_BM_GIRL, NC_BUNKER_SEAT, NC_CELEB_POPPY_MITCHELL, NC_CELEB_JIMMY_BOSTON, NC_CELEB_KERRY_MCINTOSH, NC_CELEB_MIRANDA_COWAN, NC_CELEB_MIRANDA_ASSISTANT, NC_CELEB_TYLER_DIXON, NC_CELEB_TYLER_ASSISTANT, NC_CELEB_LACEY_JONAS, NC_GUIDO_1, NC_DJ_2, MAX_NUMBER_OF_NC_PED_TYPES ENDENUM CONST_INT MAX_NUM_OF_ALLOWED_PEDS 125 ENUM ACTIVITY_SLOT_NAMES AC_SLOT_NULL = -1, AC_SLOT_GUARDING, // 0 AC_SLOT_HANGOUT, // 1 AC_SLOT_DRINK, // 2 AC_SLOT_SMOKE, // 3 AC_SLOT_SIT_DRINKING, // 4 AC_SLOT_USE_COMPUTER, // 5 AC_SLOT_BARTENDER_YACHT_IDLE, // 6 AC_SLOT_SOLOMUN, // 7 AC_SLOT_DIXON, // 8 AC_SLOT_TALE_OF_US_1, // 9 AC_SLOT_TALE_OF_US_2, // 10 AC_SLOT_BLACK_MADONNA, // 11 AC_SLOT_FACE_DJ_M_1, // 12 AC_SLOT_FACE_DJ_M_2, // 13 AC_SLOT_FACE_DJ_M_3, // 14 AC_SLOT_FACE_DJ_M_4, // 15 AC_SLOT_FACE_DJ_M_5, // 16 AC_SLOT_FACE_DJ_M_6, // 17 AC_SLOT_FACE_DJ_F_1, // 18 AC_SLOT_FACE_DJ_F_2, // 19 AC_SLOT_FACE_DJ_F_3, // 20 AC_SLOT_FACE_DJ_F_4, // 21 AC_SLOT_FACE_DJ_F_5, // 22 AC_SLOT_FACE_DJ_F_6, // 23 AC_SLOT_GROUP_M_1, // 24 AC_SLOT_GROUP_M_2, // 25 AC_SLOT_GROUP_M_3, // 26 AC_SLOT_GROUP_M_4, // 27 AC_SLOT_GROUP_M_5, // 28 AC_SLOT_GROUP_M_6, // 29 AC_SLOT_GROUP_F_1, // 30 AC_SLOT_GROUP_F_2, // 31 AC_SLOT_GROUP_F_3, // 32 AC_SLOT_GROUP_F_4, // 33 AC_SLOT_GROUP_F_5, // 34 AC_SLOT_GROUP_F_6, // 35 AC_SLOT_SINGLE_PROP_M_1, // 36 AC_SLOT_SINGLE_PROP_M_2, // 37 AC_SLOT_SINGLE_PROP_M_3, // 38 AC_SLOT_SINGLE_PROP_M_4, // 39 AC_SLOT_SINGLE_PROP_M_5, // 40 AC_SLOT_SINGLE_PROP_M_6, // 41 AC_SLOT_SINGLE_PROP_F_1, // 42 AC_SLOT_SINGLE_PROP_F_2, // 43 AC_SLOT_SINGLE_PROP_F_3, // 44 AC_SLOT_SINGLE_PROP_F_4, // 45 AC_SLOT_SINGLE_PROP_F_5, // 46 AC_SLOT_SINGLE_PROP_F_6, // 47 AC_SLOT_AMBIENT_M_1, // 48 AC_SLOT_AMBIENT_M_2, // 49 AC_SLOT_AMBIENT_M_3, // 50 AC_SLOT_AMBIENT_M_4, // 51 AC_SLOT_AMBIENT_M_5, // 52 AC_SLOT_AMBIENT_M_6, // 53 AC_SLOT_AMBIENT_F_1, // 54 AC_SLOT_AMBIENT_F_2, // 55 AC_SLOT_AMBIENT_F_3, // 56 AC_SLOT_AMBIENT_F_4, // 57 AC_SLOT_AMBIENT_F_5, // 58 AC_SLOT_AMBIENT_F_6, // 59 AC_SLOT_WORKER_CLIPBOARD, // 60 AC_SLOT_DANCING_WITH_BEER_SCENARIO, // 61 AC_SLOT_LAZLOW_SITTING, // 62 AC_SLOT_JACK_H, // 63 AC_SLOT_POPPY_M, // 64 AC_SLOT_TRACEY_DANCING, // 65 AC_SLOT_LEANING_TEXTING, // 66 AC_SLOT_CAGE_DANCING_LAP_SCENARIO, // 67 AC_SLOT_DANCEFLOOR_TONY_BAR_LEAN, // 68 AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN, // 69 AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE, // 70 AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE, // 71 AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT, // 72 AC_SLOT_DANCEFLOOR_BOUNCER_TONY_TALK, // 73 AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER, // 74 AC_SLOT_DANCEFLOOR_TONY_PHONE, // 75 AC_SLOT_TECH_USE_COMPUTER, // 76 AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE, // 77 AC_SLOT_DANCEFLOOR_BUSBOY_TOILET, // 78 AC_SLOT_TOILET_BUNKER_SEAT, // 79 AC_SLOT_TOILET_SMOKE_WEED, // 80 AC_SLOT_TOILET_PHONE, // 81 AC_SLOT_TOILET_CHECK_OUT_MIRROR, // 82 AC_SLOT_DANCING_TO_BEER_WALK_SCENARIO, // 83 AC_SLOT_DANCING_TO_SELFIE_WALK_SCENARIO, // 84 AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1, // 85 AC_SLOT_CLOAKROOM_STOOL, // 86 AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1, // 87 AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2, // 88 AC_SLOT_TONY_SIT_DRINK_1, // 89 AC_SLOT_TONY_SIT_DRINK_2, // 90 AC_SLOT_LEAN_SMOKE_1, // 91 AC_SLOT_ENTOURAGE_TAL_1, // 92 AC_SLOT_ENTOURAGE_TAL_2, // 93 AC_SLOT_ENTOURAGE_TAL_3, // 94 AC_SLOT_ENTOURAGE_SOL_1, // 95 AC_SLOT_ENTOURAGE_SOL_2, // 96 AC_SLOT_ENTOURAGE_SOL_3, // 97 AC_SLOT_ENTOURAGE_SOL_4, // 98 AC_SLOT_ENTOURAGE_SOL_ROB, // 99 AC_SLOT_ENTOURAGE_SOL_MIKE, // 100 AC_SLOT_ENTOURAGE_BLAM_1, // 101 AC_SLOT_ENTOURAGE_BLAM_2, // 102 AC_SLOT_ENTOURAGE_BLAM_3, // 103 AC_SLOT_ENTOURAGE_DIX_1, // 104 AC_SLOT_LAZLOW_HIGH_DANCEFLOOR, // 105 AC_SLOT_LAZLOW_HIGH_RAILING, // 106 AC_SLOT_LAZLOW_HIGH_CHAIR, // 107 AC_SLOT_LAZLOW_HIGH_PODIUM, // 108 AC_SLOT_LAZLOW_LOW_TOILET, // 109 AC_SLOT_LAZLOW_LOW_BAR, // 110 AC_SLOT_LAZLOW_LOW_SOFA, // 111 AC_SLOT_LAZLOW_LOW_ALONE, // 112 AC_SLOT_LAZLOW_VIP, // 113 AC_SLOT_MUSCLE_FLEX, // 114 // end AC_SLOT_TOTAL ENDENUM STRUCT NIGHT_CLUB_PEDS PED_INDEX piScenePeds OBJECT_INDEX oiSceneObjects[iNCMaxSyncSceneEntityInSequence] ACTIVITY_SLOT_NAMES eActiveActivity = AC_SLOT_NULL ACT_NIGHTCLUB_PED_STATE ePosActState = NC_POS_ACT_STAGE_PERFORMING_FIRST_ACTIVITY INT iActiveSlot = -1 BOOL bAddRandomnessToActivitySlot = FALSE INT iCurrentSequence = -1 INT iSceneID = -1 INT iPedToHeadTrack = -1 VECTOR vCoordToHeadTrack INT iNightClubPedID = -1 BOOL bHasSyncSceneStarted BOOL bHeadTrackPlayer INT iCurrentWalkSequence = -1 BOOL bCurrentlyHeadTrackingPlayer = FALSE //SCRIPT_TIMER stTimerBeat1 //SCRIPT_TIMER stTimerBeat2 //BOOL bSTB1 //FLOAT fNumberOfSecondsBetweenBeatAnim FLOAT fPhaseRate VECTOR vWalkToCoordPos VECTOR vWalkToCoordRot BOOL bAnimPlayed INT iPedSpeechBitset SCRIPT_TIMER stIdleSpeechTimer NC_PED_SPEECH_ENUM eLastSpeech[2] INT iAnimDuration INT iAnimStartTime INT iAnimOffset INT iLastProcessTime INT iNCPedType = -1 INT iOffsetNCPedId = -1 INT iOffsetNCPedChildrenId[MAX_NUMBER_NC_PED_OFFSET_CHILDREN] VECTOR vPos FLOAT fHeading INT iDanceTransitionVariation = -1 INT iDanceTransitionVariation2 = -1 // NIGHTCLUB_AUDIO_TAGS eDanceCurrentIntensity INT iFacialAnimDuration = 0 INT iFacialAnimStartTime = 0 INT iFacialAnimFrameDelay = 0 INT iAnimVarient = -1 BOOL bUsePassiveHeadTrack SCRIPT_TIMER stPassiveHeadTrack #IF IS_DEBUG_BUILD TEXT_LABEL_63 sDebugAnimClipName //TEXT_LABEL_31 sDebugAnimFacialClipName #ENDIF ENDSTRUCT CONST_INT NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR 0 CONST_INT NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE 1 CONST_INT NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA 2 CONST_INT NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA 3 CONST_INT NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK 4 CONST_INT NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE_CHECK 5 CONST_INT NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA_CHECK 6 CONST_INT NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA_CHECK 7 CONST_INT NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY 8 CONST_INT NC_CULL_TRIGGER_HALLWAY 0 CONST_INT NC_CULL_TRIGGER_TOILET 5 CONST_INT NC_CULL_TRIGGER_CHECK 5 // check along with toilet CONST_INT NC_CULL_TRIGGER_MAX 6 #IF IS_DEBUG_BUILD STRUCT DEBUG_NIGHT_CLUB_SPEECH_STRUCT NC_PED_TYPES ePeds[5] TEXT_LABEL_31 tl31Context[5] TIME_DATATYPE Timer[5] ENDSTRUCT #ENDIF ENUM NC_DJ_ANIM_HEADPHONE_STATE DJ_ANIM_HEADPHONE_STATE_OFF, DJ_ANIM_HEADPHONE_STATE_HEAD, DJ_ANIM_HEADPHONE_STATE_NECK ENDENUM #IF IS_DEBUG_BUILD FUNC STRING GET_STRING_FOR_DJ_ANIM_HEADPHONE_STATE(NC_DJ_ANIM_HEADPHONE_STATE eState) SWITCH eState CASE DJ_ANIM_HEADPHONE_STATE_OFF RETURN "DJ_ANIM_HEADPHONE_STATE_OFF" CASE DJ_ANIM_HEADPHONE_STATE_HEAD RETURN "DJ_ANIM_HEADPHONE_STATE_HEAD" CASE DJ_ANIM_HEADPHONE_STATE_NECK RETURN "DJ_ANIM_HEADPHONE_STATE_NECK" ENDSWITCH RETURN "" ENDFUNC #ENDIF ENUM NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE PEDS_DJ_CUTSCENE_STAGE_INITIALISE, PEDS_DJ_CUTSCENE_STAGE_ASSET_REQUEST, PEDS_DJ_CUTSCENE_STAGE_LOAD, PEDS_DJ_CUTSCENE_STAGE_FADEIN, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER, PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH, PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2, PEDS_DJ_CUTSCENE_STAGE_PLAY_START, PEDS_DJ_CUTSCENE_STAGE_CLEANUP, PEDS_DJ_CUTSCENE_STAGE_FADEIN_END ENDENUM #IF IS_DEBUG_BUILD FUNC STRING GET_STRING_FOR_DJ_CUTSCENE_STAGE(NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage) SWITCH eStage CASE PEDS_DJ_CUTSCENE_STAGE_INITIALISE RETURN "PEDS_DJ_CUTSCENE_STAGE_INITIALISE" CASE PEDS_DJ_CUTSCENE_STAGE_ASSET_REQUEST RETURN "PEDS_DJ_CUTSCENE_STAGE_ASSET_REQUEST" CASE PEDS_DJ_CUTSCENE_STAGE_LOAD RETURN "PEDS_DJ_CUTSCENE_STAGE_LOAD" CASE PEDS_DJ_CUTSCENE_STAGE_FADEIN RETURN "PEDS_DJ_CUTSCENE_STAGE_FADEIN" CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END RETURN "PEDS_DJ_CUTSCENE_STAGE_PLAY_END" CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER RETURN "PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER" CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH RETURN "PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH" CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 RETURN "PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2" CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_START RETURN "PEDS_DJ_CUTSCENE_STAGE_PLAY_START" CASE PEDS_DJ_CUTSCENE_STAGE_CLEANUP RETURN "PEDS_DJ_CUTSCENE_STAGE_CLEANUP" CASE PEDS_DJ_CUTSCENE_STAGE_FADEIN_END RETURN "PEDS_DJ_CUTSCENE_STAGE_FADEIN_END" ENDSWITCH RETURN "" ENDFUNC #ENDIF ENUM NIGHTCLUB_PEDS_DJ_CUTSCENE_PED PEDS_DJ_CUTSCENE_PED_DJ_FROM_1, PEDS_DJ_CUTSCENE_PED_DJ_FROM_2, PEDS_DJ_CUTSCENE_PED_DJ_TO_1, PEDS_DJ_CUTSCENE_PED_DJ_TO_2, PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1, PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2, PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3, PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1, PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2, PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3, PEDS_DJ_CUTSCENE_PED_CROWD_M_1, PEDS_DJ_CUTSCENE_PED_CROWD_M_2, PEDS_DJ_CUTSCENE_PED_CROWD_M_3, PEDS_DJ_CUTSCENE_PED_CROWD_M_4, PEDS_DJ_CUTSCENE_PED_CROWD_M_5, PEDS_DJ_CUTSCENE_PED_CROWD_F_1, PEDS_DJ_CUTSCENE_PED_CROWD_F_2, PEDS_DJ_CUTSCENE_PED_CROWD_F_3, PEDS_DJ_CUTSCENE_PED_CROWD_F_4, PEDS_DJ_CUTSCENE_PED_CROWD_F_5, PEDS_DJ_CUTSCENE_PED_MAX ENDENUM #IF IS_DEBUG_BUILD FUNC STRING GET_STRING_FOR_DJ_CUTSCENE_PED(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED eEntity) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "PEDS_DJ_CUTSCENE_PED_DJ_FROM_1" CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 RETURN "PEDS_DJ_CUTSCENE_PED_DJ_FROM_2" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "PEDS_DJ_CUTSCENE_PED_DJ_TO_1" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 RETURN "PEDS_DJ_CUTSCENE_PED_DJ_TO_2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 RETURN "PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 RETURN "PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_M_1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_M_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_3 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_M_3" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_4 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_M_4" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_5 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_M_5" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_F_1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_F_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_3 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_F_3" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_4 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_F_4" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_5 RETURN "PEDS_DJ_CUTSCENE_PED_CROWD_F_5" ENDSWITCH RETURN "" ENDFUNC #ENDIF ENUM NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1, PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2, PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3, PEDS_DJ_CUTSCENE_OBJECT_BEER_1, PEDS_DJ_CUTSCENE_OBJECT_GLASS_1, PEDS_DJ_CUTSCENE_OBJECT_GLASS_2, PEDS_DJ_CUTSCENE_OBJECT_MAX ENDENUM #IF IS_DEBUG_BUILD FUNC STRING GET_STRING_FOR_DJ_CUTSCENE_OBJECT(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT eEntity) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 RETURN "PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 RETURN "PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 RETURN "PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3" ENDSWITCH RETURN "" ENDFUNC #ENDIF STRUCT NIGHTCLUB_PEDS_DJ_CUTSCENE_STRUCT NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eDJSwitchSceneState SCRIPT_TIMER stFailSafe SCRIPT_TIMER stIdleFallBack BOOL bIdleTimeout PED_INDEX pPeds[PEDS_DJ_CUTSCENE_PED_MAX] OBJECT_INDEX oObjects[PEDS_DJ_CUTSCENE_OBJECT_MAX] CAMERA_INDEX cCam INT iSyncSceneID ENDSTRUCT STRUCT NIGHT_CLUB_STRUCT NIGHT_CLUB_PEDS activityPeds[MAX_NUMBER_OF_NIGHTCLUB_PEDS]//MAX_NUMBER_OF_NIGHTCLUB_PEDS INT iNumberOfRunningAnims INT iCurrentStationID INT iCurrentAudioIntensityTagID //INT iStaggerID INT iNumberOfCulledPeds INT iNightClubPedIDsReverse[MAX_NUMBER_OF_NIGHTCLUB_PED_DATA] INT iPlayerCullCheckBS BOOL bStageGroupDancingStarted INT iSceneIDDancingStage BOOL bDoProcessEveryFrame[MAX_NUMBER_OF_NIGHTCLUB_PEDS] INT iProcessStagger INT iCreateStagger INT iStaggerPerFrame = 5 BOOL bDoStagger = TRUE BOOL bInitialStagger = TRUE INT iExpectedTimeToProcessStaggerPed INT iProcessedThisFrame INT iTotalExpectedPedsInMainHall INT iTotalReservedMissionPeds INT iTotalCullablePeds INT iTotalCustomers SCRIPT_TIMER stPedReadyToViewTimer SCRIPT_TIMER stPedReadyBailTimer BOOL bPlayDjEnterCutscene INT iDjEnterCutsceneStage SCRIPT_TIMER stDjEnterCutsceneTimer OBJECT_INDEX eiCloakRoomStool OBJECT_INDEX eiTonyChair MODEL_NAMES mLazlowStoolRemove BOOL bPlayingDanceRadio BOOL bResetRadioToStart = TRUE INT iCachedDJSpeechCheck = -1 INT iLazlowCelebStage SCRIPT_TIMER stLazlowCelebStage #IF IS_DEBUG_BUILD BOOL bDrawDebugState BOOL bDrawDebugPedIds BOOL bDrawDebugPedSpeech INT iDrawStateDebug INT iNightclubPedToHighlight = -1 DEBUG_NIGHT_CLUB_SPEECH_STRUCT sDebugSpeech BOOL bStartDebugMusic INT iStationName, iTrackStartTime FLOAT fDebugSyncSpeed = -1.0 #ENDIF INT iNCPedCullCheckBS[MAX_NUMBER_OF_NIGHTCLUB_PED_DATA] BOOL bHiddenForMocap = FALSE SCRIPT_TIMER stSolUnhideTimer INT iCompletedSetup = -1 structPedsForConversation sPedsForConversation INT iCullTriggerStagger = 0 NIGHTCLUB_PEDS_DJ_CUTSCENE_STRUCT sDJCutscene INT iMixAnimTime INT iMixAnimCatchupTime BOOL bInitialDJAnim BOOL bUseCameraForCulling INT iLazlowPedID = -1 INT iDJPedID1 = -1 INT iDJPedID2 = -1 INT iTonyPedID = -1 TIME_DATATYPE resetTimer SCRIPT_TIMER stDJSwitchTransitionSoundReset BOOL bHavePedsBeenTasked ENDSTRUCT CONST_INT MAX_NUMBER_OF_NETWORKED_NIGHTCLUB_PEDS 12 STRUCT SERVER_BROADCAST_DATA ACT_NIGHTCLUB_ACT_STATE ncState SCRIPT_TIMER stMusicTimer NIGHTCLUB_DJ_ID djID INT iHostCompletedSetup = -1 //INT iPackedDrawable[MAX_NUMBER_OF_NIGHTCLUB_PED_DATA] //INT iPackedTexture[MAX_NUMBER_OF_NIGHTCLUB_PED_DATA] INT iToiletLayout = -1 INT iHallwayLayout = -1 INT iMainArea = -1 INT iMainAreaVariation = -1 INT iTonyPosition = -1 INT iLazlowPosition = -1 INT iClientele = -1 INT iClienteleVariation = -1 INT iBSNightclubSpeech ENDSTRUCT STRUCT PLAYER_BROADCAST_DATA BOOL bIsPlayerCapsuleResized ENDSTRUCT PROC SetNCPosActStage(NIGHT_CLUB_STRUCT &nightClubStruct, #IF IS_DEBUG_BUILD INT iPedID, #ENDIF INT iArrayIndex, ACT_NIGHTCLUB_PED_STATE eStageNext) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: pedID: ", iPedID, " SetNCPosActStage for - from ", actNCPosActStateString(nightClubStruct.activityPeds[iArrayIndex].ePosActState), " to ", actNCPosActStateString(eStageNext)) // DEBUG_PRINTCALLSTACK() #ENDIF nightClubStruct.activityPeds[iArrayIndex].ePosActState = eStageNext ENDPROC STRUCT NC_ACTIVITY_ANIM_SEQUENCE ACTIVITY_ANIM_SYNC_SCENE_COMPONENT_SCENE activitySyncScene ACTIVITY_ANIM_SYNC_SCENE_COMPONENT_ENTITY activitySyncSceneEntity[iNCMaxSyncSceneEntityInSequence] ACTIVITY_ANIM_SYNC_SCENE_COMPONENT_PED activitySyncScenePed[iNCMaxSyncScenePedInSequence] ENDSTRUCT STRUCT NC_ACTIVITY_MAIN VECTOR vActPosOrigin FLOAT fActHeading BOOL bActivityUsesAnimClipTags NC_ACTIVITY_ANIM_SEQUENCE activityAnimSequence ANIM_STATE animState[iMaxNumberOfAnimStates] INT iCurrentAnimState INT iCurrentAnimSequenceID ACTIVITY_SLOT_NAMES eActivity INT iCurrentProperty BOOL bActivityScript = FALSE INT iEndAnimID INT iStartAnimID // GET_OBJECTS_STRUCT getObjectsStruct[iNCMaxSyncSceneEntityInSequence] MODEL_NAMES objectModelName[iNCMaxSyncSceneEntityInSequence] OBJECT_INDEX oiSceneObjects[iNCMaxSyncSceneEntityInSequence] BOOL bInitalAnimPlayed = FALSE BOOL bRandomiseAnimStartClip = FALSE BOOL bBlockRecording = FALSE BOOL bTaskAnim = FALSE BOOL bClothingStored ENDSTRUCT PROC SetNCActStage(ACT_NIGHTCLUB_ACT_STATE iStageNext) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "SetActStage - from ", actNCStateString(g_ncState), " to ", actNCStateString(iStageNext)) // DEBUG_PRINTCALLSTACK() #ENDIF g_ncState = iStageNext ENDPROC PROC RECREATE_NIGHTCLUB_PEDS() SetNCActStage(NC_STAGE_RECREATE) ENDPROC FUNC INT RandomSeed() RETURN NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) ENDFUNC FUNC MODEL_NAMES GetClienteleModel(BOOL bFemale, INT iClientele) IF (bFemale) SWITCH iClientele CASE 0 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_F_Y_ClubCust_01")) CASE 1 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_F_Y_ClubCust_03")) CASE 2 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_F_Y_ClubCust_02")) ENDSWITCH ELSE SWITCH iClientele CASE 0 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_M_Y_ClubCust_01")) CASE 1 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_M_Y_ClubCust_03")) CASE 2 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_M_Y_ClubCust_02")) ENDSWITCH ENDIF // default IF (bFemale) RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_F_Y_ClubCust_01")) ENDIF RETURN INT_TO_ENUM(MODEL_NAMES, HASH("A_M_Y_ClubCust_01")) ENDFUNC FUNC MODEL_NAMES GET_CLIENTELE_MODEL(BOOL bFemale) RETURN GetClienteleModel(bFemale, g_iNightClubClientele) ENDFUNC FUNC INT GetIntInRangeFromSeed(INT iMinInclusive, INT iMaxNonInclusive, INT iSeedAddition=0) //PRINTLN("GetIntInRangeFromSeed called with ", iMinInclusive, ", ", iMaxNonInclusive, ", ", iSeedAddition) INT iRange = iMaxNonInclusive - iMinInclusive IF (iRange <= 0) RETURN iMinInclusive ENDIF INT iSeed = RandomSeed() INT iSeedTotal = iSeed + iSeedAddition INT iMod = iSeedTotal % iRange //PRINTLN("GetIntInRangeFromSeed iRange ", iRange, " iSeed ", iSeed, " iSeedTotal ", iSeedTotal, ", iMod ", iMod) RETURN iMod + iMinInclusive ENDFUNC FUNC INT GET_NUMBER_OF_NIGHTCLUB_PEDS_BASED_OF_POPULARITY(INT iPercentagePopularity = -1) //TODO - remove this IF (iPercentagePopularity = -1) iPercentagePopularity = FLOOR(GET_LOCAL_CLUB_POPULARITY()) ENDIF INT iReturn IF iPercentagePopularity >= 0 AND iPercentagePopularity <= 20 iReturn = 50 ENDIF IF iPercentagePopularity >= 20 AND iPercentagePopularity <= 40 iReturn = 70 ENDIF IF iPercentagePopularity >= 40 AND iPercentagePopularity <= 60 iReturn = 90 ENDIF IF iPercentagePopularity >= 60 AND iPercentagePopularity <= 80 iReturn = 110 ENDIF IF iPercentagePopularity >= 80 AND iPercentagePopularity <= 90 iReturn = 125 ENDIF IF iPercentagePopularity >= 90 iReturn = 125 ENDIF // CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NUMBER_OF_NIGHTCLUB_PEDS_BASED_OF_POPULARITY: iPercentagePopularity: ",iPercentagePopularity, " return: ", iReturn) RETURN iReturn ENDFUNC PROC SET_NUMBER_OF_PEDS_FROM_POPULARITY(INT iPercentagePopularity) IF iPercentagePopularity <= 20 g_iNightClubPedsMainAreaLayout = 2 ELIF iPercentagePopularity <= 40 g_iNightClubPedsMainAreaLayout = 3 ELIF iPercentagePopularity <= 60 g_iNightClubPedsMainAreaLayout = 4 ELIF iPercentagePopularity <= 80 g_iNightClubPedsMainAreaLayout = 0 ELSE g_iNightClubPedsMainAreaLayout = 1 ENDIF ENDPROC /// PURPOSE: Do necessary pre game start ini PROC PROCESS_PRE_GAME(SERVER_BROADCAST_DATA &ServerBD, PLAYER_BROADCAST_DATA &PlayerBD[NUM_NETWORK_PLAYERS]) // // wait for any previous instance of this script to terminate CDEBUG1LN(DEBUG_NET_PED_DANCING, "PROCESS_PRE_GAME ") // changed the following to a while with the 'TRY' function to fix url:bugstar:4877273 WHILE NOT NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT(NUM_NETWORK_PLAYERS, FALSE, g_iNightClubPedScriptInstance) PRINTLN("nightclubpeds - PROCESS_PRE_GAME waiting to be able to launch") WAIT(0) ENDWHILE g_iNightClubPedScriptInstance++ HANDLE_NET_SCRIPT_INITIALISATION() NETWORK_REGISTER_HOST_BROADCAST_VARIABLES(ServerBD, SIZE_OF(ServerBD)) NETWORK_REGISTER_PLAYER_BROADCAST_VARIABLES(PlayerBD, SIZE_OF(PlayerBD)) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE CREATE_SCRIPT_PROFILER_WIDGET() #ENDIF #ENDIF ENDPROC //2 FUNC BOOL GET_TRANSITION_FROM_ANIM_VARIENT(INT iVarient) RETURN (iVarient % 2) = 1 ENDFUNC //2 FUNC INT GET_VARIATION_FROM_ANIM_VARIENT(INT iVarient) RETURN ((iVarient % 4) / 2) + 1 ENDFUNC //5 FUNC NIGHTCLUB_AUDIO_TAGS GET_INTENSITY_FROM_ANIM_VARIENT(INT iVarient) RETURN INT_TO_ENUM(NIGHTCLUB_AUDIO_TAGS, (iVarient % 20) / 4) ENDFUNC //5 FUNC NIGHTCLUB_AUDIO_TAGS GET_NEXT_INTENSITY_FROM_ANIM_VARIENT(INT iVarient) RETURN INT_TO_ENUM(NIGHTCLUB_AUDIO_TAGS, (iVarient % 100) / 20) ENDFUNC //? FUNC INT GET_LENGTH_FROM_ANIM_VARIENT(INT iVarient) RETURN iVarient / 100 ENDFUNC FUNC INT GET_ANIM_VARIENT(INT iLength, NIGHTCLUB_AUDIO_TAGS eIntensity, NIGHTCLUB_AUDIO_TAGS eNextIntensity, INT iVariation, BOOL bTransition) INT iVarient = (iLength * 100) + (ENUM_TO_INT(eNextIntensity) * 20) + (ENUM_TO_INT(eIntensity) * 4) + ((iVariation - 1) * 2) IF bTransition iVarient++ ENDIF RETURN iVarient ENDFUNC FUNC STRING GET_NC_DJ_ANIM_CLIP_BASE(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) SWITCH eActivity CASE AC_SLOT_BLACK_MADONNA SWITCH iSequence CASE 0 RETURN "POSE_A_LOOP_INTRO" CASE 1 RETURN "POSE_A_LOOP_MEDIUM" CASE 2 RETURN "POSE_A_IDLE_C" CASE 3 RETURN "POSE_A_IDLE_A" CASE 4 RETURN "POSE_A_LOOP_LARGE" CASE 5 RETURN "POSE_A_TRANS_POSE_C" CASE 6 RETURN "POSE_C_IDLE_A" CASE 7 RETURN "POSE_C_IDLE_B" CASE 8 RETURN "POSE_C_TRANS_DANCE_B" CASE 9 RETURN "DANCE_B_IDLE_C" CASE 10 RETURN "DANCE_B_TRANS_POSE_C" CASE 11 RETURN "POSE_C_LOOP_SMALL" CASE 12 RETURN "POSE_C_LOOP_SMALL" CASE 13 RETURN "POSE_C_TRANS_POSE_B" CASE 14 RETURN "POSE_B_LONG_TRANS_DRINK_DOWN" CASE 15 RETURN "DRINK_DOWN_LONG_TRANS_POSE_B" CASE 16 RETURN "POSE_B_IDLE_F" CASE 17 RETURN "POSE_B_IDLE_G" CASE 18 RETURN "POSE_B_IDLE_D" CASE 19 RETURN "POSE_B_IDLE_H" CASE 20 RETURN "POSE_B_IDLE_E" CASE 21 RETURN "POSE_B_LOOP_SMALL" CASE 22 RETURN "POSE_B_IDLE_F" CASE 23 RETURN "POSE_B_IDLE_B" CASE 24 RETURN "POSE_B_LOOP_SMALL" CASE 25 RETURN "POSE_B_IDLE_C" CASE 26 RETURN "POSE_B_LOOP_TINY" CASE 27 RETURN "POSE_B_IDLE_C" CASE 28 RETURN "POSE_B_TRANS_POSE_C" CASE 29 RETURN "POSE_C_LOOP_SMALL" CASE 30 RETURN "POSE_C_IDLE_A" CASE 31 RETURN "POSE_C_LONG_TRANS_POSE_B" CASE 32 RETURN "POSE_B_IDLE_J" CASE 33 RETURN "POSE_B_IDLE_B" CASE 34 RETURN "POSE_B_IDLE_D" CASE 35 RETURN "POSE_B_IDLE_I" CASE 36 RETURN "POSE_B_LONG_TRANS_DANCE_A" CASE 37 RETURN "DANCE_A_LOOP_TRANS_POSE_B" CASE 38 RETURN "POSE_B_TRANS_POSE_C" CASE 39 RETURN "POSE_C_LOOP_TINY" CASE 40 RETURN "POSE_C_IDLE_A" CASE 41 RETURN "POSE_C_IDLE_B" CASE 42 RETURN "POSE_C_IDLE_F" CASE 43 RETURN "POSE_C_IDLE_A" CASE 44 RETURN "POSE_C_IDLE_B" CASE 45 RETURN "POSE_C_LOOP_TINY" CASE 46 RETURN "POSE_C_TRANS_POSE_E" CASE 47 RETURN "POSE_E_LOOP_TINY" CASE 48 RETURN "POSE_E_IDLE_A" CASE 49 RETURN "POSE_E_LOOP_TINY" CASE 50 RETURN "POSE_E_IDLE_B" CASE 51 RETURN "POSE_E_LOOP_TINY" CASE 52 RETURN "POSE_E_IDLE_E" CASE 53 RETURN "POSE_E_IDLE_D" CASE 54 RETURN "POSE_E_TRANS_POSE_C" CASE 55 RETURN "POSE_C_IDLE_B" CASE 56 RETURN "POSE_C_TRANS_POSE_E" CASE 57 RETURN "POSE_E_IDLE_C" CASE 58 RETURN "POSE_E_LOOP_MEDIUM" CASE 59 RETURN "POSE_E_IDLE_A" CASE 60 RETURN "POSE_E_TRANS_POSE_C" CASE 61 RETURN "POSE_C_IDLE_E" CASE 62 RETURN "POSE_C_IDLE_F" CASE 63 RETURN "POSE_C_LOOP_SMALL" CASE 64 RETURN "POSE_C_LOOP_SMALL" CASE 65 RETURN "POSE_C_LOOP_SMALL" CASE 66 RETURN "POSE_C_IDLE_C" CASE 67 RETURN "POSE_C_LOOP_SMALL" CASE 68 RETURN "POSE_C_LOOP_SMALL" CASE 69 RETURN "POSE_C_TRANS_POSE_A" CASE 70 RETURN "POSE_A_IDLE_H" CASE 71 RETURN "POSE_A_IDLE_C" CASE 72 RETURN "POSE_A_IDLE_G" CASE 73 RETURN "POSE_A_LOOP_LARGE" CASE 74 RETURN "POSE_A_IDLE_C" CASE 75 RETURN "POSE_A_LOOP_MEDIUM" CASE 76 RETURN "POSE_A_LOOP_LARGE" CASE 77 RETURN "POSE_A_LOOP_SMALL" CASE 78 RETURN "POSE_A_IDLE_D" CASE 79 RETURN "POSE_A_IDLE_F" CASE 80 RETURN "POSE_A_IDLE_A" CASE 81 RETURN "POSE_A_IDLE_B" CASE 82 RETURN "POSE_A_TRANS_DRINK_DOWN" CASE 83 RETURN "DRINK_DOWN_TRANS_POSE_B" CASE 84 RETURN "POSE_B_IDLE_D" CASE 85 RETURN "POSE_B_IDLE_K" CASE 86 RETURN "POSE_B_IDLE_G" CASE 87 RETURN "POSE_B_IDLE_H" CASE 88 RETURN "POSE_B_LOOP_SMALL" CASE 89 RETURN "POSE_B_IDLE_D" CASE 90 RETURN "POSE_B_LOOP_SMALL" CASE 91 RETURN "POSE_B_IDLE_A" CASE 92 RETURN "POSE_B_IDLE_I" CASE 93 RETURN "POSE_B_IDLE_J" CASE 94 RETURN "POSE_B_IDLE_G" CASE 95 RETURN "POSE_B_LOOP_TINY" CASE 96 RETURN "POSE_B_LONG_TRANS_DANCE_A" CASE 97 RETURN "DANCE_A_LOOP_TRANS_POSE_B" CASE 98 RETURN "POSE_B_IDLE_C" CASE 99 RETURN "POSE_B_IDLE_E" ENDSWITCH SWITCH iSequence CASE 100 RETURN "POSE_B_LONG_TRANS_POSE_A" CASE 101 RETURN "POSE_A_IDLE_D" CASE 102 RETURN "POSE_A_IDLE_A" CASE 103 RETURN "POSE_A_IDLE_C" CASE 104 RETURN "POSE_A_TRANS_POSE_E" CASE 105 RETURN "POSE_E_LOOP_TINY" CASE 106 RETURN "POSE_E_LOOP_MEDIUM" CASE 107 RETURN "POSE_E_LOOP_TINY" CASE 108 RETURN "POSE_E_IDLE_E" CASE 109 RETURN "POSE_E_LOOP_TINY" CASE 110 RETURN "POSE_E_IDLE_A" CASE 111 RETURN "POSE_E_LOOP_TINY" CASE 112 RETURN "POSE_E_LOOP_SMALL" CASE 113 RETURN "POSE_E_LOOP_TINY" CASE 114 RETURN "POSE_E_TRANS_POSE_C" CASE 115 RETURN "POSE_C_LOOP_SMALL" CASE 116 RETURN "POSE_C_IDLE_B" CASE 117 RETURN "POSE_C_IDLE_F" CASE 118 RETURN "POSE_C_IDLE_A" CASE 119 RETURN "POSE_C_IDLE_B" CASE 120 RETURN "POSE_C_LOOP_SMALL" CASE 121 RETURN "POSE_C_IDLE_B" CASE 122 RETURN "POSE_C_TRANS_POSE_A" CASE 123 RETURN "POSE_A_IDLE_F" CASE 124 RETURN "POSE_A_LOOP_MEDIUM" CASE 125 RETURN "POSE_A_IDLE_C" CASE 126 RETURN "POSE_A_IDLE_A" CASE 127 RETURN "POSE_A_LOOP_LARGE" CASE 128 RETURN "POSE_A_TRANS_POSE_C" CASE 129 RETURN "POSE_C_LOOP_SMALL" CASE 130 RETURN "POSE_C_TRANS_POSE_D" CASE 131 RETURN "POSE_D_IDLE_B" CASE 132 RETURN "POSE_D_IDLE_A" CASE 133 RETURN "POSE_D_LOOP_SMALL" CASE 134 RETURN "POSE_D_TRANS_POSE_E" CASE 135 RETURN "POSE_E_TRANS_POSE_C" CASE 136 RETURN "POSE_C_TRANS_POSE_B" CASE 137 RETURN "POSE_B_LOOP_SMALL" CASE 138 RETURN "POSE_B_IDLE_B" CASE 139 RETURN "POSE_B_IDLE_G" CASE 140 RETURN "POSE_B_IDLE_A" CASE 141 RETURN "POSE_B_IDLE_E" CASE 142 RETURN "POSE_B_IDLE_H" CASE 143 RETURN "POSE_B_IDLE_K" CASE 144 RETURN "POSE_B_IDLE_F" CASE 145 RETURN "POSE_B_IDLE_G" CASE 146 RETURN "POSE_B_TRANS_POSE_C" CASE 147 RETURN "POSE_C_LOOP_SMALL" CASE 148 RETURN "POSE_C_IDLE_C" CASE 149 RETURN "POSE_C_LONG_TRANS_POSE_E" CASE 150 RETURN "POSE_E_LOOP_SMALL" CASE 151 RETURN "POSE_E_LOOP_TINY" CASE 152 RETURN "POSE_E_TRANS_POSE_C" CASE 153 RETURN "POSE_C_TRANS_DANCE_B" CASE 154 RETURN "DANCE_B_IDLE_A" CASE 155 RETURN "DANCE_B_IDLE_B" CASE 156 RETURN "DANCE_B_IDLE_C" CASE 157 RETURN "DANCE_B_TRANS_POSE_C" CASE 158 RETURN "POSE_C_IDLE_F" CASE 159 RETURN "POSE_C_IDLE_B" CASE 160 RETURN "POSE_C_TRANS_POSE_A" CASE 161 RETURN "POSE_A_IDLE_B" CASE 162 RETURN "POSE_A_IDLE_G" CASE 163 RETURN "POSE_A_LOOP_SMALL" CASE 164 RETURN "POSE_A_IDLE_D" CASE 165 RETURN "POSE_A_IDLE_H" CASE 166 RETURN "POSE_A_IDLE_B" CASE 167 RETURN "POSE_A_IDLE_A" CASE 168 RETURN "POSE_A_IDLE_C" CASE 169 RETURN "POSE_A_LOOP_LARGE" CASE 170 RETURN "POSE_A_LOOP_MEDIUM" CASE 171 RETURN "POSE_A_LOOP_LARGE" CASE 172 RETURN "POSE_A_IDLE_C" CASE 173 RETURN "POSE_A_LOOP_TINY" CASE 174 RETURN "POSE_A_IDLE_F" CASE 175 RETURN "POSE_A_TRANS_DRINK_DOWN" CASE 176 RETURN "DRINK_DOWN_TRANS_POSE_B" CASE 177 RETURN "POSE_B_IDLE_H" CASE 178 RETURN "POSE_B_IDLE_K" CASE 179 RETURN "POSE_B_LOOP_LARGE" CASE 180 RETURN "POSE_B_IDLE_B" CASE 181 RETURN "POSE_B_LOOP_LARGE" CASE 182 RETURN "POSE_B_IDLE_I" CASE 183 RETURN "POSE_B_IDLE_J" CASE 184 RETURN "POSE_B_IDLE_D" CASE 185 RETURN "POSE_B_LOOP_SMALL" CASE 186 RETURN "POSE_B_IDLE_C" CASE 187 RETURN "POSE_B_LOOP_SMALL" CASE 188 RETURN "POSE_B_IDLE_D" CASE 189 RETURN "POSE_B_LOOP_LARGE" CASE 190 RETURN "POSE_B_LONG_TRANS_DANCE_A" CASE 191 RETURN "DANCE_A_LOOP_TRANS_POSE_B" CASE 192 RETURN "POSE_B_LOOP_SMALL" CASE 193 RETURN "POSE_B_IDLE_F" CASE 194 RETURN "POSE_B_IDLE_A" CASE 195 RETURN "POSE_B_LOOP_LARGE" CASE 196 RETURN "POSE_B_TRANS_POSE_C" CASE 197 RETURN "POSE_C_TRANS_POSE_E" CASE 198 RETURN "POSE_E_LOOP_SMALL" CASE 199 RETURN "POSE_E_IDLE_A" ENDSWITCH SWITCH iSequence CASE 200 RETURN "POSE_E_IDLE_D" CASE 201 RETURN "POSE_E_LOOP_LARGE" CASE 202 RETURN "POSE_E_IDLE_E" CASE 203 RETURN "POSE_E_TRANS_POSE_C" CASE 204 RETURN "POSE_C_LOOP_SMALL" CASE 205 RETURN "POSE_C_LOOP_SMALL" CASE 206 RETURN "POSE_C_IDLE_B" CASE 207 RETURN "POSE_C_LOOP_SMALL" CASE 208 RETURN "POSE_C_IDLE_F" CASE 209 RETURN "POSE_C_LOOP_SMALL" CASE 210 RETURN "POSE_C_IDLE_E" CASE 211 RETURN "POSE_C_LOOP_SMALL" CASE 212 RETURN "POSE_C_TRANS_POSE_B" CASE 213 RETURN "POSE_B_LOOP_TINY" CASE 214 RETURN "POSE_B_LOOP_SMALL" CASE 215 RETURN "POSE_B_IDLE_A" CASE 216 RETURN "POSE_B_LOOP_SMALL" CASE 217 RETURN "POSE_B_IDLE_D" CASE 218 RETURN "POSE_B_LOOP_SMALL" CASE 219 RETURN "POSE_B_LOOP_TINY" CASE 220 RETURN "POSE_B_IDLE_G" CASE 221 RETURN "POSE_B_IDLE_C" CASE 222 RETURN "POSE_B_IDLE_A" CASE 223 RETURN "POSE_B_TRANS_POSE_A" CASE 224 RETURN "POSE_A_TRANS_DRINK_DOWN" CASE 225 RETURN "DRINK_DOWN_TRANS_POSE_B" CASE 226 RETURN "POSE_B_TRANS_POSE_C" CASE 227 RETURN "POSE_C_TRANS_POSE_D" CASE 228 RETURN "POSE_D_IDLE_B" CASE 229 RETURN "POSE_D_IDLE_A" CASE 230 RETURN "POSE_D_LOOP_SMALL" CASE 231 RETURN "POSE_D_TRANS_POSE_E" CASE 232 RETURN "POSE_E_LOOP_TINY" CASE 233 RETURN "POSE_E_LOOP_MEDIUM" CASE 234 RETURN "POSE_E_LOOP_TINY" CASE 235 RETURN "POSE_E_IDLE_B" CASE 236 RETURN "POSE_E_LOOP_TINY" CASE 237 RETURN "POSE_E_IDLE_C" CASE 238 RETURN "POSE_E_LOOP_TINY" CASE 239 RETURN "POSE_E_TRANS_POSE_C" CASE 240 RETURN "POSE_C_IDLE_C" CASE 241 RETURN "POSE_C_IDLE_A" CASE 242 RETURN "POSE_C_IDLE_B" CASE 243 RETURN "POSE_C_LOOP_SMALL" CASE 244 RETURN "POSE_C_IDLE_E" CASE 245 RETURN "POSE_C_TRANS_POSE_A" CASE 246 RETURN "POSE_A_IDLE_C" CASE 247 RETURN "POSE_A_LOOP_MEDIUM" CASE 248 RETURN "POSE_A_IDLE_G" CASE 249 RETURN "POSE_A_LOOP_LARGE" CASE 250 RETURN "POSE_A_LOOP_MEDIUM" CASE 251 RETURN "POSE_A_IDLE_C" CASE 252 RETURN "POSE_A_LOOP_TINY" CASE 253 RETURN "POSE_A_IDLE_D" CASE 254 RETURN "POSE_A_LOOP_TINY" CASE 255 RETURN "POSE_A_TRANS_POSE_C" CASE 256 RETURN "POSE_C_IDLE_D" CASE 257 RETURN "POSE_C_IDLE_A" CASE 258 RETURN "POSE_C_LOOP_SMALL" CASE 259 RETURN "POSE_C_IDLE_B" CASE 260 RETURN "POSE_C_IDLE_A" CASE 261 RETURN "POSE_C_LONG_TRANS_POSE_E" CASE 262 RETURN "POSE_E_LOOP_TINY" CASE 263 RETURN "POSE_E_IDLE_A" CASE 264 RETURN "POSE_E_LOOP_TINY" CASE 265 RETURN "POSE_E_LOOP_MEDIUM" CASE 266 RETURN "POSE_E_LOOP_TINY" CASE 267 RETURN "POSE_E_LOOP_TINY" CASE 268 RETURN "POSE_E_IDLE_A" CASE 269 RETURN "POSE_E_LOOP_TINY" CASE 270 RETURN "POSE_E_LOOP_TINY" CASE 271 RETURN "POSE_E_LOOP_SMALL" CASE 272 RETURN "POSE_E_LOOP_TINY" CASE 273 RETURN "POSE_E_LOOP_TINY" CASE 274 RETURN "POSE_E_IDLE_B" CASE 275 RETURN "POSE_E_LOOP_TINY" CASE 276 RETURN "POSE_E_LOOP_TINY" CASE 277 RETURN "POSE_E_TRANS_POSE_C" CASE 278 RETURN "POSE_C_LOOP_SMALL" CASE 279 RETURN "POSE_C_IDLE_E" CASE 280 RETURN "POSE_C_LOOP_SMALL" CASE 281 RETURN "POSE_C_LOOP_TINY" CASE 282 RETURN "POSE_C_TRANS_POSE_D" CASE 283 RETURN "POSE_D_LOOP_SMALL" CASE 284 RETURN "POSE_D_IDLE_B" CASE 285 RETURN "POSE_D_LOOP_SMALL" CASE 286 RETURN "POSE_D_TRANS_POSE_E" CASE 287 RETURN "POSE_E_LOOP_MEDIUM" CASE 288 RETURN "POSE_E_TRANS_POSE_C" CASE 289 RETURN "POSE_C_LOOP_SMALL" CASE 290 RETURN "POSE_C_LOOP_SMALL" CASE 291 RETURN "POSE_C_LOOP_TINY" CASE 292 RETURN "POSE_C_IDLE_A" CASE 293 RETURN "POSE_C_IDLE_D" CASE 294 RETURN "POSE_C_IDLE_B" CASE 295 RETURN "POSE_C_LOOP_SMALL" CASE 296 RETURN "POSE_C_LOOP_TINY" CASE 297 RETURN "POSE_C_IDLE_E" CASE 298 RETURN "POSE_C_IDLE_B" CASE 299 RETURN "POSE_C_LOOP_SMALL" ENDSWITCH SWITCH iSequence CASE 300 RETURN "POSE_C_LONG_TRANS_POSE_B" CASE 301 RETURN "POSE_B_IDLE_J" CASE 302 RETURN "POSE_B_LOOP_MEDIUM" CASE 303 RETURN "POSE_B_IDLE_D" CASE 304 RETURN "POSE_B_LOOP_SMALL" CASE 305 RETURN "POSE_B_IDLE_B" CASE 306 RETURN "POSE_B_TRANS_POSE_C" CASE 307 RETURN "POSE_C_IDLE_F" CASE 308 RETURN "POSE_C_TRANS_POSE_B" CASE 309 RETURN "POSE_B_IDLE_H" CASE 310 RETURN "POSE_B_IDLE_A" CASE 311 RETURN "POSE_B_TRANS_POSE_C" CASE 312 RETURN "POSE_C_IDLE_D" CASE 313 RETURN "POSE_C_TRANS_DANCE_B" CASE 314 RETURN "DANCE_B_IDLE_C" CASE 315 RETURN "DANCE_B_IDLE_D" CASE 316 RETURN "DANCE_B_TRANS_DRINK_DOWN" CASE 317 RETURN "DRINK_DOWN_TRANS_POSE_B" CASE 318 RETURN "POSE_B_IDLE_B" CASE 319 RETURN "POSE_B_LOOP_LARGE" CASE 320 RETURN "POSE_B_IDLE_E" CASE 321 RETURN "POSE_B_LOOP_SMALL" CASE 322 RETURN "POSE_B_LOOP_TINY" CASE 323 RETURN "POSE_B_IDLE_C" CASE 324 RETURN "POSE_B_LOOP_SMALL" CASE 325 RETURN "POSE_B_IDLE_D" CASE 326 RETURN "POSE_B_IDLE_K" CASE 327 RETURN "POSE_B_LOOP_TINY" CASE 328 RETURN "POSE_B_IDLE_G" CASE 329 RETURN "POSE_B_IDLE_H" CASE 330 RETURN "POSE_B_TRANS_POSE_A" CASE 331 RETURN "POSE_A_LOOP_LARGE" CASE 332 RETURN "POSE_A_IDLE_F" CASE 333 RETURN "POSE_A_TRANS_DRINK_DOWN" CASE 334 RETURN "DRINK_DOWN_TRANS_POSE_B" CASE 335 RETURN "POSE_B_LOOP_LARGE" CASE 336 RETURN "POSE_B_LOOP_TINY" CASE 337 RETURN "POSE_B_LOOP_SMALL" CASE 338 RETURN "POSE_B_LOOP_TINY" CASE 339 RETURN "POSE_B_LONG_TRANS_DANCE_A" CASE 340 RETURN "DANCE_A_LOOP_TRANS_POSE_B" CASE 341 RETURN "POSE_B_TRANS_POSE_C" CASE 342 RETURN "POSE_C_LOOP_SMALL" CASE 343 RETURN "POSE_C_IDLE_F" CASE 344 RETURN "POSE_C_LOOP_TINY" CASE 345 RETURN "POSE_C_IDLE_A" CASE 346 RETURN "POSE_C_IDLE_E" CASE 347 RETURN "POSE_C_IDLE_D" CASE 348 RETURN "POSE_C_IDLE_B" CASE 349 RETURN "POSE_C_TRANS_POSE_B" CASE 350 RETURN "POSE_B_LOOP_MEDIUM" CASE 351 RETURN "POSE_B_IDLE_A" CASE 352 RETURN "POSE_B_LOOP_TINY" CASE 353 RETURN "POSE_B_LOOP_MEDIUM" CASE 354 RETURN "POSE_B_LOOP_TINY" CASE 355 RETURN "POSE_B_TRANS_POSE_C" CASE 356 RETURN "POSE_C_IDLE_B" CASE 357 RETURN "POSE_C_IDLE_D" CASE 358 RETURN "POSE_C_TRANS_POSE_E" CASE 359 RETURN "POSE_E_LOOP_TINY" CASE 360 RETURN "POSE_E_LOOP_MEDIUM" CASE 361 RETURN "POSE_E_LOOP_TINY" CASE 362 RETURN "POSE_E_IDLE_E" CASE 363 RETURN "POSE_E_LOOP_SMALL" CASE 364 RETURN "POSE_E_IDLE_C" CASE 365 RETURN "POSE_E_IDLE_B" CASE 366 RETURN "POSE_E_TRANS_POSE_C" CASE 367 RETURN "POSE_C_IDLE_B" CASE 368 RETURN "POSE_C_LONG_TRANS_POSE_E" CASE 369 RETURN "POSE_E_TRANS_POSE_C" CASE 370 RETURN "POSE_C_IDLE_B" CASE 371 RETURN "POSE_C_IDLE_A" CASE 372 RETURN "POSE_C_LOOP_SMALL" CASE 373 RETURN "POSE_C_LOOP_TINY" CASE 374 RETURN "POSE_C_IDLE_E" CASE 375 RETURN "POSE_C_LOOP_TINY" CASE 376 RETURN "POSE_C_LOOP_TINY" CASE 377 RETURN "POSE_C_TRANS_POSE_B" CASE 378 RETURN "POSE_B_TRANS_POSE_C" CASE 379 RETURN "POSE_C_LOOP_SMALL" CASE 380 RETURN "POSE_C_LONG_TRANS_POSE_B" CASE 381 RETURN "POSE_B_IDLE_A" CASE 382 RETURN "POSE_B_LOOP_SMALL" CASE 383 RETURN "POSE_B_LOOP_SMALL" CASE 384 RETURN "POSE_B_IDLE_J" CASE 385 RETURN "POSE_B_LOOP_TINY" CASE 386 RETURN "POSE_B_LOOP_SMALL" CASE 387 RETURN "POSE_B_IDLE_E" CASE 388 RETURN "POSE_B_LOOP_TINY" CASE 389 RETURN "POSE_B_LONG_TRANS_DANCE_A" CASE 390 RETURN "DANCE_A_LOOP_TRANS_POSE_B" CASE 391 RETURN "POSE_B_TRANS_POSE_C" CASE 392 RETURN "POSE_C_LOOP_SMALL" CASE 393 RETURN "POSE_C_LOOP_TINY" CASE 394 RETURN "POSE_C_LOOP_SMALL" CASE 395 RETURN "POSE_C_LOOP_TINY" CASE 396 RETURN "POSE_C_IDLE_C" CASE 397 RETURN "POSE_C_LOOP_SMALL" CASE 398 RETURN "POSE_C_LOOP_TINY" CASE 399 RETURN "POSE_C_TRANS_DANCE_B" ENDSWITCH SWITCH iSequence CASE 400 RETURN "DANCE_B_LOOP" CASE 401 RETURN "DANCE_B_IDLE_C" CASE 402 RETURN "DANCE_B_LOOP" CASE 403 RETURN "DANCE_B_TRANS_DRINK_DOWN" CASE 404 RETURN "DRINK_DOWN_LONG_TRANS_POSE_B" CASE 405 RETURN "POSE_B_IDLE_A" CASE 406 RETURN "POSE_B_LOOP_LARGE" CASE 407 RETURN "POSE_B_IDLE_E" CASE 408 RETURN "POSE_B_IDLE_C" CASE 409 RETURN "POSE_B_IDLE_D" CASE 410 RETURN "POSE_B_IDLE_B" CASE 411 RETURN "POSE_B_IDLE_J" CASE 412 RETURN "POSE_B_LOOP_SMALL" CASE 413 RETURN "POSE_B_LOOP_MEDIUM" CASE 414 RETURN "POSE_B_LOOP_TINY" CASE 415 RETURN "POSE_B_IDLE_K" CASE 416 RETURN "POSE_B_IDLE_G" CASE 417 RETURN "POSE_B_IDLE_I" CASE 418 RETURN "POSE_B_LOOP_LARGE" CASE 419 RETURN "POSE_B_LOOP_SMALL" CASE 420 RETURN "POSE_B_LOOP_LARGE" CASE 421 RETURN "POSE_B_LOOP_SMALL" CASE 422 RETURN "POSE_B_IDLE_H" CASE 423 RETURN "POSE_B_IDLE_G" CASE 424 RETURN "POSE_B_TRANS_POSE_C" CASE 425 RETURN "POSE_C_IDLE_B" CASE 426 RETURN "POSE_C_IDLE_D" CASE 427 RETURN "POSE_C_IDLE_A" CASE 428 RETURN "POSE_C_IDLE_B" CASE 429 RETURN "POSE_C_LOOP_SMALL" CASE 430 RETURN "POSE_C_LOOP_TINY" CASE 431 RETURN "POSE_C_TRANS_POSE_A" CASE 432 RETURN "POSE_A_LOOP_TINY" CASE 433 RETURN "POSE_A_IDLE_B" CASE 434 RETURN "POSE_A_IDLE_E" CASE 435 RETURN "POSE_A_LOOP_MEDIUM" CASE 436 RETURN "POSE_A_LOOP_SMALL" CASE 437 RETURN "POSE_A_LOOP_LARGE" CASE 438 RETURN "POSE_A_IDLE_H" CASE 439 RETURN "POSE_A_LOOP_MEDIUM" CASE 440 RETURN "POSE_A_LOOP_SMALL" CASE 441 RETURN "POSE_A_LOOP_TINY" CASE 442 RETURN "POSE_A_LOOP_MEDIUM" CASE 443 RETURN "POSE_A_IDLE_A" CASE 444 RETURN "POSE_A_IDLE_G" CASE 445 RETURN "POSE_A_IDLE_D" CASE 446 RETURN "POSE_A_IDLE_C" CASE 447 RETURN "POSE_A_IDLE_F" CASE 448 RETURN "POSE_A_LOOP_TINY" CASE 449 RETURN "POSE_A_LOOP_TINY" ENDSWITCH BREAK CASE AC_SLOT_SOLOMUN SWITCH iSequence CASE 0 RETURN "SOL_START" CASE 1 RETURN "SOL_IDLE_LEFT_E" CASE 2 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 3 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 4 RETURN "SOL_SYNC_H" CASE 5 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 6 RETURN "SOL_IDLE_CTR_MID_H" CASE 7 RETURN "SOL_SYNC_F" CASE 8 RETURN "SOL_IDLE_CTR_WIDE_C" CASE 9 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 10 RETURN "SOL_DANCE_G" CASE 11 RETURN "SOL_IDLE_LEFT_D" CASE 12 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 13 RETURN "SOL_DANCE_L" CASE 14 RETURN "SOL_IDLE_CTR_MID_A" CASE 15 RETURN "SOL_IDLE_CTR_MID_C" CASE 16 RETURN "SOL_IDLE_CTR_MID_D" CASE 17 RETURN "SOL_IDLE_CTR_MID_I" CASE 18 RETURN "SOL_IDLE_CTR_MID_A" CASE 19 RETURN "SOL_IDLE_CTR_MID_B" CASE 20 RETURN "SOL_IDLE_CTR_MID_C" CASE 21 RETURN "SOL_IDLE_CTR_MID_E" CASE 22 RETURN "SOL_IDLE_CTR_MID_D" CASE 23 RETURN "SOL_TRANS_CTRNRW_TO_NRW_A" CASE 24 RETURN "SOL_DANCE_C" CASE 25 RETURN "SOL_IDLE_CTR_MID_F" CASE 26 RETURN "SOL_DANCE_D" CASE 27 RETURN "SOL_TRANS_CTRNRW_TO_NRW_A" CASE 28 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 29 RETURN "SOL_TRANS_CTRNRW_TO_OUT_A" CASE 30 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 31 RETURN "SOL_IDLE_RT_A" CASE 32 RETURN "SOL_IDLE_RT_A" CASE 33 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 34 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 35 RETURN "SOL_IDLE_CTR_WIDE_C" CASE 36 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 37 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 38 RETURN "SOL_SYNC_D" CASE 39 RETURN "SOL_IDLE_CTR_MID_A" CASE 40 RETURN "SOL_IDLE_CTR_MID_B" CASE 41 RETURN "SOL_IDLE_CTR_MID_A" CASE 42 RETURN "SOL_IDLE_CTR_MID_G" CASE 43 RETURN "SOL_IDLE_CTR_MID_H" CASE 44 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 45 RETURN "SOL_TRANS_LFT_TO_CTRNRW_A" CASE 46 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 47 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 48 RETURN "SOL_IDLE_CTR_MID_D" CASE 49 RETURN "SOL_IDLE_CTR_MID_E" CASE 50 RETURN "SOL_IDLE_CTR_MID_F" CASE 51 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 52 RETURN "SOL_IDLE_LEFT_E" CASE 53 RETURN "SOL_IDLE_LEFT_B" CASE 54 RETURN "SOL_IDLE_LEFT_A" CASE 55 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 56 RETURN "SOL_IDLE_CTR_MID_B" CASE 57 RETURN "SOL_IDLE_CTR_MID_F" CASE 58 RETURN "SOL_DANCE_I" CASE 59 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 60 RETURN "SOL_IDLE_LEFT_HP_A" CASE 61 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 62 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 63 RETURN "SOL_DANCE_G" CASE 64 RETURN "SOL_IDLE_LEFT_D" CASE 65 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 66 RETURN "SOL_DANCE_H" CASE 67 RETURN "SOL_IDLE_CTR_MID_B" CASE 68 RETURN "SOL_IDLE_CTR_MID_B" CASE 69 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 70 RETURN "SOL_DANCE_E" CASE 71 RETURN "SOL_DANCE_F" CASE 72 RETURN "SOL_SYNC_D" CASE 73 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 74 RETURN "SOL_IDLE_RT_D" CASE 75 RETURN "SOL_SYNC_H" CASE 76 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 77 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 78 RETURN "SOL_IDLE_LEFT_D" CASE 79 RETURN "SOL_IDLE_LEFT_A" CASE 80 RETURN "SOL_DANCE_B" CASE 81 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 82 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 83 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 84 RETURN "SOL_IDLE_CTR_WIDE_C" CASE 85 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 86 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 87 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 88 RETURN "SOL_IDLE_LEFT_HP_A" CASE 89 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 90 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 91 RETURN "SOL_DANCE_B" CASE 92 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 93 RETURN "SOL_IDLE_LEFT_A" CASE 94 RETURN "SOL_IDLE_LEFT_A" CASE 95 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 96 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 97 RETURN "SOL_TRANS_RT_TO_FARRT_A" CASE 98 RETURN "SOL_DANCE_J" CASE 99 RETURN "SOL_TRANS_CTRNRW_TO_NRW_A" CASE 100 RETURN "SOL_IDLE_CTR_NAROW_A" ENDSWITCH SWITCH iSequence CASE 101 RETURN "SOL_DANCE_C" CASE 102 RETURN "SOL_SYNC_G" CASE 103 RETURN "SOL_IDLE_CTR_MID_D" CASE 104 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 105 RETURN "SOL_SYNC_D" CASE 106 RETURN "SOL_IDLE_CTR_MID_F" CASE 107 RETURN "SOL_IDLE_CTR_MID_B" CASE 108 RETURN "SOL_IDLE_CTR_MID_E" CASE 109 RETURN "SOL_IDLE_CTR_MID_F" CASE 110 RETURN "SOL_DANCE_L" CASE 111 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 112 RETURN "SOL_IDLE_LEFT_D" CASE 113 RETURN "SOL_IDLE_LEFT_C" CASE 114 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 115 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 116 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 117 RETURN "SOL_DANCE_G" CASE 118 RETURN "SOL_IDLE_LEFT_A" CASE 119 RETURN "SOL_IDLE_LEFT_A" CASE 120 RETURN "SOL_IDLE_LEFT_C" CASE 121 RETURN "SOL_IDLE_LEFT_B" CASE 122 RETURN "SOL_IDLE_LEFT_A" CASE 123 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 124 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 125 RETURN "SOL_DANCE_G" CASE 126 RETURN "SOL_DANCE_B" CASE 127 RETURN "SOL_IDLE_CTR_MID_A" CASE 128 RETURN "SOL_IDLE_CTR_MID_A" CASE 129 RETURN "SOL_IDLE_CTR_MID_C" CASE 130 RETURN "SOL_IDLE_CTR_MID_B" CASE 131 RETURN "SOL_IDLE_CTR_MID_B" CASE 132 RETURN "SOL_IDLE_CTR_MID_A" CASE 133 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 134 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 135 RETURN "SOL_TRANS_LFTHP_TO_OUT_A" CASE 136 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 137 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 138 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 139 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 140 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 141 RETURN "SOL_SYNC_A" CASE 142 RETURN "SOL_SYNC_B" CASE 143 RETURN "SOL_IDLE_LEFT_B" CASE 144 RETURN "SOL_IDLE_LEFT_A" CASE 145 RETURN "SOL_DANCE_B" CASE 146 RETURN "SOL_IDLE_CTR_MID_B" CASE 147 RETURN "SOL_IDLE_CTR_MID_C" CASE 148 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 149 RETURN "SOL_IDLE_LEFT_B" CASE 150 RETURN "SOL_SYNC_B" CASE 151 RETURN "SOL_IDLE_LEFT_B" CASE 152 RETURN "SOL_DANCE_B" CASE 153 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 154 RETURN "NEW_SOL_DANCE_A" CASE 155 RETURN "SOL_IDLE_LEFT_HP_A" CASE 156 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 157 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 158 RETURN "SOL_TRANS_RT_TO_FARRT_A" CASE 159 RETURN "SOL_DANCE_J" CASE 160 RETURN "SOL_IDLE_CTR_MID_B" CASE 161 RETURN "SOL_IDLE_CTR_MID_B" CASE 162 RETURN "SOL_IDLE_CTR_MID_E" CASE 163 RETURN "SOL_IDLE_CTR_MID_C" CASE 164 RETURN "SOL_IDLE_CTR_MID_B" CASE 165 RETURN "SOL_IDLE_CTR_MID_B" CASE 166 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 167 RETURN "SOL_DANCE_E" CASE 168 RETURN "SOL_IDLE_RT_A" CASE 169 RETURN "SOL_IDLE_RT_C" CASE 170 RETURN "SOL_IDLE_RT_B" CASE 171 RETURN "SOL_IDLE_RT_C" CASE 172 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 173 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 174 RETURN "SOL_IDLE_CTR_MID_A" CASE 175 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 176 RETURN "SOL_SYNC_B" CASE 177 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 178 RETURN "SOL_IDLE_CTR_MID_B" CASE 179 RETURN "SOL_IDLE_CTR_MID_G" CASE 180 RETURN "SOL_IDLE_CTR_MID_B" CASE 181 RETURN "SOL_IDLE_CTR_MID_B" CASE 182 RETURN "SOL_DANCE_K" CASE 183 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 184 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 185 RETURN "SOL_IDLE_LEFT_HP_A" CASE 186 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 187 RETURN "SOL_IDLE_CTR_MID_B" CASE 188 RETURN "SOL_DANCE_I" CASE 189 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 190 RETURN "SOL_DANCE_L" CASE 191 RETURN "SOL_SYNC_F" CASE 192 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 193 RETURN "SOL_IDLE_CTR_WIDE_C" CASE 194 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 195 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 196 RETURN "SOL_DANCE_G" CASE 197 RETURN "SOL_IDLE_LEFT_C" CASE 198 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 199 RETURN "SOL_IDLE_CTR_MID_D" CASE 200 RETURN "SOL_IDLE_CTR_MID_C" ENDSWITCH SWITCH iSequence CASE 201 RETURN "SOL_IDLE_CTR_MID_D" CASE 202 RETURN "SOL_IDLE_CTR_MID_E" CASE 203 RETURN "SOL_IDLE_CTR_MID_C" CASE 204 RETURN "SOL_TRANS_CTRNRW_TO_NRW_A" CASE 205 RETURN "SOL_DANCE_C" CASE 206 RETURN "SOL_IDLE_CTR_MID_F" CASE 207 RETURN "SOL_DANCE_I" CASE 208 RETURN "SOL_IDLE_LEFT_A" CASE 209 RETURN "SOL_TRANS_LFT_TO_CTRNRW_A" CASE 210 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 211 RETURN "SOL_TRANS_CTRNRW_TO_OUT_A" CASE 212 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 213 RETURN "SOL_IDLE_RT_A" CASE 214 RETURN "SOL_IDLE_RT_B" CASE 215 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 216 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 217 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 218 RETURN "SOL_SYNC_C" CASE 219 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 220 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 221 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 222 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 223 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 224 RETURN "SOL_IDLE_CTR_MID_C" CASE 225 RETURN "SOL_IDLE_CTR_MID_A" CASE 226 RETURN "SOL_IDLE_CTR_MID_G" CASE 227 RETURN "SOL_SYNC_C" CASE 228 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 229 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 230 RETURN "SOL_IDLE_CTR_MID_A" CASE 231 RETURN "SOL_IDLE_CTR_MID_B" CASE 232 RETURN "SOL_IDLE_CTR_MID_C" CASE 233 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 234 RETURN "SOL_DANCE_G" CASE 235 RETURN "SOL_IDLE_LEFT_E" CASE 236 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 237 RETURN "SOL_DANCE_H" CASE 238 RETURN "SOL_IDLE_CTR_MID_B" CASE 239 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 240 RETURN "SOL_IDLE_RT_C" CASE 241 RETURN "SOL_DANCE_E" CASE 242 RETURN "SOL_DANCE_F" CASE 243 RETURN "SOL_IDLE_RT_D" CASE 244 RETURN "SOL_SYNC_D" CASE 245 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 246 RETURN "NEW_SOL_DANCE_A" CASE 247 RETURN "SOL_IDLE_LEFT_HP_A" CASE 248 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 249 RETURN "SOL_IDLE_CTR_MID_B" CASE 250 RETURN "SOL_IDLE_CTR_MID_B" CASE 251 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 252 RETURN "SOL_DANCE_G" CASE 253 RETURN "SOL_IDLE_LEFT_E" CASE 254 RETURN "SOL_IDLE_LEFT_D" CASE 255 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 256 RETURN "SOL_DANCE_H" CASE 257 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 258 RETURN "SOL_DANCE_E" CASE 259 RETURN "SOL_DANCE_F" CASE 260 RETURN "SOL_SYNC_D" CASE 261 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 262 RETURN "SOL_SYNC_H" CASE 263 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 264 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 265 RETURN "SOL_SYNC_B" CASE 266 RETURN "SOL_IDLE_LEFT_A" CASE 267 RETURN "SOL_DANCE_B" CASE 268 RETURN "SOL_IDLE_CTR_MID_A" CASE 269 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 270 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 271 RETURN "SOL_DANCE_G" CASE 272 RETURN "SOL_IDLE_LEFT_B" CASE 273 RETURN "SOL_IDLE_LEFT_A" CASE 274 RETURN "SOL_DANCE_B" CASE 275 RETURN "SOL_IDLE_CTR_MID_A" CASE 276 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 277 RETURN "SOL_IDLE_LEFT_B" CASE 278 RETURN "SOL_SYNC_B" CASE 279 RETURN "SOL_IDLE_LEFT_B" CASE 280 RETURN "SOL_TRANS_LFT_TO_CTRNRW_A" CASE 281 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 282 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 283 RETURN "SOL_IDLE_CTR_MID_D" CASE 284 RETURN "SOL_IDLE_CTR_MID_E" CASE 285 RETURN "SOL_IDLE_CTR_MID_F" CASE 286 RETURN "SOL_DANCE_I" CASE 287 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 288 RETURN "SOL_IDLE_CTR_MID_G" CASE 289 RETURN "SOL_IDLE_CTR_MID_B" CASE 290 RETURN "SOL_IDLE_CTR_MID_B" CASE 291 RETURN "SOL_IDLE_CTR_MID_F" CASE 292 RETURN "SOL_SYNC_C" CASE 293 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 294 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 295 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 296 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 297 RETURN "SOL_IDLE_CTR_WIDE_C" CASE 298 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 299 RETURN "SOL_DANCE_G" CASE 300 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" ENDSWITCH SWITCH iSequence CASE 301 RETURN "SOL_IDLE_CTR_MID_H" CASE 302 RETURN "SOL_IDLE_CTR_MID_D" CASE 303 RETURN "SOL_IDLE_CTR_MID_B" CASE 304 RETURN "SOL_IDLE_CTR_MID_B" CASE 305 RETURN "SOL_SYNC_E" CASE 306 RETURN "SOL_IDLE_CTR_MID_E" CASE 307 RETURN "SOL_IDLE_CTR_MID_B" CASE 308 RETURN "SOL_IDLE_CTR_MID_A" CASE 309 RETURN "SOL_SYNC_F" CASE 310 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 311 RETURN "SOL_DANCE_G" CASE 312 RETURN "SOL_IDLE_LEFT_C" CASE 313 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 314 RETURN "SOL_DANCE_I" CASE 315 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 316 RETURN "SOL_IDLE_LEFT_HP_A" CASE 317 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 318 RETURN "SOL_IDLE_CTR_MID_I" CASE 319 RETURN "SOL_IDLE_CTR_MID_A" CASE 320 RETURN "SOL_IDLE_CTR_MID_I" CASE 321 RETURN "SOL_IDLE_CTR_MID_C" CASE 322 RETURN "SOL_DANCE_K" CASE 323 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 324 RETURN "SOL_IDLE_LEFT_B" CASE 325 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 326 RETURN "SOL_IDLE_CTR_MID_B" CASE 327 RETURN "SOL_DANCE_L" CASE 328 RETURN "SOL_IDLE_CTR_MID_D" CASE 329 RETURN "SOL_DANCE_K" CASE 330 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 331 RETURN "SOL_IDLE_LEFT_D" CASE 332 RETURN "SOL_SYNC_B" CASE 333 RETURN "SOL_IDLE_LEFT_C" CASE 334 RETURN "SOL_IDLE_LEFT_B" CASE 335 RETURN "SOL_IDLE_LEFT_B" CASE 336 RETURN "SOL_DANCE_B" CASE 337 RETURN "SOL_IDLE_CTR_MID_A" CASE 338 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 339 RETURN "SOL_IDLE_LEFT_B" CASE 340 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 341 RETURN "SOL_TRANS_LFTHP_TO_OUT_A" CASE 342 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 343 RETURN "SOL_DANCE_F" CASE 344 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 345 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 346 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 347 RETURN "SOL_TRANS_LFT_TO_CTRNRW_A" CASE 348 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 349 RETURN "SOL_SYNC_A" CASE 350 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 351 RETURN "SOL_IDLE_CTR_MID_I" CASE 352 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 353 RETURN "NEW_SOL_DANCE_A" CASE 354 RETURN "SOL_IDLE_LEFT_HP_A" CASE 355 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 356 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 357 RETURN "SOL_TRANS_RT_TO_FARRT_A" CASE 358 RETURN "SOL_DANCE_J" CASE 359 RETURN "SOL_TRANS_CTRNRW_TO_NRW_A" CASE 360 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 361 RETURN "SOL_DANCE_C" CASE 362 RETURN "SOL_IDLE_CTR_MID_F" CASE 363 RETURN "SOL_IDLE_CTR_MID_D" CASE 364 RETURN "SOL_IDLE_CTR_MID_B" CASE 365 RETURN "SOL_IDLE_CTR_MID_E" CASE 366 RETURN "SOL_IDLE_CTR_MID_F" CASE 367 RETURN "SOL_DANCE_L" CASE 368 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 369 RETURN "SOL_SYNC_D" CASE 370 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 371 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 372 RETURN "SOL_SYNC_E" CASE 373 RETURN "SOL_IDLE_CTR_MID_H" CASE 374 RETURN "SOL_IDLE_CTR_MID_G" CASE 375 RETURN "SOL_SYNC_F" CASE 376 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 377 RETURN "SOL_DANCE_G" CASE 378 RETURN "SOL_IDLE_LEFT_C" CASE 379 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 380 RETURN "SOL_IDLE_CTR_MID_B" CASE 381 RETURN "SOL_IDLE_CTR_MID_A" CASE 382 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 383 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 384 RETURN "SOL_TRANS_LFTHP_TO_OUT_A" CASE 385 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 386 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 387 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 388 RETURN "SOL_SYNC_G" CASE 389 RETURN "SOL_IDLE_CTR_MID_B" CASE 390 RETURN "SOL_IDLE_CTR_MID_B" CASE 391 RETURN "SOL_DANCE_I" CASE 392 RETURN "SOL_IDLE_LEFT_E" CASE 393 RETURN "SOL_TRANS_LFT_TO_CTRNRW_A" CASE 394 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 395 RETURN "SOL_TRANS_CTRNRW_TO_OUT_A" CASE 396 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 397 RETURN "SOL_IDLE_RT_A" CASE 398 RETURN "SOL_IDLE_RT_B" CASE 399 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 400 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" ENDSWITCH SWITCH iSequence CASE 401 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 402 RETURN "SOL_SYNC_C" CASE 403 RETURN "SOL_SYNC_H" CASE 404 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 405 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 406 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 407 RETURN "SOL_IDLE_LEFT_A" CASE 408 RETURN "SOL_DANCE_B" CASE 409 RETURN "SOL_IDLE_CTR_MID_A" CASE 410 RETURN "SOL_TRANS_CTRMID_TO_WIDE_A" CASE 411 RETURN "SOL_DANCE_G" CASE 412 RETURN "SOL_IDLE_LEFT_A" CASE 413 RETURN "SOL_IDLE_LEFT_E" CASE 414 RETURN "SOL_IDLE_LEFT_A" CASE 415 RETURN "SOL_IDLE_LEFT_D" CASE 416 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 417 RETURN "SOL_DANCE_H" CASE 418 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 419 RETURN "NEW_SOL_DANCE_A" CASE 420 RETURN "SOL_IDLE_LEFT_HP_A" CASE 421 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 422 RETURN "SOL_IDLE_CTR_MID_B" CASE 423 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 424 RETURN "SOL_TRANS_RT_TO_FARRT_A" CASE 425 RETURN "SOL_DANCE_J" CASE 426 RETURN "SOL_IDLE_CTR_MID_B" CASE 427 RETURN "SOL_IDLE_CTR_MID_B" CASE 428 RETURN "SOL_TRANS_CTRMID_TO_RT_A" CASE 429 RETURN "SOL_DANCE_E" CASE 430 RETURN "SOL_IDLE_RT_A" CASE 431 RETURN "SOL_IDLE_RT_C" CASE 432 RETURN "SOL_IDLE_RT_B" CASE 433 RETURN "SOL_IDLE_RT_C" CASE 434 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 435 RETURN "SOL_TRANS_CTRNRW_TO_MID_A" CASE 436 RETURN "SOL_IDLE_CTR_MID_G" CASE 437 RETURN "SOL_IDLE_CTR_MID_B" CASE 438 RETURN "SOL_IDLE_CTR_MID_A" CASE 439 RETURN "SOL_DANCE_I" CASE 440 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 441 RETURN "SOL_IDLE_CTR_MID_B" CASE 442 RETURN "SOL_IDLE_CTR_MID_B" CASE 443 RETURN "SOL_IDLE_CTR_MID_A" CASE 444 RETURN "SOL_DANCE_K" CASE 445 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 446 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 447 RETURN "SOL_IDLE_LEFT_HP_A" CASE 448 RETURN "SOL_TRANS_LFTHP_TO_CTRMID_A" CASE 449 RETURN "SOL_DANCE_I" CASE 450 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 451 RETURN "SOL_DANCE_L" CASE 452 RETURN "SOL_TRANS_CTRNRW_TO_NRW_A" CASE 453 RETURN "SOL_DANCE_C" CASE 454 RETURN "SOL_IDLE_CTR_MID_C" CASE 455 RETURN "SOL_IDLE_CTR_MID_B" CASE 456 RETURN "SOL_SYNC_F" CASE 457 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 458 RETURN "SOL_IDLE_CTR_WIDE_C" CASE 459 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 460 RETURN "SOL_IDLE_CTR_WIDE_B" CASE 461 RETURN "SOL_DANCE_G" CASE 462 RETURN "SOL_IDLE_LEFT_C" CASE 463 RETURN "SOL_TRANS_LFT_TO_CTRMID_A" CASE 464 RETURN "SOL_IDLE_CTR_MID_I" CASE 465 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 466 RETURN "SOL_IDLE_LEFT_D" CASE 467 RETURN "SOL_TRANS_LFT_TO_LFTHP_A" CASE 468 RETURN "SOL_TRANS_LFTHP_TO_OUT_A" CASE 469 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 470 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 471 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 472 RETURN "SOL_IDLE_CTR_NAROW_A" CASE 473 RETURN "SOL_TRANS_CTRNRW_TO_OUT_A" CASE 474 RETURN "SOL_TRANS_OUT_TO_RT_A" CASE 475 RETURN "SOL_TRANS_RT_TO_CTRNRW_A" CASE 476 RETURN "SOL_TRANS_CTRNRW_TO_WIDE_A" CASE 477 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 478 RETURN "SOL_IDLE_CTR_WIDE_A" CASE 479 RETURN "SOL_TRANS_CTRWIDE_TO_MID_A" CASE 480 RETURN "SOL_TRANS_CTRMID_TO_LFT_A" CASE 481 RETURN "SOL_END" ENDSWITCH BREAK CASE AC_SLOT_DIXON SWITCH iSequence CASE 0 RETURN "DIXN_START" CASE 1 RETURN "DIXN_TRNS_LFT_TO_CNTR_A" CASE 2 RETURN "DIXN_TRNS_CNTR_TO_LFT_D" CASE 3 RETURN "DIXN_IDLE_LFT_B" CASE 4 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 5 RETURN "DIXN_TRNS_LH_TO_CNTR_B" CASE 6 RETURN "DIXN_SYNC_CNTR_B" CASE 7 RETURN "DIXN_IDLE_CNTR_K" CASE 8 RETURN "DIXN_TRNS_CNTR_TO_LFT_E" CASE 9 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 10 RETURN "DIXN_IDLE_OPEN_A" CASE 11 RETURN "DIXN_DANCE_OPEN_A" CASE 12 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 13 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 14 RETURN "DIXN_DANCE_CNTR_C" CASE 15 RETURN "DIXN_IDLE_CNTR_G" CASE 16 RETURN "DIXN_IDLE_CNTR_H" CASE 17 RETURN "DIXN_IDLE_CNTR_I" CASE 18 RETURN "DIXN_IDLE_CNTR_J" CASE 19 RETURN "DIXN_SYNC_CNTR_K" CASE 20 RETURN "DIXN_IDLE_CNTR_L" CASE 21 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 22 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 23 RETURN "DIXN_IDLE_CNTR_M" CASE 24 RETURN "DIXN_SYNC_CNTR_C" CASE 25 RETURN "DIXN_IDLE_CNTR_A" CASE 26 RETURN "DIXN_TRNS_CNTR_TO_LFT_C" CASE 27 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 28 RETURN "DIXN_IDLE_CNTR_LNG" CASE 29 RETURN "DIXN_IDLE_CNTR_G" CASE 30 RETURN "DIXN_IDLE_CNTR_H" CASE 31 RETURN "DIXN_IDLE_CNTR_I" CASE 32 RETURN "DIXN_IDLE_CNTR_J" CASE 33 RETURN "DIXN_TRNS_CNTR_TO_LFT" CASE 34 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 35 RETURN "DIXN_TRNS_OPEN_TO_CNTR_C" CASE 36 RETURN "DIXN_IDLE_CNTR_O" CASE 37 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 38 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 39 RETURN "DIXN_SYNC_CNTR_A" CASE 40 RETURN "DIXN_DANCE_CNTR_B" CASE 41 RETURN "DIXN_IDLE_CNTR_G" CASE 42 RETURN "DIXN_IDLE_CNTR_A" CASE 43 RETURN "DIXN_TRNS_CNTR_TO_LFT" CASE 44 RETURN "DIXN_TRNS_LFT_TO_CNTR_A" CASE 45 RETURN "DIXN_IDLE_CNTR_B" CASE 46 RETURN "DIXN_IDLE_CNTR_G" CASE 47 RETURN "DIXN_IDLE_CNTR_E" CASE 48 RETURN "DIXN_IDLE_CNTR_F" CASE 49 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 50 RETURN "DIXN_TRNS_OPEN_TO_LFT" CASE 51 RETURN "DIXN_IDLE_LFT_C" CASE 52 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 53 RETURN "DIXN_TRNS_LH_TO_CNTR" CASE 54 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 55 RETURN "DIXN_TRNS_OPEN_TO_LFT_B" CASE 56 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 57 RETURN "DIXN_TRNS_OPEN_TO_CNTR_A" CASE 58 RETURN "DIXN_IDLE_CNTR_A" CASE 59 RETURN "DIXN_TRNS_CNTR_TO_OPEN_B" CASE 60 RETURN "DIXN_TRNS_OPEN_TO_CNTR_C" CASE 61 RETURN "DIXN_IDLE_CNTR_I" CASE 62 RETURN "DIXN_IDLE_CNTR_G" CASE 63 RETURN "DIXN_IDLE_CNTR_H" CASE 64 RETURN "DIXN_IDLE_CNTR_N" CASE 65 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 66 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 67 RETURN "DIXN_IDLE_OPEN_A" CASE 68 RETURN "DIXN_IDLE_OPEN_Ab" CASE 69 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 70 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 71 RETURN "DIXN_IDLE_CNTR_Kb" CASE 72 RETURN "DIXN_SYNC_CNTR_D" CASE 73 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 74 RETURN "DIXN_TRNS_OPEN_TO_CNTR_D" CASE 75 RETURN "DIXN_IDLE_CNTR_N" CASE 76 RETURN "DIXN_DANCE_CNTR_D" CASE 77 RETURN "DIXN_SYNC_CNTR_B" CASE 78 RETURN "DIXN_IDLE_CNTR_LNG" CASE 79 RETURN "DIXN_IDLE_CNTR_A" CASE 80 RETURN "DIXN_DANCE_CNTR_OPEN" CASE 81 RETURN "DIXN_IDLE_OPEN_A" CASE 82 RETURN "DIXN_TRNS_OPEN_TO_CNTR_C" CASE 83 RETURN "DIXN_IDLE_CNTR_A" CASE 84 RETURN "DIXN_DANCE_CNTR_B" CASE 85 RETURN "DIXN_IDLE_CNTR_B" CASE 86 RETURN "DIXN_IDLE_CNTR_I" CASE 87 RETURN "DIXN_IDLE_CNTR_Kc" CASE 88 RETURN "DIXN_SYNC_CNTR_E" CASE 89 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 90 RETURN "DIXN_IDLE_OPEN_A" CASE 91 RETURN "DIXN_DANCE_OPEN_A" CASE 92 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 93 RETURN "DIXN_IDLE_CNTR_N" CASE 94 RETURN "DIXN_SYNC_CNTR_F" CASE 95 RETURN "DIXN_IDLE_CNTR_LNG" CASE 96 RETURN "DIXN_IDLE_CNTR_A" CASE 97 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 98 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 99 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 100 RETURN "DIXN_IDLE_CNTR_SHRT" ENDSWITCH SWITCH iSequence CASE 101 RETURN "DIXN_IDLE_CNTR_B" CASE 102 RETURN "DIXN_IDLE_CNTR_E" CASE 103 RETURN "DIXN_IDLE_CNTR_G" CASE 104 RETURN "DIXN_SYNC_CNTR_A" CASE 105 RETURN "DIXN_DANCE_CNTR_B" CASE 106 RETURN "DIXN_IDLE_CNTR_A" CASE 107 RETURN "DIXN_TRNS_CNTR_TO_LFT" CASE 108 RETURN "DIXN_TRNS_LFT_TO_CNTR_A" CASE 109 RETURN "DIXN_IDLE_CNTR_B" CASE 110 RETURN "DIXN_IDLE_CNTR_G" CASE 111 RETURN "DIXN_IDLE_CNTR_E" CASE 112 RETURN "DIXN_IDLE_CNTR_F" CASE 113 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 114 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 115 RETURN "DIXN_TRNS_OPEN_TO_LFT" CASE 116 RETURN "DIXN_IDLE_LFT_A" CASE 117 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 118 RETURN "DIXN_TRNS_LH_TO_CNTR" CASE 119 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 120 RETURN "DIXN_TRNS_OPEN_TO_LFT_B" CASE 121 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 122 RETURN "DIXN_TRNS_OPEN_TO_CNTR_D" CASE 123 RETURN "DIXN_IDLE_CNTR_A" CASE 124 RETURN "DIXN_DANCE_CNTR_OPEN" CASE 125 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 126 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 127 RETURN "DIXN_TRNS_OPEN_TO_LFT_B" CASE 128 RETURN "DIXN_IDLE_LFT_A" CASE 129 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 130 RETURN "DIXN_TRNS_LH_TO_CNTR" CASE 131 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 132 RETURN "DIXN_IDLE_CNTR_LNG_C" CASE 133 RETURN "DIXN_TRNS_CNTR_TO_LFT_C" CASE 134 RETURN "DIXN_IDLE_LFT_B" CASE 135 RETURN "DIXN_IDLE_LFT_A" CASE 136 RETURN "DIXN_IDLE_LFT_C" CASE 137 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 138 RETURN "DIXN_IDLE_CNTR_O" CASE 139 RETURN "DIXN_IDLE_CNTR_K" CASE 140 RETURN "DIXN_IDLE_CNTR_G" CASE 141 RETURN "DIXN_IDLE_CNTR_H" CASE 142 RETURN "DIXN_IDLE_CNTR_K" CASE 143 RETURN "DIXN_IDLE_CNTR_G" CASE 144 RETURN "DIXN_IDLE_CNTR_H" CASE 145 RETURN "DIXN_IDLE_CNTR_I" CASE 146 RETURN "DIXN_SYNC_CNTR_J" CASE 147 RETURN "DIXN_IDLE_CNTR_J" CASE 148 RETURN "DIXN_IDLE_CNTR_O" CASE 149 RETURN "DIXN_IDLE_CNTR_L" CASE 150 RETURN "DIXN_IDLE_CNTR_M" CASE 151 RETURN "DIXN_IDLE_CNTR_A" CASE 152 RETURN "DIXN_IDLE_CNTR_B" CASE 153 RETURN "DIXN_IDLE_CNTR_E" CASE 154 RETURN "DIXN_IDLE_CNTR_F" CASE 155 RETURN "DIXN_IDLE_CNTR_N" CASE 156 RETURN "DIXN_IDLE_CNTR_A" CASE 157 RETURN "DIXN_SYNC_CNTR_I" CASE 158 RETURN "DIXN_IDLE_CNTR_G" CASE 159 RETURN "DIXN_TRNS_CNTR_TO_LFT" CASE 160 RETURN "DIXN_TRNS_LFT_TO_CNTR_A" CASE 161 RETURN "DIXN_IDLE_CNTR_B" CASE 162 RETURN "DIXN_IDLE_CNTR_G" CASE 163 RETURN "DIXN_IDLE_CNTR_E" CASE 164 RETURN "DIXN_IDLE_CNTR_F" CASE 165 RETURN "DIXN_SYNC_CNTR_F" CASE 166 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 167 RETURN "DIXN_TRNS_OPEN_TO_LFT" CASE 168 RETURN "DIXN_IDLE_LFT_C" CASE 169 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 170 RETURN "DIXN_TRNS_LH_TO_CNTR" CASE 171 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 172 RETURN "DIXN_TRNS_OPEN_TO_LFT_B" CASE 173 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 174 RETURN "DIXN_TRNS_OPEN_TO_CNTR_A" CASE 175 RETURN "DIXN_IDLE_CNTR_B" CASE 176 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 177 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 178 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 179 RETURN "DIXN_SYNC_CNTR_C" CASE 180 RETURN "DIXN_DANCE_CNTR_OPEN" CASE 181 RETURN "DIXN_IDLE_OPEN_A" CASE 182 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 183 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 184 RETURN "DIXN_SYNC_CNTR_B" CASE 185 RETURN "DIXN_IDLE_CNTR_A" CASE 186 RETURN "DIXN_DANCE_CNTR_C" CASE 187 RETURN "DIXN_IDLE_CNTR_B" CASE 188 RETURN "DIXN_IDLE_CNTR_Kb" CASE 189 RETURN "DIXN_IDLE_CNTR_K" CASE 190 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 191 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 192 RETURN "DIXN_TRNS_CNTR_TO_LFT_C" CASE 193 RETURN "DIXN_IDLE_LFT_B" CASE 194 RETURN "DIXN_IDLE_LFT_A" CASE 195 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 196 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 197 RETURN "DIXN_DANCE_OPEN_A" CASE 198 RETURN "DIXN_IDLE_OPEN_Ab" CASE 199 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 200 RETURN "DIXN_IDLE_CNTR_SHRT_B" ENDSWITCH SWITCH iSequence CASE 201 RETURN "DIXN_IDLE_CNTR_Kb" CASE 202 RETURN "DIXN_IDLE_CNTR_O" CASE 203 RETURN "DIXN_SYNC_CNTR_G" CASE 204 RETURN "DIXN_IDLE_CNTR_H" CASE 205 RETURN "DIXN_SYNC_CNTR_F" CASE 206 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 207 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 208 RETURN "DIXN_TRNS_CNTR_TO_OPEN_A" CASE 209 RETURN "DIXN_DANCE_OPEN_A" CASE 210 RETURN "DIXN_IDLE_OPEN_A" CASE 211 RETURN "DIXN_TRNS_OPEN_TO_CNTR_D" CASE 212 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 213 RETURN "DIXN_TRNS_CNTR_TO_LFT_C" CASE 214 RETURN "DIXN_IDLE_LFT_B" CASE 215 RETURN "DIXN_IDLE_LFT_A" CASE 216 RETURN "DIXN_SYNC_LFT_A" CASE 217 RETURN "DIXN_SYNC_CNTR_B" CASE 218 RETURN "DIXN_IDLE_CNTR_H" CASE 219 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 220 RETURN "DIXN_SYNC_CNTR_J" CASE 221 RETURN "DIXN_IDLE_CNTR_I" CASE 222 RETURN "DIXN_TRNS_CNTR_TO_LFT_B" CASE 223 RETURN "DIXN_TRNS_LFT_TO_CNTR_A" CASE 224 RETURN "DIXN_TRNS_CNTR_TO_LFT_D" CASE 225 RETURN "DIXN_IDLE_LFT_B" CASE 226 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 227 RETURN "DIXN_TRNS_LH_TO_CNTR_B" CASE 228 RETURN "DIXN_SYNC_CNTR_B" CASE 229 RETURN "DIXN_IDLE_CNTR_K" CASE 230 RETURN "DIXN_TRNS_CNTR_TO_LFT_E" CASE 231 RETURN "DIXN_TRNS_LFT_TO_OPEN" CASE 232 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 233 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 234 RETURN "DIXN_IDLE_OPEN_A" CASE 235 RETURN "DIXN_DANCE_OPEN_A" CASE 236 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 237 RETURN "DIXN_DANCE_CNTR_C" CASE 238 RETURN "DIXN_IDLE_CNTR_G" CASE 239 RETURN "DIXN_IDLE_CNTR_H" CASE 240 RETURN "DIXN_IDLE_CNTR_I" CASE 241 RETURN "DIXN_IDLE_CNTR_J" CASE 242 RETURN "DIXN_SYNC_CNTR_K" CASE 243 RETURN "DIXN_IDLE_CNTR_L" CASE 244 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 245 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 246 RETURN "DIXN_IDLE_CNTR_M" CASE 247 RETURN "DIXN_SYNC_CNTR_C" CASE 248 RETURN "DIXN_IDLE_CNTR_B" CASE 249 RETURN "DIXN_IDLE_CNTR_LNG_C" CASE 250 RETURN "DIXN_SYNC_CNTR_H" CASE 251 RETURN "DIXN_IDLE_CNTR_A" CASE 252 RETURN "DIXN_TRNS_CNTR_TO_LFT_E" CASE 253 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 254 RETURN "DIXN_TRNS_LH_TO_CNTR" CASE 255 RETURN "DIXN_DANCE_CNTR_OPEN" CASE 256 RETURN "DIXN_IDLE_OPEN_A" CASE 257 RETURN "DIXN_TRNS_OPEN_TO_CNTR_B" CASE 258 RETURN "DIXN_IDLE_CNTR_A" CASE 259 RETURN "DIXN_SYNC_CNTR_B" CASE 260 RETURN "DIXN_SYNC_CNTR_K" CASE 261 RETURN "DIXN_SYNC_CNTR_C" CASE 262 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 263 RETURN "DIXN_DANCE_CNTR_OPEN" CASE 264 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 265 RETURN "DIXN_DANCE_OPEN_A" CASE 266 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 267 RETURN "DIXN_TRNS_OPEN_TO_LFT_B" CASE 268 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 269 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 270 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 271 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 272 RETURN "DIXN_IDLE_CNTR_Gb" CASE 273 RETURN "DIXN_IDLE_CNTR_A" CASE 274 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 275 RETURN "DIXN_IDLE_CNTR_N" CASE 276 RETURN "DIXN_IDLE_CNTR_SHRT_B" CASE 277 RETURN "DIXN_TRNS_CNTR_TO_LFT_D" CASE 278 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 279 RETURN "DIXN_TRNS_CNTR_TO_LFT_E" CASE 280 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 281 RETURN "DIXN_SYNC_CNTR_K" CASE 282 RETURN "DIXN_IDLE_CNTR_B" CASE 283 RETURN "DIXN_TRNS_CNTR_TO_RIGHT" CASE 284 RETURN "DIXN_TRNS_RIGHT_TO_CNTR" CASE 285 RETURN "DIXN_IDLE_CNTR_Gb" CASE 286 RETURN "DIXN_IDLE_CNTR_J" CASE 287 RETURN "DIXN_SYNC_CNTR_A" CASE 288 RETURN "DIXN_IDLE_TRNS_HP_NK_HD" CASE 289 RETURN "DIXN_TRNS_CNTR_TO_LFT_D" CASE 290 RETURN "DIXN_SYNC_LFT_A" CASE 291 RETURN "DIXN_DANCE_CNTR_OPEN" CASE 292 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 293 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 294 RETURN "DIXN_IDLE_OPEN_SHRT" CASE 295 RETURN "DIXN_TRNS_OPEN_TO_LFT" CASE 296 RETURN "DIXN_TRNS_LFT_TO_LH" CASE 297 RETURN "DIXN_TRNS_LH_TO_CNTR_B" CASE 298 RETURN "DIXN_SYNC_CNTR_G" CASE 299 RETURN "DIXN_SYNC_CNTR_F" CASE 300 RETURN "DIXN_SYNC_CNTR_B" ENDSWITCH SWITCH iSequence CASE 301 RETURN "DIXN_TRNS_CNTR_TO_LFT_E" CASE 302 RETURN "DIXN_IDLE_LFT_A" CASE 303 RETURN "DIXN_TRNS_LFT_TO_CNTR_B" CASE 304 RETURN "DIXN_IDLE_CNTR_H" CASE 305 RETURN "DIXN_IDLE_CNTR_I" CASE 306 RETURN "DIXN_SYNC_CNTR_B" CASE 307 RETURN "DIXN_IDLE_CNTR_N" CASE 308 RETURN "DIXN_IDLE_CNTR_SHRT" CASE 309 RETURN "DIXN_IDLE_CNTR_B" CASE 310 RETURN "DIXN_END" ENDSWITCH BREAK CASE AC_SLOT_TALE_OF_US_1 CASE AC_SLOT_TALE_OF_US_2 SWITCH iSequence CASE 0 RETURN "TOU_IDLE_MID_O" CASE 1 RETURN "TOU_IDLE_MID_I" CASE 2 RETURN "TOU_IDLE_MID_H" CASE 3 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 4 RETURN "TOU_SYNC_J" CASE 5 RETURN "TOU_IDLE_MID_I" CASE 6 RETURN "TOU_IDLE_MID_H" CASE 7 RETURN "TOU_IDLE_MID_B" CASE 8 RETURN "NEW_TOU_SYNC_A" CASE 9 RETURN "TOU_DANCE_A" CASE 10 RETURN "TOU_IDLE_MID_A" CASE 11 RETURN "TOU_IDLE_MID_B" CASE 12 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 13 RETURN "TOU_SYNC_B" CASE 14 RETURN "TOU_IDLE_MID_D" CASE 15 RETURN "TOU_IDLE_MID_D" CASE 16 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 17 RETURN "TOU_IDLE_OPEN_A" CASE 18 RETURN "TOU_IDLE_OPEN_B" CASE 19 RETURN "TOU_IDLE_OPEN_C" CASE 20 RETURN "TOU_SYNC_B" CASE 21 RETURN "TOU_IDLE_MID_D" CASE 22 RETURN "TOU_IDLE_MID_D" CASE 23 RETURN "TOU_IDLE_MID_C" CASE 24 RETURN "TOU_IDLE_MID_D" CASE 25 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 26 RETURN "TOU_SYNC_C" CASE 27 RETURN "TOU_SYNC_D" CASE 28 RETURN "TOU_SYNC_E" CASE 29 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 30 RETURN "TOU_TRANS_PC_PC_TO_OPEN_A" CASE 31 RETURN "TOU_TRANS_PC_TO_MID_OPEN_A" CASE 32 RETURN "TOU_TRANS_MID_TO_PC_OPEN_A" CASE 33 RETURN "TOU_TRANS_PC_OPEN_TO_MID_A" CASE 34 RETURN "TOU_IDLE_PC_MID_A" CASE 35 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 36 RETURN "TOU_TRANS_PC_TO_MID_PC_TO_OPEN" CASE 37 RETURN "TOU_IDLE_MID_E" CASE 38 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 39 RETURN "TOU_IDLE_OPEN_C" CASE 40 RETURN "TOU_IDLE_OPEN_A" CASE 41 RETURN "TOU_DANCE_J" CASE 42 RETURN "TOU_TRANS_MID_PC_TO_OPEN_A" CASE 43 RETURN "TOU_DANCE_K" CASE 44 RETURN "TOU_IDLE_MID_J" CASE 45 RETURN "TOU_TRANS_MID_TO_OPEN_D" CASE 46 RETURN "TOU_SYNC_J" CASE 47 RETURN "TOU_DANCE_L" CASE 48 RETURN "TOU_IDLE_MID_K" CASE 49 RETURN "TOU_IDLE_MID_M" CASE 50 RETURN "TOU_DANCE_L" CASE 51 RETURN "TOU_IDLE_MID_K" CASE 52 RETURN "TOU_IDLE_MID_L" CASE 53 RETURN "TOU_IDLE_MID_M" CASE 54 RETURN "TOU_IDLE_MID_N" CASE 55 RETURN "TOU_IDLE_MID_B" CASE 56 RETURN "TOU_DANCE_E" CASE 57 RETURN "TOU_IDLE_MID_F" CASE 58 RETURN "TOU_SYNC_G" CASE 59 RETURN "TOU_SYNC_H" CASE 60 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 61 RETURN "TOU_SYNC_F" CASE 62 RETURN "TOU_DANCE_J" CASE 63 RETURN "TOU_TRANS_MID_PC_TO_OPEN_A" CASE 64 RETURN "TOU_SYNC_E" CASE 65 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 66 RETURN "TOU_TRANS_PC_PC_TO_OPEN_A" CASE 67 RETURN "TOU_TRANS_PC_TO_MID_OPEN_A" CASE 68 RETURN "TOU_TRANS_MID_TO_PC_OPEN_A" CASE 69 RETURN "TOU_TRANS_PC_OPEN_TO_MID_A" CASE 70 RETURN "TOU_IDLE_PC_MID_A" CASE 71 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 72 RETURN "TOU_TRANS_PC_TO_MID_PC_TO_OPEN" CASE 73 RETURN "TOU_IDLE_MID_E" CASE 74 RETURN "TOU_IDLE_MID_H" CASE 75 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 76 RETURN "TOU_IDLE_OPEN_C" CASE 77 RETURN "TOU_IDLE_OPEN_C" CASE 78 RETURN "TOU_SYNC_J" CASE 79 RETURN "TOU_IDLE_MID_I" CASE 80 RETURN "TOU_IDLE_MID_H" CASE 81 RETURN "TOU_IDLE_MID_B" CASE 82 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 83 RETURN "TOU_IDLE_OPEN_B" CASE 84 RETURN "TOU_IDLE_OPEN_C" CASE 85 RETURN "TOU_IDLE_OPEN_C" CASE 86 RETURN "TOU_SYNC_B" CASE 87 RETURN "TOU_IDLE_MID_E" CASE 88 RETURN "TOU_DANCE_C" CASE 89 RETURN "TOU_DANCE_D" CASE 90 RETURN "TOU_DANCE_B" CASE 91 RETURN "TOU_IDLE_MID_F" CASE 92 RETURN "TOU_TRANS_MID_TO_OPEN_C" CASE 93 RETURN "TOU_SYNC_H" CASE 94 RETURN "TOU_IDLE_MID_G" CASE 95 RETURN "TOU_DANCE_E" CASE 96 RETURN "TOU_IDLE_MID_H" CASE 97 RETURN "TOU_IDLE_MID_I" CASE 98 RETURN "TOU_IDLE_MID_F" CASE 99 RETURN "TOU_IDLE_MID_B" ENDSWITCH SWITCH iSequence CASE 100 RETURN "TOU_TRANS_MID_TO_OPEN_C" CASE 101 RETURN "TOU_IDLE_OPEN_C" CASE 102 RETURN "TOU_SYNC_J" CASE 103 RETURN "NEW_TOU_SYNC_A" CASE 104 RETURN "TOU_DANCE_A" CASE 105 RETURN "TOU_IDLE_MID_A" CASE 106 RETURN "TOU_IDLE_MID_B" CASE 107 RETURN "TOU_IDLE_MID_D" CASE 108 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 109 RETURN "TOU_SYNC_B" CASE 110 RETURN "TOU_IDLE_MID_D" CASE 111 RETURN "TOU_IDLE_MID_D" CASE 112 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 113 RETURN "TOU_IDLE_OPEN_A" CASE 114 RETURN "TOU_IDLE_OPEN_C" CASE 115 RETURN "TOU_TRANS_OPEN_TO_MID_B" CASE 116 RETURN "TOU_IDLE_MID_D" CASE 117 RETURN "TOU_IDLE_MID_D" CASE 118 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 119 RETURN "TOU_IDLE_OPEN_A" CASE 120 RETURN "TOU_IDLE_OPEN_B" CASE 121 RETURN "TOU_IDLE_OPEN_C" CASE 122 RETURN "TOU_TRANS_OPEN_TO_MID_B" CASE 123 RETURN "TOU_DANCE_D" CASE 124 RETURN "TOU_IDLE_MID_F" CASE 125 RETURN "TOU_IDLE_MID_N" CASE 126 RETURN "TOU_IDLE_MID_B" CASE 127 RETURN "TOU_DANCE_E" CASE 128 RETURN "TOU_IDLE_MID_F" CASE 129 RETURN "TOU_IDLE_MID_D" CASE 130 RETURN "TOU_IDLE_MID_B" CASE 131 RETURN "TOU_IDLE_MID_F" CASE 132 RETURN "TOU_IDLE_MID_D" CASE 133 RETURN "NEW_TOU_SYNC_A" CASE 134 RETURN "TOU_IDLE_MID_H" CASE 135 RETURN "TOU_IDLE_MID_I" CASE 136 RETURN "TOU_DANCE_F" CASE 137 RETURN "TOU_DANCE_G" CASE 138 RETURN "TOU_TRANS_OPEN_TO_MID_B" CASE 139 RETURN "TOU_IDLE_MID_H" CASE 140 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 141 RETURN "TOU_SYNC_J" CASE 142 RETURN "TOU_IDLE_MID_H" CASE 143 RETURN "TOU_IDLE_MID_F" CASE 144 RETURN "TOU_IDLE_MID_D" CASE 145 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 146 RETURN "TOU_IDLE_OPEN_C" CASE 147 RETURN "TOU_IDLE_OPEN_B" CASE 148 RETURN "TOU_SYNC_F" CASE 149 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 150 RETURN "TOU_SYNC_G" CASE 151 RETURN "TOU_IDLE_OPEN_C" CASE 152 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 153 RETURN "TOU_DANCE_B" CASE 154 RETURN "TOU_IDLE_MID_A" CASE 155 RETURN "TOU_IDLE_MID_A" CASE 156 RETURN "TOU_IDLE_MID_B" CASE 157 RETURN "TOU_IDLE_MID_C" CASE 158 RETURN "TOU_IDLE_MID_D" CASE 159 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 160 RETURN "TOU_SYNC_C" CASE 161 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 162 RETURN "TOU_SYNC_H" CASE 163 RETURN "TOU_DANCE_L" CASE 164 RETURN "TOU_IDLE_MID_K" CASE 165 RETURN "TOU_IDLE_MID_M" CASE 166 RETURN "TOU_IDLE_MID_L" CASE 167 RETURN "TOU_IDLE_MID_M" CASE 168 RETURN "TOU_IDLE_MID_N" CASE 169 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 170 RETURN "TOU_IDLE_OPEN_C" CASE 171 RETURN "TOU_IDLE_OPEN_C" CASE 172 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 173 RETURN "TOU_IDLE_MID_B" CASE 174 RETURN "TOU_IDLE_MID_G" CASE 175 RETURN "TOU_IDLE_MID_H" CASE 176 RETURN "TOU_IDLE_MID_I" CASE 177 RETURN "TOU_DANCE_F" CASE 178 RETURN "TOU_IDLE_MID_D" CASE 179 RETURN "TOU_TRANS_MID_TO_OPEN_D" CASE 180 RETURN "TOU_SYNC_I" CASE 181 RETURN "TOU_IDLE_PC_MID_A" CASE 182 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 183 RETURN "TOU_TRANS_PC_TO_MID_PC_TO_OPEN" CASE 184 RETURN "TOU_IDLE_MID_F" CASE 185 RETURN "TOU_IDLE_MID_M" CASE 186 RETURN "TOU_IDLE_MID_F" CASE 187 RETURN "TOU_DANCE_A" CASE 188 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 189 RETURN "TOU_IDLE_OPEN_C" CASE 190 RETURN "TOU_SYNC_J" CASE 191 RETURN "TOU_IDLE_MID_M" CASE 192 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 193 RETURN "TOU_IDLE_OPEN_A" CASE 194 RETURN "TOU_IDLE_OPEN_B" CASE 195 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 196 RETURN "TOU_DANCE_B" CASE 197 RETURN "TOU_IDLE_MID_E" CASE 198 RETURN "TOU_IDLE_MID_N" CASE 199 RETURN "TOU_IDLE_MID_D" ENDSWITCH SWITCH iSequence CASE 200 RETURN "TOU_DANCE_E" CASE 201 RETURN "TOU_DANCE_H" CASE 202 RETURN "TOU_IDLE_MID_E" CASE 203 RETURN "TOU_IDLE_MID_C" CASE 204 RETURN "TOU_IDLE_MID_I" CASE 205 RETURN "TOU_DANCE_C" CASE 206 RETURN "TOU_DANCE_D" CASE 207 RETURN "TOU_IDLE_MID_F" CASE 208 RETURN "TOU_TRANS_MID_TO_OPEN_C" CASE 209 RETURN "TOU_TRANS_OPEN_TO_MID_B" CASE 210 RETURN "TOU_IDLE_MID_I" CASE 211 RETURN "TOU_DANCE_A" CASE 212 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 213 RETURN "TOU_IDLE_OPEN_B" CASE 214 RETURN "TOU_SYNC_B" CASE 215 RETURN "TOU_IDLE_MID_E" CASE 216 RETURN "TOU_DANCE_B" CASE 217 RETURN "TOU_DANCE_C" CASE 218 RETURN "TOU_DANCE_D" CASE 219 RETURN "TOU_SYNC_G" CASE 220 RETURN "TOU_IDLE_OPEN_C" CASE 221 RETURN "TOU_IDLE_OPEN_A" CASE 222 RETURN "TOU_TRANS_OPEN_TO_MID_B" CASE 223 RETURN "TOU_IDLE_MID_E" CASE 224 RETURN "NEW_TOU_SYNC_A" CASE 225 RETURN "TOU_DANCE_A" CASE 226 RETURN "TOU_IDLE_MID_A" CASE 227 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 228 RETURN "TOU_SYNC_B" CASE 229 RETURN "TOU_IDLE_MID_D" CASE 230 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 231 RETURN "TOU_IDLE_OPEN_A" CASE 232 RETURN "TOU_IDLE_OPEN_B" CASE 233 RETURN "TOU_IDLE_OPEN_C" CASE 234 RETURN "TOU_IDLE_OPEN_C" CASE 235 RETURN "TOU_SYNC_F" CASE 236 RETURN "TOU_TRANS_OPEN_TO_MID_B" CASE 237 RETURN "TOU_DANCE_I" CASE 238 RETURN "TOU_DANCE_H" CASE 239 RETURN "TOU_DANCE_F" CASE 240 RETURN "TOU_DANCE_G" CASE 241 RETURN "TOU_IDLE_OPEN_C" CASE 242 RETURN "TOU_IDLE_OPEN_C" CASE 243 RETURN "TOU_IDLE_OPEN_C" CASE 244 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 245 RETURN "TOU_IDLE_MID_I" CASE 246 RETURN "TOU_IDLE_MID_B" CASE 247 RETURN "NEW_TOU_SYNC_A" CASE 248 RETURN "TOU_IDLE_MID_B" CASE 249 RETURN "TOU_IDLE_MID_D" CASE 250 RETURN "TOU_DANCE_E" CASE 251 RETURN "TOU_IDLE_MID_H" CASE 252 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 253 RETURN "TOU_SYNC_J" CASE 254 RETURN "TOU_IDLE_MID_I" CASE 255 RETURN "TOU_IDLE_MID_H" CASE 256 RETURN "TOU_IDLE_MID_B" CASE 257 RETURN "TOU_IDLE_MID_J" CASE 258 RETURN "TOU_DANCE_B" CASE 259 RETURN "TOU_TRANS_MID_TO_OPEN_A" CASE 260 RETURN "TOU_SYNC_C" CASE 261 RETURN "TOU_SYNC_D" CASE 262 RETURN "TOU_IDLE_MID_B" CASE 263 RETURN "TOU_SYNC_E" CASE 264 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 265 RETURN "TOU_TRANS_PC_PC_TO_OPEN_A" CASE 266 RETURN "TOU_TRANS_PC_OPEN_TO_MID_A" CASE 267 RETURN "TOU_IDLE_PC_MID_A" CASE 268 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 269 RETURN "TOU_TRANS_PC_TO_MID_PC_TO_OPEN" CASE 270 RETURN "TOU_TRANS_MID_TO_OPEN_B" CASE 271 RETURN "TOU_IDLE_OPEN_C" CASE 272 RETURN "TOU_IDLE_OPEN_C" CASE 273 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 274 RETURN "TOU_DANCE_E" CASE 275 RETURN "TOU_IDLE_MID_H" CASE 276 RETURN "TOU_IDLE_MID_I" CASE 277 RETURN "TOU_DANCE_F" CASE 278 RETURN "TOU_DANCE_G" CASE 279 RETURN "TOU_SYNC_I" CASE 280 RETURN "TOU_IDLE_PC_MID_A" CASE 281 RETURN "TOU_TRANS_PC_CTR_TO_PC_A" CASE 282 RETURN "TOU_TRANS_PC_TO_MID_PC_TO_OPEN" CASE 283 RETURN "TOU_IDLE_MID_H" CASE 284 RETURN "TOU_IDLE_MID_I" CASE 285 RETURN "TOU_IDLE_MID_I" CASE 286 RETURN "TOU_IDLE_MID_B" CASE 287 RETURN "TOU_DANCE_H" CASE 288 RETURN "TOU_DANCE_I" CASE 289 RETURN "TOU_DANCE_F" CASE 290 RETURN "TOU_DANCE_G" CASE 291 RETURN "TOU_IDLE_OPEN_C" CASE 292 RETURN "TOU_IDLE_OPEN_C" CASE 293 RETURN "TOU_TRANS_OPEN_TO_MID_A" CASE 294 RETURN "TOU_IDLE_MID_I" CASE 295 RETURN "TOU_END" ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC INT GET_NC_DJ_LAST_ANIM_CLIP_INDEX(ACTIVITY_SLOT_NAMES eActivity) SWITCH eActivity CASE AC_SLOT_TALE_OF_US_1 CASE AC_SLOT_TALE_OF_US_2 RETURN 295 CASE AC_SLOT_SOLOMUN RETURN 481 CASE AC_SLOT_DIXON RETURN 310 CASE AC_SLOT_BLACK_MADONNA RETURN 449 ENDSWITCH RETURN 0 ENDFUNC FUNC TEXT_LABEL_63 GET_NC_DJ_ANIM_CLIP(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) TEXT_LABEL_63 sReturn = "" SWITCH eActivity CASE AC_SLOT_TALE_OF_US_1 IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_cc" ENDIF BREAK CASE AC_SLOT_TALE_OF_US_2 IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_mm" ENDIF BREAK CASE AC_SLOT_SOLOMUN IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_sol" ENDIF BREAK CASE AC_SLOT_DIXON IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_dix" ENDIF BREAK CASE AC_SLOT_BLACK_MADONNA IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_blamadon" ENDIF BREAK ENDSWITCH RETURN sReturn ENDFUNC FUNC NC_DJ_ANIM_HEADPHONE_STATE GET_NC_DJ_ANIM_HEADPHONE_STATE(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) SWITCH eActivity CASE AC_SLOT_SOLOMUN IF iSequence < 4 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 11 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 26 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 42 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 61 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 64 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 67 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 76 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 79 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 90 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 99 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 113 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 136 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 155 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 157 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 180 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 187 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 227 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 238 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 247 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 249 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 255 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 257 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 263 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 289 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 318 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 332 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 342 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 354 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 356 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 375 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 385 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 404 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 416 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 418 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 420 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 422 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 437 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 449 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 467 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 469 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELSE RETURN DJ_ANIM_HEADPHONE_STATE_OFF ENDIF BREAK CASE AC_SLOT_DIXON IF iSequence < 1 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 28 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 37 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 39 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 40 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 44 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 48 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 51 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 57 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 65 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 78 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 84 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 88 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 95 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 99 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 104 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 105 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 108 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 112 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 131 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 132 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 136 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 154 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 157 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 160 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 164 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 168 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 174 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 176 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 216 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 223 RETURN DJ_ANIM_HEADPHONE_STATE_OFF ELIF iSequence < 249 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 269 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 287 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELIF iSequence < 289 RETURN DJ_ANIM_HEADPHONE_STATE_NECK ELIF iSequence < 290 RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ELSE RETURN DJ_ANIM_HEADPHONE_STATE_OFF ENDIF BREAK ENDSWITCH RETURN DJ_ANIM_HEADPHONE_STATE_HEAD ENDFUNC FUNC TEXT_LABEL_63 GET_NC_DJ_HEADPHONES_ANIM_CLIP(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) UNUSED_PARAMETER(eActivity) UNUSED_PARAMETER(iSequence) TEXT_LABEL_63 sReturn = "" INT iAnimHash NC_DJ_ANIM_HEADPHONE_STATE eHeadphonesState SWITCH eActivity CASE AC_SLOT_DIXON IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) IF iAnimHash = HASH("DIXN_TRNS_LFT_TO_CNTR_A") OR iAnimHash = HASH("DIXN_IDLE_CNTR_LNG") OR iAnimHash = HASH("DIXN_IDLE_TRNS_HP_NK_HD") OR iAnimHash = HASH("DIXN_DANCE_CNTR_B") OR iAnimHash = HASH("DIXN_IDLE_CNTR_F") OR iAnimHash = HASH("DIXN_TRNS_OPEN_TO_CNTR_A") OR iAnimHash = HASH("DIXN_SYNC_CNTR_A") OR iAnimHash = HASH("DIXN_TRNS_OPEN_TO_CNTR_C") OR iAnimHash = HASH("DIXN_TRNS_CNTR_TO_OPEN_B") OR iAnimHash = HASH("DIXN_IDLE_CNTR_LNG_C") OR iAnimHash = HASH("DIXN_SYNC_CNTR_I") OR iAnimHash = HASH("DIXN_SYNC_LFT_A") OR iAnimHash = HASH("DIXN_IDLE_CNTR_LNG_C") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones" ELSE IF GET_NC_DJ_ANIM_HEADPHONE_STATE(eActivity, iSequence) = DJ_ANIM_HEADPHONE_STATE_NECK OR iAnimHash = HASH("DIXN_TRNS_OPEN_TO_CNTR_D") OR iAnimHash = HASH("DIXN_IDLE_CNTR_B") OR iAnimHash = HASH("DIXN_TRNS_LFT_TO_CNTR_B") OR iAnimHash = HASH("DIXN_SYNC_CNTR_D") OR iAnimHash = HASH("DIXN_TRNS_CNTR_TO_LFT") OR iAnimHash = HASH("DIXN_SYNC_CNTR_G") IF (iAnimHash = HASH("DIXN_TRNS_OPEN_TO_CNTR_D") AND iSequence = 122) OR (iAnimHash = HASH("DIXN_IDLE_CNTR_B") AND iSequence = 175) OR (iAnimHash = HASH("DIXN_TRNS_LFT_TO_CNTR_B") AND iSequence = 268) OR (iAnimHash = HASH("DIXN_TRNS_CNTR_TO_LFT") AND iSequence = 33 ) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones" ELIF (iAnimHash = HASH("DIXN_IDLE_CNTR_B") AND (iSequence = 85 OR iSequence = 309)) OR (iAnimHash = HASH("DIXN_TRNS_LFT_TO_CNTR_B") AND iSequence = 303) OR (iAnimHash = HASH("DIXN_TRNS_CNTR_TO_LFT") AND (iSequence = 43 OR iSequence = 107 OR iSequence = 159)) OR (iAnimHash = HASH("DIXN_SYNC_CNTR_G")AND iSequence = 298) sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones_Table" ELSE sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones_Neck" ENDIF ELIF GET_NC_DJ_ANIM_HEADPHONE_STATE(eActivity, iSequence) = DJ_ANIM_HEADPHONE_STATE_OFF sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones_Table" ELSE sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones" ENDIF ENDIF ENDIF BREAK CASE AC_SLOT_SOLOMUN eHeadphonesState = GET_NC_DJ_ANIM_HEADPHONE_STATE(eActivity, iSequence) IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) IF iAnimHash = HASH("SOL_SYNC_H") OR iAnimHash = HASH("SOL_TRANS_LFTHP_TO_CTRMID_A") OR iAnimHash = HASH("SOL_DANCE_H") OR iAnimHash = HASH("SOL_DANCE_F") OR iAnimHash = HASH("SOL_SYNC_H") OR iAnimHash = HASH("SOL_TRANS_LFTHP_TO_OUT_A") OR iAnimHash = HASH("NEW_SOL_DANCE_A") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones" ELIF iAnimHash = HASH("SOL_IDLE_LEFT_D") OR iAnimHash = HASH("SOL_DANCE_D") OR iAnimHash = HASH("SOL_IDLE_CTR_MID_G") OR iAnimHash = HASH("SOL_DANCE_J") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones_neck" ELSE sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_headphones" IF eHeadphonesState = DJ_ANIM_HEADPHONE_STATE_NECK sReturn += "_NECK" ELIF eHeadphonesState = DJ_ANIM_HEADPHONE_STATE_OFF sReturn += "_TABLE" ENDIF ENDIF ENDIF BREAK ENDSWITCH RETURN sReturn ENDFUNC // fan-specific for BMAD as this has to always be animated FUNC TEXT_LABEL_63 GET_NC_DJ_FAN_ANIM_CLIP(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) INT iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) TEXT_LABEL_63 sReturn = "BASE_Prop_Battle_Fan" IF iAnimHash = HASH("POSE_B_LONG_TRANS_DANCE_A") OR iAnimHash = HASH("POSE_E_IDLE_B") sReturn = GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_prop_battle_fan" ENDIF RETURN sReturn ENDFUNC FUNC TEXT_LABEL_63 GET_NC_DJ_PROP_INTERACT_ANIM_CLIP(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) TEXT_LABEL_63 sReturn = "" INT iAnimHash SWITCH eActivity CASE AC_SLOT_TALE_OF_US_1 IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) IF iAnimHash = HASH("TOU_SYNC_H") OR iAnimHash = HASH("TOU_DANCE_L") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_glass_cc" ELIF iAnimHash = HASH("TOU_SYNC_B") OR iAnimHash = HASH("TOU_SYNC_C") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_glass" ENDIF ENDIF BREAK CASE AC_SLOT_TALE_OF_US_2 IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) AND GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) = HASH("TOU_DANCE_J") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_glass_mm" ENDIF BREAK CASE AC_SLOT_DIXON IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) IF iAnimHash = HASH("DIXN_IDLE_OPEN_A") OR iAnimHash = HASH("DIXN_SYNC_CNTR_D") OR iAnimHash = HASH("DIXN_TRNS_CNTR_TO_LFT_C") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_glass" ELIF iAnimHash = HASH("DIXN_DANCE_CNTR_C") OR iAnimHash = HASH("DIXN_DANCE_CNTR_D") OR iAnimHash = HASH("DIXN_SYNC_CNTR_H") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_glass^2" ENDIF ENDIF BREAK CASE AC_SLOT_SOLOMUN IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) IF iAnimHash = HASH("SOL_SYNC_E") OR iAnimHash = HASH("SOL_SYNC_G") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_wineglass" ENDIF ENDIF BREAK CASE AC_SLOT_BLACK_MADONNA IF NOT IS_STRING_NULL_OR_EMPTY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) iAnimHash = GET_HASH_KEY(GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence)) //whiskey glass IF iAnimHash = HASH("POSE_A_TRANS_DRINK_DOWN") OR iAnimHash = HASH("POSE_B_LONG_TRANS_DRINK_DOWN") OR iAnimHash = HASH("DANCE_B_TRANS_DRINK_DOWN") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_tumbler_cs2_s" //waterbottle ELIF iAnimHash = HASH("POSE_B_LONG_TRANS_POSE_A") OR iAnimHash = HASH("POSE_E_IDLE_C") sReturn += GET_NC_DJ_ANIM_CLIP_BASE(eActivity, iSequence) sReturn += "_water_bottle" ENDIF ENDIF BREAK ENDSWITCH RETURN sReturn ENDFUNC FUNC STRING GET_NC_DJ_ANIM_DICT(ACTIVITY_SLOT_NAMES eActivity, INT iSequence) UNUSED_PARAMETER(iSequence) SWITCH eActivity CASE AC_SLOT_TALE_OF_US_1 CASE AC_SLOT_TALE_OF_US_2 RETURN "anim@amb@nightclub@djs@tale_of_us@" CASE AC_SLOT_SOLOMUN RETURN "anim@amb@nightclub@djs@solomun@" CASE AC_SLOT_DIXON RETURN "anim@amb@nightclub@djs@dixon@" CASE AC_SLOT_BLACK_MADONNA RETURN "anim@amb@nightclub@djs@black_madonna@" ENDSWITCH RETURN "" ENDFUNC PROC DETACH_NC_DJ_HEADPHONES(NIGHT_CLUB_PEDS &nightClubPed) IF NOT DOES_ENTITY_EXIST(nightClubPed.oiSceneObjects[0]) OR IS_ENTITY_DEAD(nightClubPed.oiSceneObjects[0]) OR NOT IS_ENTITY_ATTACHED(nightClubPed.oiSceneObjects[0]) EXIT ENDIF DETACH_ENTITY(nightClubPed.oiSceneObjects[0], FALSE) ENDPROC // get headphone attach coord. // bHead = TRUE get head coord bHead = FALSE get neck coord FUNC VECTOR GET_DJ_HEADPHONE_ATTACH_COORD(NIGHT_CLUB_PEDS &nightClubPed, BOOL bHead) SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_DIXON IF bHead RETURN <<0.108, 0.003, -0.006>> ELSE RETURN <<0.037, 0.021, 0>> ENDIF BREAK CASE AC_SLOT_SOLOMUN IF bHead RETURN <<0.099, 0.01, -0.001>> ELSE RETURN <<0.060, 0.012, -0.001>> ENDIF BREAK ENDSWITCH IF bHead RETURN <<0.935, 0.007, 0>> ENDIF RETURN <<0.062, 0, 0>> ENDFUNC FUNC VECTOR GET_DJ_HEADPHONE_ATTACH_ROTATION(NIGHT_CLUB_PEDS &nightClubPed, BOOL bHead) SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_DIXON IF bHead RETURN <<4.085, 90, -9>> ELSE RETURN <<0, 96, -80>> ENDIF BREAK CASE AC_SLOT_SOLOMUN IF bHead RETURN <<0, -90, 175>> ELSE RETURN <<0, -94, 97>> ENDIF BREAK ENDSWITCH IF bHead RETURN <<0, -90, 175>> ENDIF RETURN <<0, -85, 107>> ENDFUNC FUNC BOOL DOES_DJ_HAVE_HEADPHONES_PROP(NIGHT_CLUB_PEDS &nightClubPed) SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_BLACK_MADONNA CASE AC_SLOT_TALE_OF_US_1 CASE AC_SLOT_TALE_OF_US_2 RETURN FALSE BREAK ENDSWITCH RETURN TRUE ENDFUNC PROC ATTACH_NC_DJ_HEADPHONES(NIGHT_CLUB_PEDS &nightClubPed) IF NOT DOES_ENTITY_EXIST(nightClubPed.oiSceneObjects[0]) OR IS_ENTITY_DEAD(nightClubPed.oiSceneObjects[0]) OR NOT DOES_ENTITY_EXIST(nightClubPed.piScenePeds) OR IS_ENTITY_DEAD(nightClubPed.piScenePeds) OR NOT DOES_DJ_HAVE_HEADPHONES_PROP(nightClubPed) EXIT ENDIF TEXT_LABEL_63 tl63HeadphoneClip = GET_NC_DJ_HEADPHONES_ANIM_CLIP(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl63HeadphoneClip) IF IS_ENTITY_ATTACHED(nightClubPed.oiSceneObjects[0]) DETACH_ENTITY(nightClubPed.oiSceneObjects[0], FALSE) ENDIF EXIT ENDIF SWITCH GET_NC_DJ_ANIM_HEADPHONE_STATE(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) CASE DJ_ANIM_HEADPHONE_STATE_HEAD ATTACH_ENTITY_TO_ENTITY(nightClubPed.oiSceneObjects[0], nightClubPed.piScenePeds, GET_PED_BONE_INDEX(nightClubPed.piScenePeds, BONETAG_HEAD), GET_DJ_HEADPHONE_ATTACH_COORD(nightClubPed, TRUE), GET_DJ_HEADPHONE_ATTACH_ROTATION(nightClubPed, TRUE), TRUE, DEFAULT, DEFAULT, TRUE) BREAK CASE DJ_ANIM_HEADPHONE_STATE_NECK ATTACH_ENTITY_TO_ENTITY(nightClubPed.oiSceneObjects[0], nightClubPed.piScenePeds, GET_PED_BONE_INDEX(nightClubPed.piScenePeds, BONETAG_NECK), GET_DJ_HEADPHONE_ATTACH_COORD(nightClubPed, FALSE), GET_DJ_HEADPHONE_ATTACH_ROTATION(nightClubPed, FALSE), TRUE, DEFAULT, DEFAULT, TRUE) BREAK CASE DJ_ANIM_HEADPHONE_STATE_OFF IF IS_ENTITY_ATTACHED(nightClubPed.oiSceneObjects[0]) DETACH_ENTITY(nightClubPed.oiSceneObjects[0], FALSE) ENDIF BREAK ENDSWITCH ENDPROC FUNC INT GET_LENGTH_OF_MIX_TRACK(INT iHashedTrackName) SWITCH iHashedTrackName CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_PRIVATE_CLUB_01") RETURN 1703526 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_PRIVATE_CLUB_02") RETURN 2308447 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_PRIVATE_CLUB_03") RETURN 1213842 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_PRIVATE_CLUB_01") RETURN 1005020 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_PRIVATE_CLUB_02") RETURN 1272109 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_PRIVATE_CLUB_03") RETURN 1302450 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_PRIVATE_CLUB_01") RETURN 1173847 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_PRIVATE_CLUB_02") RETURN 1392604 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_PRIVATE_CLUB_03") RETURN 1259501 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_PRIVATE_CLUB_01") RETURN 922497 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_PRIVATE_CLUB_02") RETURN 1772747 CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_PRIVATE_CLUB_03") RETURN 1410964 ENDSWITCH RETURN -1 ENDFUNC FUNC INT GET_CURRENT_MIX_TIME(INT iMixStationID) IF iMixStationID = -1 RETURN 0 ENDIF INT iCurrentTime = GET_CURRENT_TRACK_PLAY_TIME(GET_RADIO_STATION_NAME(iMixStationID)) INT i = 1 INT iHashKey = GET_HASH_KEY(GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(GET_RADIO_STATION_NAME(iMixStationID)), i)) WHILE iHashKey != GET_CURRENT_TRACK_SOUND_NAME(GET_RADIO_STATION_NAME(iMixStationID)) AND GET_LENGTH_OF_MIX_TRACK(iHashKey) != -1 iCurrentTime += (GET_LENGTH_OF_MIX_TRACK(iHashKey) - 1000) // - 1000 for cross fade time i++ iHashKey = GET_HASH_KEY(GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(GET_RADIO_STATION_NAME(iMixStationID)), i)) ENDWHILE RETURN iCurrentTime ENDFUNC FUNC INT GET_TOTAL_MIX_TIME(INT iMixStationID) IF iMixStationID = -1 RETURN 0 ENDIF INT i = 1 INT iTotalTime = 0 INT iHashKey = GET_HASH_KEY(GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(GET_RADIO_STATION_NAME(iMixStationID)), i)) WHILE GET_LENGTH_OF_MIX_TRACK(iHashKey) != -1 iTotalTime += (GET_LENGTH_OF_MIX_TRACK(iHashKey) - 1000) // - 1000 for cross fade time i++ iHashKey = GET_HASH_KEY(GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(GET_RADIO_STATION_NAME(iMixStationID)), i)) ENDWHILE RETURN iTotalTime ENDFUNC PROC MAINTAIN_CURRENT_DJ_SEQUENCE_TO_MIX_TIME(NIGHT_CLUB_STRUCT &nightClubStruct) IF nightClubStruct.iMixAnimCatchupTime > 0 INT j = 0 FLOAT fMixTime = nightClubStruct.iMixAnimCatchupTime / 1000.0 TEXT_LABEL_63 tlClip IF (nightClubStruct.iDJPedID1 != -1) tlClip = GET_NC_DJ_ANIM_CLIP(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].eActiveActivity, nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence) WHILE NOT IS_STRING_NULL_OR_EMPTY(tlClip) AND fMixTime > 0.0 AND j < 50 CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_CURRENT_DJ_SEQUENCE_TO_MIX_TIME - Taking away ", tlClip, " from mix time ", fMixTime, " (sequence ", nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence, ")") fMixTime -= GET_ANIM_DURATION(GET_NC_DJ_ANIM_DICT(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].eActiveActivity, nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence), tlClip) nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence++ j++ tlClip = GET_NC_DJ_ANIM_CLIP(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].eActiveActivity, nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence) ENDWHILE nightClubStruct.iMixAnimCatchupTime = FLOOR(fMixTime * 1000.0) IF fMixTime <= 0 ATTACH_NC_DJ_HEADPHONES(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1]) nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence-- IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID1] = TRUE nightClubStruct.iMixAnimTime = GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID) + nightClubStruct.iMixAnimCatchupTime nightClubStruct.bInitialDjAnim = TRUE ENDIF IF (nightClubStruct.iDJPedID2 != -1) nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].iCurrentSequence = nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence IF fMixTime <= 0 ATTACH_NC_DJ_HEADPHONES(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2]) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID2] = TRUE ENDIF ENDIF ENDIF ENDIF ENDPROC PROC GET_NC_LEANING_TEXTING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bIsFemale) SWITCH iState CASE 0 IF (bIsFemale) SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_leaning_female_wall_back_texting_idle_a" BREAK ENDSWITCH ELSE SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_leaning_male_wall_back_mobile_idle_a" BREAK ENDSWITCH ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_GUARDING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_stand_guard_male_base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_TRACEY_DANCING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mini_strip_club_lap_dance_ld_girl_a_song_a_p1" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_HANGOUT_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bIsFemale) SWITCH iState CASE 0 IF (bIsFemale) SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_hang_out_street_female_hold_arm_idle_b" BREAK ENDSWITCH ELSE SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_hang_out_street_male_c_base" BREAK ENDSWITCH ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_SIT_DRINKING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bIsFemale) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" IF (bIsFemale) SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_drink_beer_female_idle_b" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_drink_beer_female_idle_b" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_drink_beer_female_idle_c" BREAK ENDSWITCH ELSE SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_drink_beer_male_idle_a" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_drink_beer_male_idle_b" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_drink_beer_male_idle_c" BREAK ENDSWITCH ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_LEAN_SMOKE_1_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_leaning_male_wall_back_smoking_idle_a" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_USE_COMPUTER_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "anim_amb_office_boss_male_computer_idle" activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "anim_amb_office_boss_male_computer_idle_chair" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_TECH_USE_COMPUTER_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_computer_male_base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_BARTENDING_YACHT_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mini_strip_club_drink_idle_a_bartender" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_WORKER_CLIPBOARD_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_clipboard_male_idle_a" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "misschinese1crazydance_crazy_dance_1" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_DRINK_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bIsFemale) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" SWITCH iSequence CASE 0 IF (bIsFemale) activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_drinking_beer_female_base" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_drinking_beer_male_base" ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_SMOKE_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "mp_player_int_uppersmoke" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mp_player_int_smoke" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_SOLOMUN_DJING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) TEXT_LABEL_63 tl31HeadphoneClip = GET_NC_DJ_HEADPHONES_ANIM_CLIP(AC_SLOT_SOLOMUN, iSequence) TEXT_LABEL_63 tl31PropInteractClip = GET_NC_DJ_PROP_INTERACT_ANIM_CLIP(AC_SLOT_SOLOMUN, iSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_SOLOMUN, iSequence) activityAnimSequence.activitySyncScenePed[0].sAnimClip = GET_NC_DJ_ANIM_CLIP(AC_SLOT_SOLOMUN, iSequence) activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_SOLOMUN, iSequence) activityAnimSequence.activitySyncSceneEntity[1].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_SOLOMUN, iSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl31HeadphoneClip) activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = Get_String_From_TextLabel(tl31HeadphoneClip) ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(tl31PropInteractClip) activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = Get_String_From_TextLabel(tl31PropInteractClip) ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_DIXON_DJING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) TEXT_LABEL_63 tl31HeadphoneClip = GET_NC_DJ_HEADPHONES_ANIM_CLIP(AC_SLOT_DIXON, iSequence) TEXT_LABEL_63 tl31PropInteractClip = GET_NC_DJ_PROP_INTERACT_ANIM_CLIP(AC_SLOT_DIXON, iSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_DIXON, iSequence) activityAnimSequence.activitySyncScenePed[0].sAnimClip = GET_NC_DJ_ANIM_CLIP(AC_SLOT_DIXON, iSequence) activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_DIXON, iSequence) activityAnimSequence.activitySyncSceneEntity[1].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_DIXON, iSequence) activityAnimSequence.activitySyncSceneEntity[2].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_DIXON, iSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl31HeadphoneClip) activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = Get_String_From_TextLabel(tl31HeadphoneClip) ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(tl31PropInteractClip) IF iSequence = 14 OR iSequence = 76 OR iSequence = 186 OR iSequence = 237 OR iSequence = 250 activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = Get_String_From_TextLabel(tl31PropInteractClip) ELSE activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = Get_String_From_TextLabel(tl31PropInteractClip) ENDIF ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_TALE_OF_US_1_DJING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) TEXT_LABEL_63 tl31PropInteractClip = GET_NC_DJ_PROP_INTERACT_ANIM_CLIP(AC_SLOT_TALE_OF_US_1, iSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_TALE_OF_US_1, iSequence) activityAnimSequence.activitySyncScenePed[0].sAnimClip = GET_NC_DJ_ANIM_CLIP(AC_SLOT_TALE_OF_US_1, iSequence) activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_TALE_OF_US_1, iSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl31PropInteractClip) activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME(tl31PropInteractClip, 0, GET_LENGTH_OF_LITERAL_STRING(tl31PropInteractClip)) ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_TALE_OF_US_2_DJING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) TEXT_LABEL_63 tl31PropInteractClip = GET_NC_DJ_PROP_INTERACT_ANIM_CLIP(AC_SLOT_TALE_OF_US_2, iSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_TALE_OF_US_2, iSequence) activityAnimSequence.activitySyncScenePed[0].sAnimClip = GET_NC_DJ_ANIM_CLIP(AC_SLOT_TALE_OF_US_2, iSequence) activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_TALE_OF_US_2, iSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl31PropInteractClip) activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME(tl31PropInteractClip, 0, GET_LENGTH_OF_LITERAL_STRING(tl31PropInteractClip)) ENDIF BREAK ENDSWITCH ENDPROC FUNC BOOL SHOULD_BLACK_MADONA_HAVE_WATER_BOTTLE_PROP(INT iSequence) SWITCH iSequence CASE 57 //"POSE_E_IDLE_C" CASE 237 CASE 364 CASE 100 //"POSE_B_LONG_TRANS_POSE_A" RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL SHOULD_BLACK_MADONA_HAVE_FAN_PROP(INT iSequence) SWITCH iSequence CASE 36 //POSE_B_LONG_TRANS_DANCE_A CASE 96 CASE 190 CASE 339 CASE 389 CASE 50 //POSE_E_IDLE_B CASE 235 CASE 274 CASE 365 RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC PROC GET_NC_BLACK_MADONNA_DJING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) TEXT_LABEL_63 tl31PropInteractClip = GET_NC_DJ_PROP_INTERACT_ANIM_CLIP(AC_SLOT_BLACK_MADONNA, iSequence) TEXT_LABEL_63 tl31FanInteractClip = GET_NC_DJ_FAN_ANIM_CLIP(AC_SLOT_BLACK_MADONNA, iSequence) //PRINTLN("tl31PropInteractClip = ",tl31PropInteractClip) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_BLACK_MADONNA, iSequence) activityAnimSequence.activitySyncScenePed[0].sAnimClip = GET_NC_DJ_ANIM_CLIP(AC_SLOT_BLACK_MADONNA, iSequence) activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_BLACK_MADONNA, iSequence) activityAnimSequence.activitySyncSceneEntity[1].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_BLACK_MADONNA, iSequence) activityAnimSequence.activitySyncSceneEntity[2].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_BLACK_MADONNA, iSequence) ///activityAnimSequence.activitySyncSceneEntity[3].sAnimDict = GET_NC_DJ_ANIM_DICT(AC_SLOT_BLACK_MADONNA, iSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl31PropInteractClip) //water bottle IF SHOULD_BLACK_MADONA_HAVE_WATER_BOTTLE_PROP(iSequence) activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = Get_String_From_TextLabel(tl31PropInteractClip) //whiskey ELSE activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = Get_String_From_TextLabel(tl31PropInteractClip) ENDIF ENDIF //fan activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = Get_String_From_TextLabel(tl31FanInteractClip) IF NOT SHOULD_BLACK_MADONA_HAVE_FAN_PROP(iSequence) activityAnimSequence.activitySyncSceneEntity[2].flags = SYNCED_SCENE_LOOP_WITHIN_SCENE ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NC_DANCING_SCENARIO_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bFemale = FALSE) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" SWITCH iSequence CASE 0 IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_PARTYING_FEMALE_PARTYING_BEER_BASE" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_PARTYING_MALE_PARTYING_BEER_BASE" ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_DANCING_TO_BEER_WALK_SCENARIO_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bFemale = FALSE) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" SWITCH iSequence CASE 0 IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_PARTYING_FEMALE_PARTYING_BEER_BASE" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_PARTYING_MALE_PARTYING_BEER_BASE" ENDIF BREAK CASE 1 CASE 2 IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_window_shop_female_idle_a_browse_a" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_window_shop_male_idle_a_browse_a" ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_DANCING_TO_SELFIE_WALK_SCENARIO_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bFemale = FALSE) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" SWITCH iSequence CASE 0 IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_PARTYING_FEMALE_PARTYING_BEER_BASE" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_PARTYING_MALE_PARTYING_BEER_BASE" ENDIF BREAK CASE 1 IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_mobile_film_shocking_female_idle_b" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_mobile_film_shocking_male_idle_b" ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_STRIP_DANCING_PRIVATE_SCENARIO_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mini_strip_club_private_dance_idle_priv_dance_idle" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_JACK_H_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_cheering_female_c" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_TONY_BAR_LEAN(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@GT_IDLE@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_LAZLOW_WALL_LEAN(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_leaning_male_wall_back_mobile_idle_a" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_STAND_MOBILE_MALE_TEXT_IDLE_A" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_LAZLOW_SELFIE(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_mobile_film_shocking_male_idle_b" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_TONY_PHONE(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AMB_WORLD_HUMAN_STAND_MOBILE_MALE_TEXT_IDLE_B" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_HBARTENDER_STOCK_TAKE(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_medic_standing_timeofdeath_base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_BUSBOY_TOILET(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_chair_male_generic_base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_TOILET_BUNKER_SEAT(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_seat_wall_female_hands_by_sides_idle_c" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_TOILET_SMOKE_WEED(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_smoking_pot_male_base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_TOILET_CHECK_OUT_MIRROR(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_window_shop_female_idle_a_browse_b" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_TOILET_PHONE(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bFemale = FALSE) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" SWITCH iSequence CASE 0 IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "anim_heists_heist_safehouse_intro_phone_couch_female" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "anim_heists_heist_safehouse_intro_phone_couch_male" ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_TECH_STAGE_SIT(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_seat_wall_tablet_male_idle_a" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_BOUNCER_TONY_TALK(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "rcmme_amanda1_stand_loop_cop" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_CLUB_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "rcmme_amanda1_stand_loop_cop" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_F1(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_bar_female_elbows_on_bar_idle_a" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_F2(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_d_v2" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_M1(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_bar_male_elbows_on_bar_idle_a" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_M2(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_prop_human_seat_bar_male_elbows_on_bar_idle_c" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC FUNC STRING BuildAnimDictString(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTag) SWITCH eDict CASE NCAD_FACE_DJ SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN "anim@amb@nightclub@dancers@crowddance_facedj@low_intesnsity" CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@crowddance_facedj@med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity" ENDSWITCH BREAK CASE NCAD_SINGLE_PROPS SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN "anim@amb@nightclub@dancers@crowddance_single_props@low_intensity" CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@crowddance_single_props@med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@crowddance_single_props@hi_intensity" ENDSWITCH BREAK CASE NCAD_AMBIENT_PEDS SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@club_ambientpeds@low-med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@club_ambientpeds@med-hi_intensity" ENDSWITCH BREAK CASE NCAD_GROUPS SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN "anim@amb@nightclub@dancers@crowddance_groups@low_intensity" CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@crowddance_groups@med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@crowddance_groups@hi_intensity" ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC STRING BuildAnimDictTransitionString(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTag) SWITCH eDict CASE NCAD_FACE_DJ SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN "anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_low_intensity" CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_hi_intensity" ENDSWITCH BREAK CASE NCAD_SINGLE_PROPS SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN "anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_low_intensity" CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_hi_intensity" ENDSWITCH BREAK CASE NCAD_AMBIENT_PEDS SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW CASE AUDIO_TAG_MEDIUM CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@club_ambientpeds_transitions@" ENDSWITCH BREAK CASE NCAD_GROUPS SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN "anim@amb@nightclub@dancers@crowddance_groups_transitions@from_low_intensity" CASE AUDIO_TAG_MEDIUM RETURN "anim@amb@nightclub@dancers@crowddance_groups_transitions@from_med_intensity" CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN "anim@amb@nightclub@dancers@crowddance_groups_transitions@from_hi_intensity" ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC TEXT_LABEL_63 FaceDJ_BuildAnimClipString(NIGHTCLUB_AUDIO_TAGS eIntensityTag, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "li_dance_facedj_" BREAK CASE AUDIO_TAG_MEDIUM str = "mi_dance_facedj_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "hi_dance_facedj_" BREAK ENDSWITCH // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 FaceDJ_BuildAnimClipTransitionString(NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW SWITCH eIntensityTagEnd CASE AUDIO_TAG_MEDIUM str = "trans_dance_facedj_li_to_mi_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_dance_facedj_li_to_hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "trans_dance_facedj_mi_to_li_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_dance_facedj_mi_to_hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "trans_dance_facedj_hi_to_li_" BREAK CASE AUDIO_TAG_MEDIUM str = "trans_dance_facedj_hi_to_mi_" BREAK ENDSWITCH BREAK ENDSWITCH IF IS_STRING_NULL_OR_EMPTY(str) // Transition is sometimes invalid, do not build a string for it RETURN str ENDIF // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 SingleProps_BuildAnimClipString(NIGHTCLUB_AUDIO_TAGS eIntensityTag, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "li_dance_prop_" BREAK CASE AUDIO_TAG_MEDIUM str = "mi_dance_prop_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "hi_dance_prop_" BREAK ENDSWITCH // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 SingleProps_BuildAnimClipTransitionString(NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW SWITCH eIntensityTagEnd CASE AUDIO_TAG_MEDIUM str = "trans_dance_prop_li_to_mi_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_dance_prop_li_to_hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "trans_dance_prop_mi_to_li_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_dance_prop_mi_to_hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "trans_dance_prop_hi_to_li_" BREAK CASE AUDIO_TAG_MEDIUM str = "trans_dance_prop_hi_to_mi_" BREAK ENDSWITCH BREAK ENDSWITCH IF IS_STRING_NULL_OR_EMPTY(str) // Transition is sometimes invalid, do not build a string for it RETURN str ENDIF // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 AmbientPeds_BuildAnimClipString(NIGHTCLUB_AUDIO_TAGS eIntensityTag, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW CASE AUDIO_TAG_MEDIUM str = "li-mi_amb_club_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "mi-hi_amb_club_" BREAK ENDSWITCH // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration IF (iClipDuration = 6) str += "_base" ELSE // version str += "_v" str += iVersion ENDIF // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 AmbientPeds_BuildAnimClipTransitionString(NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW CASE AUDIO_TAG_MEDIUM SWITCH eIntensityTagEnd CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_li-mi_to_mi-hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW CASE AUDIO_TAG_MEDIUM str = "trans_mi-hi_to_li-mi_" BREAK ENDSWITCH BREAK ENDSWITCH IF IS_STRING_NULL_OR_EMPTY(str) // Transition is sometimes invalid, do not build a string for it RETURN str ENDIF // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 Groups_BuildAnimClipString(NIGHTCLUB_AUDIO_TAGS eIntensityTag, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "li_dance_crowd_" BREAK CASE AUDIO_TAG_MEDIUM str = "mi_dance_crowd_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "hi_dance_crowd_" BREAK ENDSWITCH // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 Groups_BuildAnimClipTransitionString(NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) TEXT_LABEL_63 str SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW SWITCH eIntensityTagEnd CASE AUDIO_TAG_MEDIUM str = "trans_dance_crowd_li_to_mi_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_dance_crowd_li_to_hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "trans_dance_crowd_mi_to_li_" BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS str = "trans_dance_crowd_mi_to_hi_" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW str = "trans_dance_crowd_hi_to_li_" BREAK CASE AUDIO_TAG_MEDIUM str = "trans_dance_crowd_hi_to_mi_" BREAK ENDSWITCH BREAK ENDSWITCH IF IS_STRING_NULL_OR_EMPTY(str) // Transition is sometimes invalid, do not build a string for it RETURN str ENDIF // duration IF (iClipDuration < 10) str += 0 ENDIF str += iClipDuration // version str += "_v" str += iVersion // male / female IF NOT (bIsFemale) str += "_male" ELSE str += "_female" ENDIF // end number str += "^" str += iEndNumber RETURN str ENDFUNC FUNC TEXT_LABEL_63 BuildAnimClipTransitionString(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) SWITCH eDict CASE NCAD_FACE_DJ RETURN FaceDJ_BuildAnimClipTransitionString(eIntensityTagStart, eIntensityTagEnd, iClipDuration, iVersion, bIsFemale, iEndNumber) CASE NCAD_SINGLE_PROPS RETURN SingleProps_BuildAnimClipTransitionString(eIntensityTagStart, eIntensityTagEnd, iClipDuration, iVersion, bIsFemale, iEndNumber) CASE NCAD_AMBIENT_PEDS RETURN AmbientPeds_BuildAnimClipTransitionString(eIntensityTagStart, eIntensityTagEnd, iClipDuration, iVersion, bIsFemale, iEndNumber) CASE NCAD_GROUPS RETURN Groups_BuildAnimClipTransitionString(eIntensityTagStart, eIntensityTagEnd, iClipDuration, iVersion, bIsFemale, iEndNumber) ENDSWITCH TEXT_LABEL_63 str RETURN str ENDFUNC FUNC TEXT_LABEL_63 BuildAnimClipString(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTag, INT iClipDuration, INT iVersion, BOOL bIsFemale, INT iEndNumber) SWITCH eDict CASE NCAD_FACE_DJ RETURN FaceDJ_BuildAnimClipString(eIntensityTag, iClipDuration, iVersion, bIsFemale, iEndNumber) CASE NCAD_SINGLE_PROPS RETURN SingleProps_BuildAnimClipString(eIntensityTag, iClipDuration, iVersion, bIsFemale, iEndNumber) CASE NCAD_AMBIENT_PEDS RETURN AmbientPeds_BuildAnimClipString(eIntensityTag, iClipDuration, iVersion, bIsFemale, iEndNumber) CASE NCAD_GROUPS RETURN Groups_BuildAnimClipString(eIntensityTag, iClipDuration, iVersion, bIsFemale, iEndNumber) ENDSWITCH TEXT_LABEL_63 str RETURN str ENDFUNC PROC GET_DANCE_ACTIVITY_PED_DATA(ACTIVITY_SLOT_NAMES eActivity, NIGHTCLUB_PED_ANIM_DICT &eAnimDict, BOOL &bIsFemale, INT &iPedAnimIndex) SWITCH eActivity CASE AC_SLOT_FACE_DJ_M_1 eAnimDict = NCAD_FACE_DJ bIsFemale = FALSE iPedAnimIndex = 1 BREAK CASE AC_SLOT_FACE_DJ_M_2 eAnimDict = NCAD_FACE_DJ bIsFemale = FALSE iPedAnimIndex = 2 BREAK CASE AC_SLOT_FACE_DJ_M_3 eAnimDict = NCAD_FACE_DJ bIsFemale = FALSE iPedAnimIndex = 3 BREAK CASE AC_SLOT_FACE_DJ_M_4 eAnimDict = NCAD_FACE_DJ bIsFemale = FALSE iPedAnimIndex = 4 BREAK CASE AC_SLOT_FACE_DJ_M_5 eAnimDict = NCAD_FACE_DJ bIsFemale = FALSE iPedAnimIndex = 5 BREAK CASE AC_SLOT_FACE_DJ_M_6 eAnimDict = NCAD_FACE_DJ bIsFemale = FALSE iPedAnimIndex = 6 BREAK CASE AC_SLOT_FACE_DJ_F_1 eAnimDict = NCAD_FACE_DJ bIsFemale = TRUE iPedAnimIndex = 1 BREAK CASE AC_SLOT_FACE_DJ_F_2 eAnimDict = NCAD_FACE_DJ bIsFemale = TRUE iPedAnimIndex = 2 BREAK CASE AC_SLOT_FACE_DJ_F_3 eAnimDict = NCAD_FACE_DJ bIsFemale = TRUE iPedAnimIndex = 3 BREAK CASE AC_SLOT_FACE_DJ_F_4 eAnimDict = NCAD_FACE_DJ bIsFemale = TRUE iPedAnimIndex = 4 BREAK CASE AC_SLOT_FACE_DJ_F_5 eAnimDict = NCAD_FACE_DJ bIsFemale = TRUE iPedAnimIndex = 5 BREAK CASE AC_SLOT_FACE_DJ_F_6 eAnimDict = NCAD_FACE_DJ bIsFemale = TRUE iPedAnimIndex = 1 BREAK CASE AC_SLOT_AMBIENT_M_1 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = FALSE iPedAnimIndex = 1 BREAK CASE AC_SLOT_AMBIENT_M_2 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = FALSE iPedAnimIndex = 2 BREAK CASE AC_SLOT_AMBIENT_M_3 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = FALSE iPedAnimIndex = 3 BREAK CASE AC_SLOT_AMBIENT_M_4 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = FALSE iPedAnimIndex = 4 BREAK CASE AC_SLOT_AMBIENT_M_5 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = FALSE iPedAnimIndex = 5 BREAK CASE AC_SLOT_AMBIENT_M_6 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = FALSE iPedAnimIndex = 6 BREAK CASE AC_SLOT_AMBIENT_F_1 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = TRUE iPedAnimIndex = 1 BREAK CASE AC_SLOT_AMBIENT_F_2 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = TRUE iPedAnimIndex = 2 BREAK CASE AC_SLOT_AMBIENT_F_3 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = TRUE iPedAnimIndex = 3 BREAK CASE AC_SLOT_AMBIENT_F_4 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = TRUE iPedAnimIndex = 4 BREAK CASE AC_SLOT_AMBIENT_F_5 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = TRUE iPedAnimIndex = 5 BREAK CASE AC_SLOT_AMBIENT_F_6 eAnimDict = NCAD_AMBIENT_PEDS bIsFemale = TRUE iPedAnimIndex = 6 BREAK CASE AC_SLOT_GROUP_M_1 eAnimDict = NCAD_GROUPS bIsFemale = FALSE iPedAnimIndex = 1 BREAK CASE AC_SLOT_GROUP_M_2 eAnimDict = NCAD_GROUPS bIsFemale = FALSE iPedAnimIndex = 2 BREAK CASE AC_SLOT_GROUP_M_3 eAnimDict = NCAD_GROUPS bIsFemale = FALSE iPedAnimIndex = 3 BREAK CASE AC_SLOT_GROUP_M_4 eAnimDict = NCAD_GROUPS bIsFemale = FALSE iPedAnimIndex = 4 BREAK CASE AC_SLOT_GROUP_M_5 eAnimDict = NCAD_GROUPS bIsFemale = FALSE iPedAnimIndex = 5 BREAK CASE AC_SLOT_GROUP_M_6 eAnimDict = NCAD_GROUPS bIsFemale = FALSE iPedAnimIndex = 6 BREAK CASE AC_SLOT_GROUP_F_1 eAnimDict = NCAD_GROUPS bIsFemale = TRUE iPedAnimIndex = 1 BREAK CASE AC_SLOT_GROUP_F_2 eAnimDict = NCAD_GROUPS bIsFemale = TRUE iPedAnimIndex = 2 BREAK CASE AC_SLOT_GROUP_F_3 eAnimDict = NCAD_GROUPS bIsFemale = TRUE iPedAnimIndex = 3 BREAK CASE AC_SLOT_GROUP_F_4 eAnimDict = NCAD_GROUPS bIsFemale = TRUE iPedAnimIndex = 4 BREAK CASE AC_SLOT_GROUP_F_5 eAnimDict = NCAD_GROUPS bIsFemale = TRUE iPedAnimIndex = 5 BREAK CASE AC_SLOT_GROUP_F_6 eAnimDict = NCAD_GROUPS bIsFemale = TRUE iPedAnimIndex = 6 BREAK CASE AC_SLOT_SINGLE_PROP_M_1 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = FALSE iPedAnimIndex = 1 BREAK CASE AC_SLOT_SINGLE_PROP_M_2 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = FALSE iPedAnimIndex = 2 BREAK CASE AC_SLOT_SINGLE_PROP_M_3 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = FALSE iPedAnimIndex = 3 BREAK CASE AC_SLOT_SINGLE_PROP_M_4 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = FALSE iPedAnimIndex = 4 BREAK CASE AC_SLOT_SINGLE_PROP_M_5 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = FALSE iPedAnimIndex = 5 BREAK CASE AC_SLOT_SINGLE_PROP_M_6 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = FALSE iPedAnimIndex = 6 BREAK CASE AC_SLOT_SINGLE_PROP_F_1 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = TRUE iPedAnimIndex = 1 BREAK CASE AC_SLOT_SINGLE_PROP_F_2 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = TRUE iPedAnimIndex = 2 BREAK CASE AC_SLOT_SINGLE_PROP_F_3 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = TRUE iPedAnimIndex = 3 BREAK CASE AC_SLOT_SINGLE_PROP_F_4 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = TRUE iPedAnimIndex = 4 BREAK CASE AC_SLOT_SINGLE_PROP_F_5 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = TRUE iPedAnimIndex = 5 BREAK CASE AC_SLOT_SINGLE_PROP_F_6 eAnimDict = NCAD_SINGLE_PROPS bIsFemale = TRUE iPedAnimIndex = 6 BREAK ENDSWITCH ENDPROC PROC GET_DANCE_ANIM_DATA(ACTIVITY_SLOT_NAMES eActivity, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bTransition, INT iClipDuration, INT iVersion, NIGHTCLUB_AUDIO_TAGS eIntensity, NIGHTCLUB_AUDIO_TAGS eNextIntensity) NIGHTCLUB_PED_ANIM_DICT eAnimDict BOOL bIsFemale INT iPedAnimIndex GET_DANCE_ACTIVITY_PED_DATA(eActivity, eAnimDict, bIsFemale, iPedAnimIndex) IF bTransition activityAnimSequence.activitySyncScenePed[0].sAnimDict = BuildAnimDictTransitionString(eAnimDict, eIntensity) activityAnimSequence.activitySyncScenePed[0].sAnimClip = BuildAnimClipTransitionString(eAnimDict, eIntensity, eNextIntensity,iClipDuration,iVersion,bIsFemale,iPedAnimIndex) ELSE activityAnimSequence.activitySyncScenePed[0].sAnimDict = BuildAnimDictString(eAnimDict, eIntensity) activityAnimSequence.activitySyncScenePed[0].sAnimClip = BuildAnimClipString(eAnimDict, eIntensity,iClipDuration,iVersion,bIsFemale,iPedAnimIndex) ENDIF ENDPROC PROC GET_NC_CELEB_POPPY_MITCHELL_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "missfbi3_party_snort_coke_b_male3" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_TAL_1_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@tale_of_us_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_crowd_13_v2_female^4" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_TAL_2_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@tale_of_us_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "li_dance_prop_09_v1_male^4" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_TAL_3_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence)//, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@tale_of_us_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_prop_13_v2_male^4" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_SOL_1_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@solomun_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_facedj_17_v1_female^1" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_SOL_2_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@solomun_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_prop_15_v1_male^6" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_SOL_3_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@solomun_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_prop_15_v1_male^1" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_SOL_4_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@solomun_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_prop_15_v1_male^5" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_SOL_ROB_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@solomun_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "li_dance_prop_15_v1_male^5" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_SOL_MIKE_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@solomun_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "li_dance_prop_09_v1_male^3" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_BLAM_1_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@black_madonna_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "li_dance_facedj_15_v2_male^2" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_BLAM_2_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@black_madonna_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "hi_dance_facedj_09_v2_male^5" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_BLAM_3_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@black_madonna_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "li_dance_facedj_11_v1_male^1" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_ENTOURAGE_DIX_1_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@dixon_entourage@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "mi_dance_facedj_15_v1_male^4" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_HIGH_DANCEFLOOR_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@lazlow@hi_dancefloor@" activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = "anim@amb@nightclub@lazlow@hi_dancefloor@" SWITCH iSequence // LI CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_06_base_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_06_base_horse" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_06_base_v2_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_06_base_v2_horse" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_11_hu_shimmy_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_11_hu_shimmy_horse" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_11_shimmy_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_11_shimmy_horse" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_13_holdhead_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_13_holdhead_horse" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_13_smackthat_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_13_smackthat_horse" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_15_handup_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_15_handup_horse" BREAK CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_15_pethorse_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_15_pethorse_horse" BREAK CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_17_headtrophy_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_17_headtrophy_horse" BREAK CASE 9 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_li_17_poledance_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_li_17_poledance_horse" BREAK // TRANS CASE 10 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_trans_07_li_to_mi_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_trans_07_li_to_mi_horse" BREAK CASE 11 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_trans_07_li_to_hi_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_trans_07_li_to_hi_horse" BREAK // MI CASE 12 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_06_base_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_06_base_horse" BREAK CASE 13 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_11_spankthat_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_11_spankthat_horse" BREAK CASE 14 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_13_baselong_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_13_baselong_horse" BREAK CASE 15 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_13_lookaround_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_13_lookaround_horse" BREAK CASE 16 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_15_handsup_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_15_handsup_horse" BREAK CASE 17 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_17_buckingbronco_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_17_buckingbronco_horse" BREAK CASE 18 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_mi_17_talking_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_mi_17_talking_horse" BREAK // TRANS CASE 19 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_trans_07_mi_to_li_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_trans_07_mi_to_li_horse" BREAK CASE 20 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_trans_07_mi_to_hi_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_trans_07_mi_to_hi_horse" BREAK // HI CASE 21 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_06_base_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_06_base_horse" BREAK CASE 22 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_06_base_v2_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_06_base_v2_horse" BREAK CASE 23 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_11_handup_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_11_handup_horse" BREAK CASE 24 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_11_raiseup_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_11_raiseup_horse" BREAK CASE 25 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_13_shimmyhump_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_13_shimmyhump_horse" BREAK CASE 26 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_13_suckit_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_13_suckit_horse" BREAK CASE 27 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_15_buckingbronco_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_15_buckingbronco_horse" BREAK CASE 28 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_15_shimmyya_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_15_shimmyya_horse" BREAK CASE 29 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_17_highhorse_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_17_highhorse_horse" BREAK CASE 30 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "crowddance_hi_17_spinaround_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "crowddance_hi_17_spinaround_horse" BREAK CASE 31 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_05_dlg_cuberoot_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_05_dlg_cuberoot_horse" BREAK CASE 32 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_05_dlg_havingit_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_05_dlg_havingit_horse" BREAK CASE 33 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_05_dlg_highaf_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_05_dlg_highaf_horse" BREAK CASE 34 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_05_dlg_ridegurl_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_05_dlg_ridegurl_horse" BREAK CASE 35 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_11_dlg_specialk_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_11_dlg_specialk_horse" BREAK CASE 36 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_07_dlg_whooyeeha_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_07_dlg_whooyeeha_horse" BREAK CASE 37 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_hi_07_dlg_back288_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_hi_07_dlg_back288_horse" BREAK // TRANS CASE 38 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_trans_07_hi_to_li_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_trans_07_hi_to_li_horse" BREAK CASE 39 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "dancecrowd_trans_07_hi_to_mi_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "dancecrowd_trans_07_hi_to_mi_horse" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_HIGH_RAILING_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@lazlow@hi_railing@" activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = "anim@amb@nightclub@lazlow@hi_railing@" activityAnimSequence.activitySyncSceneEntity[1].sAnimDict = "anim@amb@nightclub@lazlow@hi_railing@" SWITCH iSequence // LI/MI CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_06_LI_MI_Base_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_06_LI_MI_Base_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_06_LI_MI_Base_glowstick_r" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_06_LI_MI_Base_v2_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_06_LI_MI_Base_v2_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_06_LI_MI_Base_v2_glowstick_r" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_13_LI_MI_LookAround_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_13_LI_MI_LookAround_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_13_LI_MI_LookAround_glowstick_r" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_09_LI_MI_SmellThat_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_09_LI_MI_SmellThat_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_09_LI_MI_SmellThat_glowstick_r" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_12_LI_MI_Shimmy_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_12_LI_MI_Shimmy_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_12_LI_MI_Shimmy_glowstick_r" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_10_LI_MI_FishingPole_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_10_LI_MI_FishingPole_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_10_LI_MI_FishingPole_glowstick_r" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_10_LI_MI_FishingPole_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_10_LI_MI_FishingPole_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_10_LI_MI_FishingPole_glowstick_r" BREAK // TRANS CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_07_LI_MI_to_MI_HI_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_07_LI_MI_to_MI_HI_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_07_LI_MI_to_MI_HI_glowstick_r" BREAK // MI/HI CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_13_MI_HI_SexualGriding_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_13_MI_HI_SexualGriding_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_13_MI_HI_SexualGriding_glowstick_r" BREAK CASE 9 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_06_MI_HI_Base_v2_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_06_MI_HI_Base_v2_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_06_MI_HI_Base_v2_glowstick_r" BREAK CASE 10 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_11_MI_HI_PointingCrowd_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_11_MI_HI_PointingCrowd_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_11_MI_HI_PointingCrowd_glowstick_r" BREAK CASE 11 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_10_MI_HI_CrotchHold_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_10_MI_HI_CrotchHold_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_10_MI_HI_CrotchHold_glowstick_r" BREAK CASE 12 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_09_MI_HI_BellyDancer_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_09_MI_HI_BellyDancer_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_09_MI_HI_BellyDancer_glowstick_r" BREAK // TRANS CASE 13 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "AmbClub_12_MI_HI_BootyShake_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "AmbClub_12_MI_HI_BootyShake_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "AmbClub_12_MI_HI_BootyShake_glowstick_r" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_HIGH_CHAIR_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@lazlow@hi_chair@" SWITCH iSequence // LI CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_06_base_laz" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_06_base_v2_laz" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_11_fingerbop_laz" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_11_point_laz" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_13_checkwatch_laz" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_13_thatsme_laz" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_15_shimmy_laz" BREAK CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_15_wave_laz" BREAK CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_17_crotchscratch_laz" BREAK CASE 9 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_17_wackydance_laz" BREAK CASE 10 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_19_gu_shimmy_laz" BREAK CASE 11 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_25_namaste_laz" BREAK CASE 12 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_li_13_thatsme_laz" BREAK // TRANS CASE 13 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_trans_09_li_to_mi_h_laz" BREAK // MI CASE 14 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_06_base_laz" BREAK CASE 15 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_06_base_v2_laz" BREAK CASE 16 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_11_steeringpoint_laz" BREAK CASE 17 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_11_wavyhands_laz" BREAK CASE 18 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_13_handsup_laz" BREAK CASE 19 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_13_shimmy_laz" BREAK CASE 20 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_15_hippyhop_laz" BREAK CASE 21 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_15_namaste_laz" BREAK CASE 22 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_17_gu_airhump_laz" BREAK CASE 23 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_mi_17_sexualadvance_laz" BREAK // TRANS CASE 24 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_trans_07_hi_mi_to_l_laz" BREAK // HI CASE 25 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_06_base_laz" BREAK CASE 26 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_11_fingerpoint_laz" BREAK CASE 27 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_11_handpump_laz" BREAK CASE 28 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_13_armswirl_laz" BREAK CASE 29 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_13_sexualadvance_laz" BREAK CASE 30 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_15_handsup_laz" BREAK CASE 31 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_15_throwaway_laz" BREAK CASE 32 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_17_longbase_laz" BREAK CASE 33 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "seatedidle_hi_17_side2side_laz" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_HIGH_PODIUM_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@lazlow@hi_podium@" SWITCH iSequence // LOW CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_06_base_laz" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_06_base_v2_laz" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_07_fakedrop_laz" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_11_bigbase_laz" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_11_pointcrowd_laz" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_11_takebreath_laz" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_13_hipswivel_laz" BREAK CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_13_turnaround_laz" BREAK CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_15_flyingv_laz" BREAK CASE 9 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_15_sexygrind_laz" BREAK CASE 10 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_17_ethereal_laz" BREAK CASE 11 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_li_17_watupcrowd_laz" BREAK // TRANS CASE 12 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_trans_07_li_to_mi_laz" BREAK CASE 13 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_trans_07_li_to_hi_laz" BREAK // MI CASE 14 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_06_base_v1_laz" BREAK CASE 15 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_06_base_v2_laz" BREAK CASE 16 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_09_pointdj_l_laz" BREAK CASE 17 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_11_hippain_laz" BREAK CASE 18 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_11_pointthrust_laz" BREAK CASE 19 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_11_simplepoint_laz" BREAK CASE 20 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_11_takebreath_laz" BREAK CASE 21 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_13_enticing_laz" BREAK CASE 22 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_13_turnaround_laz" BREAK CASE 23 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_15_robot_laz" BREAK CASE 24 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_15_shimmy_laz" BREAK CASE 25 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_17_crotchgrab_laz" BREAK CASE 26 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_mi_17_teapotthrust_laz" BREAK // TRANS CASE 27 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_trans_07_mi_to_li_laz" BREAK CASE 28 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_trans_07_mi_to_hi_laz" BREAK // HI CASE 29 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_06_base_laz" BREAK CASE 30 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_06_base_v2_laz" BREAK CASE 31 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_11_buttwiggle_b_laz" BREAK CASE 32 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_11_buttwiggle_f_laz" BREAK CASE 33 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_11_takebreath_laz" BREAK CASE 34 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_11_turnaround_laz" BREAK CASE 35 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_13_crotchgrab_laz" BREAK CASE 36 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_13_flyingv_laz" BREAK CASE 37 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_15_crazyrobot_laz" BREAK CASE 38 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_15_lookaround_laz" BREAK CASE 39 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_17_smackthat_laz" BREAK CASE 40 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_hi_17_spiderman_laz" BREAK // TRANS CASE 41 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_trans_07_hi_to_li_laz" BREAK CASE 42 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "danceidle_trans_07_hi_to_mi_laz" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_LOW_TOILET_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@LO_TOILET@" SWITCH iSequence // can be played randomly CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_base_laz" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_checkshoe_laz" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_dlg_nofun_laz" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_dlg_notunderage_r_laz" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_dlg_smellshit_r_laz" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_dlg_sphincterhold_r_laz" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_dlg_wrongnumber_laz" BREAK // these 3 need to be played in sequence CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_trans_to_rockin_laz" BREAK CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_base_v2_laz" BREAK CASE 9 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowtoilet_trans_from_rockin_laz" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_LOW_BAR_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@LO_BAR@" activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@LO_BAR@" activityAnimSequence.activitySyncSceneEntity[1].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@LO_BAR@" SWITCH iSequence // can be played randomly CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_base_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_base_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_base_stool" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_1thing4certian_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_1thing4certian_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_1thing4certian_stool" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_crying_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_crying_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_crying_stool" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_drunkgarbles_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_drunkgarbles_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_drunkgarbles_stool" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_havingweirdone_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_havingweirdone_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_havingweirdone_stool" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_leavemealone_l_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_leavemealone_l_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_leavemealone_l_stool" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_leavemealone_r_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_leavemealone_r_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_leavemealone_r_stool" BREAK CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_millyogatwerps_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_millyogatwerps_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_millyogatwerps_stool" BREAK CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_dlg_ughfuck_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_dlg_ughfuck_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_dlg_ughfuck_stool" BREAK CASE 9 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_drink_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_drink_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_drink_stool" BREAK CASE 10 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_turnovershoulder_l_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_turnovershoulder_l_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_turnovershoulder_l_stool" BREAK CASE 11 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowbar_turnovershoulder_r_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "lowbar_turnovershoulder_r_p_ex_tumbler_01_s" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "lowbar_turnovershoulder_r_stool" BREAK ENDSWITCH BREAK ENDSWITCH //base ENDPROC PROC GET_NC_LAZLOW_LOW_SOFA_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@LO_SOFA@" SWITCH iSequence // can be played randomly CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_base_laz" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_dlg_crying_laz" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_dlg_fuckedup_laz" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_dlg_notagain_laz" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_dlg_ohedibles_laz" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_dlg_paniclong_laz" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowsofa_dlg_shit2strong_laz" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_LOW_ALONE_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@LO_ALONE@" SWITCH iSequence // can be played randomly CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_base_laz" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_gotochurch_laz" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_longrant_laz" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_moans_laz" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_normdoesnthappen_laz" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_totallyofage_laz" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_ughunbelievable_laz" BREAK CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "lowalone_dlg_wayhotter_laz" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_LAZLOW_VIP_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@ig1_vip@" activityAnimSequence.activitySyncSceneEntity[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@ig1_vip@" activityAnimSequence.activitySyncSceneEntity[1].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@ig1_vip@" activityAnimSequence.activitySyncSceneEntity[2].sAnimDict = "ANIM@AMB@NIGHTCLUB@LAZLOW@ig1_vip@" SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "ambclub_to_clubvip_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "ambclub_to_clubvip_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "ambclub_to_clubvip_glowstick_r" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "ambclub_to_clubvip_mic" BREAK CASE 1 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_base_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_base_mic" BREAK CASE 2 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_dlg_jimmyboston_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_dlg_jimmyboston_mic" BREAK CASE 3 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_dlg_laceyjonas_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_dlg_laceyjonas_mic" BREAK CASE 4 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_dlg_kerrymacintosh_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_dlg_kerrymacintosh_mic" BREAK CASE 5 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_dlg_poppymitchel_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_dlg_poppymitchel_mic" BREAK CASE 6 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_dlg_tylerdixon_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_dlg_tylerdixon_mic" BREAK CASE 7 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_dlg_mirandacowan_laz" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_dlg_mirandacowan_mic" BREAK CASE 8 activityAnimSequence.activitySyncScenePed[0].sAnimClip = "clubvip_to_ambclub_laz" activityAnimSequence.activitySyncSceneEntity[0].sAnimClip = "clubvip_to_ambclub_glowstick_l" activityAnimSequence.activitySyncSceneEntity[1].sAnimClip = "clubvip_to_ambclub_glowstick_r" activityAnimSequence.activitySyncSceneEntity[2].sAnimClip = "clubvip_to_ambclub_mic" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_MUSCLE_FLEX(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" activityAnimSequence.activitySyncScenePed[0].sAnimClip = "amb_world_human_muscle_flex_arms_in_front_base" BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_NC_STRIP_DANCING_LAP_SCENARIO_ANIM_DATA(INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bFemale = FALSE) SWITCH iState CASE 0 SWITCH iSequence CASE 0 activityAnimSequence.activitySyncScenePed[0].sAnimDict = "anim@amb@nightclub@dancers@podium_dancers@" IF bFemale activityAnimSequence.activitySyncScenePed[0].sAnimClip = "hi_dance_facedj_17_v2_female^2" ELSE activityAnimSequence.activitySyncScenePed[0].sAnimClip = "hi_dance_facedj_17_v2_male^5" ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC FUNC INT GET_RANDOM_VARIATION_FOR_DANCE_CLIP(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTag, INT iClipLength) SWITCH eDict CASE NCAD_FACE_DJ SWITCH eIntensityTag CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW IF iClipLength = 11 RETURN 1 ENDIF BREAK CASE AUDIO_TAG_MEDIUM IF iClipLength = 17 RETURN 1 ENDIF BREAK CASE AUDIO_TAG_HIGH_HANDS SWITCH iClipLength CASE 11 RETURN 2 CASE 13 RETURN 1 ENDSWITCH BREAK ENDSWITCH RETURN GET_RANDOM_INT_IN_RANGE(1, 3) CASE NCAD_AMBIENT_PEDS RETURN 1 CASE NCAD_GROUPS SWITCH eIntensityTag CASE AUDIO_TAG_MEDIUM IF iClipLength = 9 RETURN 2 ENDIF BREAK CASE AUDIO_TAG_HIGH SWITCH iClipLength CASE 11 RETURN 1 CASE 13 RETURN 2 ENDSWITCH BREAK CASE AUDIO_TAG_HIGH_HANDS SWITCH iClipLength CASE 11 RETURN 1 CASE 13 RETURN 2 CASE 15 RETURN 2 CASE 17 RETURN 2 ENDSWITCH BREAK ENDSWITCH RETURN GET_RANDOM_INT_IN_RANGE(1, 3) CASE NCAD_SINGLE_PROPS IF iClipLength = 13 RETURN GET_RANDOM_INT_IN_RANGE(1, 3) ENDIF RETURN 1 ENDSWITCH RETURN 1 ENDFUNC FUNC INT GET_RANDOM_VARIATION_FOR_DANCE_TRANSITION_CLIP(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd, INT iClipLength) SWITCH eDict CASE NCAD_FACE_DJ RETURN 1 CASE NCAD_AMBIENT_PEDS RETURN 1 CASE NCAD_GROUPS IF iClipLength = 9 SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW IF eIntensityTagEnd = AUDIO_TAG_HIGH OR eIntensityTagEnd = AUDIO_TAG_HIGH_HANDS RETURN GET_RANDOM_INT_IN_RANGE(1, 3) ENDIF BREAK CASE AUDIO_TAG_MEDIUM IF eIntensityTagEnd = AUDIO_TAG_NULL OR eIntensityTagEnd = AUDIO_TAG_LOW RETURN 2 ENDIF BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS IF eIntensityTagEnd = AUDIO_TAG_MEDIUM RETURN GET_RANDOM_INT_IN_RANGE(1, 3) ENDIF BREAK ENDSWITCH ENDIF RETURN 1 CASE NCAD_SINGLE_PROPS RETURN 1 ENDSWITCH RETURN 1 ENDFUNC FUNC INT GET_RANDOM_LENGTH_FOR_DANCE_TRANSITION(NIGHTCLUB_PED_ANIM_DICT eDict, NIGHTCLUB_AUDIO_TAGS eIntensityTagStart, NIGHTCLUB_AUDIO_TAGS eIntensityTagEnd) INT iRand SWITCH eDict CASE NCAD_FACE_DJ SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW SWITCH eIntensityTagEnd CASE AUDIO_TAG_MEDIUM iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 9 ELSE RETURN 11 ENDIF BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 7 ELSE RETURN 9 ENDIF BREAK ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW iRand = GET_RANDOM_INT_IN_RANGE(0,2) SWITCH iRand CASE 0 RETURN 7 CASE 1 RETURN 9 ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS iRand = GET_RANDOM_INT_IN_RANGE(0,2) SWITCH iRand CASE 0 RETURN 8 CASE 1 RETURN 9 ENDSWITCH BREAK ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 7 ELSE RETURN 9 ENDIF BREAK CASE AUDIO_TAG_MEDIUM iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 9 ELSE RETURN 11 ENDIF BREAK ENDSWITCH BREAK ENDSWITCH BREAK CASE NCAD_AMBIENT_PEDS RETURN 9 CASE NCAD_GROUPS SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW SWITCH eIntensityTagEnd CASE AUDIO_TAG_MEDIUM iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 9 ELSE RETURN 11 ENDIF BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN 9 ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 9 ELSE RETURN 12 ENDIF BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN 9 ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 7 ELSE RETURN 9 ENDIF BREAK CASE AUDIO_TAG_MEDIUM RETURN 9 ENDSWITCH BREAK ENDSWITCH BREAK CASE NCAD_SINGLE_PROPS SWITCH eIntensityTagStart CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW SWITCH eIntensityTagEnd CASE AUDIO_TAG_MEDIUM RETURN 11 CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS RETURN 7 ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM RETURN 11 CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS SWITCH eIntensityTagEnd CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW RETURN 9 CASE AUDIO_TAG_MEDIUM iRand = GET_RANDOM_INT_IN_RANGE(0,2) IF iRand = 0 RETURN 9 ELSE RETURN 11 ENDIF BREAK ENDSWITCH BREAK ENDSWITCH BREAK ENDSWITCH CWARNINGLN(DEBUG_NET_PED_DANCING, "GET_RANDOM_LENGTH_FOR_DANCE_TRANSITION: Returning -1 for eDict: ", eDict, ", eIntensityTagStart: ", getAudioTagString(eIntensityTagStart), ", eIntensityTagEnd: ", getAudioTagString(eIntensityTagEnd)) RETURN -1 ENDFUNC FUNC FLOAT GET_TIME_UNTIL_DANCE_TRANSITION(NIGHT_CLUB_PEDS &nightClubPed) INT iRemainingTimeMs = (g_iNightClubAudioNextTagTime - g_iNightClubAudioCurrentTime) FLOAT fRemainingTimeSeconds = iRemainingTimeMs / 1000.0 NIGHTCLUB_PED_ANIM_DICT eAnimDict BOOL bIsFemale INT iPedAnimIndex GET_DANCE_ACTIVITY_PED_DATA(nightClubPed.eActiveActivity, eAnimDict, bIsFemale, iPedAnimIndex) IF nightClubPed.iDanceTransitionVariation = -1 // OR nightClubPed.eDanceCurrentIntensity != g_eNightClubAudioIntensityLevel nightClubPed.iDanceTransitionVariation = GET_RANDOM_LENGTH_FOR_DANCE_TRANSITION(eAnimDict, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext) nightClubPed.iDanceTransitionVariation2 = GET_RANDOM_VARIATION_FOR_DANCE_TRANSITION_CLIP(eAnimDict, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext, nightClubPed.iDanceTransitionVariation) CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_TIME_UNTIL_DANCE_TRANSITION: selecting new transition length for ", getAudioTagString(g_eNightClubAudioIntensityLevel), " to ", getAudioTagString(g_eNightClubAudioIntensityLevelNext), " of ", nightClubPed.iDanceTransitionVariation, " PedID: ", nightClubPed.iNightClubPedID) // nightClubPed.eDanceCurrentIntensity = g_eNightClubAudioIntensityLevel ENDIF STRING sTransitionAnimDict = BuildAnimDictTransitionString(eAnimDict, g_eNightClubAudioIntensityLevel) TEXT_LABEL_63 sTransitionAnimClip = BuildAnimClipTransitionString(eAnimDict, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext, nightClubPed.iDanceTransitionVariation, nightClubPed.iDanceTransitionVariation2, bIsFemale, iPedAnimIndex) FLOAT fStartPhase, fEndPhase, fDuration #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_TIME_UNTIL_DANCE_TRANSITION: using transition anim: ", sTransitionAnimClip, " from: ", sTransitionAnimDict, " (current anim is ", nightClubPed.sDebugAnimClipName, ") PedID: ", nightClubPed.iNightClubPedID) #ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(sTransitionAnimDict) AND NOT IS_STRING_NULL_OR_EMPTY(sTransitionAnimClip) fDuration = GET_ANIM_DURATION(sTransitionAnimDict, sTransitionAnimClip) IF FIND_ANIM_EVENT_PHASE(sTransitionAnimDict, sTransitionAnimClip, "Drop_Trans", fStartPhase, fEndPhase) fDuration *= fStartPhase CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_TIME_UNTIL_DANCE_TRANSITION: Transition phase = ", fStartPhase) ELSE fDuration *= 0.5 CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_TIME_UNTIL_DANCE_TRANSITION: Transition phase = 0.5") ENDIF RETURN fRemainingTimeSeconds - fDuration ELSE //invalid transition (so no anim is played) RETURN -10.0 ENDIF ENDFUNC FUNC INT GET_RANDOM_LENGTH_FOR_DANCE_CLIP(NIGHT_CLUB_PEDS& nightClubPed) FLOAT fRemainingTimeSeconds = GET_TIME_UNTIL_DANCE_TRANSITION(nightClubPed) INT iRand INT iReturn = -1 INT iRange nightClubPed.fPhaseRate = 1.0 NIGHTCLUB_PED_ANIM_DICT eAnimDict BOOL bIsFemale INT iPedAnimIndex GET_DANCE_ACTIVITY_PED_DATA(nightClubPed.eActiveActivity, eAnimDict, bIsFemale, iPedAnimIndex) SWITCH eAnimDict CASE NCAD_FACE_DJ CASE NCAD_GROUPS CASE NCAD_SINGLE_PROPS // 9 11 13 15 17 IF fRemainingTimeSeconds > -5.0 // Restrict random choice range below 26s, to prevent having too little time left for the last anim to fit iRange = FLOOR((fRemainingTimeSeconds / 2.0) - 8.0) IF iRange > 5 iRange = 5 ENDIF ELSE // fRemainingTimeSeconds below -5 means no transition anim can be played, so just pick a random dance clip iRange = 5 ENDIF IF iRange > 0 // Get random choice in (restricted) range if there is one iRand = GET_RANDOM_INT_IN_RANGE(0,iRange) // SPECIAL CASE - high_hands, select more appropriate anims if possible IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH_HANDS SWITCH eAnimDict CASE NCAD_FACE_DJ IF iRange > 1 IF iRange > 4 iRange = 4 ENDIF iRand = GET_RANDOM_INT_IN_RANGE(1,iRange) ENDIF BREAK CASE NCAD_GROUPS IF iRange > 3 iRand = GET_RANDOM_INT_IN_RANGE(3,iRange) ELIF iRange > 1 iRand = 2 ENDIF BREAK CASE NCAD_SINGLE_PROPS IF iRange > 4 iRand = 4 ENDIF BREAK ENDSWITCH ENDIF iReturn = (iRand * 2) + 9 ELSE // Get choice that will fit in the remaining time slot iReturn = (ROUND((fRemainingTimeSeconds + 1) / 2.0) * 2) - 1 IF iReturn < 9 iReturn = 9 ENDIF // Scale clip to fit exactly //nightClubPed.fPhaseRate = iReturn / fRemainingTimeSeconds ENDIF BREAK CASE NCAD_AMBIENT_PEDS // 6 9 10 11 12 13 IF fRemainingTimeSeconds > -5.0 // Restrict random choice range below 19s, to prevent having too little time left for the last anim to fit iRange = FLOOR(fRemainingTimeSeconds - 13.0) IF iRange > 6 iRange = 6 ENDIF ELSE // fRemainingTimeSeconds below -5 means no transition anim can be played, so just pick a random dance clip iRange = 6 ENDIF IF iRange > 0 // Get random choice in (restricted) range if there is one iRand = GET_RANDOM_INT_IN_RANGE(0,iRange) iReturn = iRand + 8 IF iReturn < 9 iReturn = 6 ENDIF ELSE // Get choice that will fit in the remaining time slot iReturn = ROUND(fRemainingTimeSeconds) IF iReturn < 9 IF iReturn = 8 iReturn = 9 ELSE iReturn = 6 ENDIF ELIF iReturn > 13 iReturn = 13 ENDIF // Scale clip to fit exactly //nightClubPed.fPhaseRate = iReturn / fRemainingTimeSeconds ENDIF BREAK ENDSWITCH // IF nightClubPed.fPhaseRate > 2.0 // OR nightClubPed.fPhaseRate < 0.5 // nightClubPed.fPhaseRate = 1.0 // ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_RANDOM_LENGTH_FOR_DANCE_CLIP: iReturn: ", iReturn, ", fRemainingTimeSeconds: ", fRemainingTimeSeconds) RETURN iReturn ENDFUNC FUNC INT GET_RANDOM_CLIP_VERSION(INT iCurrentVersion) INT iVersion = 1//GET_RANDOM_INT_IN_RANGE(1,6) IF iVersion >= iCurrentVersion // iVersion++ ENDIF RETURN iVersion ENDFUNC PROC InitActivityAnimSequenceData(NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence) NC_ACTIVITY_ANIM_SEQUENCE blank blank.activitySyncScene.PhaseToStartScene = 0.0 blank.activitySyncScene.PhaseToStopScene = 1.0 activityAnimSequence = blank ENDPROC FUNC STRING GET_SLOT_NAME_STRING(ACTIVITY_SLOT_NAMES eSlotName, BOOL bUseCollective=FALSE) IF (bUseCollective) SWITCH eSlotName CASE AC_SLOT_FACE_DJ_M_1 CASE AC_SLOT_FACE_DJ_M_2 CASE AC_SLOT_FACE_DJ_M_3 CASE AC_SLOT_FACE_DJ_M_4 CASE AC_SLOT_FACE_DJ_M_5 CASE AC_SLOT_FACE_DJ_M_6 CASE AC_SLOT_FACE_DJ_F_1 CASE AC_SLOT_FACE_DJ_F_2 CASE AC_SLOT_FACE_DJ_F_3 CASE AC_SLOT_FACE_DJ_F_4 CASE AC_SLOT_FACE_DJ_F_5 CASE AC_SLOT_FACE_DJ_F_6 RETURN "GET_FACE_DJ_FOR_NC_PED(i)" CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 RETURN "GET_SINGLE_PROP_FOR_NC_PED(i)" CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_5 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_F_5 CASE AC_SLOT_AMBIENT_F_6 RETURN "GET_AMBIENT_FOR_NC_PED(i)" ENDSWITCH ENDIF SWITCH eSlotName CASE AC_SLOT_NULL RETURN "AC_SLOT_NULL" CASE AC_SLOT_GUARDING RETURN "AC_SLOT_GUARDING" CASE AC_SLOT_HANGOUT RETURN "AC_SLOT_HANGOUT" CASE AC_SLOT_DRINK RETURN "AC_SLOT_DRINK" CASE AC_SLOT_SMOKE RETURN "AC_SLOT_SMOKE" CASE AC_SLOT_SIT_DRINKING RETURN "AC_SLOT_SIT_DRINKING" CASE AC_SLOT_USE_COMPUTER RETURN "AC_SLOT_USE_COMPUTER" CASE AC_SLOT_BARTENDER_YACHT_IDLE RETURN "AC_SLOT_BARTENDER_YACHT_IDLE" CASE AC_SLOT_SOLOMUN RETURN "AC_SLOT_SOLOMUN" CASE AC_SLOT_DIXON RETURN "AC_SLOT_DIXON" CASE AC_SLOT_TALE_OF_US_1 RETURN "AC_SLOT_TALE_OF_US_1" CASE AC_SLOT_TALE_OF_US_2 RETURN "AC_SLOT_TALE_OF_US_2" CASE AC_SLOT_BLACK_MADONNA RETURN "AC_SLOT_BLACK_MADONNA" CASE AC_SLOT_FACE_DJ_M_1 RETURN "AC_SLOT_FACE_DJ_M_1" CASE AC_SLOT_FACE_DJ_M_2 RETURN "AC_SLOT_FACE_DJ_M_2" CASE AC_SLOT_FACE_DJ_M_3 RETURN "AC_SLOT_FACE_DJ_M_3" CASE AC_SLOT_FACE_DJ_M_4 RETURN "AC_SLOT_FACE_DJ_M_4" CASE AC_SLOT_FACE_DJ_M_5 RETURN "AC_SLOT_FACE_DJ_M_5" CASE AC_SLOT_FACE_DJ_M_6 RETURN "AC_SLOT_FACE_DJ_M_6" CASE AC_SLOT_FACE_DJ_F_1 RETURN "AC_SLOT_FACE_DJ_F_1" CASE AC_SLOT_FACE_DJ_F_2 RETURN "AC_SLOT_FACE_DJ_F_2" CASE AC_SLOT_FACE_DJ_F_3 RETURN "AC_SLOT_FACE_DJ_F_3" CASE AC_SLOT_FACE_DJ_F_4 RETURN "AC_SLOT_FACE_DJ_F_4" CASE AC_SLOT_FACE_DJ_F_5 RETURN "AC_SLOT_FACE_DJ_F_5" CASE AC_SLOT_FACE_DJ_F_6 RETURN "AC_SLOT_FACE_DJ_F_6" CASE AC_SLOT_GROUP_M_1 RETURN "AC_SLOT_GROUP_M_1" CASE AC_SLOT_GROUP_M_2 RETURN "AC_SLOT_GROUP_M_2" CASE AC_SLOT_GROUP_M_3 RETURN "AC_SLOT_GROUP_M_3" CASE AC_SLOT_GROUP_M_4 RETURN "AC_SLOT_GROUP_M_4" CASE AC_SLOT_GROUP_M_5 RETURN "AC_SLOT_GROUP_M_5" CASE AC_SLOT_GROUP_M_6 RETURN "AC_SLOT_GROUP_M_6" CASE AC_SLOT_GROUP_F_1 RETURN "AC_SLOT_GROUP_F_1" CASE AC_SLOT_GROUP_F_2 RETURN "AC_SLOT_GROUP_F_2" CASE AC_SLOT_GROUP_F_3 RETURN "AC_SLOT_GROUP_F_3" CASE AC_SLOT_GROUP_F_4 RETURN "AC_SLOT_GROUP_F_4" CASE AC_SLOT_GROUP_F_5 RETURN "AC_SLOT_GROUP_F_5" CASE AC_SLOT_GROUP_F_6 RETURN "AC_SLOT_GROUP_F_6" CASE AC_SLOT_SINGLE_PROP_M_1 RETURN "AC_SLOT_SINGLE_PROP_M_1" CASE AC_SLOT_SINGLE_PROP_M_2 RETURN "AC_SLOT_SINGLE_PROP_M_2" CASE AC_SLOT_SINGLE_PROP_M_3 RETURN "AC_SLOT_SINGLE_PROP_M_3" CASE AC_SLOT_SINGLE_PROP_M_4 RETURN "AC_SLOT_SINGLE_PROP_M_4" CASE AC_SLOT_SINGLE_PROP_M_5 RETURN "AC_SLOT_SINGLE_PROP_M_5" CASE AC_SLOT_SINGLE_PROP_M_6 RETURN "AC_SLOT_SINGLE_PROP_M_6" CASE AC_SLOT_SINGLE_PROP_F_1 RETURN "AC_SLOT_SINGLE_PROP_F_1" CASE AC_SLOT_SINGLE_PROP_F_2 RETURN "AC_SLOT_SINGLE_PROP_F_2" CASE AC_SLOT_SINGLE_PROP_F_3 RETURN "AC_SLOT_SINGLE_PROP_F_3" CASE AC_SLOT_SINGLE_PROP_F_4 RETURN "AC_SLOT_SINGLE_PROP_F_4" CASE AC_SLOT_SINGLE_PROP_F_5 RETURN "AC_SLOT_SINGLE_PROP_F_5" CASE AC_SLOT_SINGLE_PROP_F_6 RETURN "AC_SLOT_SINGLE_PROP_F_6" CASE AC_SLOT_AMBIENT_M_1 RETURN "AC_SLOT_AMBIENT_M_1" CASE AC_SLOT_AMBIENT_M_2 RETURN "AC_SLOT_AMBIENT_M_2" CASE AC_SLOT_AMBIENT_M_3 RETURN "AC_SLOT_AMBIENT_M_3" CASE AC_SLOT_AMBIENT_M_4 RETURN "AC_SLOT_AMBIENT_M_4" CASE AC_SLOT_AMBIENT_M_5 RETURN "AC_SLOT_AMBIENT_M_5" CASE AC_SLOT_AMBIENT_M_6 RETURN "AC_SLOT_AMBIENT_M_6" CASE AC_SLOT_AMBIENT_F_1 RETURN "AC_SLOT_AMBIENT_F_1" CASE AC_SLOT_AMBIENT_F_2 RETURN "AC_SLOT_AMBIENT_F_2" CASE AC_SLOT_AMBIENT_F_3 RETURN "AC_SLOT_AMBIENT_F_3" CASE AC_SLOT_AMBIENT_F_4 RETURN "AC_SLOT_AMBIENT_F_4" CASE AC_SLOT_AMBIENT_F_5 RETURN "AC_SLOT_AMBIENT_F_5" CASE AC_SLOT_AMBIENT_F_6 RETURN "AC_SLOT_AMBIENT_F_6" CASE AC_SLOT_WORKER_CLIPBOARD RETURN "AC_SLOT_WORKER_CLIPBOARD" CASE AC_SLOT_DANCING_WITH_BEER_SCENARIO RETURN "AC_SLOT_DANCING_WITH_BEER_SCENARIO" CASE AC_SLOT_CAGE_DANCING_LAP_SCENARIO RETURN "AC_SLOT_CAGE_DANCING_LAP_SCENARIO" CASE AC_SLOT_LAZLOW_SITTING RETURN "AC_SLOT_LAZLOW_SITTING" CASE AC_SLOT_JACK_H RETURN "AC_SLOT_JACK_H" CASE AC_SLOT_POPPY_M RETURN "AC_SLOT_POPPY_M" CASE AC_SLOT_TRACEY_DANCING RETURN "AC_SLOT_TRACEY_DANCING" CASE AC_SLOT_LEANING_TEXTING RETURN "AC_SLOT_LEANING_TEXTING" CASE AC_SLOT_DANCEFLOOR_TONY_BAR_LEAN RETURN "AC_SLOT_DANCEFLOOR_TONY_BAR_LEAN" CASE AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN RETURN "AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN" CASE AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE RETURN "AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE" CASE AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE RETURN "AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE" CASE AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT RETURN "AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT" CASE AC_SLOT_DANCEFLOOR_BOUNCER_TONY_TALK RETURN "AC_SLOT_DANCEFLOOR_BOUNCER_TONY_TALK" CASE AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER RETURN "AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER" CASE AC_SLOT_DANCEFLOOR_TONY_PHONE RETURN "AC_SLOT_DANCEFLOOR_TONY_PHONE" CASE AC_SLOT_TECH_USE_COMPUTER RETURN "AC_SLOT_TECH_USE_COMPUTER" CASE AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE RETURN "AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE" CASE AC_SLOT_DANCEFLOOR_BUSBOY_TOILET RETURN "AC_SLOT_DANCEFLOOR_BUSBOY_TOILET" CASE AC_SLOT_TOILET_BUNKER_SEAT RETURN "AC_SLOT_TOILET_BUNKER_SEAT" CASE AC_SLOT_TOILET_SMOKE_WEED RETURN "AC_SLOT_TOILET_SMOKE_WEED" CASE AC_SLOT_TOILET_PHONE RETURN "AC_SLOT_TOILET_PHONE" CASE AC_SLOT_TOILET_CHECK_OUT_MIRROR RETURN "AC_SLOT_TOILET_CHECK_OUT_MIRROR" CASE AC_SLOT_DANCING_TO_BEER_WALK_SCENARIO RETURN "AC_SLOT_DANCING_TO_BEER_WALK_SCENARIO" CASE AC_SLOT_DANCING_TO_SELFIE_WALK_SCENARIO RETURN "AC_SLOT_DANCING_TO_SELFIE_WALK_SCENARIO" CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 RETURN "AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1" CASE AC_SLOT_CLOAKROOM_STOOL RETURN "AC_SLOT_CLOAKROOM_STOOL" CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1 RETURN "AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1" CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2 RETURN "AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2" CASE AC_SLOT_TONY_SIT_DRINK_1 RETURN "AC_SLOT_TONY_SIT_DRINK_1" CASE AC_SLOT_TONY_SIT_DRINK_2 RETURN "AC_SLOT_TONY_SIT_DRINK_2" CASE AC_SLOT_LEAN_SMOKE_1 RETURN "AC_SLOT_LEAN_SMOKE_1" CASE AC_SLOT_ENTOURAGE_TAL_1 RETURN "AC_SLOT_ENTOURAGE_TAL_1" CASE AC_SLOT_ENTOURAGE_TAL_2 RETURN "AC_SLOT_ENTOURAGE_TAL_2" CASE AC_SLOT_ENTOURAGE_TAL_3 RETURN "AC_SLOT_ENTOURAGE_TAL_3" CASE AC_SLOT_ENTOURAGE_SOL_1 RETURN "AC_SLOT_ENTOURAGE_SOL_1" CASE AC_SLOT_ENTOURAGE_SOL_2 RETURN "AC_SLOT_ENTOURAGE_SOL_2" CASE AC_SLOT_ENTOURAGE_SOL_3 RETURN "AC_SLOT_ENTOURAGE_SOL_3" CASE AC_SLOT_ENTOURAGE_SOL_4 RETURN "AC_SLOT_ENTOURAGE_SOL_4" CASE AC_SLOT_ENTOURAGE_SOL_ROB RETURN "AC_SLOT_ENTOURAGE_SOL_ROB" CASE AC_SLOT_ENTOURAGE_SOL_MIKE RETURN "AC_SLOT_ENTOURAGE_SOL_MIKE" CASE AC_SLOT_ENTOURAGE_BLAM_1 RETURN "AC_SLOT_ENTOURAGE_BLAM_1" CASE AC_SLOT_ENTOURAGE_BLAM_2 RETURN "AC_SLOT_ENTOURAGE_BLAM_2" CASE AC_SLOT_ENTOURAGE_BLAM_3 RETURN "AC_SLOT_ENTOURAGE_BLAM_3" CASE AC_SLOT_ENTOURAGE_DIX_1 RETURN "AC_SLOT_ENTOURAGE_DIX_1" CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR RETURN "AC_SLOT_LAZLOW_HIGH_DANCEFLOOR" CASE AC_SLOT_LAZLOW_HIGH_RAILING RETURN "AC_SLOT_LAZLOW_HIGH_RAILING" CASE AC_SLOT_LAZLOW_HIGH_CHAIR RETURN "AC_SLOT_LAZLOW_HIGH_CHAIR" CASE AC_SLOT_LAZLOW_HIGH_PODIUM RETURN "AC_SLOT_LAZLOW_HIGH_PODIUM" CASE AC_SLOT_LAZLOW_LOW_TOILET RETURN "AC_SLOT_LAZLOW_LOW_TOILET" CASE AC_SLOT_LAZLOW_LOW_BAR RETURN "AC_SLOT_LAZLOW_LOW_BAR" CASE AC_SLOT_LAZLOW_LOW_SOFA RETURN "AC_SLOT_LAZLOW_LOW_SOFA" CASE AC_SLOT_LAZLOW_LOW_ALONE RETURN "AC_SLOT_LAZLOW_LOW_ALONE" CASE AC_SLOT_LAZLOW_VIP RETURN "AC_SLOT_LAZLOW_VIP" CASE AC_SLOT_MUSCLE_FLEX RETURN "AC_SLOT_MUSCLE_FLEX" ENDSWITCH RETURN "" ENDFUNC PROC GET_NC_SEQ_ANIM_DATA(ACTIVITY_SLOT_NAMES eActivity, INT iState, INT iSequence, NC_ACTIVITY_ANIM_SEQUENCE &activityAnimSequence, BOOL bIsFemale = FALSE)// CLEAR_NC_SEQ_ANIM_DATA(activityAnimSequence) CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_SEQ_ANIM_DATA: eActivity = ", GET_SLOT_NAME_STRING(eActivity), ", iState = ", iState, " iSequence = ", iSequence, " bIsFemale = ", bIsFemale) //bIsFemale = bIsFemale InitActivityAnimSequenceData(activityAnimSequence) SWITCH eActivity CASE AC_SLOT_LEANING_TEXTING GET_NC_LEANING_TEXTING_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_GUARDING GET_NC_GUARDING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_HANGOUT GET_NC_HANGOUT_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_SIT_DRINKING GET_NC_SIT_DRINKING_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_USE_COMPUTER GET_NC_USE_COMPUTER_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TECH_USE_COMPUTER GET_NC_TECH_USE_COMPUTER_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_BARTENDER_YACHT_IDLE GET_NC_BARTENDING_YACHT_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_WORKER_CLIPBOARD GET_NC_WORKER_CLIPBOARD_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DRINK GET_NC_DRINK_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_SMOKE GET_NC_SMOKE_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_SOLOMUN GET_NC_SOLOMUN_DJING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DIXON GET_NC_DIXON_DJING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TALE_OF_US_1 GET_NC_TALE_OF_US_1_DJING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TALE_OF_US_2 GET_NC_TALE_OF_US_2_DJING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_BLACK_MADONNA GET_NC_BLACK_MADONNA_DJING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCING_WITH_BEER_SCENARIO GET_NC_DANCING_SCENARIO_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_DANCING_TO_BEER_WALK_SCENARIO GET_NC_DANCING_TO_BEER_WALK_SCENARIO_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_DANCING_TO_SELFIE_WALK_SCENARIO GET_NC_DANCING_TO_SELFIE_WALK_SCENARIO_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_CAGE_DANCING_LAP_SCENARIO GET_NC_STRIP_DANCING_LAP_SCENARIO_ANIM_DATA(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_TRACEY_DANCING GET_NC_TRACEY_DANCING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_SITTING GET_NC_LAZLOW_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_JACK_H GET_NC_JACK_H_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_FACE_DJ_M_1 CASE AC_SLOT_FACE_DJ_M_2 CASE AC_SLOT_FACE_DJ_M_3 CASE AC_SLOT_FACE_DJ_M_4 CASE AC_SLOT_FACE_DJ_M_5 CASE AC_SLOT_FACE_DJ_M_6 CASE AC_SLOT_FACE_DJ_F_1 CASE AC_SLOT_FACE_DJ_F_2 CASE AC_SLOT_FACE_DJ_F_3 CASE AC_SLOT_FACE_DJ_F_4 CASE AC_SLOT_FACE_DJ_F_5 CASE AC_SLOT_FACE_DJ_F_6 CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_5 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_F_5 CASE AC_SLOT_AMBIENT_F_6 CASE AC_SLOT_GROUP_M_1 CASE AC_SLOT_GROUP_M_2 CASE AC_SLOT_GROUP_M_3 CASE AC_SLOT_GROUP_M_4 CASE AC_SLOT_GROUP_M_5 CASE AC_SLOT_GROUP_M_6 CASE AC_SLOT_GROUP_F_1 CASE AC_SLOT_GROUP_F_2 CASE AC_SLOT_GROUP_F_3 CASE AC_SLOT_GROUP_F_4 CASE AC_SLOT_GROUP_F_5 CASE AC_SLOT_GROUP_F_6 CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 GET_DANCE_ANIM_DATA(eActivity, activityAnimSequence, FALSE, 9, 1, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext) BREAK CASE AC_SLOT_DANCEFLOOR_TONY_BAR_LEAN GET_ANIM_DATA_CLUB_DANCEFLOOR_TONY_BAR_LEAN(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN GET_ANIM_DATA_CLUB_DANCEFLOOR_LAZLOW_WALL_LEAN(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE GET_ANIM_DATA_CLUB_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE GET_ANIM_DATA_CLUB_DANCEFLOOR_LAZLOW_SELFIE(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_TONY_PHONE GET_ANIM_DATA_CLUB_DANCEFLOOR_TONY_PHONE(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE GET_ANIM_DATA_CLUB_DANCEFLOOR_HBARTENDER_STOCK_TAKE(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_BUSBOY_TOILET GET_ANIM_DATA_CLUB_DANCEFLOOR_BUSBOY_TOILET(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TOILET_BUNKER_SEAT GET_ANIM_DATA_CLUB_TOILET_BUNKER_SEAT(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TOILET_SMOKE_WEED GET_ANIM_DATA_CLUB_TOILET_SMOKE_WEED(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TOILET_PHONE GET_ANIM_DATA_CLUB_TOILET_PHONE(iState, iSequence, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_TOILET_CHECK_OUT_MIRROR GET_ANIM_DATA_CLUB_TOILET_CHECK_OUT_MIRROR(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT GET_ANIM_DATA_CLUB_DANCEFLOOR_TECH_STAGE_SIT(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_BOUNCER_TONY_TALK GET_ANIM_DATA_CLUB_DANCEFLOOR_BOUNCER_TONY_TALK(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER GET_ANIM_DATA_CLUB_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_F1(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_CLOAKROOM_STOOL GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_F2(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1 GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_M1(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2 GET_ANIM_DATA_PROP_HUMAN_SEAT_BAR_M2(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_TONY_SIT_DRINK_1 GET_NC_SIT_DRINKING_ANIM_DATA(iState, 1, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_TONY_SIT_DRINK_2 GET_NC_SIT_DRINKING_ANIM_DATA(iState, 2, activityAnimSequence, bIsFemale) BREAK CASE AC_SLOT_POPPY_M GET_NC_CELEB_POPPY_MITCHELL_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LEAN_SMOKE_1 GET_NC_LEAN_SMOKE_1_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_TAL_1 GET_NC_ENTOURAGE_TAL_1_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_TAL_2 GET_NC_ENTOURAGE_TAL_2_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_TAL_3 GET_NC_ENTOURAGE_TAL_3_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_SOL_1 GET_NC_ENTOURAGE_SOL_1_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_SOL_2 GET_NC_ENTOURAGE_SOL_2_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_SOL_3 GET_NC_ENTOURAGE_SOL_3_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_SOL_4 GET_NC_ENTOURAGE_SOL_4_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_SOL_ROB GET_NC_ENTOURAGE_SOL_ROB_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_SOL_MIKE GET_NC_ENTOURAGE_SOL_MIKE_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_BLAM_1 GET_NC_ENTOURAGE_BLAM_1_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_BLAM_2 GET_NC_ENTOURAGE_BLAM_2_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_BLAM_3 GET_NC_ENTOURAGE_BLAM_3_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_ENTOURAGE_DIX_1 GET_NC_ENTOURAGE_DIX_1_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR GET_NC_LAZLOW_HIGH_DANCEFLOOR_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_HIGH_RAILING GET_NC_LAZLOW_HIGH_RAILING_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_HIGH_CHAIR GET_NC_LAZLOW_HIGH_CHAIR_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_HIGH_PODIUM GET_NC_LAZLOW_HIGH_PODIUM_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_LOW_TOILET GET_NC_LAZLOW_LOW_TOILET_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_LOW_BAR GET_NC_LAZLOW_LOW_BAR_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_LOW_SOFA GET_NC_LAZLOW_LOW_SOFA_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_LOW_ALONE GET_NC_LAZLOW_LOW_ALONE_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_LAZLOW_VIP GET_NC_LAZLOW_VIP_ANIM_DATA(iState, iSequence, activityAnimSequence) BREAK CASE AC_SLOT_MUSCLE_FLEX GET_NC_MUSCLE_FLEX(iState, iSequence, activityAnimSequence) BREAK ENDSWITCH ENDPROC FUNC BOOL HAVE_ALL_LOCAL_ACTIVITY_PROPS_BEEN_CREATED_FOR_NC(NC_ACTIVITY_MAIN &ActivityMain, NIGHT_CLUB_PEDS &activityPeds) INT l REPEAT iNCMaxSyncSceneEntityInSequence l IF IS_MODEL_IN_CDIMAGE(ActivityMain.objectModelName[l]) CDEBUG1LN(DEBUG_NET_PED_DANCING, "HAVE_ALL_LOCAL_ACTIVITY_PROPS_BEEN_CREATED_FOR_NC: ActivityMain.objectModelName[", l, "] should have prop: ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l])) IF NOT DOES_ENTITY_EXIST(activityPeds.oiSceneObjects[l]) CDEBUG1LN(DEBUG_NET_PED_DANCING, "HAVE_ALL_LOCAL_ACTIVITY_PROPS_BEEN_CREATED_FOR_NC: prop [", l, "] = ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l]), ", not yet created for activity ", GET_SLOT_NAME_STRING(ActivityMain.eActivity)) RETURN FALSE ENDIF ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "HAVE_ALL_LOCAL_ACTIVITY_PROPS_BEEN_CREATED_FOR_NC: ActivityMain.objectModelName[", l, "] no prop assicated with activity ") ENDIF ENDREPEAT RETURN TRUE ENDFUNC FUNC PED_BONETAG GET_BONE_TO_ATTACH_TO(ACTIVITY_SLOT_NAMES eActivity, INT iPropToAttach) SWITCH eActivity CASE AC_SLOT_DRINK RETURN BONETAG_PH_R_HAND BREAK CASE AC_SLOT_DANCING_WITH_BEER_SCENARIO CASE AC_SLOT_DANCING_TO_BEER_WALK_SCENARIO CASE AC_SLOT_DANCING_TO_SELFIE_WALK_SCENARIO CASE AC_SLOT_LEANING_TEXTING CASE AC_SLOT_DANCEFLOOR_TONY_PHONE CASE AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE CASE AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE CASE AC_SLOT_TOILET_PHONE CASE AC_SLOT_SIT_DRINKING CASE AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT CASE AC_SLOT_TONY_SIT_DRINK_1 CASE AC_SLOT_TONY_SIT_DRINK_2 CASE AC_SLOT_LEAN_SMOKE_1 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_GROUP_M_2 CASE AC_SLOT_GROUP_M_3 CASE AC_SLOT_GROUP_F_2 CASE AC_SLOT_GROUP_F_3 CASE AC_SLOT_GROUP_F_4 CASE AC_SLOT_GROUP_F_5 CASE AC_SLOT_GROUP_F_6 CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 CASE AC_SLOT_ENTOURAGE_TAL_1 CASE AC_SLOT_ENTOURAGE_TAL_2 CASE AC_SLOT_ENTOURAGE_TAL_3 CASE AC_SLOT_ENTOURAGE_SOL_2 CASE AC_SLOT_ENTOURAGE_SOL_3 CASE AC_SLOT_ENTOURAGE_SOL_4 CASE AC_SLOT_ENTOURAGE_SOL_ROB CASE AC_SLOT_ENTOURAGE_SOL_MIKE RETURN BONETAG_PH_R_HAND BREAK CASE AC_SLOT_SMOKE CASE AC_SLOT_WORKER_CLIPBOARD CASE AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE CASE AC_SLOT_TOILET_SMOKE_WEED RETURN BONETAG_PH_L_HAND BREAK CASE AC_SLOT_JACK_H CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_6 CASE AC_SLOT_GROUP_M_4 IF iPropToAttach = 0 RETURN BONETAG_PH_L_HAND ELSE RETURN BONETAG_PH_R_HAND ENDIF BREAK ENDSWITCH RETURN BONETAG_NULL ENDFUNC FUNC VECTOR GET_BONE_OFFSET_POSITION_TO_ATTACH_TO(ACTIVITY_SLOT_NAMES eActivity, PED_BONETAG ePedBone, MODEL_NAMES propModel) SWITCH eActivity CASE AC_SLOT_JACK_H SWITCH ePedBone CASE BONETAG_L_HAND // RETURN <<-0.04779, -0.16577, 0.17745>> RETURN <<0.066, -0.162, 0.258>> BREAK CASE BONETAG_R_HAND RETURN <<0.06558, -0.20634, -0.18839>> // RETURN <<12.00112, -20.63375, 18.83904>> BREAK ENDSWITCH BREAK CASE AC_SLOT_TOILET_PHONE RETURN <<0.0, 0.03, 0.0>> BREAK CASE AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE RETURN <<0.0, -0.01, -0.04>> BREAK CASE AC_SLOT_DRINK SWITCH propModel CASE PROP_AMB_BEER_BOTTLE RETURN <<0,0,0.08>> BREAK ENDSWITCH BREAK CASE AC_SLOT_SIT_DRINKING CASE AC_SLOT_TONY_SIT_DRINK_1 CASE AC_SLOT_TONY_SIT_DRINK_2 CASE AC_SLOT_DANCING_WITH_BEER_SCENARIO SWITCH propModel CASE PROP_AMB_BEER_BOTTLE RETURN <<0,0,0.01>> BREAK ENDSWITCH BREAK ENDSWITCH SWITCH propModel CASE PROP_AMB_BEER_BOTTLE RETURN <<0.0, 0.00, 0.16001>> BREAK ENDSWITCH RETURN <<0,0,0>> ENDFUNC FUNC VECTOR GET_BONE_OFFSET_ROTATION_TO_ATTACH_TO(ACTIVITY_SLOT_NAMES eActivity, PED_BONETAG ePedBone) SWITCH eActivity CASE AC_SLOT_JACK_H SWITCH ePedBone CASE BONETAG_L_HAND // RETURN <<-128.29486, -15.52425, -18.72467>> RETURN <<220.971, 2.808, 2.808>> BREAK CASE BONETAG_R_HAND RETURN <<-53.27631, 0, 0>> BREAK ENDSWITCH BREAK CASE AC_SLOT_GROUP_M_2 CASE AC_SLOT_GROUP_M_5 RETURN <<0, 45, 0>> BREAK CASE AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT RETURN <<0,-90,0>> ENDSWITCH RETURN <<0,0,0>> ENDFUNC BOOL bCokePowderCreated ENTITY_INDEX eiCokeProp //BOOL bBoomBoxCreated //ENTITY_INDEX eiBoomBoxProp PROC CREATE_COKE_POWDER() IF REQUEST_LOAD_MODEL(bkr_prop_coke_powder_02) IF NOT bCokePowderCreated eiCokeProp = CREATE_OBJECT_NO_OFFSET(bkr_prop_coke_powder_02, <<-1381.882, -623.721, 30.333 >>, FALSE) eiCokeProp = eiCokeProp // SET_ENTITY_ROTATION(eiCokeProp, ) bCokePowderCreated = TRUE ENDIF ENDIF // IF GET_COMMANDLINE_PARAM_EXISTS("-sc_debug_nightclub_radio") // IF REQUEST_LOAD_MODEL(INT_TO_ENUM(MODEL_NAMES, HASH("PROP_BOOMBOX_01"))) // IF NOT bBoomBoxCreated // eiBoomBoxProp = CREATE_OBJECT_NO_OFFSET(INT_TO_ENUM(MODEL_NAMES, HASH("PROP_BOOMBOX_01")), <<-1601.7766, -3012.8796, -76.9010>>, FALSE) // eiBoomBoxProp = eiBoomBoxProp // // SET_ENTITY_ROTATION(eiBoomBoxProp, <<-13.2559, -0.0000, -83.6552>>) // // LINK_STATIC_EMITTER_TO_ENTITY("SE_DLC_APT_Yacht_Exterior_01", eiBoomBoxProp) // // // bBoomBoxCreated = TRUE // ENDIF // ENDIF // ENDIF ENDPROC //PROC MAINTAIN_NIGHTCLUB_RADIO(NIGHT_CLUB_STRUCT &nightClubStruct, SERVER_BROADCAST_DATA &ServerBD) //// INT iRadioStationIndex // IF NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) > -1 // AND NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) < NUM_NETWORK_PLAYERS // IF g_eCurrentPlayingDJ != DJ_NULL // IF nightClubStruct.iCurrentStationID != g_iNightClubStationID // nightClubStruct.iCurrentStationID = g_iNightClubStationID // STRING sStationName = GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID) // // IF NETWORK_IS_HOST_OF_THIS_SCRIPT() // // SET_RADIO_TRACK_WITH_START_OFFSET(sStationName, GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(sStationName), 1), 0) //// nightClubStruct.stMusicTimer.Timer = GET_NETWORK_TIME_ACCURATE() // IF NOT HAS_NET_TIMER_STARTED(ServerBD.stMusicTimer) // START_NET_TIMER(ServerBD.stMusicTimer, FALSE, TRUE) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: HOST: stMusicTimer started") // ENDIF // ELSE // IF HAS_NET_TIMER_STARTED(ServerBD.stMusicTimer) // INT iDifferenceInMilliseconds = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(ServerBD.stMusicTimer, FALSE, TRUE) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: CLIENT: stMusicTimer diff: ", iDifferenceInMilliseconds ) // SET_RADIO_TRACK_WITH_START_OFFSET(sStationName, GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(sStationName), 1), iDifferenceInMilliseconds) // ELSE // ENDIF // ENDIF // // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_bars", TRUE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", TRUE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", TRUE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", TRUE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", TRUE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", TRUE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", TRUE) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: station: ", sStationName, ", g_iNightClubStationID: ", g_iNightClubStationID) // SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Exterior_01", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_bars", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Hall", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Stairs", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_garage", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_office", sStationName) // SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_rear_L_corridor", sStationName) // // ENDIF // IF NOT IS_AUDIO_SCENE_ACTIVE("DLC_Ba_NightClub_Scene") // START_AUDIO_SCENE("DLC_Ba_NightClub_Scene") // ENDIF // ELSE // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_bars", FALSE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", FALSE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", FALSE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", FALSE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", FALSE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", FALSE) // SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", FALSE) // ENDIF // ENDIF // //ENDPROC FUNC BOOL SHOULD_NIGHTCLUB_RADIO_START_FROM_SCRATCH(NIGHT_CLUB_STRUCT &nightClubStruct) IF nightClubStruct.bResetRadioToStart PRINTLN("SHOULD_NIGHTCLUB_RADIO_HAVE_RANDOM_START: False - nightClubStruct.bResetRadioToStart = TRUE") RETURN TRUE ELIF g_bForceNightclubRadioToRestart PRINTLN("SHOULD_NIGHTCLUB_RADIO_HAVE_RANDOM_START: False - g_bForceNightclubRadioToRestart = TRUE") RETURN TRUE ENDIF RETURN FALSE ENDFUNC #IF IS_DEBUG_BUILD PROC FORCE_CHANGE_RADIO_STATION(NIGHT_CLUB_STRUCT &nightClubStruct, SERVER_BROADCAST_DATA &ServerBD) IF nightClubStruct.bStartDebugMusic nightClubStruct.iStationName = g_iNightClubStationID nightClubStruct.iCurrentAudioIntensityTagID = 0 g_iNightClubAudioNextTagTime = 0 STRING sStationName sStationName = GET_RADIO_STATION_NAME(nightClubStruct.iStationName) STRING sTrackName = GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(sStationName), 1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: Radio station name: ", sStationName, ": get info for trackname: ", sTrackName, ", nightClubStruct.iStationName: ",nightClubStruct.iStationName) FREEZE_RADIO_STATION(sStationName) SET_RADIO_TRACK_WITH_START_OFFSET(sStationName, sTrackName, nightClubStruct.iTrackStartTime) UNFREEZE_RADIO_STATION(sStationName) nightClubStruct.iMixAnimCatchupTime = nightClubStruct.iTrackStartTime CDEBUG1LN(DEBUG_NET_PED_DANCING, "ORCE_CHANGE_RADIO_STATION: nightClubStruct.iMixAnimCatchupTime ", nightClubStruct.iMixAnimCatchupTime) nightClubStruct.iMixAnimTime = 0 // Reset DJ anims IF (nightClubStruct.iDJPedID1 != -1) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence = 0 nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID1] = TRUE ENDIF IF (nightClubStruct.iDJPedID2 != -1) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].iCurrentSequence = 0 nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID2] = TRUE ENDIF REINIT_NET_TIMER(ServerBD.stMusicTimer, FALSE, TRUE) ServerBD.stMusicTimer.Timer = GET_TIME_OFFSET(ServerBD.stMusicTimer.Timer, -nightClubStruct.iTrackStartTime) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: HOST: stMusicTimer started at: ", nightClubStruct.iTrackStartTime) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Bogs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area_2", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: station: ", sStationName, ", g_iNightClubStationID: ", g_iNightClubStationID) //SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Exterior_01", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Bogs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Hall", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Stairs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_garage", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area_2", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_office", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_rear_L_corridor", sStationName) nightClubStruct.bStartDebugMusic = FALSE ENDIF ENDPROC #ENDIF PROC MAINTAIN_NIGHTCLUB_RADIO(NIGHT_CLUB_STRUCT &nightClubStruct, SERVER_BROADCAST_DATA &ServerBD) #IF IS_DEBUG_BUILD FORCE_CHANGE_RADIO_STATION(nightClubStruct, ServerBD) #ENDIF // INT iRadioStationIndex STRING sStationName //CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: called this fraem") IF g_ncState > NC_STAGE_INIT //CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: past initi stage") IF g_eCurrentPlayingDJ != DJ_NULL AND NOT IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(PLAYER_ID()) AND NOT GET_PLAYER_NIGHTCLUB_DJ_SWITCH_CUTSCENE_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB()) AND NOT IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(GET_OWNER_OF_THIS_NIGHTCLUB()) AND g_iNightClubStationID > 0 IF g_bNCIntroCleanupInProgress CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: g_bNCIntroCleanupInProgress is true not doing emitters yet") EXIT ENDIF IF HAS_NET_TIMER_STARTED(st_NightclubRadioDelay) IF g_bHoldDJForAudioDelay // Reset DJ anims IF (nightClubStruct.iDJPedID1 != -1) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence = 0 nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID1] = TRUE IF DOES_DJ_HAVE_HEADPHONES_PROP(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1]) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[0]) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[0]) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[0], FALSE) ENDIF ENDIF ENDIF IF (nightClubStruct.iDJPedID2 != -1) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].iCurrentSequence = 0 nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID2] = TRUE ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: holding DJ for delay") g_bHoldDJForAudioDelay = FALSE ENDIF IF NOT HAS_NET_TIMER_EXPIRED(st_NightclubRadioDelay,g_iNightclubRadioDelayMS) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: delaying emitter audio after intro") nightClubStruct.iCurrentStationID = -1 DISABLE_NIGHTCLUB_EMITTERS() EXIT ELSE g_bNightClubRadioDelayNeeded = FALSE RESET_NET_TIMER(st_NightclubRadioDelay) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: allowing to fall trhrough and set emitters after intro") ENDIF ELIF g_bNightClubRadioDelayNeeded IF NOT HAS_NET_TIMER_STARTED(st_NightclubRadioDelay) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: delaying emitter audio after intro- waiting for timer") nightClubStruct.iCurrentStationID = -1 DISABLE_NIGHTCLUB_EMITTERS() EXIT ENDIF ENDIF // The host sets the radio station, and a timestamp of when it was started // Sets this initially or if the radio station changes IF (NETWORK_IS_HOST_OF_THIS_SCRIPT() AND GET_OWNER_OF_THIS_NIGHTCLUB() = PLAYER_ID()) OR (GET_OWNER_OF_THIS_NIGHTCLUB() != INVALID_PLAYER_INDEX() AND NETWORK_IS_HOST_OF_THIS_SCRIPT() AND NOT NETWORK_IS_PLAYER_A_PARTICIPANT(GET_OWNER_OF_THIS_NIGHTCLUB())) IF nightClubStruct.iCurrentStationID != g_iNightClubStationID nightClubStruct.iCurrentStationID = g_iNightClubStationID nightClubStruct.iCurrentAudioIntensityTagID = 0 g_iNightClubAudioNextTagTime = 0 sStationName = GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID) STRING sTrackName = GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(sStationName), 1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: Radio station name: ", sStationName, ": get info for trackname: ", sTrackName, ", nightClubStruct.iCurrentStationID: ",nightClubStruct.iCurrentStationID) FREEZE_RADIO_STATION(sStationName) INT iMixStartMS = 0 IF NOT SHOULD_NIGHTCLUB_RADIO_START_FROM_SCRATCH(nightClubStruct) INT iRandomStartMin = GET_RANDOM_INT_IN_RANGE(0, 60) iMixStartMS = (iRandomStartMin * 60) * 1000 CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: getting random mix time as ", iMixStartMS) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: SHOULD_NIGHTCLUB_RADIO_HAVE_RANDOM_START is false start time = ", iMixStartMS) ENDIF IF GET_OWNER_OF_THIS_NIGHTCLUB() != INVALID_PLAYER_INDEX() IF NOT SHOULD_NIGHTCLUB_RADIO_START_FROM_SCRATCH(nightClubStruct) AND HAS_PLAYER_STARTED_NIGHTCLUB_MIX_TIMER(GET_OWNER_OF_THIS_NIGHTCLUB()) iMixStartMS = GET_PLAYER_NIGHTCLUB_MIX_TIMER(GET_OWNER_OF_THIS_NIGHTCLUB()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: Club owner has started the mix, set start time to ", iMixStartMS) ELSE IF GET_OWNER_OF_THIS_NIGHTCLUB() = PLAYER_ID() START_LOCAL_PLAYER_NIGHTCLUB_MIX_TIMER(iMixStartMS) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: We are club owner and are starting the mix at ", iMixStartMS) ENDIF ENDIF ENDIF #IF IS_DEBUG_BUILD IF g_iDebugNightClubMixStartMinute != -1 iMixStartMS = (g_iDebugNightClubMixStartMinute * 60) * 1000 ENDIF #ENDIF SET_RADIO_TRACK_WITH_START_OFFSET(sStationName, sTrackName, iMixStartMS) UNFREEZE_RADIO_STATION(sStationName) nightClubStruct.iMixAnimCatchupTime = iMixStartMS CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: HOST: nightClubStruct.iMixAnimCatchupTime ", nightClubStruct.iMixAnimCatchupTime) nightClubStruct.iMixAnimTime = 0 // Reset DJ anims IF (nightClubStruct.iDJPedID1 != -1) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence = 0 nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID1] = TRUE INT j REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[j]) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[j]) IF GET_ENTITY_MODEL(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[j]) = INT_TO_ENUM(MODEL_NAMES, HASH("BA_Prop_Battle_Headphones_DJ")) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].oiSceneObjects[j], FALSE) ENDIF ENDIF ENDREPEAT ENDIF IF (nightClubStruct.iDJPedID2 != -1) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) CLEAR_PED_TASKS(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].piScenePeds) ENDIF nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].iCurrentSequence = 0 nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].bHasSyncSceneStarted = FALSE nightClubStruct.bDoProcessEveryFrame[nightClubStruct.iDJPedID2] = TRUE INT j REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].oiSceneObjects[j]) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].oiSceneObjects[j]) IF GET_ENTITY_MODEL(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].oiSceneObjects[j]) = INT_TO_ENUM(MODEL_NAMES, HASH("BA_Prop_Battle_Headphones_DJ")) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].oiSceneObjects[j], FALSE) ENDIF ENDIF ENDREPEAT ENDIF REINIT_NET_TIMER(ServerBD.stMusicTimer, FALSE, TRUE) ServerBD.stMusicTimer.Timer = GET_TIME_OFFSET(ServerBD.stMusicTimer.Timer, -iMixStartMS) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: HOST: stMusicTimer started at: ", iMixStartMS) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Bogs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area_2", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: station: ", sStationName, ", g_iNightClubStationID: ", g_iNightClubStationID) //SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Exterior_01", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Bogs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Hall", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Stairs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_garage", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area_2", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_office", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_rear_L_corridor", sStationName) g_bForceNightclubRadioToRestart = FALSE ENDIF ELSE // Client waits till it detects the radio station hasn't been initalised and the host timer has started, // and sets the radio station with an offset calculated from the host timestamp IF nightClubStruct.iCurrentStationID != g_iNightClubStationID IF HAS_NET_TIMER_STARTED(ServerBD.stMusicTimer) nightClubStruct.iCurrentStationID = g_iNightClubStationID nightClubStruct.iCurrentAudioIntensityTagID = 0 g_iNightClubAudioNextTagTime = 0 INT iDifferenceInMilliseconds = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(ServerBD.stMusicTimer, FALSE, TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: CLIENT: stMusicTimer diff: ", iDifferenceInMilliseconds ) sStationName = GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID) STRING sTrackName = GET_TRACK_NAME_FROM_RADIO_STATION(GET_HASH_KEY(sStationName), 1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: CLIENT: Radio station name: ", sStationName, ": get info for trackname: ", sTrackName ) IF GET_OWNER_OF_THIS_NIGHTCLUB() != INVALID_PLAYER_INDEX() AND GET_OWNER_OF_THIS_NIGHTCLUB() = PLAYER_ID() START_LOCAL_PLAYER_NIGHTCLUB_MIX_TIMER(iDifferenceInMilliseconds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: CLIENT: We are club owner but the mix has already started, set mix timer to", iDifferenceInMilliseconds) ENDIF FREEZE_RADIO_STATION(sStationName) SET_RADIO_TRACK_WITH_START_OFFSET(sStationName, sTrackName, iDifferenceInMilliseconds) UNFREEZE_RADIO_STATION(sStationName) nightClubStruct.iMixAnimCatchupTime = iDifferenceInMilliseconds CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: nightClubStruct.iMixAnimCatchupTime ", nightClubStruct.iMixAnimCatchupTime) nightClubStruct.iMixAnimTime = 0 //SET_STATIC_EMITTER_ENABLED("SE_DLC_APT_Yacht_Exterior_01",TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Bogs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area_2", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: CLIENT: station: ", sStationName, ", g_iNightClubStationID: ", g_iNightClubStationID) //SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Exterior_01", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Bogs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Hall", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Stairs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area_2", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_garage", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_office", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_rear_L_corridor", sStationName) g_bForceNightclubRadioToRestart = FALSE ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: CLIENT: stMusicTimer has NOT started") ENDIF ENDIF ENDIF ELSE IF IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(PLAYER_ID()) OR IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(GET_OWNER_OF_THIS_NIGHTCLUB()) IF NOT g_bForceNightclubRadioToRestart g_bForceNightclubRadioToRestart = TRUE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: setting g_bForceNightclubRadioToRestart TRUE ") ENDIF ///CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: nightClubStruct.iCurrentStationID = ",nightClubStruct.iCurrentStationID ) //CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: FIND_RADIO_STATION_INDEX RADIO_26_DLC_BATTLE_CLUB_WARMUP = ",FIND_RADIO_STATION_INDEX(HASH("RADIO_26_DLC_BATTLE_CLUB_WARMUP"))) IF nightClubStruct.iCurrentStationID != FIND_RADIO_STATION_INDEX(HASH("RADIO_26_DLC_BATTLE_CLUB_WARMUP")) sStationName = "RADIO_26_DLC_BATTLE_CLUB_WARMUP" FREEZE_RADIO_STATION(sStationName) SET_RADIO_TRACK_WITH_START_OFFSET(sStationName, "DLC_BATTLE_MUSIC_BATTLE_MIX_WARMUP", 0) UNFREEZE_RADIO_STATION(sStationName) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Bogs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area_2", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", TRUE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", TRUE) #IF IS_DEBUG_BUILD IF IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(PLAYER_ID()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: setting warmup station station: ", sStationName) ENDIF IF IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(GET_OWNER_OF_THIS_NIGHTCLUB()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: setting warmup station station for owner: ", sStationName) ENDIF #ENDIF //SET_EMITTER_RADIO_STATION("SE_DLC_APT_Yacht_Exterior_01", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Bogs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Hall", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_Entry_Stairs", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area_2", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_garage", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_main_area", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_office", sStationName) SET_EMITTER_RADIO_STATION("SE_ba_dlc_int_01_rear_L_corridor", sStationName) nightClubStruct.iCurrentStationID = FIND_RADIO_STATION_INDEX(HASH("RADIO_26_DLC_BATTLE_CLUB_WARMUP")) ENDIF ELSE IF GET_PLAYER_NIGHTCLUB_DJ_SWITCH_CUTSCENE_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB()) REINIT_NET_TIMER(st_NightclubRadioDelay) g_iNightclubRadioDelayMS = 1000 CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: delaying audio mix for DJ swap ") g_bHoldDJForAudioDelay = TRUE ENDIF #IF IS_DEBUG_BUILD IF g_eCurrentPlayingDJ = DJ_NULL CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: DJ set to Null, turning off static emitters") ENDIF // IF NOT IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(PLAYER_ID()) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: watching solomun cutscene, turning off static emitters") // ENDIF // IF GET_PLAYER_NIGHTCLUB_DJ_SWITCH_CUTSCENE_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB()) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: owner DJ sswitch active, turning off static emitters") // ENDIF IF g_iNightClubStationID <= 0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_NIGHTCLUB_RADIO: g_iNightClubStationID <= 0, turning off static emitters") ENDIF #ENDIF SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Bogs", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area_2", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", FALSE) ENDIF ENDIF ENDIF ENDPROC #IF IS_DEBUG_BUILD FUNC STRING GET_NC_PED_TYPE_STRING(NC_PED_TYPES ncPedType) SWITCH ncPedType CASE NC_NULL_PED RETURN "NC_NULL_PED" CASE NC_BOUNCER_HALLWAY RETURN "NC_BOUNCER_HALLWAY" CASE NC_BOUNCER_HEAD RETURN "NC_BOUNCER_HEAD" CASE NC_BOUNCER_DJ_BOOTH RETURN "NC_BOUNCER_DJ_BOOTH" CASE NC_BOUNCER_TOILET RETURN "NC_BOUNCER_TOILET" CASE NC_BOUNCER_VIP RETURN "NC_BOUNCER_VIP" CASE NC_BOUNCER_DANCEFLOOR RETURN "NC_BOUNCER_DANCEFLOOR" CASE NC_DEFAULT_BARMAN_DOWNSTAIRS RETURN "NC_DEFAULT_BARMAN_DOWNSTAIRS" CASE NC_UPGRADE_BARMAN_DOWNSTAIRS RETURN "NC_UPGRADE_BARMAN_DOWNSTAIRS" CASE NC_UPGRADE_BARMAN_UPSTAIRS RETURN "NC_UPGRADE_BARMAN_UPSTAIRS" CASE NC_HEAD_BARMAN_UPSTAIRS RETURN "NC_HEAD_BARMAN_UPSTAIRS" CASE NC_DJ RETURN "NC_DJ" CASE NC_HIPSTER_M RETURN "NC_HIPSTER_M" CASE NC_HIPSTER_F RETURN "NC_HIPSTER_F" CASE NC_WORKER RETURN "NC_WORKER" CASE NC_LAZLOW RETURN "NC_LAZLOW" CASE NC_TRACEY RETURN "NC_TRACEY" CASE NC_JACK_H RETURN "NC_JACK_H" CASE NC_TONY RETURN "NC_TONY" CASE NC_TEST_GIB RETURN "NC_TEST_GIB" CASE NC_JUSTIN RETURN "NC_JUSTIN" CASE NC_BUSINESS_CLOAKROOM RETURN "NC_BUSINESS_CLOAKROOM" CASE NC_PODIUM_STYLE_1_M_1 RETURN "NC_PODIUM_STYLE_1_M_1" CASE NC_PODIUM_STYLE_1_M_2 RETURN "NC_PODIUM_STYLE_1_M_2" CASE NC_PODIUM_STYLE_2_M_1 RETURN "NC_PODIUM_STYLE_2_M_1" CASE NC_PODIUM_STYLE_2_M_2 RETURN "NC_PODIUM_STYLE_2_M_2" CASE NC_PODIUM_STYLE_3_M_1 RETURN "NC_PODIUM_STYLE_3_M_1" CASE NC_PODIUM_STYLE_3_M_2 RETURN "NC_PODIUM_STYLE_3_M_2" CASE NC_PODIUM_STYLE_1_F_1 RETURN "NC_PODIUM_STYLE_1_F_1" CASE NC_PODIUM_STYLE_1_F_2 RETURN "NC_PODIUM_STYLE_1_F_2" CASE NC_PODIUM_STYLE_2_F_1 RETURN "NC_PODIUM_STYLE_2_F_1" CASE NC_PODIUM_STYLE_2_F_2 RETURN "NC_PODIUM_STYLE_2_F_2" CASE NC_PODIUM_STYLE_3_F_1 RETURN "NC_PODIUM_STYLE_3_F_1" CASE NC_PODIUM_STYLE_3_F_2 RETURN "NC_PODIUM_STYLE_3_F_2" CASE NC_WAREHOUSE_TECH RETURN "NC_WAREHOUSE_TECH" CASE NC_BUSBOY_TOILET RETURN "NC_BUSBOY_TOILET" CASE NC_SOL_FOTIOS RETURN "NC_SOL_FOTIOS" CASE NC_SOL_JAKOB RETURN "NC_SOL_JAKOB" CASE NC_SOL_MANAGER RETURN "NC_SOL_MANAGER" CASE NC_SOL_MIKE RETURN "NC_SOL_MIKE" CASE NC_SOL_ROBT RETURN "NC_SOL_ROBT" CASE NC_SOL_GIRL RETURN "NC_SOL_GIRL" CASE NC_BLAM_RUPERT RETURN "NC_BLAM_RUPERT" CASE NC_BLAM_RYANH RETURN "NC_BLAM_RYANH" CASE NC_BLAM_RYANS RETURN "NC_BLAM_RYANS" CASE NC_DIX_MANAGER RETURN "NC_DIX_MANAGER" CASE NC_DIX_GUY RETURN "NC_DIX_GUY" CASE NC_DIX_GIRL RETURN "NC_DIX_GIRL" CASE NC_TAL_AURELIA RETURN "NC_TAL_AURELIA" CASE NC_TAL_IGNAZIO RETURN "NC_TAL_IGNAZIO" CASE NC_TAL_GUY RETURN "NC_TAL_GUY" CASE NC_TAL_GIRL RETURN "NC_TAL_GIRL" CASE NC_BM_GIRL RETURN "NC_BM_GIRL" CASE NC_BUNKER_SEAT RETURN "NC_BUNKER_SEAT" CASE NC_CELEB_POPPY_MITCHELL RETURN "NC_CELEB_POPPY_MITCHELL" CASE NC_CELEB_JIMMY_BOSTON RETURN "NC_CELEB_JIMMY_BOSTON" CASE NC_CELEB_KERRY_MCINTOSH RETURN "NC_CELEB_KERRY_MCINTOSH" CASE NC_CELEB_MIRANDA_COWAN RETURN "NC_CELEB_MIRANDA_COWAN" CASE NC_CELEB_MIRANDA_ASSISTANT RETURN "NC_CELEB_MIRANDA_ASSISTANT" CASE NC_CELEB_TYLER_DIXON RETURN "NC_CELEB_TYLER_DIXON" CASE NC_CELEB_TYLER_ASSISTANT RETURN "NC_CELEB_TYLER_ASSISTANT" CASE NC_CELEB_LACEY_JONAS RETURN "NC_CELEB_LACEY_JONAS" CASE NC_GUIDO_1 RETURN "NC_GUIDO_1" CASE NC_DJ_2 RETURN "NC_DJ_2" CASE MAX_NUMBER_OF_NC_PED_TYPES RETURN "MAX_NUMBER_OF_NC_PED_TYPES" ENDSWITCH RETURN " " ENDFUNC #ENDIF FUNC BOOL IS_NC_PED_TYPE_FEMALE(NC_PED_TYPES ncPedType) SWITCH ncPedType CASE NC_HIPSTER_F CASE NC_TRACEY CASE NC_BUSINESS_CLOAKROOM CASE NC_PODIUM_STYLE_1_F_1 CASE NC_PODIUM_STYLE_1_F_2 CASE NC_PODIUM_STYLE_2_F_1 CASE NC_PODIUM_STYLE_2_F_2 CASE NC_PODIUM_STYLE_3_F_1 CASE NC_PODIUM_STYLE_3_F_2 CASE NC_BUNKER_SEAT CASE NC_CELEB_POPPY_MITCHELL CASE NC_CELEB_MIRANDA_COWAN //CASE NC_CELEB_MIRANDA_ASSISTANT going to pretend she is is he, for url:bugstar:5107761 - Ignorable Assert - [script] Error: Assert: SCRIPT: Script Name = nightclubpeds : Program Counter = 5783 NC_STAGE_CREATE_PEDS: Sex does not match activity! CASE NC_CELEB_LACEY_JONAS CASE NC_CELEB_KERRY_MCINTOSH CASE NC_BM_GIRL CASE NC_TAL_GIRL CASE NC_SOL_GIRL CASE NC_DIX_GIRL RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC INT GetCurrentPedsFromLayout() SWITCH g_iNightClubPedsMainAreaLayout CASE 0 RETURN 110 CASE 1 RETURN 125 CASE 2 RETURN 50 CASE 3 RETURN 70 CASE 4 RETURN 90 ENDSWITCH RETURN 0 ENDFUNC FUNC BOOL IS_NC_PED_TYPE_CUSTOMER_FOR_CULL(NC_PED_TYPES ncPedType) SWITCH ncPedType CASE NC_HIPSTER_M CASE NC_HIPSTER_F CASE NC_BUNKER_SEAT RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL IS_NC_PED_ENTOURAGE(NC_PED_TYPES ncPedType) IF (g_bTurnOnNCDJEntourage) SWITCH ncPedType CASE NC_SOL_FOTIOS CASE NC_SOL_JAKOB CASE NC_SOL_MANAGER CASE NC_SOL_MIKE CASE NC_SOL_ROBT CASE NC_SOL_GIRL CASE NC_BLAM_RUPERT CASE NC_BLAM_RYANH CASE NC_BLAM_RYANS CASE NC_DIX_MANAGER CASE NC_DIX_GUY CASE NC_DIX_GIRL CASE NC_TAL_AURELIA CASE NC_TAL_IGNAZIO CASE NC_TAL_GUY CASE NC_TAL_GIRL CASE NC_BM_GIRL RETURN TRUE ENDSWITCH ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_NC_PED_TYPE_CUSTOMER(NC_PED_TYPES ncPedType) SWITCH ncPedType CASE NC_HIPSTER_M CASE NC_HIPSTER_F CASE NC_SOL_FOTIOS CASE NC_SOL_JAKOB CASE NC_SOL_MANAGER CASE NC_SOL_MIKE CASE NC_SOL_ROBT CASE NC_SOL_GIRL CASE NC_BLAM_RUPERT CASE NC_BLAM_RYANH CASE NC_BLAM_RYANS CASE NC_DIX_MANAGER CASE NC_DIX_GUY CASE NC_DIX_GIRL CASE NC_TAL_AURELIA CASE NC_TAL_IGNAZIO CASE NC_TAL_GUY CASE NC_TAL_GIRL CASE NC_BM_GIRL CASE NC_BUNKER_SEAT CASE NC_CELEB_POPPY_MITCHELL CASE NC_CELEB_JIMMY_BOSTON CASE NC_CELEB_KERRY_MCINTOSH CASE NC_CELEB_MIRANDA_COWAN CASE NC_CELEB_MIRANDA_ASSISTANT CASE NC_CELEB_TYLER_DIXON CASE NC_CELEB_TYLER_ASSISTANT CASE NC_CELEB_LACEY_JONAS CASE NC_GUIDO_1 CASE NC_TRACEY CASE NC_JACK_H CASE NC_JUSTIN RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC //FUNC BOOL IsNCPedIDAnActiveCelebOrCelebFriend(INT &iNCPedID) // INT iCeleb // REPEAT eNIGHTCLUB_CELEB_MAX iCeleb // IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), INT_TO_ENUM(NIGHTCLUB_CELEBRITY_ENUM, iCeleb)) // SWITCH INT_TO_ENUM(NIGHTCLUB_CELEBRITY_ENUM, iCeleb) // CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON // SWITCH iNCPedID // CASE 70 RETURN TRUE // ENDSWITCH // BREAK // CASE eNIGHTCLUB_CELEB_LACEY_JONAS // SWITCH iNCPedID // CASE 117 RETURN TRUE // ENDSWITCH // BREAK // CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH // SWITCH iNCPedID // CASE 71 RETURN TRUE // CASE 70 RETURN TRUE // friend // ENDSWITCH // BREAK // CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL // SWITCH iNCPedID // CASE 108 RETURN TRUE // CASE 109 RETURN TRUE // friend // CASE 107 RETURN TRUE // friend // ENDSWITCH // BREAK // CASE eNIGHTCLUB_CELEB_TYLER_DIXON // SWITCH iNCPedID // CASE 107 RETURN TRUE // CASE 109 RETURN TRUE // ENDSWITCH // BREAK // CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN // SWITCH iNCPedID // CASE 111 RETURN TRUE // CASE 112 RETURN TRUE // ENDSWITCH // BREAK // ENDSWITCH // ENDIF // ENDREPEAT // RETURN FALSE //ENDFUNC PROC MakeNCPedIDInRangeForMainLayout(INT &iNCPedID) IF (iNCPedID >= GetCurrentPedsFromLayout()) //IF NOT IsNCPedIDAnActiveCelebOrCelebFriend(iNCPedID) // Dont need this check as can only launch vip jobs beyond popularity 80 iNCPedID = -1 //ENDIF ENDIF ENDPROC FUNC NC_PED_TYPES GetPedNcEnumTypeBase(INT iNCPedID) NC_PED_TYPES eReturn = NC_NULL_PED MakeNCPedIDInRangeForMainLayout(iNCPedID) SWITCH g_iNightClubPedsMainAreaLayout_Variation CASE 0 SWITCH iNCPedID CASE 1 RETURN NC_HIPSTER_F CASE 2 RETURN NC_HIPSTER_M CASE 3 RETURN NC_HIPSTER_F CASE 4 RETURN NC_HIPSTER_F CASE 5 RETURN NC_HIPSTER_F CASE 6 RETURN NC_HIPSTER_F CASE 8 RETURN NC_HIPSTER_F CASE 10 RETURN NC_HIPSTER_F CASE 11 RETURN NC_HIPSTER_F CASE 12 RETURN NC_HIPSTER_F CASE 13 RETURN NC_HIPSTER_F CASE 14 RETURN NC_HIPSTER_F CASE 15 RETURN NC_HIPSTER_M CASE 16 RETURN NC_HIPSTER_F CASE 17 RETURN NC_HIPSTER_F CASE 20 RETURN NC_HIPSTER_M CASE 22 RETURN NC_HIPSTER_F CASE 25 RETURN NC_HIPSTER_M CASE 26 RETURN NC_HIPSTER_M CASE 27 RETURN NC_HIPSTER_M CASE 28 RETURN NC_HIPSTER_M CASE 29 RETURN NC_HIPSTER_F CASE 30 RETURN NC_HIPSTER_M CASE 32 RETURN NC_HIPSTER_F CASE 33 RETURN NC_HIPSTER_M CASE 36 RETURN NC_HIPSTER_M CASE 37 RETURN NC_HIPSTER_M CASE 38 RETURN NC_HIPSTER_M CASE 43 RETURN NC_TONY CASE 44 RETURN NC_LAZLOW CASE 47 RETURN NC_BOUNCER_DJ_BOOTH CASE 50 RETURN NC_HIPSTER_M CASE 51 RETURN NC_HIPSTER_M CASE 52 RETURN NC_HIPSTER_M CASE 53 RETURN NC_HIPSTER_M CASE 54 RETURN NC_HIPSTER_M CASE 55 RETURN NC_HIPSTER_F CASE 56 RETURN NC_HIPSTER_F CASE 57 RETURN NC_HIPSTER_M CASE 58 RETURN NC_HIPSTER_M CASE 59 RETURN NC_HIPSTER_F CASE 60 RETURN NC_HIPSTER_F CASE 61 RETURN NC_HIPSTER_M CASE 62 RETURN NC_HIPSTER_F CASE 63 RETURN NC_HIPSTER_F CASE 64 RETURN NC_HIPSTER_M CASE 65 RETURN NC_HIPSTER_M CASE 66 RETURN NC_HIPSTER_F CASE 67 RETURN NC_HIPSTER_F CASE 68 RETURN NC_HIPSTER_F CASE 69 RETURN NC_HIPSTER_M CASE 70 RETURN NC_HIPSTER_M CASE 71 RETURN NC_HIPSTER_F CASE 72 RETURN NC_HIPSTER_F CASE 73 RETURN NC_HIPSTER_F CASE 74 RETURN NC_HIPSTER_F CASE 75 RETURN NC_HIPSTER_M CASE 76 RETURN NC_HIPSTER_M CASE 77 RETURN NC_HIPSTER_M CASE 78 RETURN NC_HIPSTER_F CASE 79 RETURN NC_HIPSTER_F CASE 80 RETURN NC_HIPSTER_F CASE 81 RETURN NC_HIPSTER_M CASE 82 RETURN NC_HIPSTER_F CASE 83 RETURN NC_HIPSTER_M CASE 84 RETURN NC_HIPSTER_F CASE 85 RETURN NC_HIPSTER_F CASE 86 RETURN NC_HIPSTER_M CASE 87 RETURN NC_HIPSTER_F CASE 88 RETURN NC_HIPSTER_M CASE 89 RETURN NC_HIPSTER_M CASE 90 RETURN NC_HIPSTER_F CASE 91 RETURN NC_HIPSTER_F CASE 92 RETURN NC_HIPSTER_M CASE 93 RETURN NC_HIPSTER_F CASE 94 RETURN NC_HIPSTER_F CASE 95 RETURN NC_HIPSTER_M CASE 96 RETURN NC_HIPSTER_M CASE 97 RETURN NC_HIPSTER_F CASE 98 RETURN NC_HIPSTER_M CASE 99 RETURN NC_HIPSTER_F CASE 101 RETURN NC_HIPSTER_F CASE 102 RETURN NC_HIPSTER_M CASE 103 RETURN NC_HIPSTER_F CASE 104 RETURN NC_HIPSTER_F CASE 105 RETURN NC_HIPSTER_M CASE 106 RETURN NC_HIPSTER_M CASE 107 RETURN NC_HIPSTER_M CASE 108 RETURN NC_HIPSTER_F CASE 109 RETURN NC_HIPSTER_M CASE 110 RETURN NC_HIPSTER_F CASE 111 RETURN NC_HIPSTER_F CASE 112 RETURN NC_HIPSTER_M CASE 113 RETURN NC_HIPSTER_M CASE 114 RETURN NC_HIPSTER_F CASE 115 RETURN NC_HIPSTER_M CASE 116 RETURN NC_HIPSTER_F CASE 117 RETURN NC_HIPSTER_F CASE 118 RETURN NC_HIPSTER_M CASE 121 RETURN NC_HIPSTER_M CASE 122 RETURN NC_HIPSTER_M CASE 123 RETURN NC_HIPSTER_M CASE 124 RETURN NC_HIPSTER_F ENDSWITCH BREAK CASE 1 SWITCH iNCPedID CASE 1 eReturn = NC_HIPSTER_M BREAK CASE 2 eReturn = NC_HIPSTER_M BREAK CASE 3 eReturn = NC_HIPSTER_F BREAK CASE 4 eReturn = NC_HIPSTER_F BREAK CASE 5 eReturn = NC_HIPSTER_F BREAK CASE 6 eReturn = NC_HIPSTER_F BREAK CASE 8 eReturn = NC_HIPSTER_F BREAK CASE 10 eReturn = NC_HIPSTER_F BREAK CASE 11 eReturn = NC_HIPSTER_F BREAK CASE 12 eReturn = NC_HIPSTER_F BREAK CASE 13 eReturn = NC_HIPSTER_M BREAK CASE 14 eReturn = NC_HIPSTER_F BREAK CASE 15 eReturn = NC_HIPSTER_M BREAK CASE 16 eReturn = NC_HIPSTER_F BREAK CASE 17 eReturn = NC_HIPSTER_M BREAK CASE 20 eReturn = NC_HIPSTER_M BREAK CASE 22 eReturn = NC_HIPSTER_F BREAK CASE 25 eReturn = NC_HIPSTER_M BREAK CASE 26 eReturn = NC_HIPSTER_F BREAK CASE 27 eReturn = NC_HIPSTER_M BREAK CASE 28 eReturn = NC_HIPSTER_M BREAK CASE 29 eReturn = NC_HIPSTER_M BREAK CASE 30 eReturn = NC_HIPSTER_M BREAK CASE 32 eReturn = NC_HIPSTER_F BREAK CASE 33 eReturn = NC_HIPSTER_M BREAK CASE 36 eReturn = NC_HIPSTER_M BREAK CASE 37 eReturn = NC_HIPSTER_M BREAK CASE 38 eReturn = NC_HIPSTER_M BREAK CASE 43 eReturn = NC_TONY BREAK CASE 44 eReturn = NC_LAZLOW BREAK CASE 47 eReturn = NC_BOUNCER_DJ_BOOTH BREAK CASE 50 eReturn = NC_HIPSTER_M BREAK CASE 51 eReturn = NC_HIPSTER_M BREAK CASE 52 eReturn = NC_HIPSTER_M BREAK CASE 53 eReturn = NC_HIPSTER_F BREAK CASE 54 eReturn = NC_HIPSTER_M BREAK CASE 55 eReturn = NC_HIPSTER_F BREAK CASE 56 eReturn = NC_HIPSTER_F BREAK CASE 57 eReturn = NC_HIPSTER_F BREAK CASE 58 eReturn = NC_HIPSTER_F BREAK CASE 59 eReturn = NC_HIPSTER_F BREAK CASE 60 eReturn = NC_HIPSTER_F BREAK CASE 61 eReturn = NC_HIPSTER_M BREAK CASE 62 eReturn = NC_HIPSTER_F BREAK CASE 63 eReturn = NC_HIPSTER_F BREAK CASE 64 eReturn = NC_HIPSTER_M BREAK CASE 65 eReturn = NC_HIPSTER_M BREAK CASE 66 eReturn = NC_HIPSTER_F BREAK CASE 67 eReturn = NC_HIPSTER_F BREAK CASE 68 eReturn = NC_HIPSTER_F BREAK CASE 69 eReturn = NC_HIPSTER_M BREAK CASE 70 eReturn = NC_HIPSTER_M BREAK CASE 71 eReturn = NC_HIPSTER_F BREAK CASE 72 eReturn = NC_HIPSTER_F BREAK CASE 73 eReturn = NC_HIPSTER_F BREAK CASE 74 eReturn = NC_HIPSTER_F BREAK CASE 75 eReturn = NC_HIPSTER_M BREAK CASE 76 eReturn = NC_HIPSTER_F BREAK CASE 77 eReturn = NC_HIPSTER_F BREAK CASE 78 eReturn = NC_HIPSTER_M BREAK CASE 79 eReturn = NC_HIPSTER_F BREAK CASE 80 eReturn = NC_HIPSTER_F BREAK CASE 81 eReturn = NC_HIPSTER_M BREAK CASE 82 eReturn = NC_HIPSTER_M BREAK CASE 83 eReturn = NC_HIPSTER_M BREAK CASE 84 eReturn = NC_HIPSTER_F BREAK CASE 85 eReturn = NC_HIPSTER_M BREAK CASE 86 eReturn = NC_HIPSTER_F BREAK CASE 87 eReturn = NC_HIPSTER_M BREAK CASE 88 eReturn = NC_HIPSTER_M BREAK CASE 89 eReturn = NC_HIPSTER_M BREAK CASE 90 eReturn = NC_HIPSTER_F BREAK CASE 91 eReturn = NC_HIPSTER_M BREAK CASE 92 eReturn = NC_HIPSTER_F BREAK CASE 93 eReturn = NC_HIPSTER_M BREAK CASE 94 eReturn = NC_HIPSTER_F BREAK CASE 95 eReturn = NC_HIPSTER_M BREAK CASE 96 eReturn = NC_HIPSTER_M BREAK CASE 97 eReturn = NC_HIPSTER_F BREAK CASE 98 eReturn = NC_HIPSTER_M BREAK CASE 99 eReturn = NC_HIPSTER_F BREAK CASE 101 eReturn = NC_HIPSTER_F BREAK CASE 102 eReturn = NC_HIPSTER_M BREAK CASE 103 eReturn = NC_HIPSTER_F BREAK CASE 104 eReturn = NC_HIPSTER_F BREAK CASE 105 eReturn = NC_HIPSTER_M BREAK CASE 106 eReturn = NC_HIPSTER_M BREAK CASE 107 eReturn = NC_HIPSTER_M BREAK CASE 108 eReturn = NC_HIPSTER_F BREAK CASE 109 eReturn = NC_HIPSTER_M BREAK CASE 110 eReturn = NC_HIPSTER_M BREAK CASE 111 eReturn = NC_HIPSTER_F BREAK CASE 112 eReturn = NC_HIPSTER_M BREAK CASE 113 eReturn = NC_HIPSTER_M BREAK CASE 114 eReturn = NC_HIPSTER_F BREAK CASE 115 eReturn = NC_HIPSTER_M BREAK CASE 116 eReturn = NC_HIPSTER_F BREAK CASE 117 eReturn = NC_HIPSTER_F BREAK CASE 118 eReturn = NC_HIPSTER_F BREAK CASE 121 eReturn = NC_HIPSTER_M BREAK CASE 122 eReturn = NC_HIPSTER_M BREAK CASE 123 eReturn = NC_HIPSTER_M BREAK CASE 124 eReturn = NC_HIPSTER_F BREAK ENDSWITCH BREAK ENDSWITCH RETURN eReturn ENDFUNC FUNC BOOL IsNcPedTypeACeleb(NC_PED_TYPES NcPedType) SWITCH NcPedType CASE NC_CELEB_POPPY_MITCHELL CASE NC_CELEB_JIMMY_BOSTON CASE NC_CELEB_KERRY_MCINTOSH CASE NC_CELEB_MIRANDA_COWAN CASE NC_CELEB_MIRANDA_ASSISTANT CASE NC_CELEB_TYLER_DIXON CASE NC_CELEB_TYLER_ASSISTANT CASE NC_CELEB_LACEY_JONAS RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL IsLazlowGoingToDoAnnouncement() IF NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) > -1 NIGHTCLUB_CELEBRITY_ENUM eCeleb INT iIndex REPEAT eNIGHTCLUB_CELEB_MAX eCeleb IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eCeleb) SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK ENDSWITCH IF NOT IS_BIT_SET(g_iBSNightclubSpeech, iIndex ) RETURN TRUE ENDIF ELSE ENDIF ENDREPEAT ENDIF IF g_iNightClubLazlowPosition = 8 RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC NC_PED_TYPES GET_NIGHTCLUB_PED_TYPE(INT iNCPedID, BOOL bIgnoreEditor=FALSE) IF NOT (bIgnoreEditor) #IF IS_DEBUG_BUILD IF (g_bNightClubPedEditorActive) AND (iNCPedID > -1) AND (g_iNightClubPedType[iNCPedID] > -1) RETURN INT_TO_ENUM(NC_PED_TYPES, g_iNightClubPedType[iNCPedID]) ENDIF #ENDIF ENDIF NC_PED_TYPES eReturn = GetPedNcEnumTypeBase(iNCPedID) // hallway SWITCH g_iNightClubPedsHallwayLayout CASE 0 SWITCH iNCPedID // HallwayPeds Layout 1 CASE 146 eReturn = NC_BUSINESS_CLOAKROOM BREAK CASE 147 eReturn = NC_BOUNCER_HEAD BREAK CASE 148 eReturn = NC_HIPSTER_F BREAK CASE 149 eReturn = NC_HIPSTER_M BREAK CASE 150 eReturn = NC_HIPSTER_F BREAK CASE 151 eReturn = NC_HIPSTER_F BREAK CASE 152 eReturn = NC_HIPSTER_M BREAK CASE 153 eReturn = NC_HIPSTER_M BREAK CASE 154 eReturn = NC_HIPSTER_F BREAK CASE 155 eReturn = NC_HIPSTER_F BREAK CASE 156 eReturn = NC_HIPSTER_F BREAK ENDSWITCH BREAK CASE 1 SWITCH iNCPedID // HallwayPeds Layout2 CASE 146 eReturn = NC_BUSINESS_CLOAKROOM BREAK CASE 147 eReturn = NC_BOUNCER_HEAD BREAK CASE 148 eReturn = NC_HIPSTER_M BREAK CASE 149 eReturn = NC_HIPSTER_M BREAK CASE 150 eReturn = NC_HIPSTER_F BREAK CASE 151 eReturn = NC_HIPSTER_F BREAK CASE 152 eReturn = NC_HIPSTER_F BREAK CASE 153 eReturn = NC_HIPSTER_F BREAK CASE 154 eReturn = NC_HIPSTER_M BREAK CASE 155 eReturn = NC_HIPSTER_M BREAK ENDSWITCH BREAK CASE 2 SWITCH iNCPedID // HallwayPeds Layout3 CASE 146 eReturn = NC_BUSINESS_CLOAKROOM BREAK CASE 147 eReturn = NC_BOUNCER_HEAD BREAK CASE 148 eReturn = NC_HIPSTER_F BREAK CASE 149 eReturn = NC_HIPSTER_M BREAK CASE 150 eReturn = NC_HIPSTER_M BREAK CASE 151 eReturn = NC_HIPSTER_M BREAK CASE 152 eReturn = NC_HIPSTER_M BREAK CASE 153 eReturn = NC_HIPSTER_F BREAK CASE 154 eReturn = NC_HIPSTER_M BREAK ENDSWITCH BREAK CASE 3 SWITCH iNCPedID // HallwayPeds Layout4 < 50% popularity CASE 146 eReturn = NC_BUSINESS_CLOAKROOM BREAK CASE 147 eReturn = NC_BOUNCER_HEAD BREAK CASE 148 eReturn = NC_NULL_PED BREAK CASE 149 eReturn = NC_NULL_PED BREAK CASE 150 eReturn = NC_NULL_PED BREAK CASE 151 eReturn = NC_NULL_PED BREAK CASE 152 eReturn = NC_NULL_PED BREAK CASE 153 eReturn = NC_NULL_PED BREAK CASE 154 eReturn = NC_NULL_PED BREAK ENDSWITCH BREAK CASE 4 SWITCH iNCPedID // HallwayPeds Layout2 CASE 146 eReturn = NC_NULL_PED BREAK CASE 147 eReturn = NC_NULL_PED BREAK CASE 148 eReturn = NC_NULL_PED BREAK CASE 149 eReturn = NC_NULL_PED BREAK CASE 150 eReturn = NC_NULL_PED BREAK CASE 151 eReturn = NC_NULL_PED BREAK CASE 152 eReturn = NC_NULL_PED BREAK CASE 153 eReturn = NC_NULL_PED BREAK CASE 154 eReturn = NC_NULL_PED BREAK CASE 155 eReturn = NC_NULL_PED BREAK ENDSWITCH BREAK ENDSWITCH // toilet SWITCH g_iNightClubPedsToiletLayout CASE 0 SWITCH iNCPedID // HallwayPeds Layout 1 CASE 157 eReturn = NC_BUSBOY_TOILET BREAK CASE 158 eReturn = NC_HIPSTER_M BREAK CASE 159 eReturn = NC_HIPSTER_M BREAK CASE 160 eReturn = NC_HIPSTER_F BREAK CASE 161 eReturn = NC_BUNKER_SEAT BREAK ENDSWITCH BREAK CASE 1 SWITCH iNCPedID // HallwayPeds Layout2 CASE 157 eReturn = NC_BUSBOY_TOILET BREAK CASE 158 eReturn = NC_HIPSTER_F BREAK CASE 159 eReturn = NC_HIPSTER_M BREAK CASE 160 eReturn = NC_HIPSTER_M BREAK CASE 161 eReturn = NC_BUNKER_SEAT BREAK ENDSWITCH BREAK CASE 2 SWITCH iNCPedID // HallwayPeds Layout3 CASE 157 eReturn = NC_BUSBOY_TOILET BREAK CASE 158 eReturn = NC_HIPSTER_M BREAK CASE 159 eReturn = NC_HIPSTER_M BREAK CASE 160 eReturn = NC_HIPSTER_F BREAK CASE 161 eReturn = NC_HIPSTER_M BREAK ENDSWITCH BREAK CASE 3 SWITCH iNCPedID // HallwayPeds Layout3 CASE 157 eReturn = NC_BUSBOY_TOILET BREAK CASE 158 eReturn = NC_NULL_PED BREAK CASE 159 eReturn = NC_NULL_PED BREAK CASE 160 eReturn = NC_NULL_PED BREAK CASE 161 eReturn = NC_NULL_PED BREAK ENDSWITCH BREAK ENDSWITCH // special cases SWITCH iNCPedID CASE 0 IF (g_iNightClubSetupState != NSS_FULLY_SETUP) eReturn = NC_WORKER ELIF g_bTurnOnNCCustomerPeds eReturn = NC_HIPSTER_F ENDIF BREAK CASE 9 IF g_bTurnOnNCStaffPeds eReturn = NC_DEFAULT_BARMAN_DOWNSTAIRS ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 18 IF g_bTurnOnNCPodiumDancers IF g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_1 IF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE eReturn = NC_PODIUM_STYLE_1_M_1 ELSE eReturn = NC_PODIUM_STYLE_1_F_1 ENDIF ELIF g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_2 IF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE eReturn = NC_PODIUM_STYLE_2_M_1 ELSE eReturn = NC_PODIUM_STYLE_2_F_1 ENDIF ELIF g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_3 IF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE eReturn = NC_PODIUM_STYLE_3_M_1 ELSE eReturn = NC_PODIUM_STYLE_3_F_1 ENDIF ENDIF ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 19 IF g_bTurnOnNCPodiumDancers AND NOT (g_iNightClubLazlowPosition = 3 AND NOT IsLazlowGoingToDoAnnouncement()) // lazlow is using the podium IF g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_1 IF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE eReturn = NC_PODIUM_STYLE_1_M_2 ELIF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_FEMALE eReturn = NC_PODIUM_STYLE_1_F_2 ELIF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MIX eReturn = NC_PODIUM_STYLE_1_M_2 ENDIF ELIF g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_2 IF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE eReturn = NC_PODIUM_STYLE_2_M_2 ELIF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_FEMALE eReturn = NC_PODIUM_STYLE_2_F_2 ELIF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MIX eReturn = NC_PODIUM_STYLE_2_M_2 ENDIF ELIF g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_3 IF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE eReturn = NC_PODIUM_STYLE_3_M_2 ELIF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_FEMALE eReturn = NC_PODIUM_STYLE_3_F_2 ELIF g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MIX eReturn = NC_PODIUM_STYLE_3_M_2 ENDIF ENDIF ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 35 IF g_bTurnOnNCExtraDJ eReturn = NC_DJ ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) OR (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eReturn = NC_BOUNCER_HEAD BREAK ELSE eReturn = NC_HIPSTER_F BREAK ENDIF BREAK CASE 40 IF g_bTurnOnNCStaffPeds eReturn = NC_BOUNCER_TOILET ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) OR (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eReturn = NC_HEAD_BARMAN_UPSTAIRS ELSE IF g_bTurnOnNCStaffPeds eReturn = NC_HEAD_BARMAN_UPSTAIRS ELSE eReturn = NC_NULL_PED ENDIF ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) // OR (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eReturn = NC_WAREHOUSE_TECH ELSE IF g_bTurnOnNCStaffPeds eReturn = NC_BOUNCER_HALLWAY ELSE eReturn = NC_NULL_PED ENDIF ENDIF BREAK CASE 45 IF g_bTurnOnNCExtraBouncers eReturn = NC_BOUNCER_VIP ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 46 IF g_bTurnOnNCExtraBouncers eReturn = NC_BOUNCER_DANCEFLOOR ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 48 IF g_bTurnOnNCExtraBartenders eReturn = NC_UPGRADE_BARMAN_DOWNSTAIRS ELSE eReturn = NC_NULL_PED ENDIF BREAK CASE 49 IF g_bTurnOnNCExtraBartenders eReturn = NC_UPGRADE_BARMAN_UPSTAIRS ELSE eReturn = NC_NULL_PED ENDIF BREAK ENDSWITCH // celebs SWITCH iNCPedID CASE 70 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_JIMMY_BOSTON) eReturn = NC_CELEB_JIMMY_BOSTON ENDIF BREAK CASE 117 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_LACEY_JONAS) eReturn = NC_CELEB_LACEY_JONAS ENDIF BREAK CASE 71 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_KERRY_MCINTOSH) eReturn = NC_CELEB_KERRY_MCINTOSH ENDIF BREAK CASE 108 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_POPPY_MITCHELL) eReturn = NC_CELEB_POPPY_MITCHELL ENDIF BREAK CASE 107 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_TYLER_DIXON) eReturn = NC_CELEB_TYLER_DIXON ENDIF BREAK CASE 109 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_TYLER_DIXON) eReturn = NC_CELEB_TYLER_ASSISTANT ENDIF BREAK CASE 111 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_MIRANDA_COWAN) eReturn = NC_CELEB_MIRANDA_COWAN ENDIF BREAK CASE 112 IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eNIGHTCLUB_CELEB_MIRANDA_COWAN) eReturn = NC_CELEB_MIRANDA_ASSISTANT ENDIF BREAK ENDSWITCH SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH iNCPedID CASE 34 eReturn = NC_DJ BREAK ENDSWITCH BREAK CASE DJ_DIXON SWITCH iNCPedID CASE 34 eReturn = NC_DJ BREAK ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH iNCPedID CASE 34 eReturn = NC_DJ BREAK CASE 119 eReturn = NC_DJ_2 BREAK ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH iNCPedID CASE 34 eReturn = NC_DJ BREAK ENDSWITCH BREAK ENDSWITCH // entourage IF g_bTurnOnNCDJEntourage SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH iNCPedID CASE 7 eReturn = NC_SOL_JAKOB BREAK CASE 21 eReturn = NC_SOL_GIRL BREAK CASE 23 eReturn = NC_SOL_MIKE BREAK CASE 24 eReturn = NC_SOL_ROBT BREAK CASE 31 eReturn = NC_SOL_MANAGER BREAK CASE 35 eReturn = NC_SOL_FOTIOS BREAK CASE 100 eReturn = NC_SOL_GIRL BREAK CASE 119 eReturn = NC_SOL_GIRL BREAK CASE 120 eReturn = NC_SOL_GIRL BREAK ENDSWITCH BREAK CASE DJ_DIXON SWITCH iNCPedID CASE 7 eReturn = NC_HIPSTER_F BREAK CASE 21 eReturn = NC_HIPSTER_M BREAK CASE 23 eReturn = NC_HIPSTER_F BREAK CASE 24 eReturn = NC_HIPSTER_F BREAK CASE 31 eReturn = NC_HIPSTER_M BREAK CASE 35 eReturn = NC_HIPSTER_F BREAK CASE 100 eReturn = NC_DIX_MANAGER BREAK CASE 119 eReturn = NC_DIX_GUY BREAK CASE 120 eReturn = NC_DIX_GIRL BREAK ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH iNCPedID CASE 7 eReturn = NC_TAL_GUY BREAK CASE 21 eReturn = NC_HIPSTER_M BREAK CASE 23 eReturn = NC_HIPSTER_F BREAK CASE 24 eReturn = NC_HIPSTER_M BREAK CASE 31 eReturn = NC_TAL_IGNAZIO BREAK CASE 35 eReturn = NC_TAL_GIRL BREAK CASE 100 eReturn = NC_TAL_GIRL BREAK //CASE 119 eReturn = NC_HIPSTER_F BREAK CASE 120 eReturn = NC_TAL_AURELIA BREAK ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH iNCPedID CASE 7 eReturn = NC_BLAM_RYANH BREAK CASE 21 eReturn = NC_HIPSTER_M BREAK CASE 23 eReturn = NC_HIPSTER_F BREAK CASE 24 eReturn = NC_HIPSTER_F BREAK CASE 31 eReturn = NC_BLAM_RYANS BREAK CASE 35 eReturn = NC_BM_GIRL BREAK CASE 100 eReturn = NC_BM_GIRL BREAK CASE 119 eReturn = NC_HIPSTER_M BREAK CASE 120 eReturn = NC_BLAM_RUPERT BREAK ENDSWITCH BREAK ENDSWITCH ENDIF // if staff are switched off, the following should be set to null. IF (eReturn = NC_BOUNCER_HALLWAY OR eReturn = NC_BUSINESS_CLOAKROOM OR eReturn = NC_DEFAULT_BARMAN_DOWNSTAIRS OR eReturn = NC_BOUNCER_VIP OR eReturn = NC_BOUNCER_DANCEFLOOR OR eReturn = NC_BOUNCER_TOILET OR eReturn = NC_BOUNCER_DJ_BOOTH OR eReturn = NC_UPGRADE_BARMAN_DOWNSTAIRS OR eReturn = NC_UPGRADE_BARMAN_UPSTAIRS) AND g_bTurnOnNCStaffPeds = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NIGHTCLUB_PED_TYPE: iNCPedID: ", iNCPedID, ",eReturn = ", eReturn, ", but g_bTurnOnNCStaffPeds = FALSE, so returning NC_NULL_PED") eReturn = NC_NULL_PED ENDIF IF (eReturn = NC_HIPSTER_M OR eReturn = NC_HIPSTER_F OR eReturn = NC_BUNKER_SEAT OR IsNcPedTypeACeleb(eReturn) // OR eReturn = NC_BOUNCER_HEAD ) AND g_bTurnOnNCCustomerPeds = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NIGHTCLUB_PED_TYPE: iNCPedID: ", iNCPedID, ",eReturn = ", eReturn, ", but g_bTurnOnNCCustomerPeds = FALSE, so returning NC_NULL_PED") eReturn = NC_NULL_PED ENDIF IF eReturn = NC_DJ AND NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) != -1 AND g_eCurrentPlayingDJ = DJ_NULL CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NIGHTCLUB_PED_TYPE: iiNCPedID: ", iNCPedID, ",eReturn = ", eReturn, ", but eCurrentPlayingDJ = DJ_NULL, so returning NC_NULL_PED") eReturn = NC_NULL_PED ENDIF IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) AND(eReturn = NC_DEFAULT_BARMAN_DOWNSTAIRS OR eReturn = NC_UPGRADE_BARMAN_DOWNSTAIRS OR eReturn = NC_HEAD_BARMAN_UPSTAIRS OR eReturn = NC_UPGRADE_BARMAN_UPSTAIRS) CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NIGHTCLUB_PED_TYPE: iNCPedID: ", iNCPedID, ",eReturn = ", eReturn, ", but not all setup missions complete, so returning NC_NULL_PED") eReturn = NC_NULL_PED ENDIF IF (g_bTurnOnNCExtraBouncers = FALSE) AND(eReturn = NC_BOUNCER_VIP OR eReturn = NC_BOUNCER_DANCEFLOOR) CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NIGHTCLUB_PED_TYPE: iNCPedID: ", iNCPedID, ",eReturn = ", eReturn, ", but g_bTurnOnNCExtraBouncers = FALSE, so returning NC_NULL_PED") ENDIF IF eReturn = NC_TONY AND (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY OR g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY) eReturn = NC_NULL_PED ENDIF RETURN eReturn ENDFUNC FUNC BOOL IsNightClubPedTypeSpecial(INT iNightClubPedID) NC_PED_TYPES ePedType = GET_NIGHTCLUB_PED_TYPE(iNightClubPedID, TRUE) NC_PED_TYPES ePedTypeBase = GetPedNcEnumTypeBase(iNightClubPedID) IF (ePedType != ePedTypeBase) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_NC_PED_FEMALE(INT iNightClubPedID) RETURN IS_NC_PED_TYPE_FEMALE(GET_NIGHTCLUB_PED_TYPE(iNightClubPedID)) ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_FACE_DJ_FOR_NC_PED_M(INT iNightclubPedID) INT iMod = (iNightclubPedID + RandomSeed()) % 6 SWITCH iMod CASE 0 RETURN AC_SLOT_FACE_DJ_M_1 CASE 1 RETURN AC_SLOT_FACE_DJ_M_2 CASE 2 RETURN AC_SLOT_FACE_DJ_M_3 CASE 3 RETURN AC_SLOT_FACE_DJ_M_4 CASE 4 RETURN AC_SLOT_FACE_DJ_M_5 CASE 5 RETURN AC_SLOT_FACE_DJ_M_6 ENDSWITCH RETURN AC_SLOT_FACE_DJ_M_1 ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_FACE_DJ_FOR_NC_PED_F(INT iNightclubPedID) INT iMod = (iNightclubPedID + RandomSeed()) % 6 SWITCH iMod CASE 0 RETURN AC_SLOT_FACE_DJ_F_1 CASE 1 RETURN AC_SLOT_FACE_DJ_F_2 CASE 2 RETURN AC_SLOT_FACE_DJ_F_3 CASE 3 RETURN AC_SLOT_FACE_DJ_F_4 CASE 4 RETURN AC_SLOT_FACE_DJ_F_5 CASE 5 RETURN AC_SLOT_FACE_DJ_F_6 ENDSWITCH RETURN AC_SLOT_FACE_DJ_F_1 ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_FACE_DJ_FOR_NC_PED(INT iNightclubPedID) IF IS_NC_PED_FEMALE(iNightclubPedID) RETURN GET_FACE_DJ_FOR_NC_PED_F(iNightclubPedID) ENDIF RETURN GET_FACE_DJ_FOR_NC_PED_M(iNightclubPedID) ENDFUNC FUNC BOOL IS_ACTIVITY_SLOT_A_DJ(ACTIVITY_SLOT_NAMES eActivity ) SWITCH eActivity CASE AC_SLOT_SOLOMUN CASE AC_SLOT_DIXON CASE AC_SLOT_TALE_OF_US_1 CASE AC_SLOT_TALE_OF_US_2 CASE AC_SLOT_BLACK_MADONNA RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_SINGLE_PROP_M(INT iNightclubPedID) INT iMod = (iNightclubPedID + RandomSeed()) % 6 SWITCH iMod CASE 0 RETURN AC_SLOT_SINGLE_PROP_M_1 CASE 1 RETURN AC_SLOT_SINGLE_PROP_M_2 CASE 2 RETURN AC_SLOT_SINGLE_PROP_M_3 CASE 3 RETURN AC_SLOT_SINGLE_PROP_M_4 CASE 4 RETURN AC_SLOT_SINGLE_PROP_M_5 CASE 5 RETURN AC_SLOT_SINGLE_PROP_M_6 ENDSWITCH RETURN AC_SLOT_SINGLE_PROP_M_1 ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_SINGLE_PROP_F(INT iNightclubPedID) INT iMod = (iNightclubPedID + RandomSeed()) % 6 SWITCH iMod CASE 0 RETURN AC_SLOT_SINGLE_PROP_F_1 CASE 1 RETURN AC_SLOT_SINGLE_PROP_F_2 CASE 2 RETURN AC_SLOT_SINGLE_PROP_F_3 CASE 3 RETURN AC_SLOT_SINGLE_PROP_F_4 CASE 4 RETURN AC_SLOT_SINGLE_PROP_F_5 CASE 5 RETURN AC_SLOT_SINGLE_PROP_F_6 ENDSWITCH RETURN AC_SLOT_SINGLE_PROP_F_1 ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_SINGLE_PROP_FOR_NC_PED(INT iNightclubPedID) IF IS_NC_PED_FEMALE(iNightclubPedID) RETURN GET_SINGLE_PROP_F(iNightclubPedID) ENDIF RETURN GET_SINGLE_PROP_M(iNightclubPedID) ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_AMBIENT_M(INT iNightclubPedID) INT iMod = (iNightclubPedID + RandomSeed()) % 6 SWITCH iMod CASE 0 RETURN AC_SLOT_AMBIENT_M_1 CASE 1 RETURN AC_SLOT_AMBIENT_M_2 CASE 2 RETURN AC_SLOT_AMBIENT_M_3 CASE 3 RETURN AC_SLOT_AMBIENT_M_4 CASE 4 RETURN AC_SLOT_AMBIENT_M_5 CASE 5 RETURN AC_SLOT_AMBIENT_M_6 ENDSWITCH RETURN AC_SLOT_AMBIENT_M_1 ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_AMBIENT_F(INT iNightclubPedID) INT iMod = (iNightclubPedID + RandomSeed()) % 6 SWITCH iMod CASE 0 RETURN AC_SLOT_AMBIENT_F_1 CASE 1 RETURN AC_SLOT_AMBIENT_F_2 CASE 2 RETURN AC_SLOT_AMBIENT_F_3 CASE 3 RETURN AC_SLOT_AMBIENT_F_4 CASE 4 RETURN AC_SLOT_AMBIENT_F_5 CASE 5 RETURN AC_SLOT_AMBIENT_F_6 ENDSWITCH RETURN AC_SLOT_AMBIENT_F_1 ENDFUNC FUNC ACTIVITY_SLOT_NAMES GET_AMBIENT_FOR_NC_PED(INT iNightclubPedID) IF IS_NC_PED_FEMALE(iNightclubPedID) RETURN GET_AMBIENT_F(iNightclubPedID) ENDIF RETURN GET_AMBIENT_M(iNightclubPedID) ENDFUNC FUNC INT GetNightClubPedOffsetBase(INT iNightclubPedID) MakeNCPedIDInRangeForMainLayout(iNightclubPedID) SWITCH g_iNightClubPedsMainAreaLayout_Variation CASE 0 SWITCH iNightclubPedID CASE 12 RETURN 11 CASE 16 RETURN 29 CASE 20 RETURN 5 CASE 22 RETURN 2 CASE 27 RETURN 2 CASE 32 RETURN 10 CASE 33 RETURN 6 CASE 36 RETURN 11 CASE 37 RETURN 28 CASE 38 RETURN 15 CASE 39 RETURN 4 CASE 59 RETURN 54 CASE 61 RETURN -1 CASE 62 RETURN 51 CASE 63 RETURN 56 CASE 64 RETURN 56 CASE 65 RETURN 55 CASE 68 RETURN 50 CASE 69 RETURN 51 CASE 73 RETURN 72 CASE 76 RETURN 74 CASE 79 RETURN 75 CASE 81 RETURN 75 CASE 82 RETURN 80 CASE 83 RETURN 80 CASE 89 RETURN 88 CASE 91 RETURN 90 CASE 92 RETURN 90 CASE 104 RETURN 103 CASE 106 RETURN 105 CASE 108 RETURN 107 CASE 109 RETURN 107 CASE 112 RETURN 111 CASE 116 RETURN 113 CASE 124 RETURN 123 ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID CASE 59 RETURN 54 CASE 104 RETURN 103 CASE 33 RETURN 6 CASE 124 RETURN 123 CASE 108 RETURN 107 CASE 109 RETURN 107 CASE 112 RETURN 111 CASE 73 RETURN 72 CASE 81 RETURN 75 CASE 79 RETURN 75 CASE 116 RETURN 113 CASE 82 RETURN 80 CASE 76 RETURN 74 CASE 94 RETURN 93 CASE 63 RETURN 56 CASE 64 RETURN 56 CASE 106 RETURN 105 CASE 32 RETURN 10 CASE 62 RETURN 51 CASE 69 RETURN 51 CASE 65 RETURN 55 CASE 89 RETURN 88 CASE 67 RETURN 60 CASE 12 RETURN 11 CASE 36 RETURN 11 CASE 38 RETURN 15 CASE 68 RETURN 50 CASE 91 RETURN 90 CASE 20 RETURN 5 CASE 22 RETURN 2 CASE 27 RETURN 2 CASE 39 RETURN 4 CASE 37 RETURN 28 CASE 29 RETURN 16 ENDSWITCH BREAK ENDSWITCH RETURN -1 ENDFUNC FUNC INT GET_NIGHTCLUB_PED_OFFSET_NCPEDID(INT iNightclubPedID, BOOL bIgnoreEditor=FALSE) IF NOT (bIgnoreEditor) #IF IS_DEBUG_BUILD IF (g_bNightClubPedEditorActive) AND (iNightclubPedID > -1) AND (g_iNightClubOffsetPedId[iNightclubPedID] > -2) RETURN g_iNightClubOffsetPedId[iNightclubPedID] ENDIF #ENDIF ENDIF INT iReturn = -1 iReturn = GetNightClubPedOffsetBase(iNightclubPedID) // special cases SWITCH iNightclubPedID CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) OR (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) iReturn = -1 ENDIF BREAK ENDSWITCH RETURN iReturn ENDFUNC FUNC BOOL IsNightClubPedOffsetSpecial(INT iNightclubPedID) INT iOffset = GET_NIGHTCLUB_PED_OFFSET_NCPEDID(iNightclubPedID, TRUE) INT iOffsetBase = GetNightClubPedOffsetBase(iNightclubPedID) IF (iOffset != iOffsetBase) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC NIGHTCLUB_PED_ANIM_DICT GetAnimDictFromActivitySlotName(ACTIVITY_SLOT_NAMES eActivitySlotName) SWITCH eActivitySlotName CASE AC_SLOT_FACE_DJ_M_1 CASE AC_SLOT_FACE_DJ_M_2 CASE AC_SLOT_FACE_DJ_M_3 CASE AC_SLOT_FACE_DJ_M_4 CASE AC_SLOT_FACE_DJ_M_5 CASE AC_SLOT_FACE_DJ_M_6 CASE AC_SLOT_FACE_DJ_F_1 CASE AC_SLOT_FACE_DJ_F_2 CASE AC_SLOT_FACE_DJ_F_3 CASE AC_SLOT_FACE_DJ_F_4 CASE AC_SLOT_FACE_DJ_F_5 CASE AC_SLOT_FACE_DJ_F_6 RETURN NCAD_FACE_DJ CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 RETURN NCAD_SINGLE_PROPS CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_5 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_F_5 CASE AC_SLOT_AMBIENT_F_6 RETURN NCAD_AMBIENT_PEDS CASE AC_SLOT_GROUP_M_1 CASE AC_SLOT_GROUP_M_2 CASE AC_SLOT_GROUP_M_3 CASE AC_SLOT_GROUP_M_4 CASE AC_SLOT_GROUP_M_5 CASE AC_SLOT_GROUP_M_6 CASE AC_SLOT_GROUP_F_1 CASE AC_SLOT_GROUP_F_2 CASE AC_SLOT_GROUP_F_3 CASE AC_SLOT_GROUP_F_4 CASE AC_SLOT_GROUP_F_5 CASE AC_SLOT_GROUP_F_6 RETURN NCAD_GROUPS ENDSWITCH RETURN INT_TO_ENUM(NIGHTCLUB_PED_ANIM_DICT, -1) ENDFUNC PROC GetNightClubPedActivitySlotBase(INT i, INT &iActivitySlot, BOOL &isRandom) isRandom = FALSE ACTIVITY_SLOT_NAMES eActivitySlot eActivitySlot = AC_SLOT_NULL MakeNCPedIDInRangeForMainLayout(i) SWITCH g_iNightClubPedsMainAreaLayout_Variation CASE 0 SWITCH i CASE 1 eActivitySlot = AC_SLOT_FACE_DJ_F_2 BREAK CASE 2 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 3 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 4 eActivitySlot = AC_SLOT_GROUP_F_5 BREAK CASE 5 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 6 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 8 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 9 eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE BREAK CASE 10 eActivitySlot = AC_SLOT_GROUP_F_5 BREAK CASE 11 eActivitySlot = AC_SLOT_GROUP_F_1 BREAK CASE 12 eActivitySlot = AC_SLOT_GROUP_F_6 BREAK CASE 13 eActivitySlot = AC_SLOT_DRINK BREAK CASE 14 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 15 eActivitySlot = AC_SLOT_SINGLE_PROP_M_2 BREAK CASE 16 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 17 eActivitySlot = AC_SLOT_FACE_DJ_F_6 BREAK CASE 20 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 22 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 25 eActivitySlot = AC_SLOT_FACE_DJ_M_2 BREAK CASE 26 eActivitySlot = GET_FACE_DJ_FOR_NC_PED(i) isRandom = TRUE BREAK CASE 27 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 28 eActivitySlot = AC_SLOT_GROUP_M_3 BREAK CASE 29 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 30 eActivitySlot = AC_SLOT_FACE_DJ_M_1 BREAK CASE 32 eActivitySlot = AC_SLOT_GROUP_F_3 BREAK CASE 33 eActivitySlot = AC_SLOT_GROUP_M_4 isRandom = TRUE BREAK CASE 36 eActivitySlot = AC_SLOT_GROUP_M_6 BREAK CASE 37 eActivitySlot = AC_SLOT_GROUP_M_1 BREAK CASE 38 eActivitySlot = AC_SLOT_SINGLE_PROP_M_4 BREAK CASE 40 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 47 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 50 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 51 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 52 eActivitySlot = AC_SLOT_FACE_DJ_M_5 BREAK CASE 53 eActivitySlot = GET_AMBIENT_FOR_NC_PED(i) isRandom = TRUE BREAK CASE 54 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 55 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 56 eActivitySlot = AC_SLOT_GROUP_F_1 BREAK CASE 57 eActivitySlot = AC_SLOT_DRINK BREAK CASE 58 eActivitySlot = AC_SLOT_DRINK BREAK CASE 59 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 60 eActivitySlot = AC_SLOT_FACE_DJ_F_1 BREAK CASE 61 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 62 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 63 eActivitySlot = AC_SLOT_GROUP_F_6 BREAK CASE 64 eActivitySlot = AC_SLOT_GROUP_M_6 BREAK CASE 65 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 66 eActivitySlot = AC_SLOT_DRINK BREAK CASE 67 eActivitySlot = GET_FACE_DJ_FOR_NC_PED(i) isRandom = TRUE BREAK CASE 68 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 69 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 70 eActivitySlot = AC_SLOT_SIT_DRINKING BREAK CASE 71 eActivitySlot = AC_SLOT_DRINK BREAK CASE 72 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 73 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 74 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 75 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 76 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 77 eActivitySlot = AC_SLOT_AMBIENT_M_6 BREAK CASE 78 eActivitySlot = GET_AMBIENT_FOR_NC_PED(i) isRandom = TRUE BREAK CASE 79 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 80 eActivitySlot = AC_SLOT_GROUP_F_1 BREAK CASE 81 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 82 eActivitySlot = AC_SLOT_GROUP_F_6 BREAK CASE 83 eActivitySlot = AC_SLOT_GROUP_M_6 BREAK CASE 84 eActivitySlot = GET_FACE_DJ_FOR_NC_PED(i) isRandom = TRUE BREAK CASE 85 eActivitySlot = GET_FACE_DJ_FOR_NC_PED(i) isRandom = TRUE BREAK CASE 86 eActivitySlot = AC_SLOT_DRINK BREAK CASE 87 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 88 eActivitySlot = AC_SLOT_GROUP_M_3 BREAK CASE 89 eActivitySlot = AC_SLOT_GROUP_M_1 BREAK CASE 90 eActivitySlot = AC_SLOT_GROUP_F_1 BREAK CASE 91 eActivitySlot = AC_SLOT_GROUP_F_6 BREAK CASE 92 eActivitySlot = AC_SLOT_GROUP_M_6 BREAK CASE 93 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 94 eActivitySlot = AC_SLOT_FACE_DJ_F_5 BREAK CASE 95 eActivitySlot = AC_SLOT_SMOKE isRandom = TRUE BREAK CASE 96 eActivitySlot = AC_SLOT_DRINK isRandom = TRUE BREAK CASE 97 eActivitySlot = AC_SLOT_HANGOUT isRandom = TRUE BREAK CASE 98 eActivitySlot = AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1 BREAK CASE 99 eActivitySlot = AC_SLOT_DRINK BREAK CASE 101 eActivitySlot = AC_SLOT_LEANING_TEXTING BREAK CASE 102 eActivitySlot = AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2 BREAK CASE 103 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 104 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 105 eActivitySlot = AC_SLOT_GROUP_M_3 BREAK CASE 106 eActivitySlot = AC_SLOT_GROUP_M_1 BREAK CASE 107 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 108 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 109 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 110 eActivitySlot = AC_SLOT_AMBIENT_F_1 BREAK CASE 111 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 112 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 113 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 114 eActivitySlot = AC_SLOT_SINGLE_PROP_F_3 BREAK CASE 115 eActivitySlot = AC_SLOT_SINGLE_PROP_M_5 BREAK CASE 116 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 117 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 118 eActivitySlot = AC_SLOT_FACE_DJ_M_5 BREAK CASE 121 eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN BREAK CASE 122 eActivitySlot = AC_SLOT_SINGLE_PROP_M_1 BREAK CASE 123 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 124 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK ENDSWITCH BREAK CASE 1 SWITCH i CASE 1 eActivitySlot = AC_SLOT_FACE_DJ_M_5 BREAK CASE 2 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 3 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 4 eActivitySlot = AC_SLOT_GROUP_F_5 BREAK CASE 5 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 6 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 8 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 9 eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE BREAK CASE 10 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 11 eActivitySlot = AC_SLOT_GROUP_F_1 BREAK CASE 12 eActivitySlot = AC_SLOT_GROUP_F_6 BREAK CASE 13 eActivitySlot = AC_SLOT_DRINK BREAK CASE 14 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 15 eActivitySlot = AC_SLOT_SINGLE_PROP_M_2 BREAK CASE 16 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 17 eActivitySlot = AC_SLOT_FACE_DJ_M_1 BREAK CASE 20 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 22 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 25 eActivitySlot = AC_SLOT_FACE_DJ_M_2 BREAK CASE 26 eActivitySlot = AC_SLOT_FACE_DJ_F_2 BREAK CASE 27 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 28 eActivitySlot = AC_SLOT_GROUP_M_3 BREAK CASE 29 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 30 eActivitySlot = AC_SLOT_FACE_DJ_M_1 BREAK CASE 32 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 33 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 36 eActivitySlot = AC_SLOT_GROUP_M_6 BREAK CASE 37 eActivitySlot = AC_SLOT_GROUP_M_1 BREAK CASE 38 eActivitySlot = AC_SLOT_SINGLE_PROP_M_4 BREAK CASE 40 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 47 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 50 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 51 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 52 eActivitySlot = AC_SLOT_LEANING_TEXTING BREAK CASE 53 eActivitySlot = AC_SLOT_AMBIENT_F_5 BREAK CASE 54 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 55 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 56 eActivitySlot = AC_SLOT_GROUP_F_1 BREAK CASE 57 eActivitySlot = AC_SLOT_DRINK BREAK CASE 58 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 59 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 60 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 61 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 62 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 63 eActivitySlot = AC_SLOT_GROUP_F_6 BREAK CASE 64 eActivitySlot = AC_SLOT_GROUP_M_6 BREAK CASE 65 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 66 eActivitySlot = AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 BREAK CASE 67 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 68 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 69 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 70 eActivitySlot = AC_SLOT_SIT_DRINKING BREAK CASE 71 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 72 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 73 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 74 eActivitySlot = AC_SLOT_GROUP_F_5 BREAK CASE 75 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 76 eActivitySlot = AC_SLOT_GROUP_F_3 BREAK CASE 77 eActivitySlot = AC_SLOT_AMBIENT_F_1 BREAK CASE 78 eActivitySlot = AC_SLOT_AMBIENT_M_4 BREAK CASE 79 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 80 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 81 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 82 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 83 eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN BREAK CASE 84 eActivitySlot = AC_SLOT_LEANING_TEXTING BREAK CASE 85 eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN BREAK CASE 86 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 87 eActivitySlot = AC_SLOT_DRINK BREAK CASE 88 eActivitySlot = AC_SLOT_GROUP_M_3 BREAK CASE 89 eActivitySlot = AC_SLOT_GROUP_M_1 BREAK CASE 90 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 91 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 92 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 93 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 94 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 95 eActivitySlot = AC_SLOT_DRINK BREAK CASE 96 eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN BREAK CASE 97 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 98 eActivitySlot = AC_SLOT_SINGLE_PROP_M_3 BREAK CASE 99 eActivitySlot = AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 BREAK CASE 101 eActivitySlot = AC_SLOT_LEANING_TEXTING BREAK CASE 102 eActivitySlot = AC_SLOT_SINGLE_PROP_M_1 BREAK CASE 103 eActivitySlot = AC_SLOT_SINGLE_PROP_F_1 BREAK CASE 104 eActivitySlot = AC_SLOT_SINGLE_PROP_F_2 BREAK CASE 105 eActivitySlot = AC_SLOT_GROUP_M_3 BREAK CASE 106 eActivitySlot = AC_SLOT_GROUP_M_1 BREAK CASE 107 eActivitySlot = AC_SLOT_GROUP_M_2 BREAK CASE 108 eActivitySlot = AC_SLOT_GROUP_F_2 BREAK CASE 109 eActivitySlot = AC_SLOT_GROUP_M_5 BREAK CASE 110 eActivitySlot = AC_SLOT_AMBIENT_M_2 BREAK CASE 111 eActivitySlot = AC_SLOT_GROUP_F_4 BREAK CASE 112 eActivitySlot = AC_SLOT_GROUP_M_4 BREAK CASE 113 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 114 eActivitySlot = AC_SLOT_SINGLE_PROP_F_3 BREAK CASE 115 eActivitySlot = AC_SLOT_SINGLE_PROP_M_5 BREAK CASE 116 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK CASE 117 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 118 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 121 eActivitySlot = AC_SLOT_LEAN_SMOKE_1 BREAK CASE 122 eActivitySlot = AC_SLOT_SINGLE_PROP_M_1 BREAK CASE 123 eActivitySlot = AC_SLOT_SINGLE_PROP_M_6 BREAK CASE 124 eActivitySlot = AC_SLOT_SINGLE_PROP_F_6 BREAK ENDSWITCH BREAK ENDSWITCH iActivitySlot = ENUM_TO_INT(eActivitySlot) ENDPROC PROC GetTonyActivity(ACTIVITY_SLOT_NAMES &eActivitySlot, BOOL &isRandom) SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_BAR_LEAN BREAK CASE NSS_COMPLETED_STAFF_ONLY eActivitySlot = AC_SLOT_HANGOUT BREAK CASE NSS_COMPLETED_EQUIP_ONLY eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_PHONE BREAK CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE BREAK CASE NSS_FULLY_SETUP SWITCH g_iNightClubTonyPosition CASE 0 eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN BREAK CASE 1 eActivitySlot =AC_SLOT_USE_COMPUTER BREAK CASE 2 eActivitySlot = AC_SLOT_TONY_SIT_DRINK_1 BREAK CASE 3 eActivitySlot = AC_SLOT_AMBIENT_M_6 BREAK CASE 4 eActivitySlot = AC_SLOT_AMBIENT_M_4 BREAK CASE 5 eActivitySlot = AC_SLOT_TONY_SIT_DRINK_2 BREAK CASE 6 CASE 7 CASE 8 eActivitySlot = GET_FACE_DJ_FOR_NC_PED(43) isRandom = TRUE BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC FUNC BOOL AreAnyCelebsInClub() NIGHTCLUB_CELEBRITY_ENUM eCeleb REPEAT eNIGHTCLUB_CELEB_MAX eCeleb IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eCeleb) RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC PROC GetLazlowActivity(ACTIVITY_SLOT_NAMES &eActivitySlot) SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN BREAK CASE NSS_COMPLETED_STAFF_ONLY eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE BREAK CASE NSS_COMPLETED_EQUIP_ONLY eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE BREAK CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT eActivitySlot = AC_SLOT_SIT_DRINKING BREAK CASE NSS_FULLY_SETUP IF g_bTurnOnNCCustomerPeds IF IsLazlowGoingToDoAnnouncement() eActivitySlot = AC_SLOT_LAZLOW_VIP ELSE SWITCH g_iNightClubLazlowPosition CASE 0 eActivitySlot = AC_SLOT_LAZLOW_HIGH_DANCEFLOOR BREAK CASE 1 eActivitySlot = AC_SLOT_LAZLOW_HIGH_RAILING BREAK CASE 2 eActivitySlot = AC_SLOT_LAZLOW_HIGH_CHAIR BREAK CASE 3 eActivitySlot = AC_SLOT_LAZLOW_HIGH_PODIUM BREAK CASE 4 eActivitySlot = AC_SLOT_LAZLOW_LOW_TOILET BREAK CASE 5 eActivitySlot = AC_SLOT_LAZLOW_LOW_BAR BREAK CASE 6 eActivitySlot = AC_SLOT_LAZLOW_LOW_SOFA BREAK CASE 7 eActivitySlot = AC_SLOT_LAZLOW_LOW_ALONE BREAK ENDSWITCH ENDIF ELSE eActivitySlot = AC_SLOT_SIT_DRINKING ENDIF BREAK ENDSWITCH ENDPROC PROC GET_NIGHTCLUB_PED_ACTIVITY_SLOT(INT iNightclubPedID, INT &iActivitySlot, BOOL &isRandom, BOOL bIgnoreEditor=FALSE) IF NOT (bIgnoreEditor) #IF IS_DEBUG_BUILD IF (g_bNightClubPedEditorActive) AND (iNightclubPedID > -1) AND (g_iNightClubActivitySlot[iNightclubPedID] > -1) iActivitySlot = g_iNightClubActivitySlot[iNightclubPedID] isRandom = g_bNightClubActivitySlotHasRandomness[iNightclubPedID] EXIT ENDIF #ENDIF ENDIF INT i = iNightclubPedID isRandom = FALSE ACTIVITY_SLOT_NAMES eActivitySlot GetNightClubPedActivitySlotBase(iNightclubPedID, iActivitySlot, isRandom) eActivitySlot = INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot) // hallway SWITCH g_iNightClubPedsHallwayLayout CASE 0 SWITCH i CASE 146 eActivitySlot = AC_SLOT_CLOAKROOM_STOOL BREAK CASE 147 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 148 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 149 eActivitySlot = AC_SLOT_DRINK BREAK CASE 150 eActivitySlot = AC_SLOT_DRINK BREAK CASE 151 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 152 eActivitySlot = AC_SLOT_DANCING_WITH_BEER_SCENARIO BREAK CASE 153 eActivitySlot = AC_SLOT_DRINK BREAK CASE 154 eActivitySlot = AC_SLOT_DRINK BREAK CASE 155 eActivitySlot = AC_SLOT_DRINK BREAK CASE 156 eActivitySlot = AC_SLOT_HANGOUT BREAK ENDSWITCH BREAK CASE 1 SWITCH i CASE 146 eActivitySlot = AC_SLOT_CLOAKROOM_STOOL BREAK CASE 147 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 148 eActivitySlot = AC_SLOT_DRINK BREAK CASE 149 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 150 eActivitySlot = AC_SLOT_DRINK BREAK CASE 151 eActivitySlot = AC_SLOT_DRINK BREAK CASE 152 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 153 eActivitySlot = AC_SLOT_DRINK BREAK CASE 154 eActivitySlot = AC_SLOT_SMOKE BREAK CASE 155 eActivitySlot = AC_SLOT_LEANING_TEXTING BREAK ENDSWITCH BREAK CASE 2 SWITCH i CASE 146 eActivitySlot = AC_SLOT_CLOAKROOM_STOOL BREAK CASE 147 eActivitySlot = AC_SLOT_GUARDING BREAK CASE 148 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 149 eActivitySlot = AC_SLOT_DRINK BREAK CASE 150 eActivitySlot = AC_SLOT_DRINK BREAK CASE 151 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 152 eActivitySlot = AC_SLOT_DRINK BREAK CASE 153 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 154 eActivitySlot = AC_SLOT_LEANING_TEXTING BREAK ENDSWITCH BREAK CASE 3 SWITCH i CASE 146 eActivitySlot = AC_SLOT_CLOAKROOM_STOOL BREAK CASE 147 eActivitySlot = AC_SLOT_GUARDING BREAK ENDSWITCH BREAK ENDSWITCH // toilet SWITCH g_iNightClubPedsToiletLayout CASE 0 SWITCH i CASE 157 eActivitySlot = AC_SLOT_DANCEFLOOR_BUSBOY_TOILET BREAK CASE 158 eActivitySlot = AC_SLOT_TOILET_SMOKE_WEED BREAK CASE 159 eActivitySlot = AC_SLOT_SMOKE BREAK CASE 160 eActivitySlot = AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE BREAK CASE 161 eActivitySlot = AC_SLOT_TOILET_BUNKER_SEAT BREAK ENDSWITCH BREAK CASE 1 SWITCH i CASE 157 eActivitySlot = AC_SLOT_DANCEFLOOR_BUSBOY_TOILET BREAK CASE 158 eActivitySlot = AC_SLOT_SMOKE BREAK CASE 159 eActivitySlot = AC_SLOT_TOILET_PHONE BREAK CASE 160 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 161 eActivitySlot = AC_SLOT_TOILET_BUNKER_SEAT BREAK ENDSWITCH BREAK CASE 2 SWITCH i CASE 157 eActivitySlot = AC_SLOT_DANCEFLOOR_BUSBOY_TOILET BREAK CASE 158 eActivitySlot = AC_SLOT_MUSCLE_FLEX BREAK CASE 159 eActivitySlot = AC_SLOT_TOILET_PHONE BREAK CASE 160 eActivitySlot = AC_SLOT_HANGOUT BREAK CASE 161 eActivitySlot = AC_SLOT_DRINK BREAK ENDSWITCH BREAK CASE 3 SWITCH i CASE 157 eActivitySlot = AC_SLOT_DANCEFLOOR_BUSBOY_TOILET BREAK ENDSWITCH BREAK ENDSWITCH // special cases SWITCH g_iNightClubPedsMainAreaLayout CASE 0 SWITCH i CASE 0 IF (g_iNightClubSetupState != NSS_FULLY_SETUP) eActivitySlot = AC_SLOT_WORKER_CLIPBOARD ELIF g_bTurnOnNCCustomerPeds eActivitySlot = AC_SLOT_FACE_DJ_F_1 ENDIF BREAK CASE 18 CASE 19 IF g_bTurnOnNCPodiumDancers eActivitySlot = AC_SLOT_CAGE_DANCING_LAP_SCENARIO ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_PHONE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER ELSE eActivitySlot = AC_SLOT_GROUP_F_3 ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELSE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT ELIF (g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY) eActivitySlot = AC_SLOT_TECH_USE_COMPUTER ELSE eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 43 GetTonyActivity(eActivitySlot, isRandom) BREAK CASE 44 GetLazlowActivity(eActivitySlot) BREAK CASE 45 CASE 46 IF g_bTurnOnNCExtraBouncers eActivitySlot = AC_SLOT_GUARDING eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 48 CASE 49 IF g_bTurnOnNCExtraBartenders eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK ENDSWITCH BREAK CASE 1 SWITCH i CASE 0 IF (g_iNightClubSetupState != NSS_FULLY_SETUP) eActivitySlot = AC_SLOT_WORKER_CLIPBOARD ELIF g_bTurnOnNCCustomerPeds eActivitySlot = AC_SLOT_FACE_DJ_F_1 ENDIF BREAK CASE 18 CASE 19 IF g_bTurnOnNCPodiumDancers eActivitySlot = AC_SLOT_CAGE_DANCING_LAP_SCENARIO ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_PHONE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER ELSE eActivitySlot = AC_SLOT_GROUP_F_3 ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELSE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT ELIF (g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY) eActivitySlot = AC_SLOT_TECH_USE_COMPUTER ELSE eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 43 GetTonyActivity(eActivitySlot, isRandom) BREAK CASE 44 GetLazlowActivity(eActivitySlot) BREAK CASE 45 CASE 46 IF g_bTurnOnNCExtraBouncers eActivitySlot = AC_SLOT_GUARDING eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 48 CASE 49 IF g_bTurnOnNCExtraBartenders eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK ENDSWITCH BREAK CASE 2 SWITCH i CASE 0 IF (g_iNightClubSetupState != NSS_FULLY_SETUP) eActivitySlot = AC_SLOT_WORKER_CLIPBOARD ELIF g_bTurnOnNCCustomerPeds eActivitySlot = AC_SLOT_FACE_DJ_F_1 ENDIF BREAK CASE 18 CASE 19 IF g_bTurnOnNCPodiumDancers eActivitySlot = AC_SLOT_CAGE_DANCING_LAP_SCENARIO ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_PHONE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER ELSE eActivitySlot = AC_SLOT_GROUP_F_3 ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELSE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT ELIF (g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY) eActivitySlot = AC_SLOT_TECH_USE_COMPUTER ELSE eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 43 GetTonyActivity(eActivitySlot, isRandom) BREAK CASE 44 GetLazlowActivity(eActivitySlot) BREAK CASE 45 CASE 46 IF g_bTurnOnNCExtraBouncers eActivitySlot = AC_SLOT_GUARDING eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 48 CASE 49 IF g_bTurnOnNCExtraBartenders eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK ENDSWITCH BREAK CASE 3 SWITCH i CASE 0 IF (g_iNightClubSetupState != NSS_FULLY_SETUP) eActivitySlot = AC_SLOT_WORKER_CLIPBOARD ELIF g_bTurnOnNCCustomerPeds eActivitySlot = AC_SLOT_FACE_DJ_F_1 ENDIF BREAK CASE 18 CASE 19 IF g_bTurnOnNCPodiumDancers eActivitySlot = AC_SLOT_CAGE_DANCING_LAP_SCENARIO ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_PHONE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER ELSE eActivitySlot = AC_SLOT_GROUP_F_3 ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELSE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT ELIF (g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY) eActivitySlot = AC_SLOT_TECH_USE_COMPUTER ELSE eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 43 GetTonyActivity(eActivitySlot, isRandom) BREAK CASE 44 GetLazlowActivity(eActivitySlot) BREAK CASE 45 CASE 46 IF g_bTurnOnNCExtraBouncers eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 48 CASE 49 IF g_bTurnOnNCExtraBartenders eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK ENDSWITCH BREAK CASE 4 SWITCH i CASE 0 IF (g_iNightClubSetupState != NSS_FULLY_SETUP) eActivitySlot = AC_SLOT_WORKER_CLIPBOARD ELIF g_bTurnOnNCCustomerPeds eActivitySlot = AC_SLOT_FACE_DJ_F_1 ENDIF BREAK CASE 18 CASE 19 IF g_bTurnOnNCPodiumDancers eActivitySlot = AC_SLOT_CAGE_DANCING_LAP_SCENARIO ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TONY_PHONE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_BOUNCER_LOOKING_OVER_WORKER ELSE eActivitySlot = AC_SLOT_GROUP_F_3 ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) eActivitySlot = AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ELSE eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) eActivitySlot = AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT ELIF (g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY) eActivitySlot = AC_SLOT_TECH_USE_COMPUTER ELSE eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 43 GetTonyActivity(eActivitySlot, isRandom) BREAK CASE 44 GetLazlowActivity(eActivitySlot) BREAK CASE 45 CASE 46 IF g_bTurnOnNCExtraBouncers eActivitySlot = AC_SLOT_GUARDING ENDIF BREAK CASE 48 CASE 49 IF g_bTurnOnNCExtraBartenders eActivitySlot = AC_SLOT_BARTENDER_YACHT_IDLE ENDIF BREAK ENDSWITCH BREAK ENDSWITCH // dj SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH i CASE 34 eActivitySlot = AC_SLOT_SOLOMUN BREAK ENDSWITCH BREAK CASE DJ_DIXON SWITCH i CASE 34 eActivitySlot = AC_SLOT_DIXON BREAK ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH i CASE 34 eActivitySlot = AC_SLOT_TALE_OF_US_1 BREAK CASE 119 eActivitySlot = AC_SLOT_TALE_OF_US_2 BREAK ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH i CASE 34 eActivitySlot = AC_SLOT_BLACK_MADONNA BREAK ENDSWITCH BREAK ENDSWITCH IF g_bTurnOnNCDJEntourage SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH i CASE 7 eActivitySlot = AC_SLOT_ENTOURAGE_SOL_2 BREAK CASE 21 eActivitySlot = AC_SLOT_FACE_DJ_F_1 BREAK CASE 23 eActivitySlot = AC_SLOT_ENTOURAGE_SOL_MIKE BREAK CASE 24 eActivitySlot = AC_SLOT_ENTOURAGE_SOL_ROB BREAK CASE 31 eActivitySlot = AC_SLOT_ENTOURAGE_SOL_3 BREAK CASE 35 eActivitySlot = AC_SLOT_ENTOURAGE_SOL_4 BREAK CASE 100 eActivitySlot = AC_SLOT_ENTOURAGE_SOL_1 BREAK CASE 119 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 120 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK ENDSWITCH BREAK CASE DJ_DIXON SWITCH i CASE 7 eActivitySlot = AC_SLOT_FACE_DJ_F_1 BREAK CASE 21 eActivitySlot = AC_SLOT_FACE_DJ_M_2 BREAK CASE 23 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 24 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 31 eActivitySlot = AC_SLOT_FACE_DJ_M_3 BREAK CASE 35 eActivitySlot = AC_SLOT_FACE_DJ_F_5 BREAK CASE 100 eActivitySlot = AC_SLOT_ENTOURAGE_DIX_1 BREAK CASE 119 eActivitySlot = AC_SLOT_FACE_DJ_M_1 BREAK CASE 120 eActivitySlot = AC_SLOT_FACE_DJ_F_2 BREAK ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH i CASE 7 eActivitySlot = AC_SLOT_ENTOURAGE_TAL_2 BREAK CASE 21 eActivitySlot = AC_SLOT_FACE_DJ_M_2 BREAK CASE 23 eActivitySlot = AC_SLOT_FACE_DJ_F_3 BREAK CASE 24 eActivitySlot = AC_SLOT_FACE_DJ_M_4 BREAK CASE 31 eActivitySlot = AC_SLOT_ENTOURAGE_TAL_3 BREAK CASE 35 eActivitySlot = AC_SLOT_FACE_DJ_F_5 BREAK CASE 100 eActivitySlot = AC_SLOT_FACE_DJ_F_2 BREAK //CASE 119 eActivitySlot = AC_SLOT_FACE_DJ_F_6 BREAK CASE 120 eActivitySlot = AC_SLOT_ENTOURAGE_TAL_1 BREAK ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH i CASE 7 eActivitySlot = AC_SLOT_ENTOURAGE_BLAM_2 BREAK CASE 21 eActivitySlot = AC_SLOT_FACE_DJ_M_2 BREAK CASE 23 eActivitySlot = AC_SLOT_FACE_DJ_F_5 BREAK CASE 24 eActivitySlot = AC_SLOT_FACE_DJ_F_6 BREAK CASE 31 eActivitySlot = AC_SLOT_ENTOURAGE_BLAM_3 BREAK CASE 35 eActivitySlot = AC_SLOT_FACE_DJ_F_4 BREAK CASE 100 eActivitySlot = AC_SLOT_FACE_DJ_F_2 BREAK CASE 119 eActivitySlot = AC_SLOT_FACE_DJ_M_1 BREAK CASE 120 eActivitySlot = AC_SLOT_ENTOURAGE_BLAM_1 BREAK ENDSWITCH BREAK ENDSWITCH ENDIF iActivitySlot = ENUM_TO_INT(eActivitySlot) ENDPROC FUNC BOOL IsNightClubPedActivitySlotSpecial(INT iNightclubPedID) INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iNightclubPedID, iActivitySlot, bIsRandom, TRUE) INT iActivitySlotBase BOOL bIsRandomBase GetNightClubPedActivitySlotBase(iNightclubPedID, iActivitySlotBase, bIsRandomBase) IF (iActivitySlot != iActivitySlotBase) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC VECTOR GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(ACTIVITY_SLOT_NAMES Child) SWITCH Child // ====== single prop ====== CASE AC_SLOT_SINGLE_PROP_F_2 RETURN <<0.5589, 0.4361, 0.0000>> CASE AC_SLOT_SINGLE_PROP_M_4 RETURN <<-0.5463,0.5143,0.0>> CASE AC_SLOT_SINGLE_PROP_F_6 RETURN <<0.8258, 0.1277, 0.0>> // ====== group ====== CASE AC_SLOT_GROUP_M_1 RETURN <<-0.6732,-0.2262,0.0>> CASE AC_SLOT_GROUP_F_6 RETURN <<-0.6571,0.2906,0.0>> CASE AC_SLOT_GROUP_M_6 RETURN <<0.5387,0.7321,0.0>> CASE AC_SLOT_GROUP_F_3 RETURN <<-0.5740,0.1744,0.0>> CASE AC_SLOT_GROUP_M_4 RETURN <<-0.6605,0.3297,0.0>> CASE AC_SLOT_GROUP_F_2 RETURN <<-0.6257,0.2432, 0.0>> CASE AC_SLOT_GROUP_M_5 RETURN <<0.6498,0.4307,0.0>> ENDSWITCH CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY - not valid child activity: eActivity = ", GET_SLOT_NAME_STRING(Child)) SCRIPT_ASSERT("GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY - not valid child activity") RETURN <<0.0, 0.0, 0.0>> ENDFUNC FUNC FLOAT GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(ACTIVITY_SLOT_NAMES Child) SWITCH Child // ====== single prop ====== CASE AC_SLOT_SINGLE_PROP_F_2 RETURN 113.11 CASE AC_SLOT_SINGLE_PROP_M_4 RETURN -0.4783 CASE AC_SLOT_SINGLE_PROP_F_6 RETURN 15.56 // ====== group ====== CASE AC_SLOT_GROUP_M_1 RETURN -41.68 CASE AC_SLOT_GROUP_F_6 RETURN -73.09 CASE AC_SLOT_GROUP_M_6 RETURN 87.29 CASE AC_SLOT_GROUP_F_3 RETURN -31.36 CASE AC_SLOT_GROUP_M_4 RETURN -50.70 CASE AC_SLOT_GROUP_F_2 RETURN -68.87 CASE AC_SLOT_GROUP_M_5 RETURN 50.86 ENDSWITCH CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY - not valid child activity: eActivity = ", GET_SLOT_NAME_STRING(Child)) SCRIPT_ASSERT("GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY - not valid child activity") RETURN 0.0 ENDFUNC FUNC VECTOR GetNightClubPedPositionBase(INT iNightclubPedID, ACTIVITY_SLOT_NAMES eActivitySlotName) MakeNCPedIDInRangeForMainLayout(iNightclubPedID) SWITCH g_iNightClubPedsMainAreaLayout_Variation CASE 0 SWITCH iNightclubPedID CASE 1 RETURN <<-1600.0265, -3011.4326, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_2 CASE 2 RETURN <<-1599.4835, -3015.0034, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 3 RETURN <<-1599.2264, -3009.9956, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 4 RETURN <<-1597.8575, -3010.1555, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 5 RETURN <<-1598.3055, -3008.3354, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 6 RETURN <<-1589.3466, -3013.0554, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 8 RETURN <<-1595.8585, -3013.5154, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 10 RETURN <<-1594.3180, -3013.1016, -79.0135>> // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 11 RETURN <<-1596.9805, -3012.4055, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 12 RETURN <<-0.4577, 0.6838, 0.0000>> // eActivitySlotName = AC_SLOT_GROUP_F_6 CASE 13 RETURN <<-1579.8195, -3014.8835, -79.0060>> // eActivitySlotName = AC_SLOT_DRINK CASE 14 RETURN <<-1598.9705, -3011.4675, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 15 RETURN <<-1597.6844, -3014.2466, -78.9960>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_2 CASE 16 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 17 RETURN <<-1596.6365, -3011.0244, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_6 CASE 18 RETURN <<-1596.0830, -3007.9281, -78.2081>> // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 19 RETURN <<-1598.5235, -3015.7373, -78.2102>> // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 20 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 22 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 25 RETURN <<-1596.5925, -3015.1375, -79.0060>> CASE 26 RETURN <<-1599.8180, -3009.3450, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_3 CASE 27 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 28 RETURN <<-1599.9976, -3010.4614, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 29 RETURN <<-1598.9175, -3013.3455, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_6 CASE 30 RETURN <<-1599.9860, -3013.3474, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_1 CASE 32 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 33 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 36 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 37 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 38 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 40 RETURN <<-1612.7390, -3005.5320, -79.0060>> // eActivitySlotName = AC_SLOT_GUARDING CASE 45 RETURN <<-1594.8448, -3004.4146, -76.0051>> // eActivitySlotName = AC_SLOT_NULL CASE 46 RETURN <<-1590.4760, -3010.8621, -79.0820>> // eActivitySlotName = AC_SLOT_NULL CASE 47 RETURN <<-1605.2888, -3017.8469, -78.4049>> // eActivitySlotName = AC_SLOT_GUARDING CASE 50 RETURN <<-1594.1815, -3009.2786, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 51 RETURN <<-1591.6735, -3012.2119, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 52 RETURN <<-1603.2365, -3004.7935, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_5 CASE 53 RETURN <<-1591.0880, -3014.1895, -76.0810>> // eActivitySlotName = AC_SLOT_AMBIENT_M_1 CASE 54 RETURN <<-1586.3726, -3012.2944, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 55 RETURN <<-1594.6365, -3014.8706, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 56 RETURN <<-1592.2465, -3014.9956, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 57 RETURN <<-1577.7095, -3014.8555, -79.0060>> // eActivitySlotName = AC_SLOT_DRINK CASE 58 RETURN <<-1575.5706, -3012.9314, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_2 CASE 59 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 60 RETURN <<-1596.9565, -3016.5464, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_1 CASE 61 RETURN <<-1576.1705, -3013.3135, -79.0000>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 62 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 63 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 64 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 65 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 66 RETURN <<-1586.8025, -3011.7104, -75.9240>> CASE 67 RETURN <<-1599.6810, -3016.9680, -79.0060>> CASE 68 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 69 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 70 RETURN <<-1601.5815, -3001.909, -76.3115>> // eActivitySlotName = AC_SLOT_SIT_DRINKING CASE 71 RETURN <<-1600.2645, -3001.730, -75.8090>> // eActivitySlotName = AC_SLOT_DRINK CASE 72 RETURN <<-1588.7710, -3018.2744, -76.0810>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 73 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 74 RETURN <<-1591.3405, -3005.5984, -76.0810>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 75 RETURN <<-1588.9294, -3010.5166, -76.0810>> CASE 76 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 77 RETURN <<-1593.6064, -3007.7871, -76.0051>> // eActivitySlotName = AC_SLOT_AMBIENT_M_6 CASE 78 RETURN <<-1591.0930, -3009.9756, -75.9240>> // eActivitySlotName = AC_SLOT_AMBIENT_F_4 CASE 79 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 80 RETURN <<-1587.6315, -3006.9705, -75.8090>> // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 81 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 82 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 83 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 84 RETURN <<-1612.7760, -3007.9771, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_1 CASE 85 RETURN <<-1611.939, -3006.888, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_2 CASE 86 RETURN <<-1576.7745, -3010.1536, -79.0060>> // eActivitySlotName = AC_SLOT_DRINK CASE 87 RETURN <<-1576.2795, -3009.4146, -79.0060>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 88 RETURN <<-1595.6226, -3012.1194, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 89 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 90 RETURN <<-1595.4755, -3009.9016, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 91 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 92 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 93 RETURN <<-1600.5245, -3006.4666, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 94 RETURN <<-1600.71, -3005.546, -79.0060>> CASE 95 RETURN <<-1578.6226, -3012.6064, -79.0060>> // eActivitySlotName = AC_SLOT_SMOKE CASE 96 RETURN <<-1579.4926, -3012.4705, -79.0060>> // eActivitySlotName = AC_SLOT_DRINK CASE 97 RETURN <<-1579.1870, -3013.2014, -79.0060>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 98 RETURN <<-1586.2375, -3009.1074, -76.2060>> // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1 CASE 99 RETURN <<-1586.7935, -3015.4805, -75.9240>> // eActivitySlotName = AC_SLOT_DRINK CASE 101 RETURN <<-1575.8564, -3014.9465, -79.0060>> // eActivitySlotName = AC_SLOT_LEANING_TEXTING CASE 102 RETURN <<-1586.7455, -3014.4885, -76.2060>> // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2 CASE 103 RETURN <<-1589.0656, -3011.3391, -79.0059>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 104 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 105 RETURN <<-1592.4315, -3009.4795, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 106 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 107 RETURN <<-1594.814, -3003.0605, -75.8810>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 108 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 109 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 110 RETURN <<-1601.0375, -3007.8301, -76.0051>> // eActivitySlotName = AC_SLOT_AMBIENT_F_1 CASE 111 RETURN <<-1597.5706, -3001.8635, -75.8810>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 112 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 113 RETURN <<-1590.9355, -3012.6516, -75.9240>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 114 RETURN <<-1589.1696, -3015.6646, -75.9240>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_3 CASE 115 RETURN <<-1589.2775, -3014.8005, -76.0810>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_5 CASE 116 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 117 RETURN <<-1599.4185, -3003.0906, -75.7104>> CASE 118 RETURN <<-1594.0095, -3010.6726, -79.0819>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_5 CASE 121 RETURN <<-1589.0195, -3006.4185, -79.0820>> // eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE 122 RETURN <<-1593.5245, -3011.6675, -79.0820>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_1 CASE 123 RETURN <<-1588.0861, -3017.5376, -79.0820>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 124 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID CASE 1 RETURN <<-1600.2264, -3012.4824, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_5 CASE 2 RETURN <<-1599.1385, -3009.7256, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 3 RETURN <<-1599.114, -3014.6345, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 4 RETURN <<-1597.8575, -3010.1555, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 5 RETURN <<-1598.3055, -3008.3354, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 6 RETURN <<-1587.8915, -3014.0295, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 8 RETURN <<-1595.5435, -3012.2014, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 10 RETURN <<-1593.7405, -3013.6475, -79.0135>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 11 RETURN <<-1597.7010, -3014.5769, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 12 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 13 RETURN <<-1581.6064, -3014.2224, -79.0060>> CASE 14 RETURN <<-1598.5544, -3011.3115, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 15 RETURN <<-1597.4565, -3011.8350, -78.9960>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_2 CASE 16 RETURN <<-1598.8945, -3012.5234, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_4 CASE 17 RETURN <<-1596.4655, -3012.1985, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_1 CASE 18 RETURN <<-1596.0830, -3007.9281, -78.2081>> // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 19 RETURN <<-1598.5235, -3015.7373, -78.2102>> // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 20 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 22 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 25 RETURN <<-1599.8025, -3016.3835, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_2 CASE 26 RETURN <<-1599.9565, -3010.3435, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_2 CASE 27 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 28 RETURN <<-1599.9976, -3011.3884, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 29 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 30 RETURN <<-1599.9860, -3014.4204, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_M_1 CASE 32 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 33 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 36 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 37 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 38 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 40 RETURN <<-1612.7390, -3005.5320, -79.0060>> // eActivitySlotName = AC_SLOT_GUARDING CASE 45 RETURN <<-1594.8448, -3004.4146, -76.0051>> // eActivitySlotName = AC_SLOT_GUARDING CASE 46 RETURN <<-1590.4760, -3010.8621, -79.0820>> // eActivitySlotName = AC_SLOT_GUARDING CASE 47 RETURN <<-1605.2888, -3017.8469, -78.4049>> // eActivitySlotName = AC_SLOT_GUARDING CASE 50 RETURN <<-1595.3885, -3010.9084, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 51 RETURN <<-1593.3485, -3011.3416, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 52 RETURN <<-1590.4985, -3019.1685, -79.0135>> // eActivitySlotName = AC_SLOT_LEANING_TEXTING CASE 53 RETURN <<-1591.0380, -3017.7429, -76.0810>> // eActivitySlotName = AC_SLOT_AMBIENT_F_5 CASE 54 RETURN <<-1586.1750, -3011.1626, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 55 RETURN <<-1595.6265, -3013.3064, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 56 RETURN <<-1592.2465, -3009.2964, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 57 RETURN <<-1577.8455, -3014.8975, -79.0410>> // eActivitySlotName = AC_SLOT_DRINK CASE 58 RETURN <<-1580.7574, -3014.1726, -79.0060>> CASE 59 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 60 RETURN <<-1597.6475, -3017.1536, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 61 RETURN <<-1577.5085, -3014.2654, -79.0000>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 62 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 63 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 64 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 65 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 66 RETURN <<-1586.8395, -3010.9656, -76.2890>> // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 CASE 67 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 68 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 69 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 70 RETURN <<-1593.3105, -3001.1936, -76.3165>> // eActivitySlotName = AC_SLOT_SIT_DRINKING CASE 71 RETURN <<-1594.6785, -3001.3076, -76.0065>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 72 RETURN <<-1595.8445, -3017.7065, -77.8485>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 73 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 74 RETURN <<-1590.9315, -3006.1365, -76.0810>> // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 75 RETURN <<-1588.2375, -3017.2356, -76.0810>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 76 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 77 RETURN <<-1593.6064, -3007.8269, -76.0051>> // eActivitySlotName = AC_SLOT_AMBIENT_F_1 CASE 78 RETURN <<-1591.0129, -3009.5154, -75.9240>> // eActivitySlotName = AC_SLOT_AMBIENT_M_4 CASE 79 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 80 RETURN <<-1589.1165, -3008.2175, -75.8090>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 81 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 82 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 83 RETURN <<-1586.7675, -3006.8865, -75.9990>> // eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE 84 RETURN <<-1612.8575, -3006.6135, -79.0060>> // eActivitySlotName = AC_SLOT_LEANING_TEXTING ## CHANGED ## CASE 85 RETURN <<-1608.0284, -3008.3916, -79.0060>> // eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN ## CHANGED ## CASE 86 RETURN <<-1577.6315, -3007.8076, -79.0060>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 87 RETURN <<-1577.5665, -3007.0166, -79.0060>> // eActivitySlotName = AC_SLOT_DRINK CASE 88 RETURN <<-1596.5225, -3014.5044, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 89 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 90 RETURN <<-1595.1515, -3008.7434, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 91 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 92 RETURN <<-1596.6486, -3009.7925, -79.0060>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 93 RETURN <<-1601.3055, -3006.1755, -79.0060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 94 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 95 RETURN <<-1578.2435, -3012.2046, -79.0060>> // eActivitySlotName = AC_SLOT_DRINK CASE 96 RETURN <<-1575.8895, -3014.8965, -79.0060>> // eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE 97 RETURN <<-1578.9246, -3012.4856, -79.0060>> // eActivitySlotName = AC_SLOT_HANGOUT CASE 98 RETURN <<-1589.2645, -3010.9565, -76.2060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_3 CASE 99 RETURN <<-1586.4445, -3016.2305, -76.2840>> // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 CASE 101 RETURN <<-1581.9655, -3012.3416, -79.0060>> // eActivitySlotName = AC_SLOT_LEANING_TEXTING CASE 102 RETURN <<-1589.6085, -3010.0945, -76.2060>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_1 CASE 103 RETURN <<-1589.0795, -3011.8296, -79.0059>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 104 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 105 RETURN <<-1592.7235, -3014.5405, -79.0060>> // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 106 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 107 RETURN <<-1596.8535, -3001.7075, -75.8810>> // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 108 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 109 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 110 RETURN <<-1601.0375, -3007.7529, -76.0051>> // eActivitySlotName = AC_SLOT_AMBIENT_M_2 CASE 111 RETURN <<-1599.7665, -3003.0764, -75.8810>> // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 112 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 113 RETURN <<-1590.9355, -3013.3474, -75.9240>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 114 RETURN <<-1589.2875, -3014.3716, -75.9240>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_3 CASE 115 RETURN <<-1589.3715, -3015.429, -76.0810>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_5 CASE 116 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 117 RETURN <<-1594.8895, -3003.2046, -76.0329>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 118 RETURN <<-1592.2465, -3011.7046, -79.0819>> // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 121 RETURN <<-1587.1835, -3004.7046, -79.0020>> CASE 122 RETURN <<-1591.8514, -3012.9036, -79.0820>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_1 CASE 123 RETURN <<-1589.5955, -3017.2715, -79.0820>> // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 124 RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) ENDSWITCH BREAK ENDSWITCH RETURN <<0,0,0>> ENDFUNC FUNC VECTOR GetTonyPosition() SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING RETURN <<-1586.656, -3012.801, -75.976>> CASE NSS_COMPLETED_STAFF_ONLY RETURN <<-1596.7191, -3010.6980, -79.0061>> CASE NSS_COMPLETED_EQUIP_ONLY RETURN <<-1590.882, -3012.506, -75.99584>> CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT RETURN << -1598.694, -3007.746, -76.008 >> CASE NSS_FULLY_SETUP SWITCH g_iNightClubTonyPosition CASE 0 IF g_sMPTunables.bDisable_Christmas_Tree_Apartment RETURN <<-1607.889, -3014.886, -75.2250 >> ELSE RETURN <<-1607.889, -3019.1, -75.2250 >> ENDIF BREAK CASE 1 RETURN <<-1619.731, -3010.966,-75.602 >> CASE 2 RETURN <<-1609.693, -3010.836, -75.725 >> CASE 3 IF IS_PLAYER_NIGHTCLUB_STYLE_2_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) RETURN <<-1603.334, -3007.744, -76.0 >> ELSE RETURN <<-1603.334, -3007.754, -76.0 >> ENDIF BREAK CASE 4 RETURN <<-1590.982, -3010.904, -76 >> CASE 5 RETURN <<-1598.817, -2999.153, -76.3375 >> CASE 6 RETURN <<-1594.3580, -3011.3088, -79.0060 >> CASE 7 RETURN <<-1593.8585, -3014.6694, -79.0060 >> CASE 8 RETURN <<-1605.6191, -3012.6287, -77.7909>> ENDSWITCH BREAK ENDSWITCH RETURN <<0,0,0>> ENDFUNC FUNC VECTOR GetLazlowPosition() SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING RETURN <<-1592.441, -3005.082, -76.02843>> CASE NSS_COMPLETED_STAFF_ONLY RETURN <<-1586.673, -3012.85, -76.03334>> CASE NSS_COMPLETED_EQUIP_ONLY RETURN <<-1604.443, -3012.558, -77.8>> CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT RETURN << -1595.686, -2999.125, -76.307 >> CASE NSS_FULLY_SETUP IF g_bTurnOnNCCustomerPeds IF IsLazlowGoingToDoAnnouncement() RETURN <<-1602.464, -3012.583, -80.0>> ELSE SWITCH g_iNightClubLazlowPosition CASE 0 // dancing RETURN <<-1595.124, -3018.683, -80.0>> CASE 1 // railing RETURN <<-1602.464, -3012.583, -80.0>> CASE 2 // chair RETURN <<-1604.906, -3012.583, -80.000>> CASE 3 // podium RETURN <<-1604.664, -3012.583, -80.0>> CASE 4 // in toilet RETURN <<-1604.664, -3015.983, -80.0>> CASE 5 // bar CASE 6 // sofa RETURN <<-1604.664, -3012.583, -80.0>> CASE 7 // alone RETURN <<-1615.864, -3036.183, -80.0>> ENDSWITCH ENDIF ELSE RETURN << -1595.686, -2999.125, -76.307 >> ENDIF BREAK ENDSWITCH RETURN <<0,0,0>> ENDFUNC FUNC VECTOR GET_NIGHTCLUB_PED_POSITION(INT iNightclubPedID, ACTIVITY_SLOT_NAMES eActivitySlotName, BOOL bIgnoreEditor=FALSE) IF NOT (bIgnoreEditor) #IF IS_DEBUG_BUILD IF (g_bNightClubPedEditorActive) AND (iNightclubPedID > -1) AND (VMAG(g_vNightClubPedPos[iNightclubPedID]) > 0) RETURN g_vNightClubPedPos[iNightclubPedID] ENDIF #ENDIF ENDIF // djs SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH iNightclubPedID CASE 34 RETURN <<-1604.66, -3012.58, -80.0>> ENDSWITCH BREAK CASE DJ_DIXON SWITCH iNightclubPedID CASE 34 RETURN <<-1604.66, -3012.58, -80.0>> ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH iNightclubPedID //CASE 34 RETURN <<-1604.66, -3012.38, -79.120>> //CASE 119 RETURN <<-1604.66, -3012.78, -79.120>> CASE 34 CASE 119 RETURN <<-1604.66, -3012.58, -80.0>> ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH iNightclubPedID CASE 34 RETURN <<-1604.66, -3012.58, -80.0>> ENDSWITCH BREAK ENDSWITCH // entourage IF g_bTurnOnNCDJEntourage SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH iNightclubPedID CASE 7 RETURN <<-1606.3925, -3013.3464, -77.8735>> CASE 21 RETURN <<-1604.5525, -3011.2776, -77.9560>> CASE 23 RETURN <<-1598.2855, -3007.7842, -76.0051>> CASE 24 RETURN <<-1599.2305, -3007.7114, -76.0051>> CASE 31 RETURN <<-1606.4495, -3011.8484, -77.9910>> CASE 35 RETURN <<-1606.3551, -3011.0647, -77.7909>> CASE 100 RETURN <<-1606.3535, -3014.0996, -77.8215>> CASE 119 RETURN <<-1606.1844, -3014.7666, -77.8375>> CASE 120 RETURN <<-1604.5925, -3013.8455, -77.8151>> ENDSWITCH BREAK CASE DJ_DIXON SWITCH iNightclubPedID CASE 7 RETURN <<-1596.9255, -3018.4094, -79.0061>> CASE 21 RETURN <<-1598.1940, -3018.7009, -79.0061>> CASE 23 RETURN <<-1598.8993, -3017.6899, -79.0061>> CASE 24 RETURN <<-1590.6235, -3014.4846, -79.0061>> CASE 31 RETURN <<-1595.0992, -3013.2144, -79.0061>> CASE 35 RETURN <<-1599.4164, -3008.3103, -79.0061>> CASE 100 RETURN <<-1604.4705, -3014.4084, -77.8151>> CASE 119 RETURN <<-1606.4646, -3013.4136, -77.8151>> CASE 120 RETURN <<-1606.3055, -3011.8535, -77.7984>> ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH iNightclubPedID CASE 7 RETURN <<-1606.7335, -3013.3525, -77.8735>> CASE 21 RETURN <<-1596.9255, -3018.4094, -79.0061>> CASE 23 RETURN <<-1598.1940, -3018.7009, -79.0061>> CASE 24 RETURN <<-1598.8993, -3017.6899, -79.0061>> CASE 31 RETURN <<-1606.5804, -3011.8745, -77.9910>> CASE 35 RETURN <<-1605.8055, -3011.2615, -77.7930>> CASE 100 RETURN <<-1606.1906, -3014.1245, -77.8215>> //CASE 119 RETURN <<-1599.4164, -3008.3103, -79.0061>> CASE 120 RETURN <<-1604.5925, -3014.0166, -77.8151>> ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH iNightclubPedID CASE 7 RETURN <<-1606.4615, -3013.2485, -77.8735>> CASE 21 RETURN <<-1598.1940, -3018.7009, -79.0061>> CASE 23 RETURN <<-1598.8993, -3017.6899, -79.0061>> CASE 24 RETURN <<-1590.6235, -3014.4846, -79.0061>> CASE 31 RETURN <<-1606.4495, -3011.7854, -77.9910>> CASE 35 RETURN <<-1605.9465, -3010.9685, -77.7930>> CASE 100 RETURN <<-1606.0345, -3013.9536, -77.8215>> CASE 119 RETURN <<-1599.4164, -3008.3103, -79.0061>> CASE 120 RETURN <<-1604.5925, -3014.0166, -77.8151>> ENDSWITCH BREAK ENDSWITCH ENDIF // special cases SWITCH iNightclubPedID CASE 0 SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING CASE NSS_COMPLETED_STAFF_ONLY RETURN << -1595.808, -3015.863, -77.806>> CASE NSS_COMPLETED_EQUIP_ONLY RETURN <<-1598.0571, -3011.6553, -79.0061>> CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT RETURN <<-1598.0571, -3011.6553, -79.0061>> CASE NSS_FULLY_SETUP IF g_bTurnOnNCCustomerPeds SWITCH g_iNightClubPedsMainAreaLayout_Variation CASE 0 RETURN <<-1599.9475, -3012.3064, -79.0059>> CASE 1 RETURN <<-1599.9475, -3013.3684, -79.0059>> ENDSWITCH ENDIF BREAK ENDSWITCH BREAK CASE 9 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1578.666, -3016.553, -78.972 >> ELSE RETURN <<-1578.4510, -3016.4929, -79.0820>> ENDIF BREAK CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) RETURN <<-1594.3535, -3008.8684, -80.0061>> ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) RETURN <<-1597.4855, -3012.2375, -79.0061>> ELSE RETURN GET_POSITION_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) RETURN <<-1578.6425, -3017.8784, -79.0060>> ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) RETURN <<-1583.3228, -3013.2004, -77.0050>> ELSE IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // RETURN << -1584.998, -3013.158, -76.012 >> ELSE RETURN <<-1584.9720, -3013.2109, -75.9240>> ENDIF ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) RETURN <<-1601.804, -3013.341, -78.77843>> ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) RETURN <<-1516.473, -3042.204, -79.7875>> ELSE RETURN <<-1605.6670, -3007.5129, -76.0810>> ENDIF BREAK CASE 43 RETURN GetTonyPosition() CASE 44 RETURN GetLazlowPosition() CASE 48 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1576.875, -3016.647, -78.935 >> ELSE RETURN <<-1576.9510, -3016.5000, -79.0059>> ENDIF BREAK CASE 49 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1584.719, -3015.336, -76.012 >> ELSE RETURN <<-1584.7640, -3015.2900, -76.0810>> ENDIF BREAK ENDSWITCH SWITCH g_iNightClubPedsHallwayLayout CASE 0 SWITCH iNightclubPedID // HallwayPeds Layout 1 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1572.239, -3013.748, -74.313 >> ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL RETURN << -1572.292, -3013.121, -74.640 >> ELSE RETURN <<-1572.2710, -3013.7290, -74.3060>> ENDIF BREAK ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID // HallwayPeds Layout2 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1572.239, -3013.748, -74.313 >> ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL // RETURN << -1572.156, -3013.121, -74.77297 >> RETURN << -1572.292, -3013.121, -74.640 >> ELSE RETURN <<-1572.2710, -3013.7290, -74.3060>> ENDIF BREAK ENDSWITCH BREAK CASE 2 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1572.239, -3013.748, -74.313 >> ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL // RETURN << -1572.156, -3013.121, -74.77297 >> RETURN << -1572.292, -3013.121, -74.640 >> ELSE RETURN <<-1572.2710, -3013.7290, -74.3060>> ENDIF BREAK ENDSWITCH BREAK CASE 3 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN << -1572.239, -3013.748, -74.313 >> ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL // RETURN << -1572.156, -3013.121, -74.77297 >> RETURN << -1572.292, -3013.121, -74.640 >> ELSE RETURN <<-1572.2710, -3013.7290, -74.3060>> ENDIF BREAK ENDSWITCH BREAK ENDSWITCH // hallway SWITCH g_iNightClubPedsHallwayLayout CASE 0 SWITCH iNightclubPedID // HallwayPeds Layout 1 CASE 147 RETURN <<-1570.200, -3002.593, -76.197>> CASE 148 RETURN <<-1570.2939, -3008.8889, -74.3060>> CASE 149 RETURN <<-1570.4100, -3007.9829, -74.3060>> CASE 150 RETURN <<-1578.2760, -3003.0190, -79.0060>> + <<0,0,0.1>> CASE 151 RETURN <<-1578.0100, -3003.8770, -79.0060>> + <<0,0,0.1>> CASE 152 RETURN <<-1577.4130, -3003.2280, -79.0060>> + <<0,0,0.1>> CASE 153 RETURN <<-1576.3365, -3003.0166, -78.9060>> CASE 154 RETURN <<-1575.5045, -3003.1594, -78.9060>> CASE 155 RETURN <<-1568.3400, -3002.7229, -76.1060>> CASE 156 RETURN <<-1568.4790, -3003.6140, -76.1060>> ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID // HallwayPeds Layout2 CASE 147 RETURN <<-1570.200, -3002.593, -76.197>> CASE 148 RETURN <<-1568.5385, -3002.8425, -76.1060>> CASE 149 RETURN <<-1576.3759, -3003.4329, -79.0060>> + <<0,0,0.1>> CASE 150 RETURN <<-1568.4790, -3003.6140, -76.1060>> CASE 151 RETURN <<-1568.2510, -3009.4570, -74.3060>> CASE 152 RETURN <<-1568.2910, -3010.2900, -74.3060>> CASE 153 RETURN <<-1576.7585, -3002.6855, -78.9060>> CASE 154 RETURN <<-1575.9315, -3002.7644, -78.9060>> CASE 155 RETURN <<-1570.5645, -3008.4485, -74.3612>> ENDSWITCH BREAK CASE 2 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 147 RETURN <<-1570.200, -3002.593, -76.197>> CASE 148 RETURN <<-1578.1245, -3004.3369, -78.9060>> CASE 149 RETURN <<-1578.2325, -3003.4900, -78.9060>> CASE 150 RETURN <<-1576.2115, -3002.9175, -78.9060>> CASE 151 RETURN <<-1575.4406, -3003.0085, -78.9060>> CASE 152 RETURN <<-1570.3094, -3009.1851, -74.3060>> CASE 153 RETURN <<-1570.3466, -3008.2380, -74.3060>> CASE 154 RETURN <<-1568.1376, -3003.7512, -77.2060>> ENDSWITCH BREAK CASE 3 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 147 RETURN <<-1570.200, -3002.593, -76.197>> ENDSWITCH BREAK ENDSWITCH // toilet SWITCH g_iNightClubPedsToiletLayout CASE 0 SWITCH iNightclubPedID CASE 157 RETURN <<-1611.97119, -3009.21704, -79.202>> CASE 158 RETURN <<-1609.2247, -3019.0510, -79.0820>> CASE 159 RETURN <<-1610.4758, -3019.1372, -79.082>> CASE 160 RETURN <<-1608.7054, -3011.1335, -79.0820>> CASE 161 RETURN <<-1612.6210, -3011.2080, -79.2000>> ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID CASE 157 RETURN <<-1611.97119, -3009.21704, -79.202>> CASE 158 RETURN <<-1611.2250, -3019.2190, -79.0820>> CASE 159 RETURN <<-1609.2465, -3018.6930, -78.9720>> CASE 160 RETURN <<-1611.7405, -3010.9954, -79.0820>> CASE 161 RETURN <<-1612.6210, -3011.2080, -79.2000>> ENDSWITCH BREAK CASE 2 SWITCH iNightclubPedID CASE 157 RETURN <<-1611.97119, -3009.21704, -79.202>> CASE 158 RETURN <<-1608.5425, -3010.8096, -79.0820>> CASE 159 RETURN <<-1609.2465, -3018.6930, -78.9720>> CASE 160 RETURN <<-1610.7822, -3015.0610, -79.0820>> CASE 161 RETURN <<-1611.2023, -3016.0767, -79.0820>> ENDSWITCH BREAK CASE 3 SWITCH iNightclubPedID CASE 157 RETURN <<-1611.97119, -3009.21704, -79.202>> ENDSWITCH BREAK ENDSWITCH RETURN GetNightClubPedPositionBase(iNightclubPedID, eActivitySlotName) ENDFUNC FUNC BOOL IsNightClubPedPositionSpecial(INT iNightclubPedID) INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iNightclubPedID, iActivitySlot, bIsRandom) VECTOR vPos = GET_NIGHTCLUB_PED_POSITION(iNightclubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot), TRUE) VECTOR vPosBase = GetNightClubPedPositionBase(iNightclubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot)) IF VMAG(vPos - vPosBase) > 0.01 RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC FLOAT GetNightClubPedHeadingBase(INT iNightclubPedID, ACTIVITY_SLOT_NAMES eActivitySlotName) MakeNCPedIDInRangeForMainLayout(iNightclubPedID) SWITCH g_iNightClubPedsMainAreaLayout_Variation CASE 0 SWITCH iNightclubPedID CASE 1 RETURN 90.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_F_2 CASE 2 RETURN 44.0000 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 3 RETURN 113.1990 // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 4 RETURN 144.7200 // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 5 RETURN 172.8050 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 6 RETURN 98.1000 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 8 RETURN 90.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 10 RETURN 146.6000 // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 11 RETURN 111.4240 // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 12 RETURN -102.76 CASE 13 RETURN 180.0000 // eActivitySlotName = AC_SLOT_DRINK CASE 14 RETURN 63.6000 CASE 15 RETURN 58.8000 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_2 CASE 16 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 17 RETURN 72.8000 CASE 18 RETURN 180.0000 // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 19 RETURN 358.6000 // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 20 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 22 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 25 RETURN 63.36 CASE 26 RETURN 120.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_M_3 CASE 27 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 28 RETURN 145.9500 // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 29 RETURN 49.8250 // eActivitySlotName = AC_SLOT_FACE_DJ_M_6 CASE 30 RETURN 90.1990 // eActivitySlotName = AC_SLOT_FACE_DJ_M_1 CASE 32 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 33 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 36 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 37 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 38 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 40 RETURN 224.9990 // eActivitySlotName = AC_SLOT_GUARDING CASE 45 RETURN 133.2557 // eActivitySlotName = AC_SLOT_NULL CASE 46 RETURN 88.3970 // eActivitySlotName = AC_SLOT_NULL CASE 47 RETURN 314.4847 // eActivitySlotName = AC_SLOT_GUARDING CASE 50 RETURN 119.6002 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 51 RETURN 82.8200 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 52 RETURN 180.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_M_5 CASE 53 RETURN 90.0000 // eActivitySlotName = AC_SLOT_AMBIENT_M_1 CASE 54 RETURN -6.2750 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 55 RETURN 37.4400 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 56 RETURN 28.7200 // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 57 RETURN 180.0000 // eActivitySlotName = AC_SLOT_DRINK CASE 58 RETURN 108.6050 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_2 CASE 59 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 60 RETURN 61.5000 CASE 61 RETURN -41.64 CASE 62 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 63 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 64 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 65 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 66 RETURN 265.3990 // eActivitySlotName = AC_SLOT_DRINK CASE 67 RETURN 28.7990 CASE 68 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 69 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 70 RETURN 270.0000 // eActivitySlotName = AC_SLOT_SIT_DRINKING CASE 71 RETURN 97.623 // eActivitySlotName = AC_SLOT_DRINK CASE 73 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 74 RETURN 191.5200 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 75 RETURN 83.3800 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 76 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 77 RETURN 176.3980 // eActivitySlotName = AC_SLOT_AMBIENT_M_6 CASE 78 RETURN 90.0000 // eActivitySlotName = AC_SLOT_AMBIENT_F_4 CASE 79 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 80 RETURN 161.2800 // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 81 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 82 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 83 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 84 RETURN 313.7980 // eActivitySlotName = AC_SLOT_FACE_DJ_F_1 CASE 85 RETURN 120.7 // eActivitySlotName = AC_SLOT_FACE_DJ_F_2 CASE 86 RETURN -34.4750 // eActivitySlotName = AC_SLOT_DRINK ## CHANGED ## CASE 87 RETURN 153.4100 // eActivitySlotName = AC_SLOT_HANGOUT CASE 88 RETURN 95.0000 // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 89 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 90 RETURN 123.5739 // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 91 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 92 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 93 RETURN 74.7240 // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 94 RETURN 149.04 CASE 95 RETURN 118.9990 // eActivitySlotName = AC_SLOT_SMOKE CASE 96 RETURN 237.5990 // eActivitySlotName = AC_SLOT_DRINK CASE 97 RETURN 336.4500 // eActivitySlotName = AC_SLOT_HANGOUT CASE 98 RETURN 218.4740 // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1 CASE 99 RETURN 292.2730 // eActivitySlotName = AC_SLOT_DRINK CASE 101 RETURN 90.0000 // eActivitySlotName = AC_SLOT_LEANING_TEXTING CASE 102 RETURN 270.0000 // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2 CASE 103 RETURN 121.3980 // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 104 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 105 RETURN 122.4000 // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 106 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 107 RETURN 141.1200 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 108 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 109 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 110 RETURN 180.0000 // eActivitySlotName = AC_SLOT_AMBIENT_F_1 CASE 111 RETURN 180.7850 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 112 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 113 RETURN 72.0000 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 114 RETURN 9.2250 // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_3 CASE 115 RETURN 192.5750 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_5 CASE 116 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 117 RETURN 207.3600 CASE 118 RETURN 102.1986 // eActivitySlotName = AC_SLOT_FACE_DJ_M_5 CASE 121 RETURN 270.0000 // eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE 122 RETURN 90.0000 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_1 CASE 123 RETURN 45.3600 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 124 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID CASE 1 RETURN 90.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_M_5 CASE 2 RETURN 123.2750 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 3 RETURN 77.1240 // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 4 RETURN 144.7200 // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 5 RETURN 172.8050 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 6 RETURN 36.4250 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 8 RETURN 90.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 10 RETURN 84.3500 // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 11 RETURN 30.4740 // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 12 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 13 RETURN 274.1250 CASE 14 RETURN 102.3000 // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 15 RETURN 94.0750 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_2 CASE 16 RETURN 114.6750 // eActivitySlotName = AC_SLOT_GROUP_M_4 CASE 17 RETURN 72.8000 // eActivitySlotName = AC_SLOT_FACE_DJ_M_1 CASE 18 RETURN 180.0000 // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 19 RETURN 358.6000 // eActivitySlotName = AC_SLOT_CAGE_DANCING_LAP_SCENARIO CASE 20 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 22 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 25 RETURN 39.6000 // eActivitySlotName = AC_SLOT_FACE_DJ_M_2 CASE 26 RETURN 120.0000 // eActivitySlotName = AC_SLOT_FACE_DJ_F_2 CASE 27 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 28 RETURN 121.4750 // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 29 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 30 RETURN 90.1990 // eActivitySlotName = AC_SLOT_FACE_DJ_M_1 CASE 32 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 33 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 36 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 37 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 38 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 40 RETURN 224.9990 // eActivitySlotName = AC_SLOT_GUARDING CASE 45 RETURN 133.2557 // eActivitySlotName = AC_SLOT_GUARDING CASE 46 RETURN 88.3970 // eActivitySlotName = AC_SLOT_GUARDING CASE 47 RETURN 314.4847 // eActivitySlotName = AC_SLOT_GUARDING CASE 50 RETURN 120.2502 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 51 RETURN 77.2450 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 53 RETURN 90.0000 // eActivitySlotName = AC_SLOT_AMBIENT_F_6 CASE 54 RETURN 105.2500 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 55 RETURN 144.8900 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 56 RETURN 157.3700 // eActivitySlotName = AC_SLOT_GROUP_F_1 CASE 57 RETURN 331.7500 // eActivitySlotName = AC_SLOT_DRINK CASE 58 RETURN 86.0800 CASE 59 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 60 RETURN 0.0000 CASE 61 RETURN -200.4150 // eActivitySlotName = AC_SLOT_HANGOUT CASE 62 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 63 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 64 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 65 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 66 RETURN 270.0000 // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 CASE 67 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 68 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 69 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 70 RETURN 90.0000 // eActivitySlotName = AC_SLOT_SIT_DRINKING CASE 71 RETURN -89.1900 // eActivitySlotName = AC_SLOT_HANGOUT CASE 72 RETURN 40.5000 // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 73 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 74 RETURN 193.7950 // eActivitySlotName = AC_SLOT_GROUP_F_5 CASE 75 RETURN 48.685 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 76 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 77 RETURN 180.0000 // eActivitySlotName = AC_SLOT_AMBIENT_F_1 CASE 78 RETURN 90.0000 // eActivitySlotName = AC_SLOT_AMBIENT_M_4 CASE 79 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 80 RETURN 164.8300 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 81 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 82 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 83 RETURN 180.0000 // eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE 84 RETURN 270.0000 // eActivitySlotName = AC_SLOT_LEANING_TEXTING CASE 86 RETURN -5.5750 // eActivitySlotName = AC_SLOT_HANGOUT CASE 87 RETURN 172.2850 // eActivitySlotName = AC_SLOT_DRINK CASE 88 RETURN 67.2750 // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 89 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 90 RETURN 143.1489 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 91 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 92 RETURN 101.3150 // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 93 RETURN 153.9740 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 94 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 95 RETURN 116.0990 // eActivitySlotName = AC_SLOT_DRINK CASE 96 RETURN 90.0 CASE 97 RETURN 288.7500 // eActivitySlotName = AC_SLOT_HANGOUT CASE 98 RETURN 16.3550 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_3 CASE 99 RETURN 322.5980 // eActivitySlotName = AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 CASE 102 RETURN 226.6750 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_1 CASE 103 RETURN 89.0730 // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_1 CASE 104 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 105 RETURN 55.5750 // eActivitySlotName = AC_SLOT_GROUP_M_3 CASE 106 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 107 RETURN 159.7950 // eActivitySlotName = AC_SLOT_GROUP_M_2 CASE 108 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 109 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 110 RETURN 180.0000 // eActivitySlotName = AC_SLOT_AMBIENT_M_2 CASE 111 RETURN 235.8350 // eActivitySlotName = AC_SLOT_GROUP_F_4 CASE 112 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 113 RETURN 72.0000 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 114 RETURN 167.8500 // eActivitySlotName = AC_SLOT_SINGLE_PROP_F_3 CASE 115 RETURN 343.8250 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_5 CASE 116 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) CASE 117 RETURN 134.1237 // eActivitySlotName = AC_SLOT_FACE_DJ_F_4 CASE 118 RETURN 94.0486 // eActivitySlotName = AC_SLOT_FACE_DJ_F_3 CASE 121 RETURN 180.0000 CASE 122 RETURN 90.0000 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_1 CASE 123 RETURN 28.6100 // eActivitySlotName = AC_SLOT_SINGLE_PROP_M_6 CASE 124 RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) ENDSWITCH BREAK ENDSWITCH RETURN -1.0 ENDFUNC FUNC FLOAT GetTonyHeading() SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING RETURN 90.0 CASE NSS_COMPLETED_STAFF_ONLY RETURN 311.7981 CASE NSS_COMPLETED_EQUIP_ONLY RETURN 90.0 CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT RETURN -180.000 CASE NSS_FULLY_SETUP SWITCH g_iNightClubTonyPosition CASE 0 RETURN 90.0 CASE 1 RETURN 180.0 CASE 2 RETURN 180.0 CASE 3 RETURN 172.0 CASE 4 RETURN 90.0 CASE 5 RETURN 180.0 CASE 6 RETURN 88.438 CASE 7 RETURN 70.4680 CASE 8 RETURN 271.7034 ENDSWITCH BREAK ENDSWITCH RETURN 0.0 ENDFUNC FUNC FLOAT GetLazlowHeading(ACTIVITY_SLOT_NAMES eActivitySlotName) SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING IF eActivitySlotName = AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN RETURN -180.0 ENDIF BREAK CASE NSS_COMPLETED_STAFF_ONLY RETURN 90.0 CASE NSS_COMPLETED_EQUIP_ONLY RETURN 95.76 CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT RETURN -180.000 CASE NSS_FULLY_SETUP IF g_bTurnOnNCCustomerPeds IF IsLazlowGoingToDoAnnouncement() RETURN 0.0 ELSE SWITCH g_iNightClubLazlowPosition CASE 0 // dancing RETURN 90.0 CASE 1 // railing CASE 2 // chair CASE 3 // podium RETURN 0.0 CASE 4 // in toilet CASE 5 // bar CASE 6 // sofa RETURN 0.0 CASE 7 // alone RETURN -80.0 ENDSWITCH ENDIF ELSE RETURN -180.000 ENDIF BREAK ENDSWITCH RETURN 0.0 ENDFUNC FUNC FLOAT GET_NIGHTCLUB_PED_HEADING(INT iNightclubPedID, ACTIVITY_SLOT_NAMES eActivitySlotName, BOOL bIgnoreEditor=FALSE) IF NOT (bIgnoreEditor) #IF IS_DEBUG_BUILD IF (g_bNightClubPedEditorActive) AND (iNightclubPedID > -1) AND (g_fNightClubPedHeading[iNightclubPedID] != -1.0) RETURN g_fNightClubPedHeading[iNightclubPedID] ENDIF #ENDIF ENDIF // djs SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN CASE DJ_DIXON CASE DJ_BLACK_MADONNA SWITCH iNightclubPedID CASE 34 RETURN 0.0 ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH iNightclubPedID CASE 34 RETURN 0.0 CASE 119 RETURN 0.0 ENDSWITCH BREAK ENDSWITCH // entourage IF g_bTurnOnNCDJEntourage SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN SWITCH iNightclubPedID CASE 7 RETURN 270.000 CASE 21 RETURN 270.000 CASE 23 RETURN 180.000 CASE 24 RETURN 180.000 CASE 31 RETURN 270.0000 CASE 35 RETURN 246.8739 CASE 100 RETURN 290.8500 CASE 119 RETURN 296.0898 CASE 120 RETURN 307.4500 ENDSWITCH BREAK CASE DJ_DIXON SWITCH iNightclubPedID CASE 7 RETURN 46.2988 CASE 21 RETURN 37.4912 CASE 23 RETURN 28.2821 CASE 24 RETURN 66.6067 CASE 31 RETURN 75.8284 CASE 35 RETURN 155.9619 CASE 100 RETURN 316.4757 CASE 119 RETURN 267.6706 CASE 120 RETURN 251.2963 ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH iNightclubPedID CASE 7 RETURN 270.0 CASE 21 RETURN 46.2988 CASE 23 RETURN 37.4912 CASE 24 RETURN 28.2821 CASE 31 RETURN 270.0 CASE 35 RETURN 203.3489 CASE 100 RETURN 350.4 //CASE 119 RETURN 155.9619 CASE 120 RETURN 307.45 ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH iNightclubPedID CASE 7 RETURN 270.0 CASE 21 RETURN 37.4912 CASE 23 RETURN 28.2821 CASE 24 RETURN 66.6067 CASE 31 RETURN 270.0 CASE 35 RETURN 215.97 CASE 100 RETURN 320.725 CASE 119 RETURN 155.9619 CASE 120 RETURN 307.45 ENDSWITCH BREAK ENDSWITCH ENDIF // special cases SWITCH iNightclubPedID CASE 0 SWITCH g_iNightClubSetupState CASE NSS_COMPLETED_NOTHING CASE NSS_COMPLETED_STAFF_ONLY RETURN 89.2000 CASE NSS_COMPLETED_EQUIP_ONLY RETURN 104.3978 CASE NSS_COMPLETED_STAFF_AND_EQUIPMENT RETURN 104.3978 CASE NSS_FULLY_SETUP IF g_bTurnOnNCCustomerPeds RETURN 47.160 ENDIF BREAK ENDSWITCH BREAK CASE 9 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN -2.520 ELSE RETURN 358.0000 ENDIF BREAK CASE 31 RETURN 270.0000 // eActivitySlotName = AC_SLOT_AMBIENT_M_4 CASE 35 RETURN 246.8739 // eActivitySlotName = AC_SLOT_AMBIENT_M_5 CASE 39 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) RETURN 157.4273 ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) RETURN 99.5985 ELSE RETURN GET_HEADING_OFFSET_FOR_CHILD_ACTIVITY(eActivitySlotName) ENDIF BREAK CASE 41 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) RETURN 167.9987 ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) RETURN 258.5985 ELSE RETURN 82.4400 ENDIF BREAK CASE 42 IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) RETURN -90.0 ELIF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) RETURN -111.600 ELSE RETURN 299.3990 ENDIF BREAK CASE 43 RETURN GetTonyHeading() CASE 44 RETURN GetLazlowHeading(eActivitySlotName) CASE 48 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN -2.520 ELSE RETURN 356.1990 ENDIF BREAK CASE 49 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE // If the downstairs bartender is running the yacht sync scene RETURN 140.040 ELSE RETURN 141.7980 ENDIF BREAK ENDSWITCH SWITCH g_iNightClubPedsHallwayLayout CASE 0 SWITCH iNightclubPedID // HallwayPeds Layout 1 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE RETURN 278.3990 ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL RETURN -85.250 ENDIF BREAK ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID // HallwayPeds Layout2 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE RETURN 278.3990 ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL RETURN -85.250 ENDIF BREAK ENDSWITCH BREAK CASE 2 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE RETURN 278.3990 ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL RETURN -85.250 ENDIF BREAK ENDSWITCH BREAK CASE 3 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 146 IF eActivitySlotName = AC_SLOT_BARTENDER_YACHT_IDLE RETURN 278.3990 ELIF eActivitySlotName = AC_SLOT_CLOAKROOM_STOOL RETURN -85.250 ENDIF BREAK ENDSWITCH BREAK ENDSWITCH SWITCH g_iNightClubPedsHallwayLayout CASE 0 SWITCH iNightclubPedID CASE 147 RETURN -175.000 CASE 148 RETURN 26.7980 CASE 149 RETURN 190.1980 CASE 150 RETURN 222.7970 CASE 151 RETURN 17.7980 CASE 152 RETURN 100.1980 CASE 153 RETURN 260.8220 CASE 154 RETURN 79.8220 CASE 155 RETURN 145.5980 CASE 156 RETURN 7.3990 ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID CASE 147 RETURN -175.000 CASE 148 RETURN 181.3550 CASE 149 RETURN 3.3798 CASE 150 RETURN 7.3990 CASE 151 RETURN 192.3990 CASE 152 RETURN 4.1990 CASE 153 RETURN 209.7470 CASE 154 RETURN 141.0470 CASE 155 RETURN 270.0000 ENDSWITCH BREAK CASE 2 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 147 RETURN -175.000 CASE 148 RETURN 5.3740 CASE 149 RETURN 194.3980 CASE 150 RETURN 250.5230 CASE 151 RETURN 68.5980 CASE 152 RETURN 357.9970 CASE 153 RETURN 190.5960 CASE 154 RETURN 86.7605 ENDSWITCH BREAK CASE 3 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 147 RETURN -175.000 ENDSWITCH BREAK ENDSWITCH SWITCH g_iNightClubPedsToiletLayout CASE 0 SWITCH iNightclubPedID // HallwayPeds Layout 1 CASE 157 RETURN 222.3817 CASE 158 RETURN 86.6230 CASE 159 RETURN 272.1990 CASE 160 RETURN 270.0000 CASE 161 RETURN 261.4000 ENDSWITCH BREAK CASE 1 SWITCH iNightclubPedID // HallwayPeds Layout2 CASE 157 RETURN 222.3817 CASE 158 RETURN 345.5402 CASE 159 RETURN 99.1431 CASE 160 RETURN 115.6280 CASE 161 RETURN 261.4000 ENDSWITCH BREAK CASE 2 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 157 RETURN 222.3817 CASE 158 RETURN 270.0000 CASE 159 RETURN 99.1431 CASE 160 RETURN 182.3817 CASE 161 RETURN 293.9320 ENDSWITCH BREAK CASE 3 SWITCH iNightclubPedID // HallwayPeds Layout3 CASE 157 RETURN 222.3817 ENDSWITCH BREAK ENDSWITCH RETURN GetNightClubPedHeadingBase(iNightclubPedID, eActivitySlotName) ENDFUNC FUNC BOOL IsNightClubPedHeadingSpecial(INT iNightclubPedID) INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iNightclubPedID, iActivitySlot, bIsRandom) FLOAT fHeading = GET_NIGHTCLUB_PED_HEADING(iNightclubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES,iActivitySlot), TRUE) FLOAT fHeadingBase = GetNightClubPedHeadingBase(iNightclubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES,iActivitySlot)) IF ABSF(fHeading - fHeadingBase) > 0.001 RETURN TRUE ENDIF RETURN FALSE ENDFUNC #IF IS_DEBUG_BUILD FUNC BOOL ARE_ACTIVITIES_IN_VALID_GROUP(ACTIVITY_SLOT_NAMES Parent, ACTIVITY_SLOT_NAMES Child) CDEBUG1LN(DEBUG_NET_PED_DANCING, "ARE_ACTIVITIES_IN_VALID_GROUP - Parent ", GET_SLOT_NAME_STRING(Parent), ", child ", GET_SLOT_NAME_STRING(Child)) SWITCH Parent // ====== single prop ====== CASE AC_SLOT_SINGLE_PROP_F_1 IF (Child = AC_SLOT_SINGLE_PROP_F_2) RETURN TRUE ENDIF BREAK CASE AC_SLOT_SINGLE_PROP_M_2 IF (Child = AC_SLOT_SINGLE_PROP_M_4) RETURN TRUE ENDIF BREAK CASE AC_SLOT_SINGLE_PROP_M_6 IF (Child = AC_SLOT_SINGLE_PROP_F_6) RETURN TRUE ENDIF BREAK // ====== group ====== CASE AC_SLOT_GROUP_M_3 IF (Child = AC_SLOT_GROUP_M_1) RETURN TRUE ENDIF BREAK CASE AC_SLOT_GROUP_F_1 IF (Child = AC_SLOT_GROUP_F_6) OR (Child = AC_SLOT_GROUP_M_6) RETURN TRUE ENDIF BREAK CASE AC_SLOT_GROUP_F_5 IF (Child = AC_SLOT_GROUP_F_3) RETURN TRUE ENDIF BREAK CASE AC_SLOT_GROUP_F_4 IF (Child = AC_SLOT_GROUP_M_4) RETURN TRUE ENDIF BREAK CASE AC_SLOT_GROUP_M_2 IF (Child = AC_SLOT_GROUP_F_2) OR (Child = AC_SLOT_GROUP_M_5) RETURN TRUE ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC #ENDIF PROC InitNightClubPedChildren(NIGHT_CLUB_PEDS &nightClubPed) INT i // make sure initial value is -1 REPEAT MAX_NUMBER_NC_PED_OFFSET_CHILDREN i nightClubPed.iOffsetNCPedChildrenId[i] = -1 ENDREPEAT #IF IS_DEBUG_BUILD INT iActivitySlot BOOL bIsRandom #ENDIF // set value IF (nightClubPed.iNightClubPedID > -1) INT iChildCount = 0 INT iChildNCPedID REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i iChildNCPedID = GET_NIGHTCLUB_PED_OFFSET_NCPEDID(i) IF (nightClubPed.iNightClubPedID = iChildNCPedID) IF (iChildCount < MAX_NUMBER_NC_PED_OFFSET_CHILDREN) PRINTLN("InitNightClubPedChildren - adding child nc id ", i, " for nc ped ", nightClubPed.iNightClubPedID) nightClubPed.iOffsetNCPedChildrenId[iChildCount] = i // check parent and child are of same group #IF IS_DEBUG_BUILD GET_NIGHTCLUB_PED_ACTIVITY_SLOT(i, iActivitySlot, bIsRandom) IF (GetAnimDictFromActivitySlotName(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubPed.iActiveSlot)) != GetAnimDictFromActivitySlotName(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot)) ) PRINTLN("IInitNightClubPedChildren - child not of same anim type!!") SCRIPT_ASSERT("InitNightClubPedChildren - child not of same anim type!") ENDIF IF NOT ARE_ACTIVITIES_IN_VALID_GROUP(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubPed.iActiveSlot), INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot)) PRINTLN("IInitNightClubPedChildren - child not of valid group!!") SCRIPT_ASSERT("InitNightClubPedChildren - child not of valid group!") ENDIF #ENDIF iChildCount++ ELSE SCRIPT_ASSERT("InitNightClubPedChildren - too many children for nc ped!") ENDIF ENDIF ENDREPEAT ENDIF ENDPROC FUNC MODEL_NAMES GET_LAZLOW_STOOL_MODEL() IF IS_PLAYER_NIGHTCLUB_STYLE_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) RETURN INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Int_Stool_Low")) ELIF IS_PLAYER_NIGHTCLUB_STYLE_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) RETURN INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Int_Edgy_Stool")) ELSE RETURN INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Int_Glam_Stool")) ENDIF ENDFUNC PROC ASSIGN_NC_ACTIVITY_PROPS(ACTIVITY_SLOT_NAMES eActivity, NC_ACTIVITY_MAIN &ActivityMain) SWITCH eActivity CASE AC_SLOT_SMOKE CASE AC_SLOT_TOILET_SMOKE_WEED CASE AC_SLOT_LEAN_SMOKE_1 ActivityMain.objectModelName[0] = Prop_CS_Ciggy_01 BREAK CASE AC_SLOT_DANCING_WITH_BEER_SCENARIO CASE AC_SLOT_DANCING_TO_BEER_WALK_SCENARIO ActivityMain.objectModelName[0] = PROP_AMB_BEER_BOTTLE BREAK CASE AC_SLOT_JACK_H ActivityMain.objectModelName[0] = lux_prop_champ_01_luxe ActivityMain.objectModelName[1] = lux_prop_champ_01_luxe BREAK CASE AC_SLOT_USE_COMPUTER IF IS_PLAYER_NIGHTCLUB_STYLE_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Battle_Club_Chair_01")) ELIF IS_PLAYER_NIGHTCLUB_STYLE_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Battle_Club_Chair_02")) ELSE ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Battle_Club_Chair_03")) ENDIF BREAK CASE AC_SLOT_LAZLOW_LOW_BAR ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ex_p_ex_tumbler_01_s")) ActivityMain.objectModelName[1] = GET_LAZLOW_STOOL_MODEL() BREAK CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_hobby_horse")) BREAK CASE AC_SLOT_LAZLOW_HIGH_RAILING ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_glowstick_01")) ActivityMain.objectModelName[1] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_glowstick_01")) BREAK CASE AC_SLOT_LAZLOW_VIP ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_glowstick_01")) ActivityMain.objectModelName[1] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_glowstick_01")) ActivityMain.objectModelName[2] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_mic")) BREAK CASE AC_SLOT_BARTENDER_YACHT_IDLE // ActivityMain.objectModelName[0] = p_whiskey_bottle_s // ActivityMain.objectModelName[1] = p_cs_shot_glass_2_s BREAK CASE AC_SLOT_LEANING_TEXTING CASE AC_SLOT_DANCEFLOOR_TONY_PHONE CASE AC_SLOT_DANCEFLOOR_LAZLOW_BAR_LEAN_PHONE CASE AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN CASE AC_SLOT_DANCEFLOOR_LAZLOW_SELFIE CASE AC_SLOT_TOILET_PHONE CASE AC_SLOT_DANCING_TO_SELFIE_WALK_SCENARIO ActivityMain.objectModelName[0] = PROP_AMB_PHONE BREAK CASE AC_SLOT_WORKER_CLIPBOARD ActivityMain.objectModelName[0] = P_CS_CLIPBOARD BREAK CASE AC_SLOT_DRINK ActivityMain.objectModelName[0] = PROP_AMB_BEER_BOTTLE BREAK CASE AC_SLOT_DANCEFLOOR_HBARTENDER_STOCK_TAKE ActivityMain.objectModelName[0] = PROP_NOTEPAD_02 BREAK CASE AC_SLOT_SIT_DRINKING CASE AC_SLOT_TONY_SIT_DRINK_1 CASE AC_SLOT_TONY_SIT_DRINK_2 ActivityMain.objectModelName[0] = PROP_AMB_BEER_BOTTLE BREAK CASE AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT ActivityMain.objectModelName[0] = PROP_CS_TABLET BREAK CASE AC_SLOT_TALE_OF_US_1 //ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_headphones_dj")) ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("lux_p_champ_flute_s")) BREAK CASE AC_SLOT_TALE_OF_US_2 //ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_headphones_dj")) ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("lux_p_champ_flute_s")) BREAK CASE AC_SLOT_DIXON ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_headphones_dj")) ActivityMain.objectModelName[1] = P_Wine_Glass_S ActivityMain.objectModelName[2] = P_Wine_Glass_S BREAK CASE AC_SLOT_SOLOMUN ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_headphones_dj")) ActivityMain.objectModelName[1] = P_Wine_Glass_S BREAK CASE AC_SLOT_BLACK_MADONNA ActivityMain.objectModelName[0] = P_Tumbler_CS2_S //whiskey glass ActivityMain.objectModelName[1] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_club_water_bottle")) ActivityMain.objectModelName[2] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_fan")) BREAK CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_ENTOURAGE_TAL_2 CASE AC_SLOT_ENTOURAGE_TAL_3 CASE AC_SLOT_ENTOURAGE_SOL_MIKE ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("prop_cs_paper_cup")) BREAK CASE AC_SLOT_AMBIENT_F_2 ActivityMain.objectModelName[0] = PROP_AMB_PHONE ActivityMain.objectModelName[1] = INT_TO_ENUM(MODEL_NAMES, HASH("prop_amb_beer_bottle")) BREAK CASE AC_SLOT_AMBIENT_F_6 //ActivityMain.objectModelName[0] = PROP_AMB_PHONE // Phone clips with hand? ActivityMain.objectModelName[1] = INT_TO_ENUM(MODEL_NAMES, HASH("prop_amb_beer_bottle")) BREAK CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_GROUP_M_3 CASE AC_SLOT_GROUP_F_2 CASE AC_SLOT_GROUP_F_3 CASE AC_SLOT_GROUP_F_4 CASE AC_SLOT_GROUP_F_6 CASE AC_SLOT_ENTOURAGE_TAL_1 ActivityMain.objectModelName[0] = PROP_AMB_PHONE BREAK CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 CASE AC_SLOT_ENTOURAGE_SOL_2 CASE AC_SLOT_ENTOURAGE_SOL_3 CASE AC_SLOT_ENTOURAGE_SOL_4 CASE AC_SLOT_ENTOURAGE_SOL_ROB ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("prop_amb_beer_bottle")) BREAK CASE AC_SLOT_GROUP_M_2 //CASE AC_SLOT_GROUP_F_5 ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_vape_01")) BREAK CASE AC_SLOT_GROUP_M_4 ActivityMain.objectModelName[0] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_vape_01")) ActivityMain.objectModelName[1] = INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_vape_01")) BREAK DEFAULT ActivityMain.objectModelName[0] = DUMMY_MODEL_FOR_SCRIPT BREAK ENDSWITCH ENDPROC PROC CLEAR_ACTIVITY_PROPS_DATA(NC_ACTIVITY_MAIN &ActivityMain) ActivityMain.activityAnimSequence.activitySyncScene.PhaseToStartScene = 0.0 ActivityMain.activityAnimSequence.activitySyncScene.PhaseToStopScene = 1.0 INT i REPEAT iNCMaxSyncScenePedInSequence i ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict = "" ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip = "" ENDREPEAT i = 0 REPEAT iNCMaxSyncSceneEntityInSequence i ActivityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimDict = "" ActivityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimClip = "" ActivityMain.objectModelName[i] = DUMMY_MODEL_FOR_SCRIPT ENDREPEAT ENDPROC FUNC BOOL IS_RANDOM_ACTIVITY_SLOT_APPLICABLE(ACTIVITY_SLOT_NAMES eSlotName) SWITCH eSlotName CASE AC_SLOT_FACE_DJ_M_1 CASE AC_SLOT_FACE_DJ_M_2 CASE AC_SLOT_FACE_DJ_M_3 CASE AC_SLOT_FACE_DJ_M_4 CASE AC_SLOT_FACE_DJ_M_5 CASE AC_SLOT_FACE_DJ_M_6 CASE AC_SLOT_FACE_DJ_F_1 CASE AC_SLOT_FACE_DJ_F_2 CASE AC_SLOT_FACE_DJ_F_3 CASE AC_SLOT_FACE_DJ_F_4 CASE AC_SLOT_FACE_DJ_F_5 CASE AC_SLOT_FACE_DJ_F_6 CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_5 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_F_5 CASE AC_SLOT_AMBIENT_F_6 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC STRUCT NC_PED_DATA MODEL_NAMES mnPedModel = DUMMY_MODEL_FOR_SCRIPT PED_COMPONENT_STRUCT pcsComponents[NUM_PED_COMPONENTS] PED_PROP_STRUCT ppsProps[NUM_PED_PROPS] WEAPON_TYPE weaponType = WEAPONTYPE_UNARMED ENDSTRUCT PROC GET_NC_PED_LAZLOW_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_lazlow_2")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT // pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 // pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC PROC GET_NC_PED_TRACEY_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_tracydisanto")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 3 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 5 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 3 ENDPROC PROC GET_NC_PED_POPPY_M_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("u_f_y_poppymich_02")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 ENDPROC PROC GET_NC_PED_TEST_GIB(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("prop_ped_gib_01")) ENDPROC PROC GET_NC_PED_JACK_H_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("csb_jackhowitzer")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 ENDPROC PROC GET_NC_PED_TONY_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_tonyprince")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.ppsProps[ANCHOR_EYES].iPropIndex = 0 pedData.ppsProps[ANCHOR_EYES].iTexIndex= 0 ENDPROC PROC GET_NC_JUSTIN_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("u_m_y_justin")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 ENDPROC FUNC BOOL SHOULD_USE_RANDOMISED_COMPONENTS(INT iNCPedID) NC_PED_TYPES ncPedType = GET_NIGHTCLUB_PED_TYPE(iNCPedID) SWITCH ncPedType CASE NC_HIPSTER_M CASE NC_HIPSTER_F RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC #IF IS_DEBUG_BUILD PROC OUTPUT_PED_VARIATIONS(PED_INDEX PedID) INT iDrawables INT iTextures IF DOES_ENTITY_EXIST(PedID) STRING str = GET_MODEL_NAME_FOR_DEBUG(GET_ENTITY_MODEL(PedID)) PRINTLN("OUTPUT_PED_VARIATIONS - for model ", str) INT j, k REPEAT NUM_PED_COMPONENTS j PRINTLN("OUTPUT_PED_VARIATIONS - Component ", j) iDrawables = GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PedID, INT_TO_ENUM(PED_COMPONENT, j)) PRINTLN("OUTPUT_PED_VARIATIONS - drawables ", iDrawables) REPEAT iDrawables k iTextures = GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PedID, INT_TO_ENUM(PED_COMPONENT, j), k) PRINTLN("OUTPUT_PED_VARIATIONS - drawable ", k, " textures ", iTextures) ENDREPEAT ENDREPEAT ENDIF ENDPROC #ENDIF PROC GET_NC_PED_HIPSTER_M_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = GET_CLIENTELE_MODEL(FALSE) pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC PROC GET_NC_PED_NC_DJ_SOLOMUN_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("IG_Sol")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_NC_DJ_TALE_OF_US_DATA(NC_PED_DATA &pedData, INT iDJ) INT j IF (iDJ = 0) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("IG_TalCC")) REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT // Headphones pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 0 ELSE pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("IG_TalMM")) REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT // Headphones pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 0 ENDIF ENDPROC PROC GET_NC_PED_NC_DJ_DIXON_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("IG_Dix")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_NC_DJ_BLACK_MADONNA_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("IG_DJBlaMadon")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT // glasses pedData.ppsProps[ANCHOR_EYES].iPropIndex = 0 pedData.ppsProps[ANCHOR_EYES].iTexIndex = 0 // Headphones pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 0 ENDPROC PROC GET_NC_PED_BOUNCER_HEAD_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("s_m_y_clubbar_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT //pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 2 //pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 2 //pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 //pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 2 ENDPROC PROC GET_NC_PED_BOUNCER_DJ_BOOTH_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_M_Bouncer_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 5 pedData.pcsComponents[PED_COMP_JBIB].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_JBIB].NewTextureNumber = 1 ENDPROC PROC GET_NC_PED_BOUNCER_TOILET_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_M_Bouncer_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 2 ENDPROC PROC GET_NC_PED_BUSBOY_TOILET_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_Y_ClubBar_01")) //HASH("S_M_Y_BusBoy_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 2 //pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 0 //pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 1 //pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 1 //pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 ENDPROC PROC GET_NC_PED_SOL_MANAGER_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djsolmanager")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_SOL_MIKE_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djsolmike")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_SOL_ROBT_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djsolrobt")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_SOL_JAKOB_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djsoljakob")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_SOL_FOTIOS_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djsolfotios")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.ppsProps[ANCHOR_EYES].iPropIndex = 0 ENDPROC PROC GET_NC_PED_BLAM_RUPERT_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djblamrupert")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_BLAM_RYANH_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djblamryanh")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_BLAM_RYANS_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djblamryans")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_DIX_MANAGER_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djdixmanager")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_TAL_AURELIA_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djtalaurelia")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_TAL_IGNAZIO_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_djtalignazio")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_WAREHOUSE_TECH_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_Y_WareTech_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 5 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 5 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 5 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 4 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 ENDPROC PROC GET_NC_PED_BOUNCER_VIP_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_M_Bouncer_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 4 ENDPROC PROC GET_NC_PODIUM_STYLE_1_M_1_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_M_Y_DanceRave_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_TEETH].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TEETH].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = -1 ENDPROC PROC GET_NC_PODIUM_STYLE_1_M_2_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_M_Y_DanceRave_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_JBIB].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_JBIB].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 1 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 0 ENDPROC PROC GET_NC_PODIUM_STYLE_2_M_1_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_M_Y_DanceLthr_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.ppsProps[ANCHOR_LEFT_WRIST].iPropIndex = 0 pedData.ppsProps[ANCHOR_LEFT_WRIST].iTexIndex = 0 pedData.ppsProps[ANCHOR_EARS].iPropIndex = -1 pedData.ppsProps[ANCHOR_EARS].iTexIndex = -1 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = -1 ENDPROC PROC GET_NC_PODIUM_STYLE_2_M_2_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_M_Y_DanceLthr_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_JBIB].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_JBIB].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_LEFT_WRIST].iPropIndex = 1 pedData.ppsProps[ANCHOR_LEFT_WRIST].iTexIndex = 0 pedData.ppsProps[ANCHOR_EARS].iPropIndex = 0 pedData.ppsProps[ANCHOR_EARS].iTexIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 0 ENDPROC PROC GET_NC_PODIUM_STYLE_3_M_1_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_M_Y_DanceBurl_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PODIUM_STYLE_3_M_2_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_M_Y_DanceBurl_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_BERD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_BERD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 ENDPROC PROC GET_NC_PODIUM_STYLE_1_F_1_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_DanceRave_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PODIUM_STYLE_1_F_2_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_DanceRave_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_JBIB].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_JBIB].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 0 ENDPROC PROC GET_NC_PODIUM_STYLE_2_F_1_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_DanceLthr_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.ppsProps[ANCHOR_LEFT_WRIST].iPropIndex = 0 pedData.ppsProps[ANCHOR_LEFT_WRIST].iTexIndex = 0 ENDPROC PROC GET_NC_PODIUM_STYLE_2_F_2_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_DanceLthr_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_JBIB].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_JBIB].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_LEFT_WRIST].iPropIndex = 1 pedData.ppsProps[ANCHOR_LEFT_WRIST].iTexIndex = 0 ENDPROC PROC GET_NC_PODIUM_STYLE_3_F_1_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_DanceBurl_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PODIUM_STYLE_3_F_2_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_DanceBurl_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_FEET].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_FEET].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 ENDPROC PROC GET_NC_PED_BOUNCER_DANCEFLOOR_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_M_Bouncer_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_BOUNCER_0_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_M_Bouncer_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 ENDPROC // Cloakroom Assistant: PROC GET_NC_PED_BUSINESS_CLOAKROOM(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_F_Y_ClubBar_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 1 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC // Male Bartender (lower bar): PROC GET_NC_PED_DEFAULT_BARMAN_DOWNSTAIRS_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_Y_ClubBar_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC // Female Bartender (lower bar): PROC GET_NC_PED_UPGRADE_BARMAN_DOWNSTAIRS_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_F_Y_ClubBar_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 1 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC // Head Bartender (upper bar): PROC GET_NC_PED_HEAD_BARMAN_UPSTAIRS_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_F_Y_ClubBar_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC //Male Bartender (upper bar): PROC GET_NC_PED_UPGRADE_BARMAN_UPSTAIRS_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_Y_ClubBar_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 1 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC PROC GET_NC_PED_WORKER_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("S_M_M_Gaffer_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 0 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 0 // pedData.ppsProps[ANCHOR_EYES].iPropIndex = 1 ENDPROC PROC GET_NC_PED_HIPSTER_F_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = GET_CLIENTELE_MODEL(TRUE) pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 ENDPROC PROC GET_NC_PED_BUNKER_SEAT_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = GET_CLIENTELE_MODEL(TRUE) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT SWITCH g_iNightClubClientele CASE 0 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 3 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 3 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 BREAK CASE 1 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 3 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 3 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 BREAK CASE 2 pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 1 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 3 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 5 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = -1 pedData.ppsProps[ANCHOR_EYES].iPropIndex = -1 BREAK ENDSWITCH ENDPROC PROC GET_NC_PED_JIMMY_BOSTON_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_jimmyboston_02")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_KERRY_MCINTOSH_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_kerrymcintosh_02")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_MIRANDA_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("u_f_m_miranda_02")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_MIRANDA_ASSISTANT_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("U_F_Y_Mistress")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_TYLERDIX_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_tylerdix_02")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_TYLER_ASSISTANT_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = GET_CLIENTELE_MODEL(FALSE) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT pedData.pcsComponents[PED_COMP_HEAD].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_HEAD].NewTextureNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_HAIR].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_TORSO].NewDrawableNumber = 2 pedData.pcsComponents[PED_COMP_TORSO].NewTextureNumber = 1 pedData.pcsComponents[PED_COMP_LEG].NewDrawableNumber = 4 pedData.pcsComponents[PED_COMP_LEG].NewTextureNumber = 0 pedData.pcsComponents[PED_COMP_SPECIAL].NewDrawableNumber = 4 pedData.pcsComponents[PED_COMP_SPECIAL].NewTextureNumber = 0 pedData.ppsProps[ANCHOR_HEAD].iPropIndex = 2 pedData.ppsProps[ANCHOR_HEAD].iTexIndex = 2 ENDPROC PROC GET_NC_PED_LACEYJ_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("IG_Lacey_Jones_02")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC GET_NC_PED_GUIDO_DATA(NC_PED_DATA &pedData) pedData.mnPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("u_m_y_guido_01")) INT j REPEAT NUM_PED_COMPONENTS j pedData.pcsComponents[j].NewDrawableNumber = 0 pedData.pcsComponents[j].NewTextureNumber = 0 pedData.pcsComponents[j].NewPaletteNumber = 0 ENDREPEAT ENDPROC PROC CLEAR_NC_PED_DATA_STRUCT(NC_PED_DATA &pedData) pedData.mnPedModel = DUMMY_MODEL_FOR_SCRIPT INT j REPEAT NUM_PED_COMPONENTS j // CDEBUG1LN(DEBUG_NET_ACTIVITY_CREATOR, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_ACTIVITY_CHECK: [", j, "] ", GET_PED_COMPONENT_NAME(INT_TO_ENUM(PED_COMPONENT,j)), ", NewDrawableNumber = ", ActivityMain.pedData[i].ComponentData[j].NewDrawableNumber, ", NewTextureNumber = ", ActivityMain.pedData[i].ComponentData[j].NewTextureNumber, ", NewPaletteNumber = ", ActivityMain.pedData[i].ComponentData[j].NewPaletteNumber) pedData.pcsComponents[j].NewDrawableNumber = -1 pedData.pcsComponents[j].NewTextureNumber = -1 pedData.pcsComponents[j].NewPaletteNumber = -1 ENDREPEAT INT k REPEAT NUM_PED_PROPS k pedData.ppsProps[k].iPropIndex = -1 pedData.ppsProps[k].iTexIndex = 0 ENDREPEAT ENDPROC FUNC BOOL SHOULD_HIDE_PED_FOR_CUTSCENES(INT iNCPedID) IF IS_PLAYER_LOCALLY_RUNNING_NIGHTCLUB_MOCAP() SWITCH iNCPedID CASE 0 CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 8 CASE 11 CASE 12 CASE 15 CASE 16 CASE 17 CASE 18 CASE 19 CASE 20 CASE 22 CASE 25 CASE 26 CASE 27 CASE 28 CASE 29 CASE 30 CASE 36 CASE 37 CASE 38 CASE 39 CASE 50 CASE 53 CASE 55 CASE 60 CASE 65 CASE 67 CASE 68 CASE 72 CASE 73 CASE 75 CASE 77 CASE 78 CASE 79 CASE 81 CASE 88 CASE 89 CASE 90 CASE 91 CASE 92 CASE 110 CASE 114 CASE 115 CASE 119 RETURN FALSE ENDSWITCH RETURN TRUE ENDIF IF IS_NC_PED_ENTOURAGE(GET_NIGHTCLUB_PED_TYPE(iNCPedID)) OR iNCPedID = 31 OR iNCPedID = 34 OR iNCPedID = 43 OR iNCPedID = 119 RETURN TRUE ENDIF IF iNCPedID = 147 RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL SHOULD_UNHIDE_PED_FOR_SOL_CUTSCENE(INT iNCPedID) SWITCH iNCPedID CASE 6 CASE 10 CASE 23 CASE 24 CASE 32 CASE 33 CASE 50 CASE 51 CASE 54 CASE 56 CASE 59 CASE 62 CASE 63 CASE 64 CASE 69 CASE 80 CASE 82 CASE 83 CASE 86 CASE 87 CASE 95 CASE 96 CASE 97 CASE 103 CASE 104 CASE 105 CASE 106 CASE 113 CASE 116 CASE 118 CASE 122 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC PROC UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP(NIGHT_CLUB_STRUCT &nightClubStruct) IF g_ncState = NC_STAGE_INIT EXIT ENDIF INT i INT j IF IS_PLAYER_LOCALLY_RUNNING_NIGHTCLUB_MOCAP() OR nightClubStruct.bPlayDjEnterCutscene OR IS_PLAYER_IN_SIMPLE_CUTSCENE(PLAYER_ID()) IF NOT (nightClubStruct.bHiddenForMocap) PRINTLN("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP - hidding peds for mocap") BOOL bHidePed REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i bHidePed = TRUE IF g_iNightClubSetupState = NSS_FULLY_SETUP AND NOT SHOULD_HIDE_PED_FOR_CUTSCENES(nightClubStruct.activityPeds[i].iNightClubPedID) PRINTLN("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP - g_iNightClubSetupState = NSS_FULLY_SETUP - Not hiding dancefloor peds") bHidePed = FALSE ENDIF IF bHidePed IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[i].piScenePeds, FALSE) REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].oiSceneObjects[j]) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].oiSceneObjects[j]) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[i].oiSceneObjects[j], FALSE) PRINTLN("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP - hidding nc ped ", nightClubStruct.activityPeds[i].iNightClubPedID, " Prop being hidden: ", GET_MODEL_NAME_FOR_DEBUG(GET_ENTITY_MODEL(nightClubStruct.activityPeds[i].oiSceneObjects[j]))) ENDIF ENDREPEAT PRINTLN("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP - hidding nc ped ", nightClubStruct.activityPeds[i].iNightClubPedID) ENDIF ENDIF ENDREPEAT nightClubStruct.bHiddenForMocap = TRUE nightClubStruct.bUseCameraForCulling = TRUE IF IS_PLAYER_LOCALLY_RUNNING_NIGHTCLUB_MOCAP() AND g_iNightClubSetupState = NSS_FULLY_SETUP START_NET_TIMER(nightClubStruct.stSolUnhideTimer) ENDIF ELIF HAS_NET_TIMER_STARTED(nightClubStruct.stSolUnhideTimer) AND HAS_NET_TIMER_EXPIRED(nightClubStruct.stSolUnhideTimer, 89000) PRINTLN("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP - showing peds at 1:29 in sol cutscene") // unhide peds half way though REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF SHOULD_UNHIDE_PED_FOR_SOL_CUTSCENE(nightClubStruct.activityPeds[i].iNightClubPedID) AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[i].piScenePeds, TRUE) REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].oiSceneObjects[j]) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].oiSceneObjects[j]) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[i].oiSceneObjects[j], TRUE) ENDIF ENDREPEAT ENDIF ENDREPEAT RESET_NET_TIMER(nightClubStruct.stSolUnhideTimer) ENDIF ELSE IF (nightClubStruct.bHiddenForMocap) RESET_NET_TIMER(nightClubStruct.stSolUnhideTimer) PRINTLN("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP - showing peds after mocap") REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[i].piScenePeds, TRUE) REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].oiSceneObjects[j]) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].oiSceneObjects[j]) AND NOT (j < 2 // lazlow glowsticks - not visible yet AND nightClubStruct.activityPeds[i].eActiveActivity = AC_SLOT_LAZLOW_VIP AND nightClubStruct.activityPeds[i].iCurrentSequence != 8) SET_ENTITY_VISIBLE(nightClubStruct.activityPeds[i].oiSceneObjects[j], TRUE) ENDIF ENDREPEAT ENDIF ENDREPEAT nightClubStruct.bHiddenForMocap = FALSE nightClubStruct.bUseCameraForCulling = FALSE ENDIF ENDIF ENDPROC PROC GENERATE_PED_FOR_NIGHTCLUB_ACTIVITY( NC_PED_TYPES ePeds, NC_PED_DATA &pedData) #IF IS_DEBUG_BUILD STRING str = GET_NC_PED_TYPE_STRING(ePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "GENERATE_PED_FOR_NIGHTCLUB_ACTIVITY: Getting ped data for ", str) #ENDIF CLEAR_NC_PED_DATA_STRUCT(pedData) SWITCH ePeds CASE NC_BOUNCER_HALLWAY GET_NC_PED_BOUNCER_0_DATA(pedData) BREAK CASE NC_BUSINESS_CLOAKROOM GET_NC_PED_BUSINESS_CLOAKROOM(pedData) BREAK CASE NC_DEFAULT_BARMAN_DOWNSTAIRS GET_NC_PED_DEFAULT_BARMAN_DOWNSTAIRS_DATA(pedData) BREAK CASE NC_HEAD_BARMAN_UPSTAIRS GET_NC_PED_HEAD_BARMAN_UPSTAIRS_DATA(pedData) BREAK CASE NC_UPGRADE_BARMAN_UPSTAIRS GET_NC_PED_UPGRADE_BARMAN_UPSTAIRS_DATA(pedData) BREAK CASE NC_UPGRADE_BARMAN_DOWNSTAIRS GET_NC_PED_UPGRADE_BARMAN_DOWNSTAIRS_DATA(pedData) BREAK CASE NC_WORKER GET_NC_PED_WORKER_DATA(pedData) BREAK CASE NC_DJ IF NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) != -1 SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN GET_NC_PED_NC_DJ_SOLOMUN_DATA(pedData) BREAK CASE DJ_DIXON GET_NC_PED_NC_DJ_DIXON_DATA(pedData) BREAK CASE DJ_TALE_OF_US GET_NC_PED_NC_DJ_TALE_OF_US_DATA(pedData, 0) BREAK CASE DJ_BLACK_MADONNA GET_NC_PED_NC_DJ_BLACK_MADONNA_DATA(pedData) BREAK ENDSWITCH ENDIF BREAK CASE NC_DJ_2 IF NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) != -1 SWITCH g_eCurrentPlayingDJ CASE DJ_TALE_OF_US GET_NC_PED_NC_DJ_TALE_OF_US_DATA(pedData, 1) BREAK ENDSWITCH ENDIF BREAK CASE NC_HIPSTER_M GET_NC_PED_HIPSTER_M_DATA(pedData) BREAK CASE NC_HIPSTER_F GET_NC_PED_HIPSTER_F_DATA(pedData) BREAK CASE NC_LAZLOW GET_NC_PED_LAZLOW_DATA(pedData) BREAK CASE NC_TRACEY GET_NC_PED_TRACEY_DATA(pedData) BREAK CASE NC_JACK_H GET_NC_PED_JACK_H_DATA(pedData) BREAK CASE NC_TONY GET_NC_PED_TONY_DATA(pedData) BREAK CASE NC_JUSTIN GET_NC_JUSTIN_DATA(pedData) BREAK CASE NC_TEST_GIB GET_NC_PED_TEST_GIB(pedData) BREAK CASE NC_BOUNCER_HEAD GET_NC_PED_BOUNCER_HEAD_DATA(pedData) BREAK CASE NC_BOUNCER_DJ_BOOTH GET_NC_PED_BOUNCER_DJ_BOOTH_DATA(pedData) BREAK CASE NC_BOUNCER_TOILET GET_NC_PED_BOUNCER_TOILET_DATA(pedData) BREAK CASE NC_BOUNCER_DANCEFLOOR GET_NC_PED_BOUNCER_DANCEFLOOR_DATA(pedData) BREAK CASE NC_BOUNCER_VIP GET_NC_PED_BOUNCER_VIP_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_1_M_1 GET_NC_PODIUM_STYLE_1_M_1_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_1_M_2 GET_NC_PODIUM_STYLE_1_M_2_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_2_M_1 GET_NC_PODIUM_STYLE_2_M_1_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_2_M_2 GET_NC_PODIUM_STYLE_2_M_2_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_3_M_1 GET_NC_PODIUM_STYLE_3_M_1_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_3_M_2 GET_NC_PODIUM_STYLE_3_M_2_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_1_F_1 GET_NC_PODIUM_STYLE_1_F_1_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_1_F_2 GET_NC_PODIUM_STYLE_1_F_2_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_2_F_1 GET_NC_PODIUM_STYLE_2_F_1_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_2_F_2 GET_NC_PODIUM_STYLE_2_F_2_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_3_F_1 GET_NC_PODIUM_STYLE_3_F_1_DATA(pedData) BREAK CASE NC_PODIUM_STYLE_3_F_2 GET_NC_PODIUM_STYLE_3_F_2_DATA(pedData) BREAK CASE NC_WAREHOUSE_TECH GET_NC_WAREHOUSE_TECH_DATA(pedData) BREAK CASE NC_BUSBOY_TOILET GET_NC_PED_BUSBOY_TOILET_DATA(pedData) BREAK CASE NC_SOL_FOTIOS GET_NC_PED_SOL_FOTIOS_DATA(pedData) BREAK CASE NC_SOL_JAKOB GET_NC_PED_SOL_JAKOB_DATA(pedData) BREAK CASE NC_SOL_MANAGER GET_NC_PED_SOL_MANAGER_DATA(pedData) BREAK CASE NC_SOL_MIKE GET_NC_PED_SOL_MIKE_DATA(pedData) BREAK CASE NC_SOL_ROBT GET_NC_PED_SOL_ROBT_DATA(pedData) BREAK CASE NC_SOL_GIRL GET_NC_PED_HIPSTER_F_DATA(pedData) BREAK CASE NC_BLAM_RUPERT GET_NC_PED_BLAM_RUPERT_DATA(pedData) BREAK CASE NC_BLAM_RYANH GET_NC_PED_BLAM_RYANH_DATA(pedData) BREAK CASE NC_BLAM_RYANS GET_NC_PED_BLAM_RYANS_DATA(pedData) BREAK CASE NC_DIX_MANAGER GET_NC_PED_DIX_MANAGER_DATA(pedData) BREAK CASE NC_DIX_GUY GET_NC_PED_HIPSTER_M_DATA(pedData) BREAK CASE NC_DIX_GIRL GET_NC_PED_HIPSTER_F_DATA(pedData) BREAK CASE NC_TAL_AURELIA GET_NC_PED_TAL_AURELIA_DATA(pedData) BREAK CASE NC_TAL_IGNAZIO GET_NC_PED_TAL_IGNAZIO_DATA(pedData) BREAK CASE NC_TAL_GIRL GET_NC_PED_HIPSTER_F_DATA(pedData) BREAK CASE NC_TAL_GUY GET_NC_PED_HIPSTER_M_DATA(pedData) BREAK CASE NC_BM_GIRL GET_NC_PED_HIPSTER_F_DATA(pedData) BREAK CASE NC_BUNKER_SEAT GET_NC_PED_BUNKER_SEAT_DATA(pedData) BREAK CASE NC_CELEB_POPPY_MITCHELL GET_NC_PED_POPPY_M_DATA(pedData) BREAK CASE NC_CELEB_JIMMY_BOSTON GET_NC_PED_JIMMY_BOSTON_DATA(pedData) BREAK CASE NC_CELEB_KERRY_MCINTOSH GET_NC_PED_KERRY_MCINTOSH_DATA(pedData) BREAK CASE NC_CELEB_MIRANDA_COWAN GET_NC_PED_MIRANDA_DATA(pedData) BREAK CASE NC_CELEB_MIRANDA_ASSISTANT GET_NC_PED_MIRANDA_ASSISTANT_DATA(pedData) BREAK CASE NC_CELEB_TYLER_DIXON GET_NC_PED_TYLERDIX_DATA(pedData) BREAK CASE NC_CELEB_TYLER_ASSISTANT GET_NC_PED_TYLER_ASSISTANT_DATA(pedData) BREAK CASE NC_CELEB_LACEY_JONAS GET_NC_PED_LACEYJ_DATA(pedData) BREAK CASE NC_GUIDO_1 GET_NC_PED_GUIDO_DATA(pedData) BREAK ENDSWITCH ENDPROC FUNC BOOL HAS_LOADED_ALL_NIGHTCLUB_PROP_MODELS() NC_ACTIVITY_MAIN ActivityMain ACTIVITY_SLOT_NAMES eActivity INT i BOOL bReturn = TRUE REPEAT AC_SLOT_TOTAL eActivity // clear REPEAT iNCMaxSyncSceneEntityInSequence i ActivityMain.objectModelName[i] = DUMMY_MODEL_FOR_SCRIPT ENDREPEAT // get any prop models ASSIGN_NC_ACTIVITY_PROPS(eActivity, ActivityMain) // request REPEAT iNCMaxSyncSceneEntityInSequence i IF NOT (ActivityMain.objectModelName[i] = DUMMY_MODEL_FOR_SCRIPT) REQUEST_MODEL(ActivityMain.objectModelName[i]) IF NOT HAS_MODEL_LOADED(ActivityMain.objectModelName[i]) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_PROP_MODELS - waiting for model to load: ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[i])) bReturn = FALSE ENDIF ENDIF ENDREPEAT ENDREPEAT RETURN bReturn ENDFUNC FUNC BOOL HAS_LOADED_ALL_NIGHTCLUB_PED_MODELS() INT iNightClubPedID NC_PED_DATA pedData BOOL bReturn = TRUE REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA iNightClubPedID GENERATE_PED_FOR_NIGHTCLUB_ACTIVITY(GET_NIGHTCLUB_PED_TYPE(iNightClubPedID), pedData) IF NOT (pedData.mnPedModel = DUMMY_MODEL_FOR_SCRIPT) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_PED_MODELS - pedData.mnPedModel: ", GET_MODEL_NAME_FOR_DEBUG(pedData.mnPedModel)) REQUEST_MODEL(pedData.mnPedModel) IF NOT HAS_MODEL_LOADED(pedData.mnPedModel) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_PED_MODELS - waiting for model to load: ", GET_MODEL_NAME_FOR_DEBUG(pedData.mnPedModel)) bReturn = FALSE ENDIF ENDIF ENDREPEAT RETURN bReturn ENDFUNC FUNC BOOL HAS_LOADED_ALL_NIGHTCLUB_ANIMS() INT iPedID = 0 INT iActivity BOOL bIsRandom NC_ACTIVITY_ANIM_SEQUENCE sAnimSequence BOOL bReturn = TRUE REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA iPedID PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_ANIMS - Getting anims for ped: ", iPedID) GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iPedID, iActivity, bIsRandom) ACTIVITY_SLOT_NAMES eActivity = INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivity) GET_NC_SEQ_ANIM_DATA(eActivity, 0, 0, sAnimSequence) IF NOT IS_STRING_NULL_OR_EMPTY(sAnimSequence.activitySyncScenePed[0].sAnimDict) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_ANIMS - anim dict: ", sAnimSequence.activitySyncScenePed[0].sAnimDict) REQUEST_ANIM_DICT(sAnimSequence.activitySyncScenePed[0].sAnimDict) IF NOT HAS_ANIM_DICT_LOADED(sAnimSequence.activitySyncScenePed[0].sAnimDict) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_ANIMS - waiting for dict to load: ", sAnimSequence.activitySyncScenePed[0].sAnimDict) bReturn = FALSE ENDIF ENDIF ENDREPEAT // load all dancing anims (including transitions) INT iAnimDict INT iIntensity STRING sDict REPEAT 4 iAnimDict REPEAT 3 iIntensity sDict = BuildAnimDictString(INT_TO_ENUM(NIGHTCLUB_PED_ANIM_DICT, iAnimDict), INT_TO_ENUM(NIGHTCLUB_AUDIO_TAGS, iIntensity+1)) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_ANIMS - anim dict: ", sDict) REQUEST_ANIM_DICT(sDict) IF NOT HAS_ANIM_DICT_LOADED(sDict) PRINTLN("HAS_LOADED_ALL_NIGHTCLUB_ANIMS - waiting for dict to load: ", sDict) bReturn = FALSE ENDIF ENDREPEAT ENDREPEAT RETURN bReturn ENDFUNC FUNC MODEL_NAMES GET_MODEL_FOR_NC_PED(INT iNCPedID) NC_PED_DATA pedData GENERATE_PED_FOR_NIGHTCLUB_ACTIVITY(GET_NIGHTCLUB_PED_TYPE(iNCPedID), pedData) RETURN pedData.mnPedModel ENDFUNC FUNC BOOL SHOULD_FREEZE_FOR_ACTIVITY(ACTIVITY_SLOT_NAMES eActivitySlot) SWITCH eActivitySlot CASE AC_SLOT_BARTENDER_YACHT_IDLE CASE AC_SLOT_CAGE_DANCING_LAP_SCENARIO PRINTLN("SHOULD_FREEZE_FOR_ACTIVITY - TRUE - eActivitySlot = ", ENUM_TO_INT(eActivitySlot)) RETURN TRUE ENDSWITCH IF IS_ACTIVITY_SLOT_A_DJ(eActivitySlot) PRINTLN("SHOULD_FREEZE_FOR_ACTIVITY - TRUE - DJ") RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC INT GetNumberOfSequencesForActivity(ACTIVITY_SLOT_NAMES eActivity) //UNUSED_PARAMETER(eActivity) SWITCH eActivity CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR RETURN 10 CASE AC_SLOT_LAZLOW_HIGH_RAILING RETURN 7 CASE AC_SLOT_LAZLOW_HIGH_CHAIR RETURN 13 CASE AC_SLOT_LAZLOW_HIGH_PODIUM RETURN 12 CASE AC_SLOT_LAZLOW_LOW_TOILET RETURN 10 CASE AC_SLOT_LAZLOW_LOW_BAR RETURN 10 CASE AC_SLOT_LAZLOW_LOW_SOFA RETURN 7 CASE AC_SLOT_LAZLOW_LOW_ALONE RETURN 8 CASE AC_SLOT_LAZLOW_VIP RETURN 12 ENDSWITCH RETURN 1 ENDFUNC FUNC INT GetRandomSequenceForActivity(ACTIVITY_SLOT_NAMES eActivity) RETURN GET_RANDOM_INT_IN_RANGE(0, GetNumberOfSequencesForActivity(eActivity)) ENDFUNC FUNC INT GetNextRandomSequenceForActivity(ACTIVITY_SLOT_NAMES eActivity, INT iCurrent) iCurrent += GET_RANDOM_INT_IN_RANGE(1, GetNumberOfSequencesForActivity(eActivity)) // this makes sure we dont pick same one twice in a row. RETURN iCurrent % GetNumberOfSequencesForActivity(eActivity) ENDFUNC FUNC INT GetNextSequenceForActivity(ACTIVITY_SLOT_NAMES eActivity, INT iCurrent) SWITCH eActivity CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR SWITCH iCurrent CASE 0 CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 6 CASE 7 CASE 8 CASE 9 CASE 19 CASE 38 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN GET_RANDOM_INT_IN_RANGE(0, 10) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_MEDIUM RETURN 10 ELSE RETURN 11 ENDIF BREAK CASE 12 CASE 13 CASE 14 CASE 15 CASE 16 CASE 17 CASE 18 CASE 10 CASE 39 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_MEDIUM RETURN GET_RANDOM_INT_IN_RANGE(12, 19) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN 19 ELSE RETURN 20 ENDIF BREAK CASE 21 CASE 22 CASE 23 CASE 24 CASE 25 CASE 26 CASE 27 CASE 28 CASE 29 CASE 30 CASE 31 CASE 32 CASE 33 CASE 34 CASE 35 CASE 36 CASE 37 CASE 11 CASE 20 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH_HANDS RETURN GET_RANDOM_INT_IN_RANGE(21, 38) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN 38 ELSE RETURN 39 ENDIF BREAK DEFAULT RETURN 0 BREAK ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_HIGH_RAILING SWITCH iCurrent CASE 0 CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 6 CASE 13 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN GET_RANDOM_INT_IN_RANGE(0, 7) ELSE RETURN 7 ENDIF BREAK CASE 8 CASE 9 CASE 10 CASE 11 CASE 12 CASE 7 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_MEDIUM OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH_HANDS RETURN GET_RANDOM_INT_IN_RANGE(8, 13) ELSE RETURN 13 ENDIF BREAK DEFAULT RETURN 0 BREAK ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_HIGH_CHAIR SWITCH iCurrent CASE 0 CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 6 CASE 7 CASE 8 CASE 9 CASE 10 CASE 11 CASE 12 CASE 14 CASE 15 CASE 16 CASE 17 CASE 18 CASE 19 CASE 20 CASE 21 CASE 22 CASE 23 CASE 24 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN GET_RANDOM_INT_IN_RANGE(0, 13) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_MEDIUM RETURN GET_RANDOM_INT_IN_RANGE(14, 24) ELSE RETURN 13 ENDIF BREAK CASE 25 CASE 26 CASE 27 CASE 28 CASE 29 CASE 30 CASE 31 CASE 32 CASE 33 CASE 13 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH_HANDS RETURN GET_RANDOM_INT_IN_RANGE(25, 34) ELSE RETURN 24 ENDIF BREAK DEFAULT RETURN 0 BREAK ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_HIGH_PODIUM SWITCH iCurrent CASE 0 CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 6 CASE 7 CASE 8 CASE 9 CASE 10 CASE 11 CASE 27 CASE 41 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN GET_RANDOM_INT_IN_RANGE(0, 12) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_MEDIUM RETURN 12 ELSE RETURN 13 ENDIF BREAK CASE 14 CASE 15 CASE 16 CASE 17 CASE 18 CASE 19 CASE 20 CASE 21 CASE 22 CASE 23 CASE 24 CASE 25 CASE 26 CASE 12 CASE 42 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_MEDIUM RETURN GET_RANDOM_INT_IN_RANGE(14, 27) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN 27 ELSE RETURN 28 ENDIF BREAK CASE 29 CASE 30 CASE 31 CASE 32 CASE 33 CASE 34 CASE 35 CASE 36 CASE 37 CASE 38 CASE 39 CASE 40 CASE 13 CASE 28 IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_HIGH_HANDS RETURN GET_RANDOM_INT_IN_RANGE(29, 41) ELIF g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW OR g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL RETURN 41 ELSE RETURN 42 ENDIF BREAK DEFAULT RETURN 0 BREAK ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_LOW_TOILET SWITCH iCurrent CASE 0 RETURN GET_RANDOM_INT_IN_RANGE(1, 8) CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 6 CASE 9 RETURN 0 CASE 7 CASE 8 RETURN iCurrent + 1 ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_LOW_BAR RETURN GET_RANDOM_INT_IN_RANGE(0, 12) CASE AC_SLOT_LAZLOW_LOW_SOFA RETURN GET_RANDOM_INT_IN_RANGE(0, 7) CASE AC_SLOT_LAZLOW_LOW_ALONE RETURN GET_RANDOM_INT_IN_RANGE(0, 8) CASE AC_SLOT_LAZLOW_VIP SWITCH iCurrent CASE 0 CASE 1 CASE 2 CASE 3 CASE 4 CASE 5 CASE 6 CASE 7 g_iNightClubLazlowPosition = 8 IF NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) > -1 NIGHTCLUB_CELEBRITY_ENUM eCeleb INT iIndex REPEAT eNIGHTCLUB_CELEB_MAX eCeleb IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eCeleb) SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK ENDSWITCH IF NOT IS_BIT_SET(g_iBSNightclubSpeech, iIndex ) RETURN iIndex - ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) + 2 ENDIF ENDIF ENDREPEAT ENDIF RETURN 8 CASE 8 RETURN 0 ENDSWITCH BREAK ENDSWITCH RETURN GetNextRandomSequenceForActivity(eActivity, iCurrent) ENDFUNC FUNC BOOL IS_MULTI_ANIM_SEQUENCE_ACTIVITY(ACTIVITY_SLOT_NAMES eActivity) RETURN (GetNumberOfSequencesForActivity(eActivity) > 1) ENDFUNC FUNC BOOL DANCEFLOOR_GROUP_ANIMS(ACTIVITY_SLOT_NAMES eActivity) SWITCH eActivity CASE AC_SLOT_FACE_DJ_M_1 CASE AC_SLOT_FACE_DJ_M_2 CASE AC_SLOT_FACE_DJ_M_3 CASE AC_SLOT_FACE_DJ_M_4 CASE AC_SLOT_FACE_DJ_M_5 CASE AC_SLOT_FACE_DJ_M_6 CASE AC_SLOT_FACE_DJ_F_1 CASE AC_SLOT_FACE_DJ_F_2 CASE AC_SLOT_FACE_DJ_F_3 CASE AC_SLOT_FACE_DJ_F_4 CASE AC_SLOT_FACE_DJ_F_5 CASE AC_SLOT_FACE_DJ_F_6 CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_5 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_F_5 CASE AC_SLOT_AMBIENT_F_6 CASE AC_SLOT_GROUP_M_1 CASE AC_SLOT_GROUP_M_2 CASE AC_SLOT_GROUP_M_3 CASE AC_SLOT_GROUP_M_4 CASE AC_SLOT_GROUP_M_5 CASE AC_SLOT_GROUP_M_6 CASE AC_SLOT_GROUP_F_1 CASE AC_SLOT_GROUP_F_2 CASE AC_SLOT_GROUP_F_3 CASE AC_SLOT_GROUP_F_4 CASE AC_SLOT_GROUP_F_5 CASE AC_SLOT_GROUP_F_6 CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC #IF IS_DEBUG_BUILD FUNC BOOL IS_DANCEFLOOR_GROUP_ANIM_CORRECT_SEX_FOR_NC_PED(NC_PED_TYPES ncPedType, ACTIVITY_SLOT_NAMES eActivity) IF DANCEFLOOR_GROUP_ANIMS(eActivity) IF IS_NC_PED_TYPE_FEMALE(ncPedType) SWITCH eActivity CASE AC_SLOT_FACE_DJ_F_1 CASE AC_SLOT_FACE_DJ_F_2 CASE AC_SLOT_FACE_DJ_F_3 CASE AC_SLOT_FACE_DJ_F_4 CASE AC_SLOT_FACE_DJ_F_5 CASE AC_SLOT_FACE_DJ_F_6 CASE AC_SLOT_AMBIENT_F_1 CASE AC_SLOT_AMBIENT_F_2 CASE AC_SLOT_AMBIENT_F_3 CASE AC_SLOT_AMBIENT_F_4 CASE AC_SLOT_AMBIENT_F_5 CASE AC_SLOT_AMBIENT_F_6 CASE AC_SLOT_GROUP_F_1 CASE AC_SLOT_GROUP_F_2 CASE AC_SLOT_GROUP_F_3 CASE AC_SLOT_GROUP_F_4 CASE AC_SLOT_GROUP_F_5 CASE AC_SLOT_GROUP_F_6 CASE AC_SLOT_SINGLE_PROP_F_1 CASE AC_SLOT_SINGLE_PROP_F_2 CASE AC_SLOT_SINGLE_PROP_F_3 CASE AC_SLOT_SINGLE_PROP_F_4 CASE AC_SLOT_SINGLE_PROP_F_5 CASE AC_SLOT_SINGLE_PROP_F_6 RETURN TRUE ENDSWITCH RETURN FALSE ELSE SWITCH eActivity CASE AC_SLOT_FACE_DJ_M_1 CASE AC_SLOT_FACE_DJ_M_2 CASE AC_SLOT_FACE_DJ_M_3 CASE AC_SLOT_FACE_DJ_M_4 CASE AC_SLOT_FACE_DJ_M_5 CASE AC_SLOT_FACE_DJ_M_6 CASE AC_SLOT_AMBIENT_M_1 CASE AC_SLOT_AMBIENT_M_2 CASE AC_SLOT_AMBIENT_M_3 CASE AC_SLOT_AMBIENT_M_4 CASE AC_SLOT_AMBIENT_M_5 CASE AC_SLOT_AMBIENT_M_6 CASE AC_SLOT_GROUP_M_1 CASE AC_SLOT_GROUP_M_2 CASE AC_SLOT_GROUP_M_3 CASE AC_SLOT_GROUP_M_4 CASE AC_SLOT_GROUP_M_5 CASE AC_SLOT_GROUP_M_6 CASE AC_SLOT_SINGLE_PROP_M_1 CASE AC_SLOT_SINGLE_PROP_M_2 CASE AC_SLOT_SINGLE_PROP_M_3 CASE AC_SLOT_SINGLE_PROP_M_4 CASE AC_SLOT_SINGLE_PROP_M_5 CASE AC_SLOT_SINGLE_PROP_M_6 RETURN TRUE ENDSWITCH RETURN FALSE ENDIF ENDIF RETURN TRUE ENDFUNC #ENDIF #IF IS_DEBUG_BUILD PROC InitForEditor() INT i g_bNightClubPedEditorActive = FALSE REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i g_bNightClubPedDataChanged[i][0] = FALSE g_bNightClubPedDataChanged[i][1] = FALSE g_bNightClubPedDataChanged[i][2] = FALSE g_bNightClubPedDataChanged[i][3] = FALSE g_bNightClubPedDataChanged[i][4] = FALSE ENDREPEAT // initialise global values REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i g_iNightClubActivitySlot[i] = -1 g_bNightClubActivitySlotHasRandomness[i] = FALSE g_vNightClubPedPos[i] = <<0,0,0>> g_fNightClubPedHeading[i] = -1.0 g_iNightClubPedType[i] = -1 g_iNightClubOffsetPedId[i] = -2 ENDREPEAT PRINTLN("InitForEditor called") ENDPROC PROC UpdateNCPositionsAndHeadings(NIGHT_CLUB_STRUCT &nightClubStruct) INT i INT iNCId REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF (nightClubStruct.activityPeds[i].iNightClubPedID != -1) iNCId = nightClubStruct.activityPeds[i].iNightClubPedID IF NOT (VMAG(g_vNightClubPedPos[iNCid]) = VMAG(nightClubStruct.activityPeds[i].vPos) ) IF VMAG(g_vNightClubPedPos[iNCid]) > 0 g_bNightClubPedDataChanged[iNCid][0] = TRUE PRINTLN("UpdateNCPositionsAndHeadings: changing g_vNightClubPedPos[", iNCid, "] from ", g_vNightClubPedPos[iNCid], " to ", nightClubStruct.activityPeds[i].vPos) ENDIF g_vNightClubPedPos[iNCid] = nightClubStruct.activityPeds[i].vPos ENDIF IF NOT (g_fNightClubPedHeading[iNCid] = nightClubStruct.activityPeds[i].fHeading) IF g_fNightClubPedHeading[iNCid] != -1.0 g_bNightClubPedDataChanged[iNCid][1] = TRUE PRINTLN("UpdateNCPositionsAndHeadings: changing g_fNightClubPedHeading[", iNCid, "] from ", g_fNightClubPedHeading[iNCid], " to ", nightClubStruct.activityPeds[i].fHeading) ENDIF g_fNightClubPedHeading[iNCid] = nightClubStruct.activityPeds[i].fHeading ENDIF IF NOT (g_iNightClubActivitySlot[iNCid] = nightClubStruct.activityPeds[i].iActiveSlot) OR NOT (g_bNightClubActivitySlotHasRandomness[iNCid] = nightClubStruct.activityPeds[i].bAddRandomnessToActivitySlot) IF (g_iNightClubActivitySlot[iNCid] > -1) g_bNightClubPedDataChanged[iNCid][2] = TRUE PRINTLN("UpdateNCPositionsAndHeadings: changing g_iNightClubActivitySlot[", iNCid, "] from ", g_iNightClubActivitySlot[iNCid], " to ", nightClubStruct.activityPeds[i].iActiveSlot) PRINTLN("UpdateNCPositionsAndHeadings: changing g_bNightClubActivitySlotHasRandomness[", iNCid, "] from ", g_bNightClubActivitySlotHasRandomness[iNCid], " to ", nightClubStruct.activityPeds[i].bAddRandomnessToActivitySlot) ENDIF g_iNightClubActivitySlot[iNCid] = nightClubStruct.activityPeds[i].iActiveSlot g_bNightClubActivitySlotHasRandomness[iNCid] = nightClubStruct.activityPeds[i].bAddRandomnessToActivitySlot ENDIF IF NOT (g_iNightClubPedType[iNCid] = nightClubStruct.activityPeds[i].iNCPedType) IF (g_iNightClubPedType[iNCid] > -1) g_bNightClubPedDataChanged[iNCid][3] = TRUE PRINTLN("UpdateNCPositionsAndHeadings: changing g_iNightClubPedType[", iNCid, "] from ", g_iNightClubPedType[iNCid], " to ", nightClubStruct.activityPeds[i].iNCPedType) ENDIF g_iNightClubPedType[iNCid] = nightClubStruct.activityPeds[i].iNCPedType ENDIF IF NOT (g_iNightClubOffsetPedId[iNCid] = nightClubStruct.activityPeds[i].iOffsetNCPedId) IF (g_iNightClubOffsetPedId[iNCid] > -2) g_bNightClubPedDataChanged[iNCid][4] = TRUE PRINTLN("UpdateNCPositionsAndHeadings: changing g_iNightClubOffsetPedId[", iNCid, "] from ", g_iNightClubOffsetPedId[iNCid], " to ", nightClubStruct.activityPeds[i].iOffsetNCPedId) ENDIF g_iNightClubOffsetPedId[iNCid] = nightClubStruct.activityPeds[i].iOffsetNCPedId ENDIF ENDIF ENDREPEAT ENDPROC #ENDIF #IF IS_DEBUG_BUILD FUNC THREADID GetThreadOfAmNightclubScript() SCRIPT_THREAD_ITERATOR_RESET() THREADID thID = SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID() WHILE (thID != NULL) IF (GET_HASH_KEY(GET_NAME_OF_SCRIPT_WITH_THIS_ID(thID)) = HASH("am_mp_nightclub")) RETURN thID ENDIF thID = SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID() ENDWHILE RETURN thID ENDFUNC PROC OutputCreatedPedDetails() INT iResPeds INT iResVehicles INT iResObjects INT iCreatedPeds INT iCreatedVehicles INT iCreatedObjects INT iTotalReserved = GET_NUM_RESERVED_MISSION_PEDS(TRUE, RESERVATION_ALL) PRINTLN(" OutputCreatedPedDetails - RESERVATION_ALL iTotalReserved = ", iTotalReserved) iTotalReserved = GET_NUM_RESERVED_MISSION_PEDS(TRUE, RESERVATION_LOCAL_ONLY) PRINTLN(" OutputCreatedPedDetails - RESERVATION_LOCAL_ONLY iTotalReserved = ", iTotalReserved) iTotalReserved = GET_NUM_RESERVED_MISSION_PEDS(TRUE, RESERVATION_GLOBAL_ONLY) PRINTLN(" OutputCreatedPedDetails - RESERVATION_GLOBAL_ONLY iTotalReserved = ", iTotalReserved) GET_RESERVED_MISSION_ENTITIES_FOR_THREAD(GET_ID_OF_THIS_THREAD(), iResPeds, iResVehicles, iResObjects, iCreatedPeds, iCreatedVehicles, iCreatedObjects) PRINTLN(" OutputCreatedPedDetails - this thread iResPeds = ", iResPeds, " iResVehicles = ", iResVehicles, " iResObjects = ", iResObjects, " iCreatedPeds = ", iCreatedPeds, " iCreatedVehicles = ", iCreatedVehicles, " iCreatedObjects = ", iCreatedObjects) THREADID nightclubthreadid = GetThreadOfAmNightclubScript() IF (nightclubthreadid != NULL) GET_RESERVED_MISSION_ENTITIES_FOR_THREAD(GET_ID_OF_THIS_THREAD(), iResPeds, iResVehicles, iResObjects, iCreatedPeds, iCreatedVehicles, iCreatedObjects) PRINTLN(" OutputCreatedPedDetails - nightclub thread iResPeds = ", iResPeds, " iResVehicles = ", iResVehicles, " iResObjects = ", iResObjects, " iCreatedPeds = ", iCreatedPeds, " iCreatedVehicles = ", iCreatedVehicles, " iCreatedObjects = ", iCreatedObjects) ENDIF ENDPROC #ENDIF FUNC BOOL CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB(NIGHT_CLUB_STRUCT &nightClubStruct, NC_PED_DATA &pedData, NIGHT_CLUB_PEDS &activityPeds, VECTOR vPos, FLOAT fHeading, SERVER_BROADCAST_DATA &serverBD) PED_COMPONENT_CONFIG ComponentConfig INT iPackedDrawable INT iPackedTexture IF IS_MODEL_IN_CDIMAGE(pedData.mnPedModel) IF REQUEST_LOAD_MODEL(pedData.mnPedModel) IF NOT DOES_ENTITY_EXIST(activityPeds.piScenePeds) activityPeds.piScenePeds = CREATE_PED(PEDTYPE_MISSION, pedData.mnPedModel, <>, fHeading, FALSE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: pedData.mnPedModel: ", GET_MODEL_NAME_FOR_DEBUG(pedData.mnPedModel), ", vPos = ", vPos, ", fHeading = " , fHeading) IF SHOULD_USE_RANDOMISED_COMPONENTS(activityPeds.iNightClubPedID) GetPedComponentData(activityPeds.iNightClubPedID, iPackedDrawable, iPackedTexture, IS_NC_PED_TYPE_FEMALE(INT_TO_ENUM(NC_PED_TYPES, activityPeds.iNCPedType))) IF ((iPackedDrawable > 0) OR (iPackedTexture > 0)) IF (ServerBD.iHostCompletedSetup = nightClubStruct.iCompletedSetup) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: NCid ", activityPeds.iNightClubPedID, " iPackedDrawable = ", iPackedDrawable) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: NCid ", activityPeds.iNightClubPedID, " iPackedTexture = ", iPackedTexture) UNPACK_PED_COMPONENT_CONFIG(ComponentConfig, iPackedDrawable, iPackedTexture) INT j REPEAT MAX_NUM_OF_SETTABLE_COMPONENTS j CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: NCPedID:", activityPeds.iNightClubPedID, " ", GET_PED_COMPONENT_NAME(INT_TO_ENUM(PED_COMPONENT,j)), ", NewDrawableNumber = ", ComponentConfig.ComponentData[j].iDrawable, ", NewTextureNumber = ", ComponentConfig.ComponentData[j].iTexture, ", NewPaletteNumber = ", 0) SET_PED_COMPONENT_VARIATION(activityPeds.piScenePeds, INT_TO_ENUM(PED_COMPONENT,j), ComponentConfig.ComponentData[j].iDrawable, ComponentConfig.ComponentData[j].iTexture) ENDREPEAT ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: setup mismatch, not setting component variations. ServerBD.iHostCompletedSetup = ", ServerBD.iHostCompletedSetup, " nightClubStruct.iCompletedSetup = ", nightClubStruct.iCompletedSetup) ENDIF ENDIF ELSE INT j REPEAT NUM_PED_COMPONENTS j IF pedData.pcsComponents[j].NewPaletteNumber != -1 AND pedData.pcsComponents[j].NewTextureNumber != -1 AND pedData.pcsComponents[j].NewDrawableNumber != -1 // CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: [", j, "] ", GET_PED_COMPONENT_NAME(INT_TO_ENUM(PED_COMPONENT,j)), ", NewDrawableNumber = ", pedData.pcsComponents[j].NewDrawableNumber, ", NewTextureNumber = ", pedData.pcsComponents[j].NewTextureNumber, ", NewPaletteNumber = ", pedData.pcsComponents[j].NewPaletteNumber) SET_PED_COMPONENT_VARIATION(activityPeds.piScenePeds, INT_TO_ENUM(PED_COMPONENT,j), pedData.pcsComponents[j].NewDrawableNumber, pedData.pcsComponents[j].NewTextureNumber, pedData.pcsComponents[j].NewPaletteNumber) ENDIF ENDREPEAT ENDIF IF pedData.weaponType != WEAPONTYPE_UNARMED GIVE_WEAPON_TO_PED(activityPeds.piScenePeds, pedData.weaponType, 1, TRUE) ENDIF INT k REPEAT NUM_PED_PROPS k IF pedData.ppsProps[k].iPropIndex != -1 SET_PED_PROP_INDEX(activityPeds.piScenePeds, INT_TO_ENUM(PED_PROP_POSITION, k), pedData.ppsProps[k].iPropIndex, pedData.ppsProps[k].iTexIndex) ENDIF ENDREPEAT SET_MODEL_AS_NO_LONGER_NEEDED(pedData.mnPedModel) SET_ENTITY_CAN_BE_DAMAGED(activityPeds.piScenePeds, FALSE) SET_PED_AS_ENEMY(activityPeds.piScenePeds, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(activityPeds.piScenePeds, TRUE) SET_PED_RESET_FLAG(activityPeds.piScenePeds,PRF_DisablePotentialBlastReactions, TRUE) SET_PED_CONFIG_FLAG(activityPeds.piScenePeds,PCF_UseKinematicModeWhenStationary,TRUE) SET_PED_CONFIG_FLAG(activityPeds.piScenePeds,PCF_DontActivateRagdollFromExplosions,TRUE) SET_PED_CONFIG_FLAG(activityPeds.piScenePeds,PCF_DontActivateRagdollFromVehicleImpact,TRUE) SET_PED_CAN_EVASIVE_DIVE(activityPeds.piScenePeds, FALSE) SET_TREAT_AS_AMBIENT_PED_FOR_DRIVER_LOCKON(activityPeds.piScenePeds, TRUE) SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(activityPeds.piScenePeds, FALSE) SET_PED_CAN_RAGDOLL(activityPeds.piScenePeds, FALSE) SET_PED_CONFIG_FLAG(activityPeds.piScenePeds,PCF_DisableExplosionReactions,TRUE) // STOP_PED_SPEAKING(activityPeds.piScenePeds, TRUE) IF nightClubStruct.bHiddenForMocap AND SHOULD_HIDE_PED_FOR_CUTSCENES(activityPeds.iNightClubPedID) SET_ENTITY_VISIBLE(activityPeds.piScenePeds, FALSE) PRINTLN("CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB - hidding ped for mocap") ENDIF RETURN TRUE ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: ped already exists for i = ", i) ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB: anims and/or ped model not loaded yet for model: ", GET_MODEL_NAME_FOR_DEBUG(pedData.mnPedModel), " hash ", ENUM_TO_INT(pedData.mnPedModel)) ENDIF ELSE SCRIPT_ASSERT("CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB - IS_MODEL_IN_CDIMAGE: FALSE") CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_ACTIVITY_PEDS_FOR_ACTIVITY_CHECK: IS_MODEL_IN_CDIMAGE: FALSE: Couldn't find: ", GET_MODEL_NAME_FOR_DEBUG(pedData.mnPedModel), " hash ", ENUM_TO_INT(pedData.mnPedModel)) ENDIF RETURN FALSE ENDFUNC PROC CLEANUP_NIGHT_CLUB_PED(NIGHT_CLUB_STRUCT &nightClubStruct, INT iSlot) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CLEANUP_NIGHT_CLUB_PED: nightClubStruct.activityPeds[", iSlot, "].iNightClubPedID = ", nightClubStruct.activityPeds[iSlot].iNightClubPedID) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[iSlot].piScenePeds) DELETE_PED(nightClubStruct.activityPeds[iSlot].piScenePeds) ENDIF IF NOT DOES_ENTITY_EXIST(nightClubStruct.activityPeds[iSlot].piScenePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CLEANUP_NIGHT_CLUB_PED: finishing cleanup nightClubStruct.activityPeds[", iSlot, "].iNightClubPedID = ", nightClubStruct.activityPeds[iSlot].iNightClubPedID) INT i = 0 REPEAT iNCMaxSyncSceneEntityInSequence i IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[iSlot].oiSceneObjects[i]) DELETE_OBJECT(nightClubStruct.activityPeds[iSlot].oiSceneObjects[i]) nightClubStruct.activityPeds[iSlot].oiSceneObjects[i] = INT_TO_NATIVE(OBJECT_INDEX, -1) ENDIF ENDREPEAT IF nightClubStruct.activityPeds[iSlot].iNightClubPedID > -1 IF IS_NC_PED_TYPE_CUSTOMER_FOR_CULL(GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[iSlot].iNightClubPedID)) AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[iSlot].iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[iSlot].iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) nightClubStruct.iTotalCustomers-- ENDIF IF nightClubStruct.activityPeds[iSlot].iNightClubPedID = nightClubStruct.iDJPedID1 nightClubStruct.iDJPedID1 = -1 ENDIF IF nightClubStruct.activityPeds[iSlot].iNightClubPedID = nightClubStruct.iDJPedID2 nightClubStruct.iDJPedID2 = -1 ENDIF IF nightClubStruct.activityPeds[iSlot].iNightClubPedID = nightClubStruct.iLazlowPedID nightClubStruct.iLazlowPedID = -1 ENDIF IF nightClubStruct.activityPeds[iSlot].iNightClubPedID = nightClubStruct.iTonyPedID nightClubStruct.iTonyPedID = -1 ENDIF nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[iSlot].iNightClubPedID] = -1 nightClubStruct.activityPeds[iSlot].iNightClubPedID = -1 ENDIF // wipe the NIGHT_CLUB_PEDS struct nightClubStruct.activityPeds[iSlot].bHasSyncSceneStarted = FALSE nightClubStruct.activityPeds[iSlot].bAnimPlayed = FALSE nightClubStruct.activityPeds[iSlot].piScenePeds = INT_TO_NATIVE(PED_INDEX, -1) nightClubStruct.activityPeds[iSlot].eActiveActivity = AC_SLOT_NULL nightClubStruct.activityPeds[iSlot].ePosActState = NC_POS_ACT_STAGE_PERFORMING_FIRST_ACTIVITY nightClubStruct.activityPeds[iSlot].iActiveSlot = -1 nightClubStruct.activityPeds[iSlot].bAddRandomnessToActivitySlot = FALSE nightClubStruct.activityPeds[iSlot].iCurrentSequence = -1 nightClubStruct.activityPeds[iSlot].iSceneID = -1 nightClubStruct.activityPeds[iSlot].iPedToHeadTrack = -1 nightClubStruct.activityPeds[iSlot].vCoordToHeadTrack = <<0,0,0>> nightClubStruct.activityPeds[iSlot].iNightClubPedID = -1 nightClubStruct.activityPeds[iSlot].bHasSyncSceneStarted = FALSE nightClubStruct.activityPeds[iSlot].bHeadTrackPlayer = FALSE nightClubStruct.activityPeds[iSlot].iCurrentWalkSequence = -1 nightClubStruct.activityPeds[iSlot].fPhaseRate = 0.0 nightClubStruct.activityPeds[iSlot].vWalkToCoordPos = <<0,0,0>> nightClubStruct.activityPeds[iSlot].vWalkToCoordRot = <<0,0,0>> nightClubStruct.activityPeds[iSlot].bAnimPlayed = FALSE nightClubStruct.activityPeds[iSlot].iPedSpeechBitset = 0 RESET_NET_TIMER(nightClubStruct.activityPeds[iSlot].stIdleSpeechTimer) nightClubStruct.activityPeds[iSlot].eLastSpeech[0] = NCP_SPEECH_INVALID nightClubStruct.activityPeds[iSlot].eLastSpeech[1] = NCP_SPEECH_INVALID nightClubStruct.activityPeds[iSlot].iAnimDuration = 0 nightClubStruct.activityPeds[iSlot].iAnimStartTime = 0 nightClubStruct.activityPeds[iSlot].iFacialAnimDuration = 0 nightClubStruct.activityPeds[iSlot].iFacialAnimStartTime = 0 nightClubStruct.activityPeds[iSlot].iAnimOffset = 0 nightClubStruct.activityPeds[iSlot].iAnimVarient = -1 nightClubStruct.activityPeds[iSlot].iLastProcessTime = 0 nightClubStruct.activityPeds[iSlot].iNCPedType = -1 nightClubStruct.activityPeds[iSlot].iOffsetNCPedId = -1 i = 0 REPEAT MAX_NUMBER_NC_PED_OFFSET_CHILDREN i nightClubStruct.activityPeds[iSlot].iOffsetNCPedChildrenId[i] = -1 ENDREPEAT nightClubStruct.activityPeds[iSlot].vPos = <<0,0,0>> nightClubStruct.activityPeds[iSlot].fHeading = 0.0 nightClubStruct.activityPeds[iSlot].iDanceTransitionVariation = -1 nightClubStruct.activityPeds[iSlot].iDanceTransitionVariation2 = -1 nightClubStruct.activityPeds[iSlot].bUsePassiveHeadTrack = FALSE RESET_NET_TIMER(nightClubStruct.activityPeds[iSlot].stPassiveHeadTrack) ENDIF ENDPROC PROC RESET_EVERYTHING(NIGHT_CLUB_STRUCT &nightClubStruct) PRINTLN("RESET_EVERYTHING called") DEBUG_PRINTCALLSTACK() INT j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) ENDREPEAT IF DOES_ENTITY_EXIST(nightClubStruct.eiCloakRoomStool) DELETE_OBJECT(nightClubStruct.eiCloakRoomStool) ENDIF IF DOES_ENTITY_EXIST(nightClubStruct.eiTonyChair) DELETE_OBJECT(nightClubStruct.eiTonyChair) ENDIF IF nightClubStruct.mLazlowStoolRemove != DUMMY_MODEL_FOR_SCRIPT REMOVE_MODEL_HIDE(<<-1586.273, -3009.073, -77.006>>, 0.5, nightClubStruct.mLazlowStoolRemove) nightClubStruct.mLazlowStoolRemove = DUMMY_MODEL_FOR_SCRIPT ENDIF SetNCActStage(NC_STAGE_INIT) g_bNightClubPedsReadyToView = FALSE g_iNightClubAudioNextTagTime = -1 g_iNightClubAudioCurrentTime = -1 IF NETWORK_IS_GAME_IN_PROGRESS() nightClubStruct.resetTimer = GET_NETWORK_TIME() ENDIF RESET_NET_TIMER(g_stNightclubSpeechTime) RESET_NET_TIMER(g_stNightclubSpeechGreetTime) ENDPROC PROC NIGHTCLUB_PEDS_SCRIPT_CLEANUP(NIGHT_CLUB_STRUCT &nightClubStruct) RESET_EVERYTHING(nightClubStruct) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Bogs", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Hall", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_Entry_Stairs", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_garage", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_main_area_2", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_office", FALSE) SET_STATIC_EMITTER_ENABLED("SE_ba_dlc_int_01_rear_L_corridor", FALSE) UNBLOCK_SPEECH_CONTEXT_GROUP("DLC_BTL_Nightclub_SCL") PRINTLN("NIGHTCLUB_PEDS_SCRIPT_CLEANUP: called this frame") TERMINATE_THIS_MULTIPLAYER_THREAD_NO_ARGS() ENDPROC PROC SCRIPT_SHUTDOWN_LOGIC(NIGHT_CLUB_STRUCT &nightClubStruct) IF SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE() #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_LAUNCHED_SCRIPT_CHECKS: SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE - Calling TERMINATE_NET_ACTIVITY_SCRIPT") #ENDIF NIGHTCLUB_PEDS_SCRIPT_CLEANUP(nightClubStruct) ENDIF ENDPROC FUNC BOOL SEATED_ANIMS(ACTIVITY_SLOT_NAMES eActivity) SWITCH eActivity CASE AC_SLOT_CLOAKROOM_STOOL CASE AC_SLOT_DANCEFLOOR_BUSBOY_TOILET CASE AC_SLOT_TOILET_PHONE CASE AC_SLOT_TOILET_BUNKER_SEAT CASE AC_SLOT_LAZLOW_SITTING CASE AC_SLOT_SIT_DRINKING CASE AC_SLOT_TONY_SIT_DRINK_1 CASE AC_SLOT_TONY_SIT_DRINK_2 CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_F_1 CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_M_1 CASE AC_SLOT_PROP_HUMAN_SEAT_BAR_M_2 CASE AC_SLOT_DANCEFLOOR_TECH_STAGE_SIT CASE AC_SLOT_LAZLOW_LOW_TOILET CASE AC_SLOT_LAZLOW_HIGH_CHAIR RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC PROC GetAnimDataForPed(NC_ACTIVITY_MAIN &ActivityMain, NIGHT_CLUB_PEDS &nightClubPed, BOOL bTransition = FALSE, INT iVariation = -1, INT iVariation2 = -1) IF NOT DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) GET_NC_SEQ_ANIM_DATA(nightClubPed.eActiveActivity, 0, nightClubPed.iCurrentSequence, activityMain.activityAnimSequence, IS_NC_PED_FEMALE(nightClubPed.iNightclubPedid)) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_NC_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: eActiveActivity: ", GET_SLOT_NAME_STRING(nightClubPed.eActiveActivity), ", iCurrentSequence: ", nightClubPed.iCurrentSequence, ", sAnimDict: ", ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ", sAnimClip: ", ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) ELSE IF g_eNightClubAudioIntensityLevel = AUDIO_TAG_NULL g_eNightClubAudioIntensityLevel = AUDIO_TAG_LOW CWARNINGLN(DEBUG_NET_PED_DANCING, "RUN_NC_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: g_eNightClubAudioIntensityLevel was set to AUDIO_TAG_NULL, resetting to AUDIO_TAG_LOW") ENDIF GET_DANCE_ANIM_DATA(nightClubPed.eActiveActivity, activityMain.activityAnimSequence, bTransition, iVariation, iVariation2, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_NC_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: eActiveActivity: ", GET_SLOT_NAME_STRING(nightClubPed.eActiveActivity), ", iCurrentSequence: ", nightClubPed.iCurrentSequence, ", sAnimDict: ", ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ", sAnimClip: ", ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) ENDIF ENDPROC FUNC INT AnimAdjustedDuration(NIGHT_CLUB_PEDS &nightClubPed) INT iAdjustedDuration = nightClubPed.iAnimDuration - nightClubPed.iAnimOffset RETURN FLOOR( TO_FLOAT(iAdjustedDuration) / nightClubPed.fPhaseRate) ENDFUNC FUNC INT AnimTimeRemaining(NIGHT_CLUB_PEDS &nightClubPed) INT iCurrentTime = GET_GAME_TIMER() INT iTimePlayedSoFar = iCurrentTime - nightClubPed.iAnimStartTime RETURN (AnimAdjustedDuration(nightClubPed) - iTimePlayedSoFar) ENDFUNC FUNC INT ExpectedFramesUntilEndOfAnim(NIGHT_CLUB_PEDS &nightClubPed) FLOAT fFrameTime = GET_FRAME_TIME() fFrameTime *= 1000.0 INT iAnimTimeRemaining = AnimTimeRemaining(nightClubPed) RETURN FLOOR( TO_FLOAT(iAnimTimeRemaining) / fFrameTime ) ENDFUNC FUNC INT FacialAnimTimeRemaining(NIGHT_CLUB_PEDS &nightClubPed) INT iCurrentTime = GET_GAME_TIMER() INT iTimePlayedSoFar = iCurrentTime - nightClubPed.iFacialAnimStartTime INT iRemainingTime = nightClubPed.iFacialAnimDuration - iTimePlayedSoFar #IF IS_DEBUG_BUILD IF (nightClubPed.iNCPedType = ENUM_TO_INT(NC_DJ)) OR (nightClubPed.iNCPedType = ENUM_TO_INT(NC_DJ_2)) PRINTLN("DJ - FacialAnimTimeRemaining = iRemainingTime = ", iRemainingTime) ENDIF #ENDIF RETURN iRemainingTime ENDFUNC //PROC UpdatePhaseRateForPed(NIGHT_CLUB_PEDS &nightClubPed, FLOAT fNewPhaseRate) // // IF (fNewPhaseRate <= 0.0) // fNewPhaseRate = 1.0 // ENDIF // // IF (fNewPhaseRate != nightClubPed.fPhaseRate) // // INT iRemainingTime = AnimTimeRemaining(nightClubPed) // INT iNewAnimOffset = AnimAdjustedDuration(nightClubPed) - iRemainingTime // CDEBUG1LN(DEBUG_NET_PED_DANCING, "UpdatePhaseRateForPed: for nightclub ped id ", nightClubPed.iNightClubPedID, " old offset ", nightClubPed.iAnimOffset, " new offset ", iNewAnimOffset, " old phase rate ", nightClubPed.fPhaseRate, " new rate ", fNewPhaseRate, " iRemainingTime = ", iRemainingTime) // // // update the offset along with the new phase rate // nightClubPed.iAnimOffset = iNewAnimOffset // nightClubPed.fPhaseRate = fNewPhaseRate // // IF GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) = PERFORMING_TASK // SET_ANIM_RATE(nightClubPed.piScenePeds, nightClubPed.fPhaseRate) // ENDIF // ENDIF // //ENDPROC FUNC INT GetNCPedType(INT iNCId) RETURN ENUM_TO_INT(GET_NIGHTCLUB_PED_TYPE(iNCId)) ENDFUNC FUNC VECTOR GetNCPedPos(INT iNCId) INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iNCId, iActivitySlot, bIsRandom) RETURN GET_NIGHTCLUB_PED_POSITION(iNCId, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot)) ENDFUNC FUNC FLOAT GetNCPedHeading(INT iNCId) INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iNCId, iActivitySlot, bIsRandom) RETURN GET_NIGHTCLUB_PED_HEADING(iNCId, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot)) ENDFUNC FUNC VECTOR ActualPos(INT iNCPedId) INT iOffsetNCPedId = GET_NIGHTCLUB_PED_OFFSET_NCPEDID(iNCPedId) // do we need to find an offset? IF (iOffsetNCPedId > -1) // get pos of 'leader' ped VECTOR vPos = GetNCPedPos(iOffsetNCPedId) FLOAT fHeading = GetNCPedHeading(iOffsetNCPedId) RETURN GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS ( vPos, fHeading, GetNCPedPos(iNCPedId) ) ENDIF RETURN GetNCPedPos(iNCPedId) ENDFUNC FUNC FLOAT ActualHeading(INT iNCPedId) INT iOffsetNCPedId = GET_NIGHTCLUB_PED_OFFSET_NCPEDID(iNCPedId) // do we need to find an offset? IF (iOffsetNCPedId > -1) // get pos of 'leader' ped FLOAT fHeading = GetNCPedHeading(iOffsetNCPedId) RETURN fHeading + GetNCPedHeading(iNCPedId) ENDIF RETURN GetNCPedHeading(iNCPedId) ENDFUNC PROC GET_NC_DJ_HEADPHONES_INITIAL_TRANSFORM(NIGHT_CLUB_PEDS &nightClubPed, VECTOR &vPosition, VECTOR &vRotation) SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_SOLOMUN vPosition = <<-1602.496, -3011.593, -77.898>> vRotation = <<-96.83, -1.08, -138.01>> BREAK CASE AC_SLOT_DIXON vPosition = <<-1602.46, -3013.51, -77.851>> vRotation = <<51.40, -1.59, 161.49>> BREAK ENDSWITCH ENDPROC PROC GET_NC_DJ_PROP_INTERACT_INITIAL_TRANSFORM(NIGHT_CLUB_PEDS &nightClubPed, VECTOR &vPosition, VECTOR &vRotation, INT iPropID) SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_TALE_OF_US_1 vPosition = <<-1602.585, -3011.390, -77.915>> vRotation = <<0, 0, 0>> BREAK CASE AC_SLOT_TALE_OF_US_2 vPosition = <<-1602.521, -3014.160, -77.915>> vRotation = <<0, 0, 0>> BREAK CASE AC_SLOT_SOLOMUN vPosition = <<-1602.349, -3013.640, -77.918>> vRotation = <<0, 0, 0>> BREAK CASE AC_SLOT_DIXON SWITCH iPropID CASE 1 //wine 1 vPosition = <<-1602.342, -3013.571, -77.920>> vRotation = <<0, 0, 0>> BREAK CASE 2 //wine 2 vPosition = <<-1603.757, -3013.274, -77.979>> vRotation = <<0, 0, 0>> BREAK ENDSWITCH BREAK CASE AC_SLOT_BLACK_MADONNA SWITCH iPropID CASE 0 //whiskey glass vPosition = << -1602.5, -3013.43, -77.8672 >> vRotation = <<0, 0, 0>> BREAK CASE 1 //Water bottle vPosition = << -1602.4, -3013.47, -77.9247 >> vRotation = <<0, 0, 67.522>> BREAK CASE 2 //Fan vPosition = << -1602.56, -3013.37, -77.9137 >> vRotation = << 87.3211, -155.658, -16.0957 >> BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC FUNC BOOL IS_DJ_ACTIVITY(ACTIVITY_SLOT_NAMES eActivity) SWITCH eActivity CASE AC_SLOT_SOLOMUN CASE AC_SLOT_DIXON CASE AC_SLOT_TALE_OF_US_1 CASE AC_SLOT_TALE_OF_US_2 CASE AC_SLOT_BLACK_MADONNA RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE(ACTIVITY_SLOT_NAMES eActiveActivity) SWITCH eActiveActivity CASE AC_SLOT_USE_COMPUTER CASE AC_SLOT_LAZLOW_LOW_BAR CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR CASE AC_SLOT_LAZLOW_HIGH_RAILING CASE AC_SLOT_LAZLOW_VIP RETURN TRUE ENDSWITCH IF IS_DJ_ACTIVITY(eActiveActivity) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS(NIGHT_CLUB_STRUCT &nightClubStruct, NC_ACTIVITY_MAIN &ActivityMain, NIGHT_CLUB_PEDS &activityPeds) INT l IF DOES_ENTITY_EXIST(activityPeds.piScenePeds) AND NOT IS_ENTITY_DEAD(activityPeds.piScenePeds) GET_NC_SEQ_ANIM_DATA(ActivityMain.eActivity, 0, 0, ActivityMain.activityAnimSequence, IS_NC_PED_FEMALE(activityPeds.iNightclubPedId)) #IF IS_DEBUG_BUILD IF (ENUM_TO_INT(ActivityMain.objectModelName[l]) != 0) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: Attemping to create prop 1[", l, "] = ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l])) ENDIF #ENDIF REPEAT iNCMaxSyncSceneEntityInSequence l #IF IS_DEBUG_BUILD IF (ENUM_TO_INT(ActivityMain.objectModelName[l]) != 0) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: Attemping to create prop 2[", l, "] = ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l])) ENDIF #ENDIF IF IS_MODEL_IN_CDIMAGE(ActivityMain.objectModelName[l]) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: Attemping to create prop [", l, "] = ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l]), ", not yet created for activity ", GET_SLOT_NAME_STRING(ActivityMain.eActivity), ", sAnimDict = ", ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict) IF NOT IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict) REQUEST_ANIM_DICT(ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: created prop [", l, "] AnimDict Found: sAnimDict = ", ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict) IF HAS_ANIM_DICT_LOADED(ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict) AND REQUEST_LOAD_MODEL(ActivityMain.objectModelName[l]) IF NOT DOES_ENTITY_EXIST(activityPeds.oiSceneObjects[l]) IF CAN_REGISTER_MISSION_ENTITIES(0,0,1,0) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: created prop [", l, "] = sAnimDict = ", ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict, ", sAnimClip: ", ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimClip, ", MODEL_NAME: ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l])) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: created prop [", l, "] = vActPosOrigin = ", ActivityMain.vActPosOrigin, ", fActHeading: ", ActivityMain.fActHeading) VECTOR tempPosition = ActualPos(activityPeds.iNightClubPedID) VECTOR tempRotation = <<0, 0, ActualHeading(activityPeds.iNightClubPedID)>> IF IS_DJ_ACTIVITY(activityPeds.eActiveActivity) IF l = 0 AND DOES_DJ_HAVE_HEADPHONES_PROP(activityPeds) GET_NC_DJ_HEADPHONES_INITIAL_TRANSFORM(activityPeds, tempPosition, tempRotation) ELSE GET_NC_DJ_PROP_INTERACT_INITIAL_TRANSFORM(activityPeds, tempPosition, tempRotation,l) ENDIF ELSE tempPosition = GET_ANIM_INITIAL_OFFSET_POSITION(ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict, ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimClip, ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>) tempRotation = GET_ANIM_INITIAL_OFFSET_ROTATION(ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict, ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimClip, ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>) ENDIF IF VMAG(tempPosition) > 0.1 AND VMAG(ActivityMain.vActPosOrigin) > 0.1 activityPeds.oiSceneObjects[l] = CREATE_OBJECT_NO_OFFSET(ActivityMain.objectModelName[l], tempPosition, FALSE) SET_ENTITY_ROTATION(activityPeds.oiSceneObjects[l], tempRotation) SET_ENTITY_INVINCIBLE(activityPeds.oiSceneObjects[l], TRUE) SET_ENTITY_COLLISION(activityPeds.oiSceneObjects[l], FALSE) FREEZE_ENTITY_POSITION(activityPeds.oiSceneObjects[l], TRUE) IF (nightClubStruct.bHiddenForMocap AND SHOULD_HIDE_PED_FOR_CUTSCENES(activityPeds.iNightClubPedID)) OR (l < 2 // lazlow glowsticks AND activityPeds.eActiveActivity = AC_SLOT_LAZLOW_VIP AND activityPeds.iCurrentSequence != 8) SET_ENTITY_VISIBLE(activityPeds.oiSceneObjects[l], FALSE) INT j = 0 REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(activityPeds.oiSceneObjects[j]) IF NOT IS_ENTITY_DEAD(activityPeds.oiSceneObjects[j]) SET_ENTITY_VISIBLE(activityPeds.oiSceneObjects[j], FALSE) ENDIF ENDIF ENDREPEAT PRINTLN("CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS - hiding prop for mocap") ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: created prop [", l, "] = ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l]), ", position = ", tempPosition) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: prop creation position is 0") RETURN FALSE ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: can't register entity") RETURN FALSE ENDIF ENDIF ELSE IF NOT REQUEST_LOAD_MODEL(ActivityMain.objectModelName[l]) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: REQUEST_LOAD_MODEL NOT LOADED: ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l])) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: loading: ", ActivityMain.activityAnimSequence.activitySyncSceneEntity[l].sAnimDict, " for entity [", l, "] for activity ", GET_SLOT_NAME_STRING(ActivityMain.eActivity)) RETURN FALSE ENDIF ELSE IF GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l) != BONETAG_NULL AND NOT DOES_ENTITY_EXIST(activityPeds.oiSceneObjects[l]) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: sAnimDict is empty, but bonetag exists") IF REQUEST_LOAD_MODEL(ActivityMain.objectModelName[l]) AND NOT IS_ENTITY_DEAD(activityPeds.piScenePeds) #IF IS_DEBUG_BUILD VECTOR vTempPos = GET_BONE_OFFSET_POSITION_TO_ATTACH_TO(activityPeds.eActiveActivity, GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l), ActivityMain.objectModelName[l]) VECTOR vTempRot = GET_BONE_OFFSET_ROTATION_TO_ATTACH_TO(activityPeds.eActiveActivity, GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l)) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: Creating prop: ", GET_MODEL_NAME_FOR_DEBUG(ActivityMain.objectModelName[l]), ", boneOffset: ", vTempPos, ", Rotation: ", vTempRot) #ENDIF activityPeds.oiSceneObjects[l] = CREATE_OBJECT(ActivityMain.objectModelName[l], GET_PED_BONE_COORDS(activityPeds.piScenePeds, GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l), <<0,0,0>>), FALSE, FALSE) ATTACH_ENTITY_TO_ENTITY(activityPeds.oiSceneObjects[l], activityPeds.piScenePeds, GET_PED_BONE_INDEX(activityPeds.piScenePeds, GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l)), GET_BONE_OFFSET_POSITION_TO_ATTACH_TO(activityPeds.eActiveActivity, GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l), ActivityMain.objectModelName[l]), GET_BONE_OFFSET_ROTATION_TO_ATTACH_TO(activityPeds.eActiveActivity, GET_BONE_TO_ATTACH_TO(activityPeds.eActiveActivity, l)), TRUE, TRUE) IF (nightClubStruct.bHiddenForMocap AND SHOULD_HIDE_PED_FOR_CUTSCENES(activityPeds.iNightClubPedID)) INT j = 0 REPEAT iNCMaxSyncSceneEntityInSequence j IF DOES_ENTITY_EXIST(activityPeds.oiSceneObjects[j]) IF NOT IS_ENTITY_DEAD(activityPeds.oiSceneObjects[j]) SET_ENTITY_VISIBLE(activityPeds.oiSceneObjects[j], FALSE) ENDIF ENDIF ENDREPEAT ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: bonetag exists, but model is not loaded") RETURN FALSE ENDIF ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: sAnimDict is empty, but model name does exist: FALSE") ENDIF ELSE IF DOES_ENTITY_EXIST(activityPeds.oiSceneObjects[l]) DELETE_OBJECT(activityPeds.oiSceneObjects[l]) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: DELETE_ENTITY") ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: IS_MODEL_IN_CDIMAGE: FALSE") ENDIF ENDREPEAT ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS: No ped associated with props, returning true") ENDIF RETURN TRUE ENDFUNC PROC GiveNCPedFacialAnim(NIGHT_CLUB_PEDS &nightClubPed, STRING sDictName, STRING sClipName, BOOL bPlayAsMood = FALSE) IF bPlayAsMood SET_FACIAL_CLIPSET(nightClubPed.piScenePeds, sDictName) SET_FACIAL_IDLE_ANIM_OVERRIDE(nightClubPed.piScenePeds, sClipName) ELSE TASK_PLAY_ANIM(nightClubPed.piScenePeds, sDictName, sClipName, DEFAULT, DEFAULT, DEFAULT, AF_SECONDARY| AF_LOOPING) ENDIF nightClubPed.iFacialAnimStartTime = GET_GAME_TIMER() nightClubPed.iFacialAnimDuration = FLOOR(GET_ANIM_DURATION(sDictName, sClipName)*1000.0) //#IF IS_DEBUG_BUILD //nightClubPed.sDebugAnimFacialClipName = sClipName //#ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GiveNCPedFacialAnim: nc ped:", nightClubPed.iNightClubPedID, " dict: ", sDictName, ", clip: ", sClipName, " bPlayAsMood: ", bPlayAsMood) ENDPROC PROC GiveFacialAnims(NIGHT_CLUB_PEDS &nightClubPed, NIGHTCLUB_AUDIO_TAGS eIntensity) INT iRand STRING sClipName STRING sDictName = "facials@gen_male@base" REQUEST_ANIM_DICT(sDictName) IF HAS_ANIM_DICT_LOADED(sDictName) SWITCH eIntensity CASE AUDIO_TAG_NULL CASE AUDIO_TAG_LOW iRand = GET_RANDOM_INT_IN_RANGE(0, 3) SWITCH iRand CASE 0 sClipName = "mood_dancing_low_1" BREAK CASE 1 sClipName = "mood_dancing_low_2" BREAK CASE 2 sClipName = "mood_dancing_low_3" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_MEDIUM iRand = GET_RANDOM_INT_IN_RANGE(0, 3) SWITCH iRand CASE 0 sClipName = "mood_dancing_medium_1" BREAK CASE 1 sClipName = "mood_dancing_medium_2" BREAK CASE 2 sClipName = "mood_dancing_medium_3" BREAK ENDSWITCH BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS iRand = GET_RANDOM_INT_IN_RANGE(0, 2) SWITCH iRand CASE 0 sClipName = "mood_dancing_high_1" BREAK CASE 1 sClipName = "mood_dancing_high_2" BREAK ENDSWITCH BREAK ENDSWITCH GiveNCPedFacialAnim(nightClubPed, sDictName, sClipName, TRUE) PRINTLN("GiveFacialAnims - giving facial anim ", sClipName) ENDIF ENDPROC ENUM DEFAULT_FACIAL_ANIM DFA_DRUNK, DFA_STRESSED, DFA_HAPPY ENDENUM PROC GiveDefaultFacialAnim(NIGHT_CLUB_PEDS &nightClubPed, DEFAULT_FACIAL_ANIM eFacialAnim) REQUEST_ANIM_DICT("facials@gen_male@base") IF HAS_ANIM_DICT_LOADED("facials@gen_male@base") STRING sClipName SWITCH eFacialAnim CASE DFA_DRUNK sClipName = "mood_drunk_1" BREAK CASE DFA_STRESSED sClipName = "mood_stressed_1" BREAK CASE DFA_HAPPY sClipName = "mood_happy_1" BREAK ENDSWITCH GiveNCPedFacialAnim(nightClubPed, "facials@gen_male@base", sClipName) ENDIF ENDPROC PROC GiveDJFacialAnims(NIGHT_CLUB_PEDS &nightClubPed) TEXT_LABEL_63 sClipName sClipName = GET_NC_DJ_ANIM_CLIP(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) IF NOT IS_STRING_NULL_OR_EMPTY(sClipName) sClipName += "_face" STRING sDictName sDictName = GET_NC_DJ_ANIM_DICT(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) GiveNCPedFacialAnim(nightClubPed, sDictName, sClipName) ENDIF ENDPROC PROC GiveLazlowFacialAnims(NIGHT_CLUB_PEDS &nightClubPed) NC_ACTIVITY_ANIM_SEQUENCE activityAnim SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_LAZLOW_HIGH_PODIUM GET_NC_LAZLOW_HIGH_PODIUM_ANIM_DATA(0, nightClubPed.iCurrentSequence, activityAnim) activityAnim.activitySyncScenePed[0].sAnimClip += "_face" GiveNCPedFacialAnim(nightClubPed, activityAnim.activitySyncScenePed[0].sAnimDict, activityAnim.activitySyncScenePed[0].sAnimClip) BREAK CASE AC_SLOT_LAZLOW_HIGH_CHAIR GET_NC_LAZLOW_HIGH_CHAIR_ANIM_DATA(0, nightClubPed.iCurrentSequence, activityAnim) activityAnim.activitySyncScenePed[0].sAnimClip += "_face" GiveNCPedFacialAnim(nightClubPed, activityAnim.activitySyncScenePed[0].sAnimDict, activityAnim.activitySyncScenePed[0].sAnimClip) BREAK CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR GiveFacialAnims(nightClubPed, g_eNightClubAudioIntensityLevel) BREAK CASE AC_SLOT_LAZLOW_HIGH_RAILING IF nightClubPed.iCurrentSequence = 8 OR nightClubPed.iCurrentSequence = 10 OR nightClubPed.iCurrentSequence = 12 GET_NC_LAZLOW_HIGH_RAILING_ANIM_DATA(0, nightClubPed.iCurrentSequence, activityAnim) activityAnim.activitySyncScenePed[0].sAnimClip += "_face" GiveNCPedFacialAnim(nightClubPed, activityAnim.activitySyncScenePed[0].sAnimDict, activityAnim.activitySyncScenePed[0].sAnimClip) ELSE GiveFacialAnims(nightClubPed, g_eNightClubAudioIntensityLevel) ENDIF BREAK CASE AC_SLOT_LAZLOW_LOW_BAR IF nightClubPed.iCurrentSequence = 2 OR nightClubPed.iCurrentSequence = 3 OR nightClubPed.iCurrentSequence = 9 GET_NC_LAZLOW_LOW_BAR_ANIM_DATA(0, nightClubPed.iCurrentSequence, activityAnim) activityAnim.activitySyncScenePed[0].sAnimClip += "_face" GiveNCPedFacialAnim(nightClubPed, activityAnim.activitySyncScenePed[0].sAnimDict, activityAnim.activitySyncScenePed[0].sAnimClip) ELSE GiveFacialAnims(nightClubPed, g_eNightClubAudioIntensityLevel) ENDIF BREAK CASE AC_SLOT_LAZLOW_LOW_SOFA GiveDefaultFacialAnim(nightClubPed, DFA_DRUNK) BREAK CASE AC_SLOT_LAZLOW_LOW_TOILET CASE AC_SLOT_LAZLOW_LOW_ALONE GiveDefaultFacialAnim(nightClubPed, DFA_STRESSED) BREAK CASE AC_SLOT_LAZLOW_VIP GiveDefaultFacialAnim(nightClubPed, DFA_HAPPY) BREAK DEFAULT GiveFacialAnims(nightClubPed, g_eNightClubAudioIntensityLevel) BREAK ENDSWITCH ENDPROC PROC GiveDancePedFacialAnims(NIGHT_CLUB_PEDS &nightClubPed) IF GET_INTENSITY_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = AUDIO_TAG_LOW IF nightClubPed.eActiveActivity = AC_SLOT_SINGLE_PROP_M_3 IF GET_LENGTH_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 9 AND GET_VARIATION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 1 GiveNCPedFacialAnim(nightClubPed, "ANIM@AMB@NIGHTCLUB@DANCERS@CrowdDance_Single_Props@Low_Intensity", "LI_Dance_Prop_09_v1_Male^3_Face") EXIT ELIF GET_LENGTH_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 13 AND GET_VARIATION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 2 GiveNCPedFacialAnim(nightClubPed, "ANIM@AMB@NIGHTCLUB@DANCERS@CrowdDance_Single_Props@Low_Intensity", "LI_Dance_Prop_13_v2_Male^3_Face") EXIT ENDIF ELIF nightClubPed.eActiveActivity = AC_SLOT_SINGLE_PROP_M_5 AND GET_LENGTH_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 13 AND GET_VARIATION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 2 GiveNCPedFacialAnim(nightClubPed, "ANIM@AMB@NIGHTCLUB@DANCERS@CrowdDance_Single_Props@Low_Intensity", "LI_Dance_Prop_13_v2_Male^5_Face") EXIT ELIF nightClubPed.eActiveActivity = AC_SLOT_SINGLE_PROP_M_6 AND GET_LENGTH_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 13 AND GET_VARIATION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient) = 2 GiveNCPedFacialAnim(nightClubPed, "ANIM@AMB@NIGHTCLUB@DANCERS@CrowdDance_Single_Props@Low_Intensity", "LI_Dance_Prop_13_v2_Male^6_Face") EXIT ENDIF ENDIF GiveFacialAnims(nightClubPed, g_eNightClubAudioIntensityLevel) ENDPROC PROC RUN_NC_FACIAL_ANIM(NIGHT_CLUB_PEDS &nightClubPed) IF DOES_ENTITY_EXIST(nightClubPed.piScenePeds) IF NOT IS_ENTITY_DEAD(nightClubPed.piScenePeds) AND nightClubPed.eActiveActivity != AC_SLOT_NULL IF FacialAnimTimeRemaining(nightClubPed) < 100 IF (nightClubPed.iFacialAnimFrameDelay <= 0) IF (nightClubPed.iNCPedType = ENUM_TO_INT(NC_LAZLOW)) GiveLazlowFacialAnims(nightClubPed) ELSE IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) GiveDJFacialAnims(nightClubPed) ELSE IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) OR IS_NC_PED_ENTOURAGE(INT_TO_ENUM(NC_PED_TYPES, nightClubPed.iNCPedType)) GiveDancePedFacialAnims(nightClubPed) ELIF IS_NC_PED_TYPE_CUSTOMER(GET_NIGHTCLUB_PED_TYPE(nightClubPed.iNightClubPedID)) GiveFacialAnims(nightClubPed, AUDIO_TAG_LOW) ENDIF ENDIF ENDIF ELSE nightClubPed.iFacialAnimFrameDelay-- ENDIF ENDIF ENDIF ENDIF ENDPROC // Returns true when sync scene starts playing FUNC BOOL RUN_NC_ANIM_LOCAL_SYNC_SCENE_SEQUENCE(NIGHT_CLUB_STRUCT &nightClubStruct, NC_ACTIVITY_MAIN &ActivityMain, NIGHT_CLUB_PEDS &nightClubPed, INT iPedID = -1) UNUSED_PARAMETER(iPedID) FLOAT fBlendIn = NORMAL_BLEND_IN FLOAT fBlendOut = NORMAL_BLEND_OUT NIGHTCLUB_PED_ANIM_DICT eAnimDict BOOL bIsFemale INT iPedAnimIndex GET_DANCE_ACTIVITY_PED_DATA(nightClubPed.eActiveActivity, eAnimDict, bIsFemale, iPedAnimIndex) INT iExpectedFramesUntilAnimEnds IF NOT IS_ENTITY_DEAD(nightClubPed.piScenePeds) AND nightClubPed.eActiveActivity != AC_SLOT_NULL // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: processing iPedID: ", iPedID) // is the current anim about to finish? IF (nightClubPed.bHasSyncSceneStarted) IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) GET_DANCE_ANIM_DATA(nightClubPed.eActiveActivity, ActivityMain.activityAnimSequence, GET_TRANSITION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_LENGTH_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_VARIATION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_INTENSITY_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_NEXT_INTENSITY_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient)) iExpectedFramesUntilAnimEnds = ExpectedFramesUntilEndOfAnim(nightClubPed) IF (iExpectedFramesUntilAnimEnds <= 1) OR ((NOT IS_ENTITY_PLAYING_ANIM(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) OR GET_ENTITY_ANIM_CURRENT_TIME(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) >= 1.0) AND GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) <> WAITING_TO_START_TASK) nightClubPed.bHasSyncSceneStarted = FALSE fBlendIn = INSTANT_BLEND_IN fBlendOut = INSTANT_BLEND_OUT CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: iExpectedFramesUntilAnimEnds: ", iExpectedFramesUntilAnimEnds, " ncped id ", nightClubPed.iNightClubPedID) ENDIF ENDIF IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) iExpectedFramesUntilAnimEnds = ExpectedFramesUntilEndOfAnim(nightClubPed) BOOL bLastAnimBlend = FALSE // last anim - ends when mix ends IF nightClubPed.iCurrentSequence >= GET_NC_DJ_LAST_ANIM_CLIP_INDEX(nightClubPed.eActiveActivity) CPRINTLN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: IS_DJ_ACTIVITY: bLastAnimBlend: GET_CURRENT_MIX_TIME = ", GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID), ", GET_TOTAL_MIX_TIME = ", GET_TOTAL_MIX_TIME(nightClubStruct.iCurrentStationID)) IF GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID) > GET_TOTAL_MIX_TIME(nightClubStruct.iCurrentStationID) bLastAnimBlend = TRUE CPRINTLN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: IS_DJ_ACTIVITY: bLastAnimBlend = TRUE") ENDIF ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) OR GET_SYNCHRONIZED_SCENE_PHASE(nightClubPed.iSceneID) >= 1 OR bLastAnimBlend nightClubPed.bHasSyncSceneStarted = FALSE fBlendIn = INSTANT_BLEND_IN fBlendOut = INSTANT_BLEND_OUT IF bLastAnimBlend fBlendIn = 1.0 ENDIF IF nightClubPed.iCurrentSequence >= GET_NC_DJ_LAST_ANIM_CLIP_INDEX(nightClubPed.eActiveActivity) nightClubStruct.iMixAnimTime = 0 ENDIF nightClubPed.iCurrentSequence++ IF nightClubPed.iCurrentSequence >= GET_NC_DJ_LAST_ANIM_CLIP_INDEX(nightClubPed.eActiveActivity) nightClubPed.iCurrentSequence = 0 ENDIF TEXT_LABEL_63 tl63HeadphoneClip = GET_NC_DJ_HEADPHONES_ANIM_CLIP(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl63HeadphoneClip) DETACH_NC_DJ_HEADPHONES(nightClubPed) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: iExpectedFramesUntilAnimEnds: ", iExpectedFramesUntilAnimEnds, " ncped id ", nightClubPed.iNightClubPedID) ENDIF ENDIF IF IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) iExpectedFramesUntilAnimEnds = ExpectedFramesUntilEndOfAnim(nightClubPed) IF iExpectedFramesUntilAnimEnds <= 1 OR (SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE(nightClubPed.eActiveActivity) AND (NOT IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) OR GET_SYNCHRONIZED_SCENE_PHASE(nightClubPed.iSceneID) >= 1)) nightClubPed.bHasSyncSceneStarted = FALSE fBlendIn = INSTANT_BLEND_IN fBlendOut = INSTANT_BLEND_OUT // lazlow mc -> rail - activity change here. IF nightClubPed.eActiveActivity = AC_SLOT_LAZLOW_VIP AND nightClubPed.iCurrentSequence = 8 g_iNightClubLazlowPosition = 1 // to railings INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iPedID, iActivitySlot, bIsRandom) nightClubPed.eActiveActivity = INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot) nightClubPed.iCurrentSequence = 0 ELSE nightClubPed.iCurrentSequence = GetNextSequenceForActivity(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: iExpectedFramesUntilAnimEnds: ", iExpectedFramesUntilAnimEnds, " ncped id ", nightClubPed.iNightClubPedID) ENDIF ENDIF ENDIF IF NOT SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE(nightClubPed.eActiveActivity) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: NOT SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE iPedID: ", iPedID) IF NOT nightClubPed.bHasSyncSceneStarted IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) AND NOT IS_STRING_NULL_OR_EMPTY(BuildAnimDictTransitionString(eAnimDict, g_eNightClubAudioIntensityLevel)) REQUEST_ANIM_DICT(BuildAnimDictTransitionString(eAnimDict, g_eNightClubAudioIntensityLevel)) ENDIF IF (nightClubPed.iCurrentSequence = -1) AND NOT IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) nightClubPed.iCurrentSequence = GetRandomSequenceForActivity(nightClubPed.eActiveActivity) #IF IS_DEBUG_BUILD CWARNINGLN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: setting nightClubPed.iCurrentSequence to ", nightClubPed.iCurrentSequence) #ENDIF ENDIF IF NOT DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) OR IS_STRING_NULL_OR_EMPTY(BuildAnimDictTransitionString(eAnimDict, g_eNightClubAudioIntensityLevel)) OR HAS_ANIM_DICT_LOADED(BuildAnimDictTransitionString(eAnimDict, g_eNightClubAudioIntensityLevel)) NC_ACTIVITY_MAIN sChildActivities[MAX_NUMBER_NC_PED_OFFSET_CHILDREN] INT iChildCount = 0 IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) BOOL bTransition = FALSE INT iVariation, iVariation2 FLOAT fTransitionTime = GET_TIME_UNTIL_DANCE_TRANSITION(nightClubPed) IF fTransitionTime < 5.0 AND fTransitionTime > -5.0 bTransition = TRUE iVariation = nightClubPed.iDanceTransitionVariation iVariation2 = nightClubPed.iDanceTransitionVariation2 ELSE IF NOT (nightClubPed.iDanceTransitionVariation = -1) nightClubPed.iDanceTransitionVariation = -1 CDEBUG1LN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: resetting iDanceTransitionVariation to -1 for nc ped ", nightClubPed.iNightClubPedID) ENDIF IF NOT (nightClubPed.iDanceTransitionVariation2 = -1) nightClubPed.iDanceTransitionVariation2 = -1 CDEBUG1LN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: resetting iDanceTransitionVariation2 to -1 for nc ped ", nightClubPed.iNightClubPedID) ENDIF iVariation = GET_RANDOM_LENGTH_FOR_DANCE_CLIP(nightClubPed) iVariation2 = GET_RANDOM_VARIATION_FOR_DANCE_CLIP(eAnimDict, g_eNightClubAudioIntensityLevel, iVariation) ENDIF nightClubPed.iAnimVarient = GET_ANIM_VARIENT(iVariation, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext, iVariation2, bTransition) #IF IS_DEBUG_BUILD IF nightClubPed.iOffsetNCPedId != -1 CWARNINGLN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: nightClubPed.iOffsetNCPedId was set but nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedId] was -1") ENDIF #ENDIF GetAnimDataForPed(ActivityMain, nightClubPed, bTransition, iVariation, iVariation2) REPEAT MAX_NUMBER_NC_PED_OFFSET_CHILDREN iChildCount IF nightClubPed.iOffsetNCPedChildrenId[iChildCount] != -1 AND nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[iChildCount]] != -1 sChildActivities[iChildCount].vActPosOrigin = ActualPos(nightClubPed.iOffsetNCPedChildrenId[iChildCount]) sChildActivities[iChildCount].fActHeading = ActualHeading(nightClubPed.iOffsetNCPedChildrenId[iChildCount]) GET_DANCE_ANIM_DATA(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[iChildCount]]].eActiveActivity, sChildActivities[iChildCount].activityAnimSequence, bTransition, iVariation, iVariation2, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext) nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[iChildCount]]].iAnimVarient = GET_ANIM_VARIENT(iVariation, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext, iVariation2, bTransition) ELSE BREAKLOOP ENDIF ENDREPEAT ELSE GetAnimDataForPed(ActivityMain, nightClubPed) ENDIF BOOL bGoodToProceed = TRUE INT i = 0 INT j REPEAT iNCMaxSyncScenePedInSequence i IF NOT IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict) REQUEST_ANIM_DICT(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict) IF HAS_ANIM_DICT_LOADED(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict) IF DOES_ENTITY_EXIST(nightClubPed.piScenePeds) IF NOT IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) FLOAT fRand fRand = GET_RANDOM_FLOAT_IN_RANGE(0, 0.5) // dont want to start too near the end of an anim. IF IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) AND (GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) = PERFORMING_TASK) // if we are already playing an anim and going to the next anim in the sequence then // dont start from an offset. fRand = 0.0 ENDIF IF NOT DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) IF IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) TASK_PLAY_ANIM_ADVANCED(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>, fBlendIn,fBlendOut,DEFAULT, AF_HOLD_LAST_FRAME | AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, DEFAULT, DEFAULT, AIK_DISABLE_ARM_IK|AIK_DISABLE_LEG_IK) ELSE IF SEATED_ANIMS(nightClubPed.eActiveActivity) TASK_PLAY_ANIM_ADVANCED(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>, fBlendIn,fBlendOut,DEFAULT, AF_LOOPING|AF_EXTRACT_INITIAL_OFFSET|AF_USE_KINEMATIC_PHYSICS|AF_USE_MOVER_EXTRACTION, fRand, DEFAULT, AIK_DISABLE_ARM_IK|AIK_DISABLE_LEG_IK) ELIF nightClubPed.eActiveActivity = AC_SLOT_CAGE_DANCING_LAP_SCENARIO TASK_PLAY_ANIM_ADVANCED(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>, fBlendIn,fBlendOut,DEFAULT, AF_LOOPING|AF_USE_MOVER_EXTRACTION, fRand) ELIF nightClubPed.eActiveActivity = AC_SLOT_SMOKE TASK_PLAY_ANIM(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip,fBlendIn,fBlendOut,DEFAULT, AF_LOOPING | AF_UPPERBODY, fRand) ELSE TASK_PLAY_ANIM(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip,fBlendIn,fBlendOut,DEFAULT, AF_LOOPING, fRand) ENDIF ENDIF ELSE fRand = 0.0 VECTOR vPedCoords = GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE) ActivityMain.vActPosOrigin.z = vPedCoords.z TASK_PLAY_ANIM_ADVANCED(nightClubPed.piScenePeds, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>, fBlendIn,fBlendOut,DEFAULT, AF_HOLD_LAST_FRAME) j = 0 REPEAT iChildCount j CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_PLAY_ANIM i: ", i, ", On child: ", j, ", sAnimClip: ", sChildActivities[j].activityAnimSequence.activitySyncScenePed[i].sAnimClip, ", sAnimDict: ", sChildActivities[j].activityAnimSequence.activitySyncScenePed[i].sAnimDict, " iPedID: ", nightClubPed.iOffsetNCPedChildrenId[j]) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[j]]].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[j]]].piScenePeds) sChildActivities[j].vActPosOrigin.z = vPedCoords.z TASK_PLAY_ANIM_ADVANCED(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[j]]].piScenePeds, sChildActivities[j].activityAnimSequence.activitySyncScenePed[i].sAnimDict, sChildActivities[j].activityAnimSequence.activitySyncScenePed[i].sAnimClip, sChildActivities[j].vActPosOrigin, <<0,0,sChildActivities[j].fActHeading>>, fBlendIn,fBlendOut,DEFAULT, AF_HOLD_LAST_FRAME) ENDIF RUN_NC_FACIAL_ANIM(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[j]]]) #IF IS_DEBUG_BUILD nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[j]]].sDebugAnimClipName = sChildActivities[j].activityAnimSequence.activitySyncScenePed[0].sAnimClip //nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iOffsetNCPedChildrenId[j]]].sDebugAnimDictName = sChildActivities[j].activityAnimSequence.activitySyncScenePed[0].sAnimDict #ENDIF ENDREPEAT ENDIF FLOAT fDuration = GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) nightClubPed.iAnimDuration = FLOOR(fDuration * 1000.0) nightClubPed.iAnimStartTime = GET_GAME_TIMER() nightClubPed.iAnimOffset = FLOOR(TO_FLOAT(nightClubPed.iAnimDuration) * fRand) // UpdatePhaseRateForPed(nightClubPed, nightClubPed.fPhaseRate) nightClubPed.iFacialAnimDuration = 0 nightClubPed.iFacialAnimFrameDelay = 0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_PLAY_ANIM i: ", i,", NetworkSceneID: ", nightClubPed.iSceneID, ", sAnimClip: ", ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, ", sAnimDict: ", ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ", nightClubStruct.iNumberOfRunningAnims = ", nightClubStruct.iNumberOfRunningAnims, ", iPedID: ", iPedID, ", fRand: ", fRand) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: Playing anim at ", ActivityMain.vActPosOrigin, " heading ", ActivityMain.fActHeading) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: nightclub ped id ", nightClubPed.iNightClubPedID, " given anim ", nightClubPed.sDebugAnimClipName, " iAnimDuration = " , nightClubPed.iAnimDuration , " iAnimStartTime = " , nightClubPed.iAnimStartTime , " iAnimOffset = " , nightClubPed.iAnimOffset , " fPhaseRate = ", nightClubPed.fPhaseRate) SET_RAGDOLL_BLOCKING_FLAGS(nightClubPed.piScenePeds, RBF_IMPACT_OBJECT) ELSE #IF IS_DEBUG_BUILD IF IS_ENTITY_DEAD(nightClubPed.piScenePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," IS_ENTITY_DEAD = TRUE") ENDIF IF IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," sAnimClip = NULL") ENDIF VECTOR vTemp vTemp = GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: GET_ENTITY_COORDS: PedIndex ID: ", vTemp ) #ENDIF ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," = NULL") ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," loading anim dict ", ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict) bGoodToProceed = FALSE ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i, " no anim dict") ENDIF ENDREPEAT // only continue if we are not still loading anims IF (bGoodToProceed) i = 0 nightClubPed.bHasSyncSceneStarted = TRUE #IF IS_DEBUG_BUILD nightClubPed.sDebugAnimClipName = ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip //nightClubPed.sDebugAnimDictName = ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict #ENDIF RETURN(TRUE) ENDIF ENDIF ELSE IF NOT IS_ENTITY_DEAD(nightClubPed.piScenePeds) IF NOT DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) IF IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) IF (AnimTimeRemaining(nightClubPed) < (250 + FLOOR(GET_FRAME_TIME()*1000))) nightClubPed.bHasSyncSceneStarted = FALSE nightClubPed.iCurrentSequence = GetNextSequenceForActivity(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: played anim for more than 1 loop. iPedID: ", iPedID, " loop duration = ", nightClubPed.iAnimDuration) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: nightClubPed.iCurrentSequence set to : ", nightClubPed.iCurrentSequence) ENDIF ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: bHasSyncSceneStarted, NOT DANCEFLOOR_GROUP_ANIMS. iPedID: ", iPedID) IF GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) <> PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) <> WAITING_TO_START_TASK nightClubPed.bHasSyncSceneStarted = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SY SEQUENCE: iLocalScene >= 1: syncSceneFinished, iPedID: ", iPedID) ENDIF ENDIF ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: bHasSyncSceneStarted, DANCEFLOOR_GROUP_ANIMS. iPedID: ", iPedID) IF GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) <> PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) <> WAITING_TO_START_TASK nightClubPed.bHasSyncSceneStarted = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: iLocalScene >= 1: DANCE PED: syncSceneFinished, iPedID: ", iPedID) ELSE // UpdatePhaseRateForPed(nightClubPed, nightClubPed.fPhaseRate) // how long has the anim been playing? more than 1 loop? // INT iTimeRemaining = AnimTimeRemaining(nightClubPed) // IF (iTimeRemaining < 100) // don't wait until end of loop before starting next loop // AND (g_iNightClubAudioNextTagTime - g_iNightClubAudioCurrentTime > 1000) // do wait if there's a transition soon // nightClubPed.bHasSyncSceneStarted = FALSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: played anim for more than 1 loop. iPedID: ", iPedID, " loop duration = ", nightClubPed.iAnimDuration, ", iTimeRemaining = ", iTimeRemaining) // ELSE //// CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: not played anim for more than 1 loop. iPedID: ", iPedID, " iTimePlayedAnim = ", iTimePlayedAnim, " loop duration = ", nightClubPed.iAnimDuration, ", iTimeRemaining = ", iTimeRemaining) // ENDIF ENDIF ENDIF // ENDIF ENDIF ENDIF ELSE IF NOT nightClubPed.bHasSyncSceneStarted IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) IF nightClubPed.iCurrentSequence < 0 nightClubPed.iCurrentSequence = 0 ENDIF TEXT_LABEL_63 tl63HeadphoneClip = GET_NC_DJ_HEADPHONES_ANIM_CLIP(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) IF IS_STRING_NULL_OR_EMPTY(tl63HeadphoneClip) ATTACH_NC_DJ_HEADPHONES(nightClubPed) ELSE DETACH_NC_DJ_HEADPHONES(nightClubPed) ENDIF CPRINTLN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: DJ, nightClubPed.iCurrentSequence = ", nightClubPed.iCurrentSequence) ELIF (nightClubPed.iCurrentSequence = -1) nightClubPed.iCurrentSequence = 0 #IF IS_DEBUG_BUILD CWARNINGLN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: setting nightClubPed.iCurrentSequence to ", nightClubPed.iCurrentSequence) #ENDIF ENDIF GetAnimDataForPed(ActivityMain, nightClubPed) CPRINTLN(DEBUG_NET_PED_DANCING, "GetAnimDataForPed: anim = ", ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) IF NOT IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_SYNCHRONIZED_SCENE: iPedID: ", iPedID, ", Trying to start sync scene: bHasSyncSceneStarted: False: IS_STRING_NULL_OR_EMPTY: FALSE ") REQUEST_ANIM_DICT(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict) IF HAS_ANIM_DICT_LOADED(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_SYNCHRONIZED_SCENE: iPedID: ", iPedID, ", Trying to start sync scene: bHasSyncSceneStarted: False: IS_STRING_NULL_OR_EMPTY: FALSE: HAS_ANIM_DICT_LOADED: TRUE ") nightClubPed.iSceneID = CREATE_SYNCHRONIZED_SCENE(ActivityMain.vActPosOrigin, <<0,0,ActivityMain.fActHeading>>, DEFAULT) FLOAT fPlayRate = 1.0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_SYNCHRONIZED_SCENE: iPedID: ", iPedID, ", ActivityMain.vActPosOrigin = ", ActivityMain.vActPosOrigin, ", ActivityMain.fActHeading = ", ActivityMain.fActHeading) INT i REPEAT iNCMaxSyncScenePedInSequence i IF DOES_ENTITY_EXIST(nightClubPed.piScenePeds) IF NOT IS_ENTITY_DEAD(nightClubPed.piScenePeds) AND NOT IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) // nightClubStruct.iNumberOfRunningAnims++ TASK_SYNCHRONIZED_SCENE(nightClubPed.piScenePeds,nightClubPed.iSceneID, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, fBlendIn, fBlendOut, ActivityMain.activityAnimSequence.activitySyncScenePed[i].flags | SYNCED_SCENE_DONT_INTERRUPT, RBF_PLAYER_IMPACT, DEFAULT) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_SYNCHRONIZED_SCENE: iPedID: ", iPedID, ", i: ", i,", PedIndex: ", NATIVE_TO_INT(nightClubPed.piScenePeds), ", NetworkSceneID: ", nightClubPed.iSceneID, ", sAnimClip: ", ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip, ", sAnimDict: ", ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ", nightClubStruct.iNumberOfRunningAnims = ", nightClubStruct.iNumberOfRunningAnims) SET_RAGDOLL_BLOCKING_FLAGS(nightClubPed.piScenePeds, RBF_IMPACT_OBJECT) IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: iMixAnimTime: ", nightClubStruct.iMixAnimTime, " GET_CURRENT_MIX_TIME: ", GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID), " - Difference of ", GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID) - nightClubStruct.iMixAnimTime) FLOAT fPredictedIdealNextDjSyncTime = (TO_FLOAT(GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID)) / 1000.0) + GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) FLOAT fPredictedNextDjSyncAnimTime = fPredictedIdealNextDjSyncTime - (TO_FLOAT(nightClubStruct.iMixAnimTime) / 1000.0) fPlayRate = fPredictedNextDjSyncAnimTime / GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) ENDIF ELSE #IF IS_DEBUG_BUILD IF IS_ENTITY_DEAD(nightClubPed.piScenePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," IS_ENTITY_DEAD = TRUE") ENDIF IF IS_STRING_NULL_OR_EMPTY(ActivityMain.activityAnimSequence.activitySyncScenePed[i].sAnimClip) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," sAnimClip = NULL") ENDIF VECTOR vTemp vTemp = GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: GET_ENTITY_COORDS: PedIndex ID: ", vTemp ) #ENDIF ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PedIndex ID: ", i," = NULL") ENDIF ENDREPEAT IF NOT IS_PLAYER_LOCALLY_RUNNING_NIGHTCLUB_MOCAP() i = 0 REPEAT iNCMaxSyncSceneEntityInSequence i IF DOES_ENTITY_EXIST(nightClubPed.oiSceneObjects[i]) AND NOT IS_STRING_NULL_OR_EMPTY(activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimClip) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: pedID: ", iPedId, " NC_POS_ACT_STAGE_PERFORMING_FIRST_ACTIVITY: i: ", i," ModelName: ", GET_MODEL_NAME_FOR_DEBUG(GET_ENTITY_MODEL(nightClubPed.oiSceneObjects[i])), ", SceneID: ", nightClubPed.iSceneID, ", sAnimClip: ", activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimClip, ", sAnimDict: ", activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimDict) IF (nightClubPed.iNightClubPedID != -1) AND nightClubStruct.iNightClubPedIDsReverse[nightClubPed.iNightClubPedID] = nightClubStruct.iDJPedID1 AND DOES_DJ_HAVE_HEADPHONES_PROP(nightClubPed) AND NOT nightClubStruct.bHiddenForMocap SET_ENTITY_VISIBLE(nightClubPed.oiSceneObjects[i], TRUE) ENDIF PLAY_SYNCHRONIZED_ENTITY_ANIM(nightClubPed.oiSceneObjects[i], nightClubPed.iSceneID, activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimClip, activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimDict, fBlendIn, fBlendOut, ENUM_TO_INT(activityMain.activityAnimSequence.activitySyncSceneEntity[i].flags)) FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(nightClubPed.oiSceneObjects[i]) ENDIF //CDEBUG1LN(DEBUG_NET_PED_DANCING, "DOES_ENTITY_EXIST(nightClubPed.oiSceneObjects[i]): ", i," = ",DOES_ENTITY_EXIST(nightClubPed.oiSceneObjects[i])) //CDEBUG1LN(DEBUG_NET_PED_DANCING, "activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimClip: ", i," = ",activityMain.activityAnimSequence.activitySyncSceneEntity[i].sAnimClip) ENDREPEAT ENDIF nightClubPed.bHasSyncSceneStarted = TRUE FLOAT fDuration = GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) nightClubPed.iAnimDuration = FLOOR(fDuration * 1000.0) nightClubPed.iAnimStartTime = GET_GAME_TIMER() nightClubPed.iAnimOffset = 0 IF fPlayRate > 1.2 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: fPlayRate is too large (", fPlayRate, "), capping at 1.2") fPlayRate = 1.2 ELIF fPlayRate < 0.8 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: fPlayRate is too small (", fPlayRate, "), capping at 0.8") fPlayRate = 0.8 ENDIF IF g_bNightClubRadioDelayNeeded AND IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) fPlayRate = 0.0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: setting DJ anim rate to 0 to hold for music delay") ENDIF IF nightClubStruct.bInitialDjAnim AND IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) nightClubPed.iAnimOffset = GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID) - nightClubStruct.iMixAnimTime FLOAT fScenePhase = (TO_FLOAT(nightClubPed.iAnimOffset)/1000.0) / GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) fPlayRate = 1.0 SET_SYNCHRONIZED_SCENE_PHASE(nightClubPed.iSceneID, fScenePhase) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: setting DJ anim start phase to ", fScenePhase," to match mix time") ENDIF #IF IS_DEBUG_BUILD IF nightClubStruct.fDebugSyncSpeed != -1.0 fPlayRate = nightClubStruct.fDebugSyncSpeed ENDIF #ENDIF SET_SYNCHRONIZED_SCENE_RATE(nightClubPed.iSceneID, fPlayRate) nightClubPed.fPhaseRate = fPlayRate CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: setting anim rate to: ",nightClubPed.fPhaseRate) nightClubPed.iFacialAnimDuration = 0 nightClubPed.iFacialAnimFrameDelay = 0 IF iPedID = nightClubStruct.iDJPedID2 // 2 priority as it processes last OR (nightClubStruct.iDJPedID2 = -1 AND iPedID = nightClubStruct.iDJPedID1) IF nightClubStruct.bInitialDjAnim nightClubStruct.bInitialDjAnim = FALSE ENDIF nightClubStruct.iMixAnimTime += FLOOR(fDuration * 1000.0) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: Updating iMixAnimTime, from ", nightClubStruct.iMixAnimTime - FLOOR(fDuration * 1000.0), " to ", nightClubStruct.iMixAnimTime) ENDIF #IF IS_DEBUG_BUILD nightClubPed.sDebugAnimClipName = ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip //nightClubPed.sDebugAnimDictName = ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict #ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: nightClubPed.iSceneID: ", nightClubPed.iSceneID) RETURN(TRUE) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: not loaded yet") ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: CREATE_SYNCHRONIZED_SCENE: string is null or empty") ENDIF ELSE INT iLocalScene iLocalScene = nightClubPed.iSceneID // CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_SYNCHRONIZED_SCENE: iPedID: ", nightClubPed.iNightClubPedID, ", scene aleady started") IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) #IF IS_DEBUG_BUILD IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: DJ_ACTIVITY: Current phase is ", GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene), " for iPedID: ", iPedID) ENDIF #ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) OR GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene) >= 1 nightClubPed.bHasSyncSceneStarted = FALSE nightClubPed.iCurrentSequence++ IF nightClubPed.iCurrentSequence >= GET_NC_DJ_LAST_ANIM_CLIP_INDEX(nightClubPed.eActiveActivity) nightClubPed.iCurrentSequence = 0 ENDIF TEXT_LABEL_63 tl63HeadphoneClip = GET_NC_DJ_HEADPHONES_ANIM_CLIP(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) IF NOT IS_STRING_NULL_OR_EMPTY(tl63HeadphoneClip) DETACH_NC_DJ_HEADPHONES(nightClubPed) ENDIF ELSE //sync IF nightClubStruct.iNightClubPedIDsReverse[iPedId] != -1 AND nightClubStruct.iNightClubPedIDsReverse[iPedId] >= nightClubStruct.iProcessStagger AND nightClubStruct.iNightClubPedIDsReverse[iPedId] < nightClubStruct.iProcessStagger + nightClubStruct.iStaggerPerFrame GetAnimDataForPed(ActivityMain, nightClubPed) IF HAS_ANIM_DICT_LOADED(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict) FLOAT fPredictedIdealNextDjSyncTime = (TO_FLOAT(GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID)) / 1000.0) + (GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) * (1.0 - GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene))) FLOAT fPredictedNextDjSyncAnimTime = fPredictedIdealNextDjSyncTime - ((TO_FLOAT(nightClubStruct.iMixAnimTime) / 1000.0) - (GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) * (1.0 - GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene)))) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: DJ_ACTIVITY: iMixAnimTime (est): ", FLOOR(((TO_FLOAT(nightClubStruct.iMixAnimTime) / 1000.0) - (GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) * (1.0 - GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene)))) * 1000.0) , " GET_CURRENT_MIX_TIME: ", GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID), " - Difference of ", GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID) - FLOOR(((TO_FLOAT(nightClubStruct.iMixAnimTime) / 1000.0) - (GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) * (1.0 - GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene))))*1000.0), ", fPredictedIdealNextDjSyncTime = ", fPredictedIdealNextDjSyncTime, ", fPredictedNextDjSyncAnimTime = ", fPredictedNextDjSyncAnimTime) FLOAT fPlayRate = fPredictedNextDjSyncAnimTime / (GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) * (1.0 - GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene))) IF fPlayRate > 1.2 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: DJ_ACTIVITY: fPlayRate is too large (", fPlayRate, "), capping at 1.2") fPlayRate = 1.2 ELIF fPlayRate < 0.8 CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: DJ_ACTIVITY: fPlayRate is too small (", fPlayRate, "), capping at 0.8") fPlayRate = 0.8 ENDIF #IF IS_DEBUG_BUILD IF nightClubStruct.fDebugSyncSpeed != -1.0 fPlayRate = nightClubStruct.fDebugSyncSpeed ENDIF #ENDIF SET_SYNCHRONIZED_SCENE_RATE(nightClubPed.iSceneID, fPlayRate) nightClubPed.fPhaseRate = fPlayRate CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: setting anim rate to: ",nightClubPed.fPhaseRate) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE:anim dictionary not loaded yet") ENDIF ENDIF ENDIF ELIF IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) #IF IS_DEBUG_BUILD IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: MULTI_ANIM_SEQUENCE_ACTIVITY: Current phase is ", GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene), " for iPedID: ", iPedID, " animTimeRemaining - ", AnimTimeRemaining(nightClubPed), " < ", (125 + FLOOR(GET_FRAME_TIME()*1000))) ENDIF #ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) OR GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene) >= 1 nightClubPed.bHasSyncSceneStarted = FALSE // lazlow mc -> rail - activity change here. IF nightClubPed.eActiveActivity = AC_SLOT_LAZLOW_VIP AND nightClubPed.iCurrentSequence = 8 g_iNightClubLazlowPosition = 1 // to railings INT iActivitySlot BOOL bIsRandom GET_NIGHTCLUB_PED_ACTIVITY_SLOT(iPedID, iActivitySlot, bIsRandom) nightClubPed.eActiveActivity = INT_TO_ENUM(ACTIVITY_SLOT_NAMES, iActivitySlot) nightClubPed.iCurrentSequence = 0 ELSE nightClubPed.iCurrentSequence = GetNextSequenceForActivity(nightClubPed.eActiveActivity, nightClubPed.iCurrentSequence) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: played anim for more than 1 loop. iPedID: ", iPedID, " loop duration = ", nightClubPed.iAnimDuration) CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: nightClubPed.iCurrentSequence set to : ", nightClubPed.iCurrentSequence) ELIF nightClubPed.eActiveActivity = AC_SLOT_LAZLOW_VIP //lazlow glowsitcks AND nightClubPed.iCurrentSequence = 8 AND NOT nightClubStruct.bHiddenForMocap SET_ENTITY_VISIBLE(nightClubPed.oiSceneObjects[0], TRUE) SET_ENTITY_VISIBLE(nightClubPed.oiSceneObjects[1], TRUE) ENDIF ELIF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) IF GET_SYNCHRONIZED_SCENE_PHASE(iLocalScene) >= 1 nightClubPed.bHasSyncSceneStarted = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: iLocalScene >= 1: syncSceneFinished, nightClubStruct.iNumberOfRunningAnims = ", nightClubStruct.iNumberOfRunningAnims) ENDIF ELSE nightClubPed.bHasSyncSceneStarted = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: iLocalScene >= 1: syncSceneFinished, nightClubStruct.iNumberOfRunningAnims = ", nightClubStruct.iNumberOfRunningAnims) ENDIF ENDIF ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "RUN_ANIM_LOCAL_SYNC_SCENE_SEQUENCE: PLAYING_ANIM TASK_SYNCHRONIZED_SCENE: iPedID: ", iPedID, ", entity is dead or nightClubPed.eActiveActivity = Null") ENDIF RETURN(FALSE) ENDFUNC FUNC BOOL IS_OWNER_PRESENT_IN_NIGHTCLUB() PLAYER_INDEX ownerID = GET_OWNER_OF_THIS_NIGHTCLUB() IF ownerID != INVALID_PLAYER_INDEX() AND DOES_PLAYER_OWN_ANY_NIGHTCLUB(ownerID) AND GlobalPlayerBD[NATIVE_TO_INT(ownerID)].SimpleInteriorBD.propertyOwner = ownerID AND GET_INTERIOR_FLOOR_INDEX_FOR_PLAYER(ownerID) = ciBUSINESS_HUB_FLOOR_NIGHTCLUB RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC ASSIGN_HEAD_TRACKING_BETWEEN_PEDS(NIGHT_CLUB_STRUCT &nightClubStruct, INT iPedToHeadTrack, INT iPedToLookAt) nightClubStruct.activityPeds[iPedToHeadTrack].iPedToHeadTrack = iPedToLookAt CDEBUG1LN(DEBUG_NET_PED_DANCING, "ASSIGN_HEAD_TRACKING_BETWEEN_PEDS: Ped[",iPedToHeadTrack, "] has been assigned to look at: ", iPedToLookAt) ENDPROC PROC ASSIGN_HEAD_TRACKING_COORDS(NIGHT_CLUB_STRUCT &nightClubStruct, INT iPedToHeadTrack, VECTOR vCoordToLookAt) nightClubStruct.activityPeds[iPedToHeadTrack].vCoordToHeadTrack = vCoordToLookAt CDEBUG1LN(DEBUG_NET_PED_DANCING, "ASSIGN_HEAD_TRACKING_COORDS: Ped[",iPedToHeadTrack, "] has been assigned to look at: ", vCoordToLookAt) ENDPROC PROC SET_PLAYER_HEAD_TRACKING_LOGIC(NIGHT_CLUB_STRUCT &nightClubStruct) INT j REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[j].piScenePeds) IF nightClubStruct.activityPeds[j].bHeadTrackPlayer = FALSE IF nightClubStruct.activityPeds[j].eActiveActivity = AC_SLOT_GUARDING OR nightClubStruct.activityPeds[j].eActiveActivity = AC_SLOT_BARTENDER_YACHT_IDLE OR nightClubStruct.activityPeds[j].eActiveActivity = AC_SLOT_CLOAKROOM_STOOL OR nightClubStruct.activityPeds[j].eActiveActivity = AC_SLOT_DANCEFLOOR_BUSBOY_TOILET OR (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_TONY) AND nightClubStruct.activityPeds[j].eActiveActivity != AC_SLOT_TONY_SIT_DRINK_1 AND nightClubStruct.activityPeds[j].eActiveActivity != AC_SLOT_TONY_SIT_DRINK_2 AND nightClubStruct.activityPeds[j].eActiveActivity != AC_SLOT_USE_COMPUTER) // OR j = nightClubStruct.iNightClubPedIDsReverse[146] // INT iRand = GET_RANDOM_INT_IN_RANGE(0, 2) // IF iRand = 0 nightClubStruct.activityPeds[j].bHeadTrackPlayer = TRUE CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_PLAYER_HEAD_TRACKING_LOGIC: setting nightClubStruct.activityPeds[", j, "].bHeadTrackPlayer = TRUE") // ELSE // nightClubStruct.activityPeds[j].bHeadTrackPlayer = FALSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_PLAYER_HEAD_TRACKING_LOGIC: setting nightClubStruct.activityPeds[", j, "].bHeadTrackPlayer = FALSE") // ENDIF ENDIF ENDIF ENDIF ENDREPEAT ENDPROC PROC MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC(NIGHT_CLUB_STRUCT &nightClubStruct, NIGHT_CLUB_PEDS &nightClubPed #IF IS_DEBUG_BUILD, INT k #ENDIF) IF NOT DOES_ENTITY_EXIST(nightClubPed.piScenePeds) OR IS_ENTITY_DEAD(nightClubPed.piScenePeds) EXIT ENDIF IF nightClubPed.iPedToHeadTrack != -1 IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubPed.iPedToHeadTrack].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubPed.iPedToHeadTrack].piScenePeds) IF nightClubPed.iSceneId != -1 // IF GET_DISTANCE_BETWEEN_ENTITIES(ActivityMain.activityAnimSequence.activitySyncScenePed[0].PedIndex, PLAYER_PED_ID()) < 15 // GET_SEQ_ANIM_DATA(ActivityMain.eActivity, ActivityMain.iCurrentAnimState, ActivityMain.iCurrentAnimSequenceID, ActivityMain.activityAnimSequence, IS_PED_FEMALE(ActivityMain.activityAnimSequence.activitySyncScenePed[0].PedIndex)) IF NOT IS_PED_HEADTRACKING_ENTITY(nightClubPed.piScenePeds, nightClubStruct.activityPeds[nightClubPed.iPedToHeadTrack].piScenePeds) TASK_LOOK_AT_ENTITY(nightClubPed.piScenePeds, nightClubStruct.activityPeds[nightClubPed.iPedToHeadTrack].piScenePeds, -1, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_VERY_HIGH) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: TASK_LOOK_AT_ENTITY: for ped: ", k," to look at: ", nightClubPed.iPedToHeadTrack) #ENDIF ENDIF // ENDIF ENDIF ENDIF ENDIF IF NOT IS_VECTOR_ZERO(nightClubPed.vCoordToHeadTrack) IF GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_LOOK_AT_COORD) <> PERFORMING_TASK TASK_LOOK_AT_COORD(nightClubPed.piScenePeds, nightClubPed.vCoordToHeadTrack, -1, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_VERY_HIGH) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: TASK_LOOK_COORD: for ped: ", k," to look at: ", nightClubPed.vCoordToHeadTrack) #ENDIF ENDIF ENDIF IF IS_OWNER_PRESENT_IN_NIGHTCLUB() OR nightClubPed.bHeadTrackPlayer #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: PLAYER TRACK for ped: ", k) #ENDIF PED_INDEX pOwnerPed IF nightClubPed.eActiveActivity = AC_SLOT_CLOAKROOM_STOOL PED_INDEX closestPed[2] IF GET_PED_NEARBY_PEDS(nightClubPed.piScenePeds, closestPed) > 0 IF DOES_ENTITY_EXIST(closestPed[0]) AND NOT IS_ENTITY_DEAD(closestPed[0]) pOwnerPed = closestPed[0] CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: bar stool ped tracking the closest player") ENDIF ENDIF ELIF IS_OWNER_PRESENT_IN_NIGHTCLUB() pOwnerPed = GET_PLAYER_PED(GET_OWNER_OF_THIS_NIGHTCLUB()) ELSE pOwnerPed = PLAYER_PED_ID() CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: Can't track owner (they are not in club), try to track local player") ENDIF IF DOES_ENTITY_EXIST(pOwnerPed) AND NOT IS_ENTITY_DEAD(pOwnerPed) BOOL bShouldHeadTrackPlayer = nightClubPed.bHeadTrackPlayer IF GET_DIST2_BETWEEN_ENTITIES(nightClubPed.piScenePeds, pOwnerPed) < 9 AND IS_PED_CLOSE_TO_IDEAL_HEADING(pOwnerPed, GET_ENTITY_HEADING(nightClubPed.piScenePeds) + 180, 180) IF NOT HAS_NET_TIMER_STARTED(nightClubPed.stPassiveHeadTrack) START_NET_TIMER(nightClubPed.stPassiveHeadTrack) nightClubPed.bUsePassiveHeadTrack = (GET_RANDOM_INT_IN_RANGE(0, 2) = 0) ENDIF IF NOT HAS_NET_TIMER_EXPIRED(nightClubPed.stPassiveHeadTrack, 2500) AND nightClubPed.bUsePassiveHeadTrack bShouldHeadTrackPlayer = TRUE ELSE nightClubPed.bUsePassiveHeadTrack = FALSE ENDIF ELIF GET_DIST2_BETWEEN_ENTITIES(nightClubPed.piScenePeds, pOwnerPed) > 16 bShouldHeadTrackPlayer = FALSE IF HAS_NET_TIMER_STARTED(nightClubPed.stPassiveHeadTrack) nightClubPed.bUsePassiveHeadTrack = FALSE RESET_NET_TIMER(nightClubPed.stPassiveHeadTrack) ENDIF ENDIF IF NOT bShouldHeadTrackPlayer AND nightClubPed.bHeadTrackPlayer AND DOES_ENTITY_EXIST(PLAYER_PED_ID()) AND NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) AND GET_DIST2_BETWEEN_ENTITIES(nightClubPed.piScenePeds, PLAYER_PED_ID()) < 9 AND IS_PED_CLOSE_TO_IDEAL_HEADING(PLAYER_PED_ID(), GET_ENTITY_HEADING(nightClubPed.piScenePeds) + 180, 180) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: Can't track owner (they are out of range), try to track local player") pOwnerPed = PLAYER_PED_ID() bShouldHeadTrackPlayer = TRUE ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: bShouldHeadTrackPlayer = ",bShouldHeadTrackPlayer) IF bShouldHeadTrackPlayer IF NOT IS_PED_HEADTRACKING_ENTITY(nightClubPed.piScenePeds, pOwnerPed) TASK_LOOK_AT_ENTITY(nightClubPed.piScenePeds, pOwnerPed, -1, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: TASK_LOOK_AT_ENTITY: for ped: ", k," to look at player") nightClubPed.bCurrentlyHeadTrackingPlayer = TRUE ENDIF ELSE IF IS_PED_HEADTRACKING_ENTITY(nightClubPed.piScenePeds, pOwnerPed) TASK_CLEAR_LOOK_AT(nightClubPed.piScenePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC: player is more than 3 meters away, clearing task lookat for ped: ", k) nightClubPed.bCurrentlyHeadTrackingPlayer = FALSE ENDIF ENDIF ENDIF ENDIF ENDPROC FUNC BOOL SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(NC_PED_TYPES ePeds, NC_PED_SPEECH_ENUM eNC_PedSpeech = NCP_SPEECH_INVALID) IF (g_eCurrentPlayingDJ = DJ_TALE_OF_US) IF (g_iNightclubCurrentDJSpeechCheck = -1) IF GET_RANDOM_BOOL() g_iNightclubCurrentDJSpeechCheck = ENUM_TO_INT(NC_DJ) ELSE g_iNightclubCurrentDJSpeechCheck = ENUM_TO_INT(NC_DJ_2) ENDIF ENDIF ELSE g_iNightclubCurrentDJSpeechCheck = -1 ENDIF IF (g_iNightclubCurrentDJSpeechCheck = ENUM_TO_INT(ePeds)) RETURN FALSE ENDIF SWITCH ePeds CASE NC_DJ CASE NC_DJ_2 IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF IF (g_eCurrentPlayingDJ = DJ_SOLOMUN) OR (g_eCurrentPlayingDJ = DJ_DIXON) SWITCH eNC_PedSpeech CASE NCP_SPEECH_SHOUT_GEN RETURN FALSE CASE NCP_SPEECH_SHOUT_TONY RETURN FALSE CASE NCP_SPEECH_SHOUT_OWNER RETURN FALSE CASE NCP_SPEECH_SPECIAL RETURN FALSE ENDSWITCH ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_BYE RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_BUMP RETURN TRUE CASE NCP_SPEECH_HIGH_POP RETURN TRUE CASE NCP_SPEECH_LOW_POP RETURN TRUE CASE NCP_SPEECH_SHOUT_GEN RETURN TRUE CASE NCP_SPEECH_SHOUT_TONY RETURN TRUE CASE NCP_SPEECH_SHOUT_OWNER RETURN TRUE ENDSWITCH BREAK CASE NC_BUSBOY_TOILET IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_BYE RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_BUMP RETURN TRUE CASE NCP_SPEECH_THANKS RETURN TRUE ENDSWITCH BREAK CASE NC_BOUNCER_HALLWAY CASE NC_BOUNCER_DJ_BOOTH CASE NC_BOUNCER_TOILET CASE NC_BOUNCER_DANCEFLOOR CASE NC_BOUNCER_VIP IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_BUMP RETURN TRUE CASE NCP_SPEECH_PLAYER_MISBEHAVE RETURN TRUE ENDSWITCH BREAK CASE NC_BOUNCER_HEAD IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_BYE RETURN TRUE CASE NCP_SPEECH_THANKS RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_BUMP RETURN TRUE CASE NCP_SPEECH_HIGH_POP RETURN TRUE CASE NCP_SPEECH_LOW_POP RETURN TRUE CASE NCP_SPEECH_SHOUT_DJ RETURN TRUE CASE NCP_SPEECH_PLAYER_MISBEHAVE RETURN TRUE ENDSWITCH BREAK CASE NC_BUSINESS_CLOAKROOM IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_THANKS RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_PLAYER_MISBEHAVE RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_NOT_ENOUGH_CASH RETURN TRUE CASE NCP_SPEECH_SPECIAL RETURN TRUE CASE NCP_SPEECH_FREE_ENTRY RETURN TRUE ENDSWITCH BREAK CASE NC_LAZLOW IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF IF (g_iNightClubSetupState = NSS_FULLY_SETUP) IF (g_fPercentagePopularity <= 40.0) SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN FALSE CASE NCP_SPEECH_GREET RETURN FALSE CASE NCP_SPEECH_BYE RETURN FALSE ENDSWITCH ENDIF ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_BUMP RETURN TRUE CASE NCP_SPEECH_HIGH_POP RETURN TRUE CASE NCP_SPEECH_LOW_POP RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_BYE RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_SHOUT_DJ RETURN TRUE CASE NCP_SPEECH_SHOUT_CELEB RETURN TRUE CASE NCP_SPEECH_SHOUTOUT RETURN TRUE CASE NCP_SPEECH_SHOUT_AREA RETURN TRUE ENDSWITCH BREAK CASE NC_TONY IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF ACTIVITY_SLOT_NAMES eActivitySlot BOOL isRandom GetTonyActivity(eActivitySlot, isRandom) IF eActivitySlot != AC_SLOT_USE_COMPUTER AND eActivitySlot != AC_SLOT_TONY_SIT_DRINK_1 AND eActivitySlot != AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN // ELSE SWITCH eNC_PedSpeech CASE NCP_SPEECH_SHOUT_DJ RETURN FALSE CASE NCP_SPEECH_SHOUTOUT RETURN FALSE ENDSWITCH ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_BUMP RETURN TRUE CASE NCP_SPEECH_HIGH_POP RETURN TRUE CASE NCP_SPEECH_LOW_POP RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_BYE RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_SHOUT_DJ RETURN TRUE CASE NCP_SPEECH_SHOUTOUT RETURN TRUE ENDSWITCH BREAK CASE NC_CELEB_JIMMY_BOSTON CASE NC_CELEB_KERRY_MCINTOSH CASE NC_CELEB_LACEY_JONAS CASE NC_CELEB_MIRANDA_COWAN CASE NC_CELEB_POPPY_MITCHELL CASE NC_CELEB_TYLER_DIXON IF (eNC_PedSpeech = NCP_SPEECH_INVALID) RETURN TRUE ENDIF SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN TRUE CASE NCP_SPEECH_GREET RETURN TRUE CASE NCP_SPEECH_HOWSITGOING RETURN TRUE CASE NCP_SPEECH_BYE RETURN TRUE CASE NCP_SPEECH_IDLE RETURN TRUE CASE NCP_SPEECH_SHOUT_TONY RETURN TRUE CASE NCP_SPEECH_SHOUTOUT RETURN TRUE CASE NCP_SPEECH_SHOUT_DJ RETURN TRUE CASE NCP_SPEECH_SHOUT_GEN RETURN TRUE CASE NCP_SPEECH_BUMP RETURN TRUE ENDSWITCH BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC STRING GET_NC_PED_SPEECH_STRING(NC_PED_SPEECH_ENUM eNC_PedSpeech) SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN "DJ_GREET_FIRST" CASE NCP_SPEECH_GREET RETURN "DJ_GREET" CASE NCP_SPEECH_HOWSITGOING RETURN "DJ_HOWSITGOING" CASE NCP_SPEECH_BYE RETURN "DJ_BYE" CASE NCP_SPEECH_IDLE RETURN "DJ_IDLE" CASE NCP_SPEECH_BUMP RETURN "BUMP" CASE NCP_SPEECH_HIGH_POP RETURN "DJ_HIGH_POP" CASE NCP_SPEECH_LOW_POP RETURN "DJ_LOW_POP" CASE NCP_SPEECH_SHOUT_GEN RETURN "DJ_SHOUT_GEN" CASE NCP_SPEECH_SHOUT_TONY RETURN "DJ_SHOUT_TONY" CASE NCP_SPEECH_SHOUT_OWNER RETURN "DJ_SHOUT_OWNER" CASE NCP_SPEECH_SPECIAL RETURN "DJ_SPECIAL" CASE NCP_SPEECH_THANKS RETURN "DJ_THANKS" CASE NCP_SPEECH_PLAYER_MISBEHAVE RETURN "BOUNCER_PLAYER_MISBEHAVING" CASE NCP_SPEECH_SHOUT_DJ SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN RETURN "SHOUT_SOLOMUN" BREAK CASE DJ_DIXON RETURN "SHOUT_DIXON" BREAK CASE DJ_TALE_OF_US RETURN "SHOUT_TALE" BREAK CASE DJ_BLACK_MADONNA RETURN "SHOUT_MADONNA" BREAK ENDSWITCH RETURN "SHOUT_DJ" BREAK CASE NCP_SPEECH_SHOUT_CELEB RETURN "SHOUT_CELEB" //conv CASE NCP_SPEECH_SHOUTOUT RETURN "SHOUTOUT" CASE NCP_SPEECH_SHOUT_AREA RETURN "SHOUT_AREA" //conv CASE NCP_SPEECH_NOT_ENOUGH_CASH RETURN "NOT_ENOUGH_CASH" CASE NCP_SPEECH_FREE_ENTRY RETURN "NCP_SPEECH_FREE_ENTRY" ENDSWITCH CASSERTLN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_STRING - unknown speech enum:", eNC_PedSpeech) RETURN "" ENDFUNC PROC SET_BIT_DJ_SPEECH(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech) NC_PED_TYPES ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubPed.iNightClubPedID) IF (eNC_PedSpeech < NCP_SPEECH_MAX) AND NOT SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, eNC_PedSpeech) CASSERTLN(DEBUG_NET_PED_DANCING, "SET_BIT_DJ_SPEECH \"", GET_NC_PED_TYPE_STRING(ePeds), "\" shouldnt set ", GET_NC_PED_SPEECH_STRING(eNC_PedSpeech)) EXIT ENDIF SET_BIT_ENUM(nightClubPed.iPedSpeechBitset, eNC_PedSpeech) ENDPROC PROC CLEAR_BIT_DJ_SPEECH(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech) CLEAR_BIT_ENUM(nightClubPed.iPedSpeechBitset, eNC_PedSpeech) ENDPROC FUNC BOOL IS_BIT_SET_DJ_SPEECH(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech) RETURN IS_BIT_SET_ENUM(nightClubPed.iPedSpeechBitset, eNC_PedSpeech) ENDFUNC FUNC INT GET_AREA_SHOUT_CURRENT_ACTIVITY_INDEX(NIGHT_CLUB_PEDS &nightClubPed) SWITCH nightClubPed.eActiveActivity CASE AC_SLOT_LAZLOW_LOW_TOILET IF nightClubPed.iCurrentSequence > 0 AND nightClubPed.iCurrentSequence < 7 RETURN nightClubPed.iCurrentSequence - 1 ENDIF BREAK CASE AC_SLOT_LAZLOW_LOW_BAR IF nightClubPed.iCurrentSequence > 0 AND nightClubPed.iCurrentSequence < 9 RETURN nightClubPed.iCurrentSequence - 1 ELIF nightClubPed.iCurrentSequence = 10 RETURN 8 ENDIF BREAK CASE AC_SLOT_LAZLOW_LOW_SOFA IF nightClubPed.iCurrentSequence > 0 AND nightClubPed.iCurrentSequence < 7 RETURN nightClubPed.iCurrentSequence - 1 ENDIF BREAK CASE AC_SLOT_LAZLOW_LOW_ALONE IF nightClubPed.iCurrentSequence > 0 AND nightClubPed.iCurrentSequence < 8 RETURN nightClubPed.iCurrentSequence - 1 ENDIF BREAK CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR IF nightClubPed.iCurrentSequence > 30 AND nightClubPed.iCurrentSequence < 38 RETURN nightClubPed.iCurrentSequence - 31 ENDIF BREAK CASE AC_SLOT_LAZLOW_HIGH_RAILING IF nightClubPed.iCurrentSequence = 8 RETURN 0 ENDIF BREAK ENDSWITCH RETURN -1 ENDFUNC FUNC STRING GET_AREA_SHOUT_FOR_ACTIVITY(ACTIVITY_SLOT_NAMES eActivity, INT iShoutIndex) SWITCH eActivity CASE AC_SLOT_LAZLOW_LOW_TOILET SWITCH iShoutIndex CASE 0 RETURN "LAZFM_IG3TOA" CASE 1 RETURN "LAZFM_IG3TOB" CASE 2 RETURN "LAZFM_IG3TOC" CASE 3 RETURN "LAZFM_IG3TOD" CASE 4 RETURN "LAZFM_IG3TOE" CASE 5 RETURN "LAZFM_IG3TOF" ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_LOW_BAR SWITCH iShoutIndex CASE 0 RETURN "LAZFM_IG3LBA" CASE 1 RETURN "LAZFM_IG3LBB" CASE 2 RETURN "LAZFM_IG3LBC" CASE 3 RETURN "LAZFM_IG3LBE" CASE 4 RETURN "LAZFM_IG3LBF" CASE 5 RETURN "LAZFM_IG3LBG" CASE 6 RETURN "LAZFM_IG3LBH" CASE 7 RETURN "LAZFM_IG3LBI" CASE 8 RETURN "LAZFM_IG3LBJ" ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_LOW_SOFA SWITCH iShoutIndex CASE 0 RETURN "LAZFM_IG3LSA" CASE 1 RETURN "LAZFM_IG3LSB" CASE 2 RETURN "LAZFM_IG3LSC" CASE 3 RETURN "LAZFM_IG3LSD" CASE 4 RETURN "LAZFM_IG3LSE" CASE 5 RETURN "LAZFM_IG3LSF" ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_LOW_ALONE SWITCH iShoutIndex CASE 0 RETURN "LAZFM_IG3ALA" CASE 1 RETURN "LAZFM_IG3ALB" CASE 2 RETURN "LAZFM_IG3ALC" CASE 3 RETURN "LAZFM_IG3ALD" CASE 4 RETURN "LAZFM_IG3ALE" CASE 5 RETURN "LAZFM_IG3ALF" ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_HIGH_DANCEFLOOR SWITCH iShoutIndex CASE 0 RETURN "LAZFM_IG2DFA" CASE 1 RETURN "LAZFM_IG2DFC" CASE 2 RETURN "LAZFM_IG2DFB" CASE 3 RETURN "LAZFM_IG2DFD" CASE 4 RETURN "LAZFM_IG2DFE" CASE 5 RETURN "LAZFM_IG2DFF" CASE 6 RETURN "LAZFM_IG2DFG" CASE 7 RETURN "LAZFM_IG2DFH" CASE 8 RETURN "LAZFM_IG2DFI" CASE 9 RETURN "LAZFM_IG2DFJ" ENDSWITCH BREAK CASE AC_SLOT_LAZLOW_HIGH_RAILING SWITCH iShoutIndex CASE 0 RETURN "LAZFM_IG2RHA" ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC INT GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(NC_PED_TYPES ePeds, NIGHTCLUB_CELEBRITY_ENUM eCeleb) SWITCH ePeds CASE NC_CELEB_JIMMY_BOSTON SWITCH eCeleb CASE eNIGHTCLUB_CELEB_LACEY_JONAS RETURN 0 CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH RETURN 1 CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL RETURN 2 CASE eNIGHTCLUB_CELEB_TYLER_DIXON RETURN 3 CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN RETURN 4 ENDSWITCH BREAK CASE NC_CELEB_LACEY_JONAS SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON RETURN 5 CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH RETURN 6 CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL RETURN 7 CASE eNIGHTCLUB_CELEB_TYLER_DIXON RETURN 8 CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN RETURN 9 ENDSWITCH BREAK CASE NC_CELEB_KERRY_MCINTOSH SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON RETURN 10 CASE eNIGHTCLUB_CELEB_LACEY_JONAS RETURN 11 CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL RETURN 12 CASE eNIGHTCLUB_CELEB_TYLER_DIXON RETURN 13 CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN RETURN 14 ENDSWITCH BREAK CASE NC_CELEB_POPPY_MITCHELL SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON RETURN 15 CASE eNIGHTCLUB_CELEB_LACEY_JONAS RETURN 16 CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH RETURN 17 CASE eNIGHTCLUB_CELEB_TYLER_DIXON RETURN 18 CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN RETURN 19 ENDSWITCH BREAK CASE NC_CELEB_TYLER_DIXON SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON RETURN 20 CASE eNIGHTCLUB_CELEB_LACEY_JONAS RETURN 21 CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH RETURN 22 CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL RETURN 23 CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN RETURN 24 ENDSWITCH BREAK CASE NC_CELEB_MIRANDA_COWAN SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON RETURN 25 CASE eNIGHTCLUB_CELEB_LACEY_JONAS RETURN 26 CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH RETURN 27 CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL RETURN 28 CASE eNIGHTCLUB_CELEB_TYLER_DIXON RETURN 29 ENDSWITCH BREAK ENDSWITCH CASSERTLN(DEBUG_NET_PED_DANCING, "GET_NC_PED_CELEB_COMMENT_SHOUT_BIT unknown ", GET_NC_PED_TYPE_STRING(ePeds), " eCeleb ", GET_NIGHTCLUB_CELEBRITY_NAME_FOR_DEBUG(eCeleb)) RETURN -1 ENDFUNC FUNC STRING GET_NC_PED_SPEECH_CUSTOM_STRING(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech, NC_PED_TYPES ePedOverride = NC_NULL_PED) TEXT_LABEL_31 tl31Context = "" NC_PED_TYPES ePeds IF ePedOverride != NC_NULL_PED ePeds = ePedOverride ELSE ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubPed.iNightClubPedID) ENDIF ACTIVITY_SLOT_NAMES eActivitySlot BOOL isRandom SWITCH ePeds CASE NC_BUSBOY_TOILET SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST CASE NCP_SPEECH_GREET SWITCH GET_RANDOM_INT_IN_RANGE(0, 2) CASE 0 RETURN "GENERIC_HOWS_IT_GOING" CASE 1 RETURN "KIFFLOM_GREET" // CASE 2 RETURN "GENERIC_HI" ENDSWITCH BREAK // CASE NCP_SPEECH_BYE // RETURN "GENERIC_BYE" CASE NCP_SPEECH_HOWSITGOING CASE NCP_SPEECH_IDLE RETURN "CHAT_STATE" CASE NCP_SPEECH_THANKS SWITCH GET_RANDOM_INT_IN_RANGE(0, 4) CASE 0 RETURN "GENERIC_THANKS" CASE 1 RETURN "GENERIC_CHEER" CASE 2 RETURN "PED_RANT" CASE 3 RETURN "AGREE_ACROSS_STREET" ENDSWITCH BREAK ENDSWITCH BREAK CASE NC_BOUNCER_HALLWAY CASE NC_BOUNCER_DJ_BOOTH CASE NC_BOUNCER_TOILET CASE NC_BOUNCER_DANCEFLOOR CASE NC_BOUNCER_VIP IF eNC_PedSpeech = NCP_SPEECH_BUMP AND PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "GENERIC_WHATEVER" ENDIF BREAK CASE NC_BOUNCER_HEAD //tl31Context = GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD") SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() SWITCH GET_RANDOM_INT_IN_RANGE(0, 2) CASE 0 tl31Context = "WELCOME_OWNER_LOUD" BREAK CASE 1 tl31Context = "OWNER_CONFIRM_ENTRY_LOUD" BREAK ENDSWITCH ELSE IF HAS_PLAYER_PAID_FOR_ENTRY_TO_RIVAL_CLUB(GET_OWNER_OF_THIS_NIGHTCLUB()) SWITCH GET_RANDOM_INT_IN_RANGE(0, 3) CASE 0 tl31Context = "WELCOME_PLAYER_LOUD" BREAK CASE 1 NIGHTCLUB_NAME_ENUM eClubName eClubName = GET_NIGHTCLUB_NAME_ENUM(GET_OWNER_OF_THIS_NIGHTCLUB()) SWITCH eClubName CASE NIGHTCLUB_NAME_Omega RETURN "WELCOME_OMEGA_LOUD" CASE NIGHTCLUB_NAME_Gefangnis RETURN "WELCOME_GEFANGNIS_LOUD" CASE NIGHTCLUB_NAME_Paradise RETURN "WELCOME_PARADISE_LOUD" CASE NIGHTCLUB_NAME_Studio_Los_Santos RETURN "WELCOME_STUDIO_LS_LOUD" CASE NIGHTCLUB_NAME_Maisonette_Los_Santos RETURN "WELCOME_MAISONETTE_LS_LOUD" CASE NIGHTCLUB_NAME_The_Palace RETURN "WELCOME_THE_PALACE_LOUD" CASE NIGHTCLUB_NAME_Galaxy RETURN "WELCOME_GALAXY_LOUD" CASE NIGHTCLUB_NAME_Technologie RETURN "WELCOME_TECHNOLOGIE_LOUD" CASE NIGHTCLUB_NAME_Tonys_Fun_House RETURN "WELCOME_TONYS_FUN_HOUSE_LOUD" ENDSWITCH BREAK CASE 2 tl31Context = "ENTRY_WELCOME_LOUD" BREAK ENDSWITCH ELSE IF g_iNightClubKickStrikes = 1 tl31Context = "PAY_FOR_ACCESS_LOUD" ELIF g_iNightClubKickStrikes = 4 AND g_iNightClubKickStrikes = 6 tl31Context = "GENERAL_NO_ACCESS_LOUD" ELIF g_iNightClubKickStrikes = 8 tl31Context = "THROW_OUT_WARNING_LOUD" ELIF g_iNightClubKickStrikes = 10 tl31Context = "THROW_OUT_LOUD" ENDIF ENDIF ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_GREET_FIRST ", tl31Context) BREAK CASE NCP_SPEECH_GREET IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "GREET_OWNER_LOUD" ELSE tl31Context = "GREET_OTHER_PLAYER_LOUD" ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_GREET ", tl31Context) BREAK CASE NCP_SPEECH_PLAYER_MISBEHAVE IF NOT (PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB()) IF NOT HAS_PLAYER_PAID_FOR_ENTRY_TO_RIVAL_CLUB(GET_OWNER_OF_THIS_NIGHTCLUB()) IF g_iNightClubKickStrikes = 1 tl31Context = "PAY_FOR_ACCESS_LOUD" ELIF g_iNightClubKickStrikes = 4 OR g_iNightClubKickStrikes = 6 tl31Context = "GENERAL_NO_ACCESS_LOUD" ELIF g_iNightClubKickStrikes = 8 tl31Context = "THROW_OUT_WARNING_LOUD" ELIF g_iNightClubKickStrikes = 10 tl31Context = "THROW_OUT_LOUD" ENDIF ENDIF ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_PLAYER_MISBEHAVE ", tl31Context) BREAK CASE NCP_SPEECH_HOWSITGOING IF IS_PLAYER_DANCING(PLAYER_ID()) tl31Context = "COMMENT_DANCING_CLOSE_LOUD" ELIF Is_Ped_Drunk(PLAYER_PED_ID()) AND NOT ( PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB()) tl31Context = "COMMENT_DRUNK_LOUD" ELSE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "HOWSITGOING_OWNER" ELSE tl31Context = "HOWSITGOING_OTHER_PLAYER" ENDIF ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_HOWSITGOING ", tl31Context) BREAK CASE NCP_SPEECH_BYE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "BYE_OWNER_LOUD" ELSE tl31Context = "BYE_OTHER_PLAYER_LOUD" ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_BYE ", tl31Context) BREAK CASE NCP_SPEECH_IDLE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() SWITCH GET_RANDOM_INT_IN_RANGE(0, 5) CASE 0 tl31Context = "IDLE_OWNER_LOUD" BREAK CASE 1 IF IS_PLAYER_BUSINESS_HUB_STAFF_PURCHASED(PLAYER_ID(), eBUSINESS_HUB_MOD_SUB_OPTION_STAFF_LVL_1) tl31Context = "STAFF_UPGRADE_LOUD" ELSE tl31Context = "IDLE_OWNER_LOUD" ENDIF BREAK CASE 2 IF IS_PLAYER_BUSINESS_HUB_SECURITY_ROOM_PURCHASED(PLAYER_ID()) tl31Context = "SECURITY_UPGRADE_LOUD" ELSE tl31Context = "IDLE_OWNER_LOUD" ENDIF BREAK CASE 3 tl31Context = "COMMENTS_ON_STYLE_LOUD" BREAK CASE 4 SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN tl31Context = "COMMENT_DJ_SOLOMUN_LOUD" BREAK CASE DJ_DIXON tl31Context = "COMMENT_DJ_DIXON_LOUD" BREAK CASE DJ_TALE_OF_US tl31Context = "COMMENT_DJ_TALE_LOUD" BREAK CASE DJ_BLACK_MADONNA tl31Context = "COMMENT_DJ_MADONNA_LOUD" BREAK ENDSWITCH BREAK ENDSWITCH ELSE IF HAS_PLAYER_PAID_FOR_ENTRY_TO_RIVAL_CLUB(GET_OWNER_OF_THIS_NIGHTCLUB()) tl31Context = "IDLE_OTHER_PLAYER_LOUD" ENDIF ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_IDLE ", tl31Context) BREAK CASE NCP_SPEECH_HIGH_POP tl31Context = "POPULARITY_HIGH_LOUD" CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_HIGH_POP ", tl31Context) BREAK CASE NCP_SPEECH_LOW_POP tl31Context = "POPULARITY_LOW_LOUD" CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_LOW_POP ", tl31Context) BREAK CASE NCP_SPEECH_THANKS IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "THANKS_OWNER" ELSE tl31Context = "THANKS_OTHER_PLAYER" ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_THANKS ", tl31Context) BREAK CASE NCP_SPEECH_SHOUT_DJ SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN tl31Context = "COMMENT_DJ_SOLOMUN_LOUD" BREAK CASE DJ_DIXON tl31Context = "COMMENT_DJ_DIXON_LOUD" BREAK CASE DJ_TALE_OF_US tl31Context = "COMMENT_DJ_TALE_LOUD" BREAK CASE DJ_BLACK_MADONNA tl31Context = "COMMENT_DJ_MADONNA_LOUD" BREAK ENDSWITCH CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_SHOUT_DJ ", tl31Context) BREAK CASE NCP_SPEECH_BUMP IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "BUMP_OWNER_LOUD" ELSE tl31Context = "BUMP_LOUD" ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - NC_BOUNCER_HEAD - NCP_SPEECH_BUMP ", tl31Context) BREAK ENDSWITCH // ACTIVITY_SLOT_NAMES eActivitySlot // BOOL isRandom // // GetTonyActivity(eActivitySlot, isRandom) // IF eActivitySlot != AC_SLOT_USE_COMPUTER // AND eActivitySlot != AC_SLOT_TONY_SIT_DRINK_1 // AND eActivitySlot != AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN // tl31Context += "_LOUD" // ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(tl31Context) RETURN GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME(tl31Context, 0, GET_LENGTH_OF_LITERAL_STRING(tl31Context)) ENDIF BREAK CASE NC_BUSINESS_CLOAKROOM SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST NIGHTCLUB_NAME_ENUM eClubName eClubName = GET_NIGHTCLUB_NAME_ENUM(GET_OWNER_OF_THIS_NIGHTCLUB()) SWITCH GET_RANDOM_INT_IN_RANGE(0, 2) CASE 0 RETURN "WELCOME" BREAK CASE 1 SWITCH eClubName CASE NIGHTCLUB_NAME_Omega RETURN "WELCOME_OMEGA" CASE NIGHTCLUB_NAME_Gefangnis RETURN "WELCOME_GEFANGNIS" CASE NIGHTCLUB_NAME_Paradise RETURN "WELCOME_PARADISE" CASE NIGHTCLUB_NAME_Studio_Los_Santos RETURN "WELCOME_STUDIO_LS" CASE NIGHTCLUB_NAME_Maisonette_Los_Santos RETURN "WELCOME_MAISONETTE_LS" CASE NIGHTCLUB_NAME_The_Palace RETURN "WELCOME_THE_PALACE" CASE NIGHTCLUB_NAME_Galaxy RETURN "WELCOME_GALAXY" CASE NIGHTCLUB_NAME_Technologie RETURN "WELCOME_TECHNOLOGIE" CASE NIGHTCLUB_NAME_Tonys_Fun_House RETURN "WELCOME_TONYS_FUN_HOUSE" ENDSWITCH BREAK ENDSWITCH BREAK CASE NCP_SPEECH_GREET RETURN "GREET_OWNER" BREAK CASE NCP_SPEECH_THANKS SWITCH GET_RANDOM_INT_IN_RANGE(0, 3) CASE 0 RETURN "GENERIC_THANKS" CASE 1 RETURN "PAYMENT_THANKS" CASE 2 RETURN "PAYMENT_THANKS" ENDSWITCH BREAK CASE NCP_SPEECH_IDLE RETURN "CASH_DESK_IDLE" BREAK CASE NCP_SPEECH_PLAYER_MISBEHAVE RETURN "ENTRY_WARNING" BREAK CASE NCP_SPEECH_FREE_ENTRY RETURN "NO_ENTRY_COST" BREAK CASE NCP_SPEECH_HOWSITGOING RETURN "ENTRY_COST" BREAK CASE NCP_SPEECH_NOT_ENOUGH_CASH RETURN "NOT_ENOUGH_CASH" BREAK CASE NCP_SPEECH_SPECIAL RETURN "CHOOSE_DRINK" BREAK ENDSWITCH BREAK CASE NC_LAZLOW SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "GREET_OWNER" ELSE RETURN "GREET_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_HOWSITGOING IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "HOWSITGOING_OWNER" ELSE RETURN "HOWSITGOING_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_BYE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "BYE_OWNER" ELSE RETURN "BYE_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_IDLE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "IDLE_OWNER" ELSE RETURN "IDLE_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_SHOUT_CELEB NIGHTCLUB_CELEBRITY_ENUM eCeleb INT iHistory REPEAT ciGB_NIGHTCLUB_CELEBRITY_LIST_SIZE iHistory eCeleb = INT_TO_ENUM(NIGHTCLUB_CELEBRITY_ENUM, GlobalplayerBD_FM_3[NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB())].sMagnateGangBossData.iNightclubCelebrityList[iHistory]) INT iIndex SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK ENDSWITCH IF NOT IS_BIT_SET(g_iBSNightclubSpeech, iIndex ) SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON RETURN "LAZFM_ANJB1" BREAK // I want to hear everybody give it up… it’s the one and only… Jimmy Boston on the floor. CASE eNIGHTCLUB_CELEB_LACEY_JONAS RETURN "LAZFM_ANLJ1" BREAK // Ladies and gentlemen… Lacey Jonas is in the builing. CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH RETURN "LAZFM_ANKM1" BREAK // Get your phones out, people… it’s the one and only… Kerry McIntosh! CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL RETURN "LAZFM_ANPM1" BREAK // Alright… I want to see everyone posting this… Poppy Mitchel’s partying tonight. CASE eNIGHTCLUB_CELEB_TYLER_DIXON RETURN "LAZFM_ANTD1" BREAK // Watch your partner’s boys and girls… we got Tyler Dixon in the club. CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN RETURN "LAZFM_ANMC1" BREAK // Everyone give it up… we got Miranda Cowan in the house. ENDSWITCH ENDIF ENDREPEAT #IF IS_DEBUG_BUILD REPEAT ciGB_NIGHTCLUB_CELEBRITY_LIST_SIZE iHistory eCeleb = INT_TO_ENUM(NIGHTCLUB_CELEBRITY_ENUM, GlobalplayerBD_FM_3[NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB())].sMagnateGangBossData.iNightclubCelebrityList[iHistory]) INT iIndex SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK ENDSWITCH CWARNINGLN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - unknown lazlow celeb ", iHistory, ":", GET_NIGHTCLUB_CELEBRITY_NAME_FOR_DEBUG(eCeleb), ", bitset ", iIndex, " ", GET_STRING_FROM_BOOL(IS_BIT_SET(g_iBSNightclubSpeech, iIndex ))) ENDREPEAT #ENDIF #IF NOT IS_DEBUG_BUILD CWARNINGLN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_CUSTOM_STRING - unknown lazlow celeb:", GET_NC_PED_SPEECH_STRING(eNC_PedSpeech)) #ENDIF RETURN "" CASE NCP_SPEECH_SHOUT_AREA IF GET_AREA_SHOUT_CURRENT_ACTIVITY_INDEX(nightClubPed) != -1 AND NOT IS_BIT_SET(g_iBSNightclubSpeech, (ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_SHOUT_AREA_A) + GET_AREA_SHOUT_CURRENT_ACTIVITY_INDEX(nightClubPed)) % 32) RETURN GET_AREA_SHOUT_FOR_ACTIVITY(nightClubPed.eActiveActivity, GET_AREA_SHOUT_CURRENT_ACTIVITY_INDEX(nightClubPed)) ENDIF RETURN "" CASE NCP_SPEECH_HIGH_POP RETURN "CLUB_HIGH_POP" CASE NCP_SPEECH_LOW_POP RETURN "CLUB_LOW_POP" ENDSWITCH BREAK CASE NC_TONY tl31Context = GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) GetTonyActivity(eActivitySlot, isRandom) SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "GREET_OWNER" ELSE tl31Context = "GREET_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_HOWSITGOING IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "HOWSITGOING_OWNER" ELSE tl31Context = "HOWSITGOING_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_BYE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "BYE_OWNER" ELSE tl31Context = "BYE_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_IDLE IF eActivitySlot = AC_SLOT_USE_COMPUTER AND GET_RANDOM_INT_IN_RANGE(0, 2) = 0 RETURN "USE_COMP" ELSE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() tl31Context = "IDLE_OWNER" ELSE tl31Context = "IDLE_OTHER_PLAYER" ENDIF ENDIF BREAK CASE NCP_SPEECH_BUMP tl31Context = "BUMP" BREAK CASE NCP_SPEECH_HIGH_POP tl31Context = "CLUB_HIGH_POP" BREAK CASE NCP_SPEECH_LOW_POP tl31Context = "CLUB_LOW_POP" BREAK CASE NCP_SPEECH_SHOUTOUT CASE NCP_SPEECH_SHOUT_DJ RETURN GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) BREAK ENDSWITCH IF NOT IS_STRING_NULL_OR_EMPTY(tl31Context) IF eActivitySlot != AC_SLOT_USE_COMPUTER AND eActivitySlot != AC_SLOT_TONY_SIT_DRINK_1 AND eActivitySlot != AC_SLOT_DANCEFLOOR_LAZLOW_WALL_LEAN AND g_iNightClubSetupState = NSS_FULLY_SETUP tl31Context += "_LOUD" ENDIF IF ARE_STRINGS_EQUAL(tl31Context, "BUMP_LOUD") tl31Context = "BUMP_CLUB" ENDIF RETURN GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME(tl31Context, 0, GET_LENGTH_OF_LITERAL_STRING(tl31Context)) ENDIF BREAK CASE NC_CELEB_JIMMY_BOSTON CASE NC_CELEB_KERRY_MCINTOSH CASE NC_CELEB_LACEY_JONAS CASE NC_CELEB_MIRANDA_COWAN CASE NC_CELEB_POPPY_MITCHELL CASE NC_CELEB_TYLER_DIXON SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST FALLTHRU CASE NCP_SPEECH_GREET IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "GREET_OWNER" ELSE RETURN "GENERIC_GREET" ENDIF BREAK CASE NCP_SPEECH_HOWSITGOING RETURN "HOWS_IT_GOING" // CASE NCP_SPEECH_BYE RETURN "GENERIC_BYE" CASE NCP_SPEECH_IDLE IF PLAYER_ID() = GET_OWNER_OF_THIS_NIGHTCLUB() RETURN "IDLE_OWNER" ELSE RETURN "IDLE_OTHER_PLAYER" ENDIF BREAK CASE NCP_SPEECH_SHOUT_TONY STRING sCelebContext sCelebContext = "" NIGHTCLUB_CELEBRITY_ENUM eCeleb INT iHistory REPEAT ciGB_NIGHTCLUB_CELEBRITY_LIST_SIZE iHistory eCeleb = INT_TO_ENUM(NIGHTCLUB_CELEBRITY_ENUM, GlobalplayerBD_FM_3[NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB())].sMagnateGangBossData.iNightclubCelebrityList[iHistory]) SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON IF (ePeds != NC_CELEB_JIMMY_BOSTON) AND NOT IS_BIT_SET(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) sCelebContext = "COMMENT_ON_CELEB_JIMMY" BREAKLOOP ENDIF BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS IF (ePeds != NC_CELEB_LACEY_JONAS) AND NOT IS_BIT_SET(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) sCelebContext = "COMMENT_ON_CELEB_LACEY" BREAKLOOP ENDIF BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH IF (ePeds != NC_CELEB_KERRY_MCINTOSH) AND NOT IS_BIT_SET(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) sCelebContext = "COMMENT_ON_CELEB_KERRY" BREAKLOOP ENDIF BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL IF (ePeds != NC_CELEB_POPPY_MITCHELL) AND NOT IS_BIT_SET(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) sCelebContext = "COMMENT_ON_CELEB_POPPY" BREAKLOOP ENDIF BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON IF (ePeds != NC_CELEB_TYLER_DIXON) AND NOT IS_BIT_SET(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) sCelebContext = "COMMENT_ON_CELEB_TYLER" BREAKLOOP ENDIF BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN IF (ePeds != NC_CELEB_MIRANDA_COWAN) AND NOT IS_BIT_SET(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) sCelebContext = "COMMENT_ON_CELEB_MIRANDA" BREAKLOOP ENDIF BREAK ENDSWITCH ENDREPEAT INT iStartRandomComment iStartRandomComment = 0 IF IS_STRING_NULL_OR_EMPTY(sCelebContext) iStartRandomComment = 1 ENDIF GetLazlowActivity(eActivitySlot) IF eActivitySlot = AC_SLOT_LAZLOW_HIGH_CHAIR // OR eActivitySlot = AC_SLOT_LAZLOW_VIP SWITCH GET_RANDOM_INT_IN_RANGE(iStartRandomComment, 5) CASE 0 RETURN sCelebContext CASE 1 RETURN "COMMENT_ON_TONY" CASE 2 RETURN "COMMENTS_ON_VIP_AREA" DEFAULT RETURN "COMMENT_ON_LAZLOW_VIP_AREA" ENDSWITCH ELSE SWITCH GET_RANDOM_INT_IN_RANGE(iStartRandomComment, 3) CASE 0 RETURN sCelebContext CASE 1 RETURN "COMMENT_ON_TONY" CASE 2 RETURN "COMMENTS_ON_VIP_AREA" ENDSWITCH ENDIF BREAK CASE NCP_SPEECH_SHOUTOUT SWITCH GET_RANDOM_INT_IN_RANGE(0, 2) CASE 0 RETURN "COMMENTS_ON_STYLE" CASE 1 RETURN "SHOUTOUT" ENDSWITCH BREAK CASE NCP_SPEECH_SHOUT_DJ SWITCH GET_RANDOM_INT_IN_RANGE(0, 6) CASE 0 RETURN "COMMENTS_ON_DJ" DEFAULT SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN RETURN "COMMENTS_ON_SOL" BREAK CASE DJ_DIXON RETURN "COMMENTS_ON_DIX" BREAK CASE DJ_TALE_OF_US RETURN "COMMENTS_ON_TOU" BREAK CASE DJ_BLACK_MADONNA RETURN "COMMENTS_ON_TBM" BREAK ENDSWITCH BREAK ENDSWITCH RETURN "COMMENTS_ON_DJ" BREAK CASE NCP_SPEECH_SHOUT_GEN SWITCH GET_RANDOM_INT_IN_RANGE(0, 3) CASE 0 RETURN "GENERAL_CLUB_BANTER" CASE 1 RETURN "GENERAL_BANTER" CASE 2 RETURN "GENERAL_DJ_BANTER" ENDSWITCH BREAK CASE NCP_SPEECH_BUMP RETURN "VIP_BUMP" ENDSWITCH BREAK ENDSWITCH RETURN GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) ENDFUNC FUNC INT GET_NC_PED_SPEECH_BASIC_TIMEDELAY(NC_PED_SPEECH_ENUM eNC_PedSpeech) SWITCH eNC_PedSpeech CASE NCP_SPEECH_GREET_FIRST RETURN 2000 CASE NCP_SPEECH_GREET RETURN 2500 CASE NCP_SPEECH_HOWSITGOING RETURN 15000 CASE NCP_SPEECH_BYE RETURN 2000 CASE NCP_SPEECH_IDLE RETURN 75000 CASE NCP_SPEECH_BUMP RETURN 5000 CASE NCP_SPEECH_HIGH_POP RETURN 15000 CASE NCP_SPEECH_LOW_POP RETURN 15000 CASE NCP_SPEECH_SHOUT_GEN RETURN 60000 CASE NCP_SPEECH_SHOUT_CELEB RETURN 1500 CASE NCP_SPEECH_SHOUT_AREA RETURN 1500 CASE NCP_SPEECH_SHOUT_TONY RETURN 60000 CASE NCP_SPEECH_SHOUT_OWNER RETURN 60000 CASE NCP_SPEECH_THANKS RETURN 5000 CASE NCP_SPEECH_SHOUT_DJ RETURN 60000 CASE NCP_SPEECH_SHOUTOUT RETURN 60000 CASE NCP_SPEECH_PLAYER_MISBEHAVE RETURN 15000 // CASE NCP_SPEECH_SPECIAL RETURN 0 CASE NCP_SPEECH_NOT_ENOUGH_CASH RETURN 0 CASE NCP_SPEECH_FREE_ENTRY RETURN 0 ENDSWITCH CASSERTLN(DEBUG_NET_PED_DANCING, "GET_NC_PED_SPEECH_BASIC_TIMEDELAY - unknown speech enum:", GET_NC_PED_SPEECH_STRING(eNC_PedSpeech)) RETURN HIGHEST_INT ENDFUNC FUNC INT GET_NC_PED_SPEECH_TIMEDELAY(NC_PED_TYPES ePeds, NC_PED_SPEECH_ENUM eNC_PedSpeech) INT iDelay = GET_NC_PED_SPEECH_BASIC_TIMEDELAY(eNC_PedSpeech) IF (eNC_PedSpeech != NCP_SPEECH_IDLE) IF (ePeds = NC_LAZLOW) OR (ePeds = NC_TONY) OR (ePeds = NC_DJ) OR (ePeds = NC_DJ_2) iDelay *= 2 ELIF (ePeds = NC_CELEB_JIMMY_BOSTON) OR (ePeds = NC_CELEB_LACEY_JONAS) OR (ePeds = NC_CELEB_KERRY_MCINTOSH) OR (ePeds = NC_CELEB_POPPY_MITCHELL) OR (ePeds = NC_CELEB_TYLER_DIXON) OR (ePeds = NC_CELEB_MIRANDA_COWAN) iDelay *= 2 ENDIF ENDIF IF ePeds = NC_BOUNCER_HEAD IF (eNC_PedSpeech = NCP_SPEECH_PLAYER_MISBEHAVE) iDelay = 1000 ELIF eNC_PedSpeech = NCP_SPEECH_IDLE iDelay = 30000 ENDIF ENDIF RETURN iDelay ENDFUNC FUNC BOOL IS_NIGHTCLUB_PEDS_SPEECH_BLOCKED_FOR_ACTIVITY(NIGHT_CLUB_PEDS &nightClubPed, TEXT_LABEL_63 &tl63Reason) tl63Reason = "" IF nightClubPed.eActiveActivity = AC_SLOT_SIT_DRINKING OR nightClubPed.eActiveActivity = AC_SLOT_TONY_SIT_DRINK_1 OR nightClubPed.eActiveActivity = AC_SLOT_TONY_SIT_DRINK_2 tl63Reason = GET_SLOT_NAME_STRING(nightClubPed.eActiveActivity) NC_ACTIVITY_ANIM_SEQUENCE activityAnimSequence FLOAT fAnimTime = -1 // FLOAT fMIN_AnimTime = 0.3 FLOAT fMAX_AnimTime = 0.6 // IF (fAnimTime = -1) GET_NC_SIT_DRINKING_ANIM_DATA(0, 0, activityAnimSequence, IS_NC_PED_FEMALE(nightClubPed.iNightclubPedid)) IF IS_ENTITY_PLAYING_ANIM(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) tl63Reason += " a" fAnimTime = GET_ENTITY_ANIM_CURRENT_TIME(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) ENDIF ENDIF // IF (fAnimTime = -1) GET_NC_SIT_DRINKING_ANIM_DATA(0, 1, activityAnimSequence, IS_NC_PED_FEMALE(nightClubPed.iNightclubPedid)) IF IS_ENTITY_PLAYING_ANIM(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) tl63Reason += " b" fAnimTime = GET_ENTITY_ANIM_CURRENT_TIME(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) ENDIF ENDIF // IF (fAnimTime = -1) GET_NC_SIT_DRINKING_ANIM_DATA(0, 2, activityAnimSequence, IS_NC_PED_FEMALE(nightClubPed.iNightclubPedid)) IF IS_ENTITY_PLAYING_ANIM(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) tl63Reason += " c" fAnimTime = GET_ENTITY_ANIM_CURRENT_TIME(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) // fMIN_AnimTime = 0.40 fMAX_AnimTime = 0.65 ENDIF ENDIF IF (fAnimTime != -1) tl63Reason += " " //tl63Reason += GET_STRING_FROM_FLOAT(fAnimTime) // IF fAnimTime >= fMIN_AnimTime // AND fAnimTime <= fMAX_AnimTime // RETURN TRUE // ENDIF IF fAnimTime <= fMAX_AnimTime RETURN TRUE ENDIF ENDIF ENDIF RETURN FALSE ENDFUNC FUNC BOOL PLAY_NIGHTCLUB_PEDS_SPEECH(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech, structPedsForConversation &YourLocalPedStruct, #IF IS_DEBUG_BUILD DEBUG_NIGHT_CLUB_SPEECH_STRUCT &sDebugSpeech, #ENDIF NC_PED_TYPES ePedOverride = NC_NULL_PED, SPEECH_PARAMS Params = SPEECH_PARAMS_ADD_BLIP_FORCE) NC_PED_TYPES ePeds IF ePedOverride != NC_NULL_PED ePeds = ePedOverride ELSE ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubPed.iNightClubPedID) ENDIF STRING Context = GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) IF NOT SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, eNC_PedSpeech) CASSERTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH ", GET_NC_PED_TYPE_STRING(ePeds), "shouldnt set ", Context) RETURN FALSE ENDIF IF IS_STRING_NULL_OR_EMPTY(Context) CASSERTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH blank context") RETURN FALSE ENDIF IF IS_SCREEN_FADING_OUT() OR IS_SCREEN_FADED_OUT() CDEBUG1LN(DEBUG_NET_PED_DANCING, "fading out, don't PLAY_NIGHTCLUB_PEDS_SPEECH (", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\")") RETURN FALSE ENDIF IF IS_AMBIENT_SPEECH_PLAYING(nightClubPed.piScenePeds) OR IS_SCRIPTED_SPEECH_PLAYING(nightClubPed.piScenePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "playing speech, don't PLAY_NIGHTCLUB_PEDS_SPEECH (", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\")") RETURN FALSE ENDIF IF IS_BROWSER_OPEN() OR IS_PHONE_ONSCREEN() CDEBUG1LN(DEBUG_NET_PED_DANCING, PICK_STRING(IS_BROWSER_OPEN(), "browser open, ", ""), PICK_STRING(IS_PHONE_ONSCREEN(), "phone onscreen, ", ""), "don't PLAY_NIGHTCLUB_PEDS_SPEECH (", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\")") RETURN FALSE ENDIF IF NETWORK_IS_IN_MP_CUTSCENE() OR IS_PLAYER_IN_SIMPLE_CUTSCENE(PLAYER_ID()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "in cutscene, don't PLAY_NIGHTCLUB_PEDS_SPEECH (", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\")") RETURN FALSE ENDIF STRING CustomContext = GET_NC_PED_SPEECH_CUSTOM_STRING(nightClubPed, eNC_PedSpeech, ePeds) IF IS_STRING_NULL_OR_EMPTY(CustomContext) IF (ePeds = NC_LAZLOW) AND (eNC_PedSpeech = NCP_SPEECH_SHOUT_CELEB) CDEBUG1LN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH blank lazlow celeb custom context") ELIF (ePeds = NC_LAZLOW) AND (eNC_PedSpeech = NCP_SPEECH_SHOUT_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH blank lazlow area custom context") ELSE CASSERTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH blank ", GET_NC_PED_TYPE_STRING(ePeds), " ", GET_NC_PED_SPEECH_STRING(eNC_PedSpeech), " custom context") ENDIF RETURN FALSE ENDIF TEXT_LABEL_63 tl63Reason IF IS_NIGHTCLUB_PEDS_SPEECH_BLOCKED_FOR_ACTIVITY(nightClubPed, tl63Reason) CDEBUG1LN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH (", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\") blocked for \"", tl63Reason, "\"") RETURN FALSE ENDIF BOOL bAmbientSpeech = TRUE IF ePeds = NC_LAZLOW IF eNC_PedSpeech = NCP_SPEECH_SHOUT_CELEB OR eNC_PedSpeech = NCP_SPEECH_SHOUT_AREA bAmbientSpeech = FALSE ENDIF ENDIF IF bAmbientSpeech BOOL SyncOverNetwork = TRUE //default IF NETWORK_IS_GAME_IN_PROGRESS() AND NOT NETWORK_HAS_CONTROL_OF_ENTITY(nightClubPed.piScenePeds) SyncOverNetwork = FALSE ENDIF STRING VoiceName = "" SWITCH ePeds CASE NC_BUSBOY_TOILET VoiceName = "S_M_Y_GENERICWORKER_01_LATINO_MINI_01" SyncOverNetwork = FALSE BREAK CASE NC_CELEB_KERRY_MCINTOSH VoiceName = "KERRY" SyncOverNetwork = FALSE BREAK CASE NC_CELEB_POPPY_MITCHELL VoiceName = "POPPY" SyncOverNetwork = FALSE BREAK CASE NC_CELEB_JIMMY_BOSTON VoiceName = "JIMMYBOSTON" SyncOverNetwork = FALSE BREAK CASE NC_CELEB_MIRANDA_COWAN VoiceName = "MIRANDA" SyncOverNetwork = FALSE BREAK ENDSWITCH IF IS_STRING_NULL_OR_EMPTY(VoiceName) IF ARE_STRINGS_EQUAL(Context, CustomContext) CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH ambient(", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\")") ELSE CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH ambient(", GET_NC_PED_TYPE_STRING(ePeds), ", [\"", Context, "\"], \"", CustomContext, "\")") ENDIF PLAY_PED_AMBIENT_SPEECH_NATIVE(nightClubPed.piScenePeds, CustomContext, AUDIO_SPEECH_GET_PARAM_STRING_FROM_ENUM(Params), SyncOverNetwork) ELSE IF ARE_STRINGS_EQUAL(Context, CustomContext) CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH ambient(", GET_NC_PED_TYPE_STRING(ePeds), ", \"", VoiceName, "\", \"", Context, "\")") ELSE CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH ambient(", GET_NC_PED_TYPE_STRING(ePeds), ", \"", VoiceName, "\", [\"", Context, "\"], \"", CustomContext, "\")") ENDIF PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(nightClubPed.piScenePeds, CustomContext, VoiceName, AUDIO_SPEECH_GET_PARAM_STRING_FROM_ENUM(Params), SyncOverNetwork) ENDIF IF (ePeds = NC_CELEB_JIMMY_BOSTON OR ePeds = NC_CELEB_LACEY_JONAS OR ePeds = NC_CELEB_KERRY_MCINTOSH OR ePeds = NC_CELEB_POPPY_MITCHELL OR ePeds = NC_CELEB_TYLER_DIXON OR ePeds = NC_CELEB_MIRANDA_COWAN) AND (eNC_PedSpeech = NCP_SPEECH_SHOUT_TONY) NIGHTCLUB_CELEBRITY_ENUM eCeleb = eNIGHTCLUB_CELEB_INVALID SWITCH GET_HASH_KEY(CustomContext) CASE HASH("COMMENT_ON_CELEB_JIMMY") eCeleb = eNIGHTCLUB_CELEB_JIMMY_BOSTON BREAK CASE HASH("COMMENT_ON_CELEB_KERRY") eCeleb = eNIGHTCLUB_CELEB_KERRY_MCINTOSH BREAK CASE HASH("COMMENT_ON_CELEB_POPPY") eCeleb = eNIGHTCLUB_CELEB_POPPY_MITCHELL BREAK CASE HASH("COMMENT_ON_CELEB_TYLER") eCeleb = eNIGHTCLUB_CELEB_TYLER_DIXON BREAK CASE HASH("COMMENT_ON_CELEB_MIRANDA") eCeleb = eNIGHTCLUB_CELEB_MIRANDA_COWAN BREAK CASE HASH("COMMENT_ON_CELEB_LACEY") eCeleb = eNIGHTCLUB_CELEB_LACEY_JONAS BREAK ENDSWITCH IF (eCeleb != eNIGHTCLUB_CELEB_INVALID) SET_BIT(g_iBSNightclubCelebSpeech, GET_NC_PED_CELEB_COMMENT_SHOUT_BIT(ePeds, eCeleb)) ENDIF ENDIF #IF IS_DEBUG_BUILD INT i FOR i = COUNT_OF(sDebugSpeech.tl31Context)-1 TO 1 STEP -1 sDebugSpeech.ePeds [i] = sDebugSpeech.ePeds [i-1] sDebugSpeech.tl31Context[i] = sDebugSpeech.tl31Context [i-1] sDebugSpeech.Timer [i] = sDebugSpeech.Timer [i-1] ENDFOR sDebugSpeech.ePeds [0] = ePeds sDebugSpeech.tl31Context [0] = CustomContext sDebugSpeech.Timer [0] = GET_NETWORK_TIME() #ENDIF RETURN TRUE ELSE INT YourNumberID = 2 STRING YourVoiceID = "LAZLOW" ADD_PED_FOR_DIALOGUE(YourLocalPedStruct, YourNumberID, nightClubPed.piScenePeds, YourVoiceID) IF CREATE_CONVERSATION(YourLocalPedStruct, "LAZFMAU", CustomContext, CONV_PRIORITY_VERY_HIGH) IF ARE_STRINGS_EQUAL(Context, CustomContext) CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH conv(", GET_NC_PED_TYPE_STRING(ePeds), ", \"", Context, "\")") ELSE CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH conv(", GET_NC_PED_TYPE_STRING(ePeds), ", [\"", Context, "\"], \"", CustomContext, "\")") ENDIF IF ePeds = NC_LAZLOW IF eNC_PedSpeech = NCP_SPEECH_SHOUT_CELEB NC_PED_SPEECH_ENUM eIndex = NCP_SPEECH_INVALID SWITCH GET_HASH_KEY(CustomContext) CASE HASH("LAZFM_ANJB1") eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE HASH("LAZFM_ANLJ1") eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE HASH("LAZFM_ANKM1") eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE HASH("LAZFM_ANPM1") eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE HASH("LAZFM_ANTD1") eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE HASH("LAZFM_ANMC1") eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK DEFAULT CASSERTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH shout celeb conv - ", GET_NC_PED_TYPE_STRING(ePeds), ", unknown CustomContext \"", CustomContext, "\" [Context \"", Context, "\"]") RETURN FALSE BREAK ENDSWITCH SET_BIT_DJ_SPEECH(nightClubPed, eIndex) SET_BIT(g_iBSNightclubSpeech, ENUM_TO_INT(eIndex)) ELIF eNC_PedSpeech = NCP_SPEECH_SHOUT_AREA NC_PED_SPEECH_ENUM eIndex = NCP_SPEECH_INVALID INT i = 0 REPEAT 10 i IF GET_HASH_KEY(GET_AREA_SHOUT_FOR_ACTIVITY(nightClubPed.eActiveActivity, i)) = GET_HASH_KEY(CustomContext) eIndex = INT_TO_ENUM(NC_PED_SPEECH_ENUM, (ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_SHOUT_AREA_A) + i) % 32) BREAKLOOP ENDIF ENDREPEAT IF eIndex = NCP_SPEECH_INVALID CASSERTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH shout area conv - ", GET_NC_PED_TYPE_STRING(ePeds), ", unknown CustomContext \"", CustomContext, "\" [Context \"", Context, "\"]") RETURN FALSE ENDIF SET_BIT(g_iBSNightclubSpeech, ENUM_TO_INT(eIndex)) ENDIF ENDIF #IF IS_DEBUG_BUILD INT i FOR i = COUNT_OF(sDebugSpeech.tl31Context)-1 TO 1 STEP -1 sDebugSpeech.ePeds [i] = sDebugSpeech.ePeds [i-1] sDebugSpeech.tl31Context[i] = sDebugSpeech.tl31Context [i-1] sDebugSpeech.Timer [i] = sDebugSpeech.Timer [i-1] ENDFOR sDebugSpeech.ePeds [0] = ePeds sDebugSpeech.tl31Context [0] = CustomContext sDebugSpeech.Timer [0] = GET_NETWORK_TIME() #ENDIF RETURN TRUE ENDIF RETURN FALSE ENDIF ENDFUNC FUNC BOOL IS_TONY_PRESENT_IN_NIGHTCLUB() RETURN TRUE //todo ENDFUNC FUNC BOOL IS_NC_PED_SPEECH_LAST_PLAYED(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech) IF (nightClubPed.eLastSpeech[0] = eNC_PedSpeech) OR (nightClubPed.eLastSpeech[1] = eNC_PedSpeech) RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC SETUP_DATA_AFTER_PED_SPEECH_TRIGGERED(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eNC_PedSpeech, NC_PED_TYPES ePeds) nightClubPed.eLastSpeech[1] = nightClubPed.eLastSpeech[0] nightClubPed.eLastSpeech[0] = eNC_PedSpeech REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, eNC_PedSpeech) REINIT_NET_TIMER(g_stNightclubSpeechTime) INT j REPEAT NCP_SPEECH_MAX j IF IS_BIT_SET_DJ_SPEECH(nightClubPed, INT_TO_ENUM(NC_PED_SPEECH_ENUM, j)) CPRINTLN(DEBUG_NET_PED_DANCING, "PLAY_NIGHTCLUB_PEDS_SPEECH clear(", GET_NC_PED_TYPE_STRING(ePeds), ", \"", GET_NC_PED_SPEECH_STRING(INT_TO_ENUM(NC_PED_SPEECH_ENUM, j)), "\")") CLEAR_BIT_DJ_SPEECH(nightClubPed, INT_TO_ENUM(NC_PED_SPEECH_ENUM, j)) ENDIF ENDREPEAT IF (eNC_PedSpeech = NCP_SPEECH_GREET_FIRST) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET_FIRST) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) REINIT_NET_TIMER(g_stNightclubSpeechGreetTime) ELIF (eNC_PedSpeech = NCP_SPEECH_GREET) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) REINIT_NET_TIMER(g_stNightclubSpeechGreetTime) ELIF (eNC_PedSpeech = NCP_SPEECH_BYE) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) ENDIF IF g_eCurrentPlayingDJ = DJ_TALE_OF_US AND ((ePeds = NC_DJ) OR (ePeds = NC_DJ_2)) g_iNightclubCurrentDJSpeechCheck = ENUM_TO_INT(ePeds) ENDIF ENDPROC FUNC NC_PED_SPEECH_ENUM SETUP_CLOAKROOM_PED_SPEECH(NIGHT_CLUB_PEDS &nightClubPed, NC_PED_SPEECH_ENUM eSpeechToPlay) SET_BIT_DJ_SPEECH(nightClubPed, eSpeechToPlay) CLEAR_BIT(g_iBSNightclubCashierSpeech, ENUM_TO_INT(eSpeechToPlay)) RETURN eSpeechToPlay ENDFUNC PROC MAINTAIN_NC_PEDS_SPEECH(NIGHT_CLUB_PEDS &nightClubPed, structPedsForConversation &YourLocalPedStruct, #IF IS_DEBUG_BUILD DEBUG_NIGHT_CLUB_SPEECH_STRUCT &sDebugSpeech, #ENDIF NC_PED_TYPES ePedOverride = NC_NULL_PED) NC_PED_TYPES ePeds IF ePedOverride != NC_NULL_PED ePeds = ePedOverride ELSE ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubPed.iNightClubPedID) ENDIF IF NOT SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds) EXIT ENDIF IF NOT DOES_ENTITY_EXIST(nightClubPed.piScenePeds) OR IS_ENTITY_DEAD(nightClubPed.piScenePeds) EXIT ENDIF BOOL bOutOfRange = FALSE VECTOR vPlayerCoord = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE) VECTOR vScenePedCoord = GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE) FLOAT fDistance2 = VDIST2(vPlayerCoord, vScenePedCoord) IF ePeds = NC_DJ OR ePeds = NC_DJ_2 IF (fDistance2 > g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT_DJ) bOutOfRange = TRUE ENDIF ELIF ePeds = NC_LAZLOW IF (fDistance2 > g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT_LAZLOW) bOutOfRange = TRUE ENDIF ELIF ePeds = NC_TONY IF (fDistance2 > g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT_TONY) bOutOfRange = TRUE ENDIF ELIF ePeds = NC_CELEB_JIMMY_BOSTON OR ePeds = NC_CELEB_KERRY_MCINTOSH OR ePeds = NC_CELEB_LACEY_JONAS OR ePeds = NC_CELEB_MIRANDA_COWAN OR ePeds = NC_CELEB_POPPY_MITCHELL OR ePeds = NC_CELEB_TYLER_DIXON IF (fDistance2 > g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT_CELEB) bOutOfRange = TRUE ENDIF ELIF ePeds = NC_BOUNCER_HEAD IF (fDistance2 > g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT_BOUNCER_HEAD) bOutOfRange = TRUE ENDIF ELSE IF (fDistance2 > g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT) bOutOfRange = TRUE ENDIF ENDIF #IF IS_DEBUG_BUILD // INT iSpeechTimerDiffMS = -1 // IF HAS_NET_TIMER_STARTED(nightClubPed.stIdleSpeechTimer) // iSpeechTimerDiffMS = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(nightClubPed.stIdleSpeechTimer) // ENDIF IF NOT (g_iDebugSetNightclubPedSpeech = ENUM_TO_INT(NCP_SPEECH_INVALID)) AND NOT (g_iDebugSetNightclubPedSpeech = ENUM_TO_INT(NCP_SPEECH_MAX)) IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, INT_TO_ENUM(NC_PED_SPEECH_ENUM, g_iDebugSetNightclubPedSpeech)) SET_BIT_DJ_SPEECH(nightClubPed, INT_TO_ENUM(NC_PED_SPEECH_ENUM, g_iDebugSetNightclubPedSpeech)) g_iDebugSetNightclubPedSpeech = ENUM_TO_INT(NCP_SPEECH_MAX) // nightClubStruct.bDrawDebugPedSpeech = TRUE ENDIF ENDIF #ENDIF CONST_INT iCONST_SPEECH_REINIT_GREET 30000 CONST_INT iCONST_SPEECH_REINIT_POPULARITY 20000 CONST_INT iCONST_SPEECH_REINIT_SHOUT 15000 IF (ePeds = NC_BUSINESS_CLOAKROOM) //Due to the different requirements of the cashier PED handles her speech seperatley //External triggers will set the speech she needs to play based on what other players are doing to give the impression she is networked NC_PED_SPEECH_ENUM eNC_PedSpeech = NCP_SPEECH_INVALID IF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_GREET_FIRST)) //Welcome to (INSERT CLUB NAME) eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_GREET_FIRST) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_GREET)) //Greeting for the owner eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_GREET) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_THANKS)) //Thanks for paying to enter eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_THANKS) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_IDLE)) IF NOT HAS_NET_TIMER_STARTED(nightClubPed.stIdleSpeechTimer) OR HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_HOWSITGOING)) //Player idling in fromt of the desk eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_IDLE) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) ENDIF ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_PLAYER_MISBEHAVE)) //Trying to enter without paying eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_HOWSITGOING)) //After welcome, inform the player if entry is free or has a cost eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_NOT_ENOUGH_CASH)) //Not enough cash to pay eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_NOT_ENOUGH_CASH) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_SPECIAL)) //Owner selects an option on the cashier menu eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_SPECIAL) ELIF IS_BIT_SET(g_iBSNightclubCashierSpeech, ENUM_TO_INT(NCP_SPEECH_FREE_ENTRY)) //Owner selects an option on the cashier menu eNC_PedSpeech = SETUP_CLOAKROOM_PED_SPEECH(nightClubPed, NCP_SPEECH_FREE_ENTRY) ENDIF IF eNC_PedSpeech != NCP_SPEECH_INVALID AND PLAY_NIGHTCLUB_PEDS_SPEECH(nightClubPed, eNC_PedSpeech, YourLocalPedStruct, #IF IS_DEBUG_BUILD sDebugSpeech, #ENDIF ePedOverride) SETUP_DATA_AFTER_PED_SPEECH_TRIGGERED(nightClubPed, eNC_PedSpeech, ePeds) CLEAR_BIT_DJ_SPEECH(nightClubPed, eNC_PedSpeech) ENDIF EXIT ELIF (ePeds = NC_LAZLOW) IF IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECH_SHOUT_CELEB)) IF NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) IF PLAY_NIGHTCLUB_PEDS_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB, YourLocalPedStruct, #IF IS_DEBUG_BUILD sDebugSpeech, #ENDIF ePedOverride) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) CLEAR_BIT(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECH_SHOUT_CELEB)) SETUP_DATA_AFTER_PED_SPEECH_TRIGGERED(nightClubPed, NCP_SPEECH_SHOUT_CELEB, ePeds) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) ENDIF EXIT ENDIF ENDIF ENDIF //greet/bye/howsitgoing BOOL bIsPlayerInGreetArea = FALSE IF (ePeds = NC_DJ) OR (ePeds = NC_DJ_2) // VECTOR vMin = <<-1606.4541, -3015.3416, -76.1021>> // VECTOR vMax = <<-1601.9031, -3009.8877, -78.7964>> // bIsPlayerInGreetArea = IS_ENTITY_IN_AREA(PLAYER_PED_ID(), vMin, vMax) VECTOR vDJTriggerCoord = <<-1604.1786, -3012.61465, -77.44925>> VECTOR vDJTriggerBound = <<2.2755, 2.72695, 1.34715>> bIsPlayerInGreetArea = IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vDJTriggerCoord, vDJTriggerBound) IF IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) AND NOT bIsPlayerInGreetArea IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vDJTriggerCoord, vDJTriggerBound*1.5) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) ENDIF ENDIF ELIF (ePeds = NC_BUSBOY_TOILET) VECTOR vToiletAttendantTriggerCoord = <<-1611.5958, -3009.9456, -79.0060>> VECTOR vToiletAttendantTriggerBound = <<0.8, 0.75, 2.0>> bIsPlayerInGreetArea = IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vToiletAttendantTriggerCoord, vToiletAttendantTriggerBound) IF IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) AND NOT bIsPlayerInGreetArea IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vToiletAttendantTriggerCoord, vToiletAttendantTriggerBound*1.5) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) ENDIF ENDIF ELSE CONST_FLOAT fCONST_GREET_AREA 2.0 VECTOR vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE) VECTOR vScenePedPos = GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE) bIsPlayerInGreetArea = (GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, vScenePedPos) < fCONST_GREET_AREA) IF bIsPlayerInGreetArea IF ABSF(vPlayerPos.z - vScenePedPos.z) > 1.0 bIsPlayerInGreetArea = FALSE ENDIF ENDIF IF bIsPlayerInGreetArea IF IS_ENTITY_ALIVE(PLAYER_PED_ID()) AND IS_ENTITY_ALIVE(nightClubPed.piScenePeds) INT iPlayerRoomKey = GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) INT iScenePedRoomKey = GET_ROOM_KEY_FROM_ENTITY(nightClubPed.piScenePeds) IF (iPlayerRoomKey != iScenePedRoomKey) bIsPlayerInGreetArea = FALSE ENDIF ENDIF ENDIF IF IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) AND NOT bIsPlayerInGreetArea IF NOT (GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), nightClubPed.piScenePeds) < (fCONST_GREET_AREA*1.5)) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) ENDIF ENDIF ENDIF // clear bits if no longer in range IF IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET) AND NOT bIsPlayerInGreetArea CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET) ENDIF IF IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_BYE) AND bIsPlayerInGreetArea CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_BYE) ENDIF IF NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET) AND ((NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET_FIRST) AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_GREET_FIRST)) OR (SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_GREET))) IF NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_GREET_FIRST) AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_GREET_FIRST) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_GREET_FIRST)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET_FIRST) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_GREET_FIRST)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET_FIRST) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET_FIRST) ENDIF ELIF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_GREET) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_GREET) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_GREET)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_GREET)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_GREET) ENDIF ELSE SWITCH GET_RANDOM_INT_IN_RANGE(0, 4) CASE 0 IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_HOWSITGOING) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_HOWSITGOING) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_HOWSITGOING)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_HOWSITGOING)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) ENDIF ENDIF BREAK CASE 1 IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_GEN) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_GEN) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ENDIF ENDIF BREAK CASE 2 IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_TONY) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_TONY) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_TONY)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_TONY)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) ENDIF ENDIF BREAK CASE 3 IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_OWNER) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_OWNER) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_OWNER)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_OWNER)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) ENDIF ENDIF BREAK ENDSWITCH ENDIF ELSE IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_HOWSITGOING) OR SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_HIGH_POP) OR SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_LOW_POP) AND NOT bOutOfRange IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_HOWSITGOING) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_HIGH_POP) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_LOW_POP) INT iPopularity = FLOOR(GET_PLAYER_NIGHTCLUB_POPULARITY(GET_OWNER_OF_THIS_NIGHTCLUB())) INT iNCPedCount = GET_NUMBER_OF_NIGHTCLUB_PEDS_BASED_OF_POPULARITY(iPopularity) BOOL iRandPopShout = (GET_RANDOM_INT_IN_RANGE(0, 2) = 0) IF (iNCPedCount >= 125) AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_HIGH_POP) AND iRandPopShout AND g_iNightClubSetupState = NSS_FULLY_SETUP AND NOT GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_LOW_POP)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_HIGH_POP) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_LOW_POP)+iCONST_SPEECH_REINIT_POPULARITY) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_HIGH_POP) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_HIGH_POP) ENDIF ELIF (iNCPedCount <= 50) AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_LOW_POP) AND iRandPopShout AND g_iNightClubSetupState = NSS_FULLY_SETUP IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_LOW_POP)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_LOW_POP) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_LOW_POP)+iCONST_SPEECH_REINIT_POPULARITY) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_LOW_POP) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_LOW_POP) ENDIF ELIF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_HOWSITGOING) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_HOWSITGOING)) AND bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_HOWSITGOING)+iCONST_SPEECH_REINIT_POPULARITY) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_HOWSITGOING) ENDIF ENDIF ENDIF ENDIF IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_BYE) AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_GREET) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_BYE)) AND NOT bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_BYE) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_BYE)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_BYE) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_BYE) ENDIF ENDIF ENDIF IF NOT bOutOfRange //bump IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_BUMP) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_BUMP)) AND IS_ENTITY_ALIVE(nightClubPed.piScenePeds) AND IS_ENTITY_ALIVE(PLAYER_PED_ID()) AND IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(),nightClubPed.piScenePeds) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_BUMP) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_BUMP)+iCONST_SPEECH_REINIT_GREET) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_BUMP) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_BUMP) ENDIF ENDIF //shout IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_GEN) OR SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_TONY) OR SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_OWNER) IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_GEN) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_TONY) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_OWNER) IF (IS_TONY_PRESENT_IN_NIGHTCLUB() AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_TONY)) AND (IS_OWNER_PRESENT_IN_NIGHTCLUB() AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_OWNER)) SWITCH GET_RANDOM_INT_IN_RANGE(0, 3) CASE 0 IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_TONY)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_TONY)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) ENDIF BREAK CASE 1 IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_OWNER)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_OWNER)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) ENDIF BREAK CASE 2 IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ENDIF BREAK ENDSWITCH ELIF (IS_TONY_PRESENT_IN_NIGHTCLUB() AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_TONY)) IF GET_RANDOM_BOOL() IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_TONY)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_TONY)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_TONY) ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ENDIF ENDIF ELIF (IS_OWNER_PRESENT_IN_NIGHTCLUB() AND SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_OWNER)) IF GET_RANDOM_BOOL() IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_OWNER)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_OWNER)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_OWNER) ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ENDIF ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_GEN)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_GEN) ENDIF ENDIF ENDIF ENDIF // lazlow shout IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUTOUT) IF g_iNightClubSetupState = NSS_FULLY_SETUP AND g_fPercentagePopularity > 50.0 // No shoutout in a low pop club (he's in the toilets etc.) NC_PED_SPEECH_ENUM eCurrentPlayingDJShout = NCP_SPEECH_SHOUTOUT IF g_eCurrentPlayingDJ != DJ_NULL eCurrentPlayingDJShout = NCP_SPEECH_SHOUT_DJ ENDIF IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, eCurrentPlayingDJShout) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUTOUT) AND NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_GEN) IF GET_RANDOM_INT_IN_RANGE(0, 3) = 0 IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(NC_LAZLOW, NCP_SPEECH_SHOUTOUT)) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUTOUT) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(NC_LAZLOW, NCP_SPEECH_SHOUTOUT)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUTOUT) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUTOUT) ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(NC_LAZLOW, eCurrentPlayingDJShout)) SET_BIT_DJ_SPEECH(nightClubPed, eCurrentPlayingDJShout) ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(NC_LAZLOW, eCurrentPlayingDJShout)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, eCurrentPlayingDJShout) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, eCurrentPlayingDJShout) ENDIF ENDIF ENDIF ENDIF ENDIF // lazlow celeb shout IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_SHOUT_CELEB) IF NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) // IF NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN)) IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_SHOUT_CELEB) IF g_bTurnOnNCCustomerPeds AND AreAnyCelebsInClub() IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1588.8320, -3013.4741, -78.7061>>, <<3.0000, 6.0000, 1.5000>>) // from enterance OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1605.5630, -3006.1045, -76.5750>>, <<2.0000, 2.0000, 3.5000>>) // from office/garage IF NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) BROADCAST_NIGHTCLUB_PEDS_SPEECH_DATA(GET_OWNER_OF_THIS_NIGHTCLUB(), NCP_SPEECH_SHOUT_CELEB, FALSE) ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_SHOUT_CELEB)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) ENDIF ENDIF // IF IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) // AND PLAY_NIGHTCLUB_PEDS_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB, YourLocalPedStruct #IF IS_DEBUG_BUILD , sDebugSpeech #ENDIF ) // nightClubPed.eLastSpeech[1] = nightClubPed.eLastSpeech[0] // nightClubPed.eLastSpeech[0] = NCP_SPEECH_SHOUT_CELEB // REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) // CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) // ENDIF ENDIF ENDIF // ENDIF ENDIF ENDIF //idle IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_IDLE) IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubPed, NCP_SPEECH_IDLE) OR ePeds = NC_BOUNCER_HEAD IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_IDLE)) BOOL bIsPlayerInIdleArea = TRUE VECTOR vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE) VECTOR vScenePedPos = GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE) IF bIsPlayerInIdleArea IF ABSF(vPlayerPos.z - vScenePedPos.z) > 1.0 bIsPlayerInIdleArea = FALSE ENDIF ENDIF IF bIsPlayerInIdleArea INT iPlayerRoomKey = GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) INT iScenePedRoomKey = GET_ROOM_KEY_FROM_ENTITY(nightClubPed.piScenePeds) IF (iPlayerRoomKey != iScenePedRoomKey) bIsPlayerInIdleArea = FALSE ENDIF ENDIF IF bIsPlayerInIdleArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_IDLE) ENDIF ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_IDLE)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_IDLE) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_IDLE) ENDIF ENDIF ENDIF //thanks IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_THANKS) AND IS_BIT_SET(g_iBSNightclubSPeech, ENUM_TO_INT(NCP_SPEECH_THANKS)) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_THANKS)) IF bIsPlayerInGreetArea SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_THANKS) CLEAR_BIT(g_iBSNightclubSPeech, ENUM_TO_INT(NCP_SPEECH_THANKS)) ENDIF ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_THANKS)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_THANKS) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_THANKS) ENDIF ENDIF //player misbehave IF ePeds != NC_BOUNCER_HEAD IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_PLAYER_MISBEHAVE) AND IS_BIT_SET(g_iBSNightclubSPeech, ENUM_TO_INT(NCP_SPEECH_PLAYER_MISBEHAVE)) IF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_PLAYER_MISBEHAVE)) IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE), GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE)) < 100 // has to be bigger than greet area as he can turn you away from afar SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) CLEAR_BIT(g_iBSNightclubSPeech, ENUM_TO_INT(NCP_SPEECH_PLAYER_MISBEHAVE)) ENDIF ELIF HAS_NET_TIMER_EXPIRED(nightClubPed.stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(ePeds, NCP_SPEECH_PLAYER_MISBEHAVE)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) REINIT_NET_TIMER(nightClubPed.stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) ENDIF ENDIF ENDIF ENDIF //bouncer head misbehave IF ePeds = NC_BOUNCER_HEAD IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, NCP_SPEECH_PLAYER_MISBEHAVE) IF (IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_HEAD_BOUNCER_TURN_AWAY) OR IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_HEAD_BOUNCER_TURN_AWAY+1)) AND VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE), GET_ENTITY_COORDS(nightClubPed.piScenePeds, FALSE)) < 8 // has to be bigger than greet area as he can turn you away from afar IF NOT IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) SET_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH - bit set") ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH - bit set, timer expired") ELSE CLEAR_BIT_DJ_SPEECH(nightClubPed, NCP_SPEECH_PLAYER_MISBEHAVE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH - cleared bit") ENDIF ENDIF ENDIF INT i REPEAT NCP_SPEECH_MAX i NC_PED_SPEECH_ENUM eNC_PedSpeech = INT_TO_ENUM(NC_PED_SPEECH_ENUM, i) IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, eNC_PedSpeech) IF IS_BIT_SET_DJ_SPEECH(nightClubPed, eNC_PedSpeech) BOOL bSafeToPlay = TRUE IF (ePeds = NC_LAZLOW) IF (eNC_PedSpeech != NCP_SPEECH_SHOUT_CELEB) AND IS_BIT_SET_DJ_SPEECH(nightClubPed, NCP_SPEECH_SHOUT_CELEB) bSafeToPlay = FALSE ENDIF ENDIF IF bSafeToPlay IF HAS_NET_TIMER_STARTED(g_stNightclubSpeechTime) AND NOT HAS_NET_TIMER_EXPIRED(g_stNightclubSpeechTime, 1000) bSafeToPlay = FALSE ENDIF ENDIF IF bSafeToPlay IF (eNC_PedSpeech = NCP_SPEECH_GREET_FIRST) OR (eNC_PedSpeech = NCP_SPEECH_GREET) IF HAS_NET_TIMER_STARTED(g_stNightclubSpeechGreetTime) AND NOT HAS_NET_TIMER_EXPIRED(g_stNightclubSpeechGreetTime, 3000) bSafeToPlay = FALSE ENDIF ENDIF ENDIF IF bSafeToPlay AND PLAY_NIGHTCLUB_PEDS_SPEECH(nightClubPed, eNC_PedSpeech, YourLocalPedStruct, #IF IS_DEBUG_BUILD sDebugSpeech, #ENDIF ePedOverride) SETUP_DATA_AFTER_PED_SPEECH_TRIGGERED(nightClubPed, eNC_PedSpeech, ePeds) ENDIF ENDIF ENDIF ENDREPEAT ENDPROC PROC MANAGE_LAZLOW_PED_CUSTOM_SPEECH(NIGHT_CLUB_STRUCT &nightClubStruct) // IF GET_OWNER_OF_THIS_NIGHTCLUB() = INVALID_PLAYER_INDEX() // EXIT // ENDIF // INT iLazlowPedId = 0 // WHILE GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].iNightClubPedID) != NC_LAZLOW // iLazlowPedId++ // IF iLazlowPedId >= MAX_NUMBER_OF_NIGHTCLUB_PEDS // EXIT // ENDIF // ENDWHILE IF (nightClubStruct.iLazlowPedID = -1) EXIT ENDIF IF NOT SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(NC_LAZLOW) EXIT ENDIF IF NOT DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds) OR IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds) EXIT ENDIF CONST_INT iCONST_SPEECH_REINIT_SHOUT 15000 // lazlow celeb shout IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(NC_LAZLOW, NCP_SPEECH_SHOUT_CELEB) IF NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) AND NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) // IF NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON)) // AND NOT IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN)) IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) IF g_bTurnOnNCCustomerPeds AND AreAnyCelebsInClub() IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1588.8320, -3013.4741, -78.7061>>, <<3.0000, 6.0000, 1.5000>>) // from enterance OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1605.5630, -3006.1045, -76.5750>>, <<2.0000, 2.0000, 3.5000>>) // from office/garage IF NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) SET_BIT_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) BROADCAST_NIGHTCLUB_PEDS_SPEECH_DATA(GET_OWNER_OF_THIS_NIGHTCLUB(), NCP_SPEECH_SHOUT_CELEB, FALSE) ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(NC_LAZLOW, NCP_SPEECH_SHOUT_CELEB)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) REINIT_NET_TIMER(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) ENDIF ENDIF // IF IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) // AND PLAY_NIGHTCLUB_PEDS_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB, nightClubStruct.sPedsForConversation #IF IS_DEBUG_BUILD , nightClubStruct.sDebugSpeech #ENDIF ) // nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[1] = nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[0] // nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[0] = NCP_SPEECH_SHOUT_CELEB // REINIT_NET_TIMER(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].stIdleSpeechTimer) // CLEAR_BIT_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_CELEB) // ENDIF ENDIF ENDIF // ENDIF ENDIF ENDIF //lazlow area shout IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(NC_LAZLOW, NCP_SPEECH_SHOUT_AREA) AND GET_AREA_SHOUT_CURRENT_ACTIVITY_INDEX(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID]) != -1 AND NOT IS_BIT_SET(g_iBSNightclubSpeech, (ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_SHOUT_AREA_A) + GET_AREA_SHOUT_CURRENT_ACTIVITY_INDEX(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID])) % 32) IF NOT IS_NC_PED_SPEECH_LAST_PLAYED(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE), GET_ENTITY_COORDS(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds, FALSE)) < g_sMPTunables.fNC_PEDS_SPEECH_DIST_2_LIMIT_LAZLOW // from enterance IF NOT IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) SET_BIT_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) ENDIF ELSE IF HAS_NET_TIMER_EXPIRED(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].stIdleSpeechTimer,GET_NC_PED_SPEECH_TIMEDELAY(NC_LAZLOW, NCP_SPEECH_SHOUT_AREA)+iCONST_SPEECH_REINIT_SHOUT) AND IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) REINIT_NET_TIMER(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) ENDIF ENDIF IF IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) AND PLAY_NIGHTCLUB_PEDS_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA, nightClubStruct.sPedsForConversation #IF IS_DEBUG_BUILD , nightClubStruct.sDebugSpeech #ENDIF ) nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[1] = nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[0] nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[0] = NCP_SPEECH_SHOUT_AREA REINIT_NET_TIMER(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].stIdleSpeechTimer) CLEAR_BIT_DJ_SPEECH(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID], NCP_SPEECH_SHOUT_AREA) ENDIF ENDIF ENDIF SWITCH nightClubStruct.iLazlowCelebStage CASE 0 IF nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].eLastSpeech[0] = NCP_SPEECH_SHOUT_CELEB REQUEST_SCRIPT_AUDIO_BANK("DLC_BATTLE/BTL_CLUB_DJ_CALLOUT_CROWD_CHEER") CDEBUG1LN(DEBUG_NET_PED_DANCING, "MANAGE_LAZLOW_PED_CUSTOM_SPEECH - shout celeb last played, request bank") nightClubStruct.iLazlowCelebStage = 1 ENDIF BREAK CASE 1 IF REQUEST_SCRIPT_AUDIO_BANK("DLC_BATTLE/BTL_CLUB_DJ_CALLOUT_CROWD_CHEER") // VECTOR position // position = GET_NIGHTCLUB_INTERIOR_POSITION() // PLAY_SOUND_FROM_COORD(-1, "dj_crowd_cheer", position, "dlc_btl_club_dj_callout_crowd_cheers_sounds") // REINIT_NET_TIMER(nightClubStruct.stLazlowCelebStage) // // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MANAGE_LAZLOW_PED_CUSTOM_SPEECH - bank loaded, play \"dj_crowd_cheer\" at ", position) // nightClubStruct.iLazlowCelebStage = 2 IF NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds) PLAY_SOUND_FROM_ENTITY(-1, "dj_crowd_cheer", nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds, "dlc_btl_club_dj_callout_crowd_cheers_sounds") REINIT_NET_TIMER(nightClubStruct.stLazlowCelebStage) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MANAGE_LAZLOW_PED_CUSTOM_SPEECH - bank loaded, play \"dj_crowd_cheer\" on ", NATIVE_TO_INT(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds)) nightClubStruct.iLazlowCelebStage = 2 ELSE RELEASE_NAMED_SCRIPT_AUDIO_BANK("DLC_BATTLE/BTL_CLUB_DJ_CALLOUT_CROWD_CHEER") RESET_NET_TIMER(nightClubStruct.stLazlowCelebStage) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MANAGE_LAZLOW_PED_CUSTOM_SPEECH - bank loaded, but dead on ", NATIVE_TO_INT(nightClubStruct.activityPeds[nightClubStruct.iLazlowPedID].piScenePeds)) nightClubStruct.iLazlowCelebStage = -1 ENDIF ENDIF BREAK CASE 2 IF HAS_NET_TIMER_EXPIRED(nightClubStruct.stLazlowCelebStage, 30000) RELEASE_NAMED_SCRIPT_AUDIO_BANK("DLC_BATTLE/BTL_CLUB_DJ_CALLOUT_CROWD_CHEER") RESET_NET_TIMER(nightClubStruct.stLazlowCelebStage) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MANAGE_LAZLOW_PED_CUSTOM_SPEECH - 30s passed since crowd cheer, deload the bank") nightClubStruct.iLazlowCelebStage = 3 ENDIF BREAK ENDSWITCH ENDPROC PROC MANAGE_DJ_PED_CUSTOM_SPEECH(NIGHT_CLUB_STRUCT &nightClubStruct) IF g_eCurrentPlayingDJ != DJ_TALE_OF_US EXIT ENDIF IF nightClubStruct.iCachedDJSpeechCheck != g_iNightclubCurrentDJSpeechCheck INT i = 0 INT iDJPedId = -1, iDJ2PedId = -1 NC_PED_TYPES ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[i].iNightClubPedID) WHILE ((iDJPedId = -1) OR (iDJ2PedId = -1)) AND (i < MAX_NUMBER_OF_NIGHTCLUB_PEDS) ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[i].iNightClubPedID) IF (ePeds = NC_DJ) PRINTLN("MANAGE_DJ_PED_CUSTOM_SPEECH iDJPedId = ", i) iDJPedId = i ENDIF IF (ePeds = NC_DJ_2) PRINTLN("MANAGE_DJ_PED_CUSTOM_SPEECH iDJ2PedId = ", i) iDJ2PedId = i ENDIF i++ ENDWHILE NC_PED_TYPES eDJPeds = INT_TO_ENUM(NC_PED_TYPES, g_iNightclubCurrentDJSpeechCheck) PRINTLN("MANAGE_DJ_PED_CUSTOM_SPEECH iDJPedId: ", iDJPedId, ", iDJ2PedId: ", iDJ2PedId, ", eDJPeds: ", GET_NC_PED_TYPE_STRING(eDJPeds), ", i: ", i) IF ((iDJPedId = -1) OR (iDJ2PedId = -1)) EXIT ENDIF IF (eDJPeds = NC_DJ) nightClubStruct.activityPeds[iDJ2PedId].eLastSpeech[1] = nightClubStruct.activityPeds[iDJPedId].eLastSpeech[1] nightClubStruct.activityPeds[iDJ2PedId].eLastSpeech[0] = nightClubStruct.activityPeds[iDJPedId].eLastSpeech[0] SET_NET_TIMER_TO_SAME_VALUE_AS_TIMER(nightClubStruct.activityPeds[iDJ2PedId].stIdleSpeechTimer, nightClubStruct.activityPeds[iDJPedId].stIdleSpeechTimer.Timer) nightClubStruct.activityPeds[iDJ2PedId].iPedSpeechBitset = nightClubStruct.activityPeds[iDJPedId].iPedSpeechBitset ELIF (eDJPeds = NC_DJ_2) nightClubStruct.activityPeds[iDJPedId].eLastSpeech[1] = nightClubStruct.activityPeds[iDJ2PedId].eLastSpeech[1] nightClubStruct.activityPeds[iDJPedId].eLastSpeech[0] = nightClubStruct.activityPeds[iDJ2PedId].eLastSpeech[0] SET_NET_TIMER_TO_SAME_VALUE_AS_TIMER(nightClubStruct.activityPeds[iDJPedId].stIdleSpeechTimer, nightClubStruct.activityPeds[iDJ2PedId].stIdleSpeechTimer.Timer) nightClubStruct.activityPeds[iDJPedId].iPedSpeechBitset = nightClubStruct.activityPeds[iDJ2PedId].iPedSpeechBitset ELSE ENDIF nightClubStruct.iCachedDJSpeechCheck = ENUM_TO_INT(eDJPeds) ENDIF ENDPROC PROC UPDATE_NIGHTCLUB_LAYOUT() g_iNightClubSetupState = NSS_COMPLETED_NOTHING g_bTurnOnNCStaffPeds = FALSE #IF IS_DEBUG_BUILD IF GET_OWNER_OF_THIS_NIGHTCLUB() = PLAYER_ID() CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: GET_OWNER_OF_THIS_NIGHTCLUB: current player is owner: ", GET_PLAYER_NAME(GET_OWNER_OF_THIS_NIGHTCLUB())) ELSE IF NOT (GET_OWNER_OF_THIS_NIGHTCLUB() = INVALID_PLAYER_INDEX()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: GET_OWNER_OF_THIS_NIGHTCLUB: current player is not owner, OWNER:", GET_PLAYER_NAME(GET_OWNER_OF_THIS_NIGHTCLUB())) ENDIF ENDIF #ENDIF g_eActiveDJ = DJ_NULL IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) IF IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB(), DJ_TALE_OF_US) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE: DJ_TALE_OF_US") g_eActiveDJ = DJ_TALE_OF_US ENDIF IF IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB(), DJ_DIXON) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE: DJ_DIXON") g_eActiveDJ = DJ_DIXON ENDIF IF IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB(), DJ_SOLOMUN) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE: DJ_SOLOMUN") g_eActiveDJ = DJ_SOLOMUN ENDIF IF IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB(), DJ_BLACK_MADONNA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: IS_PLAYERS_NIGHTCLUB_DJ_ACTIVE: DJ_BLACK_MADONNA") g_eActiveDJ = DJ_BLACK_MADONNA ENDIF ENDIF IF (IS_PLAYER_NIGHTCLUB_PODIUM_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) OR IS_PLAYER_NIGHTCLUB_PODIUM_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) OR IS_PLAYER_NIGHTCLUB_PODIUM_2_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB())) AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: Owner has a podium, setting dancers.") IF IS_PLAYER_NIGHTCLUB_DANCER_FEMALE_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) //female dancers g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_FEMALE IF IS_PLAYER_NIGHTCLUB_PODIUM_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_1 ELIF IS_PLAYER_NIGHTCLUB_PODIUM_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_2 ELIF IS_PLAYER_NIGHTCLUB_PODIUM_2_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_3 ENDIF ELIF IS_PLAYER_NIGHTCLUB_DANCER_MALE_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MALE IF IS_PLAYER_NIGHTCLUB_PODIUM_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_1 ELIF IS_PLAYER_NIGHTCLUB_PODIUM_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_2 ELIF IS_PLAYER_NIGHTCLUB_PODIUM_2_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_3 ENDIF //male dancers ELIF IS_PLAYER_NIGHTCLUB_DANCER_MIXED_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_MIX IF IS_PLAYER_NIGHTCLUB_PODIUM_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_1 ELIF IS_PLAYER_NIGHTCLUB_PODIUM_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_2 ELIF IS_PLAYER_NIGHTCLUB_PODIUM_2_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_3 ENDIF //mixed dancers ENDIF g_bTurnOnNCPodiumDancers = TRUE ELSE g_eNightClubPodiumDancersState = PODIUM_PEDS_STATE_NULL g_eNightClubPodiumDancersStyle = PODIUM_PEDS_STYLE_NULL g_bTurnOnNCPodiumDancers = FALSE ENDIF IF IS_PLAYER_NIGHTCLUB_STAFF_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) g_bTurnOnNCExtraBartenders = TRUE g_bTurnOnNCExtraBouncers = TRUE ELSE g_bTurnOnNCExtraBartenders = FALSE g_bTurnOnNCExtraBouncers = FALSE ENDIF IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: ALL setup mission complete, g_bTurnOnNCCustomerPeds = TRUE") g_bTurnOnNCCustomerPeds = TRUE g_bTurnOnNCStaffPeds = TRUE g_iNightClubSetupState = NSS_FULLY_SETUP IF (g_eActiveDJ = DJ_NULL) g_eActiveDJ = DJ_SOLOMUN CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: ALL setup mission complete, but no dj set as active, setting solomun as active") ENDIF ELSE IF NOT HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) AND NOT HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) AND NOT HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) g_iNightClubSetupState = NSS_COMPLETED_NOTHING ENDIF IF NOT HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) IF NOT HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY ENDIF ELSE IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) g_iNightClubSetupState = NSS_COMPLETED_EQUIP_ONLY ENDIF ENDIF ENDIF IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubSetupState = ", g_iNightClubSetupState) IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_STAFF = TRUE") ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_STAFF = FALSE") ENDIF #IF IS_DEBUG_BUILD IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_STAFF) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_STAFF: TRUE") ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_STAFF: FALSE") ENDIF IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_EQUIPMENT) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_EQUIPMENT: TRUE") ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_EQUIPMENT: FALSE") ENDIF IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_DJ_CRASH: TRUE") ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: MBV_COLLECT_DJ_CRASH: FALSE") ENDIF #ENDIF g_bTurnOnNCCustomerPeds = FALSE ENDIF IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) g_bTurnOnNCCustomerPeds = FALSE // no peds ENDIF INT iPopularity iPopularity = FLOOR(GET_PLAYER_NIGHTCLUB_POPULARITY(GET_OWNER_OF_THIS_NIGHTCLUB())) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: GET_PLAYER_NIGHTCLUB_POPULARITY: ", iPopularity) // iPopularity = GET_MP_INT_CHARACTER_STAT(MP_STAT_CLUB_POPULARITY) #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_50percentPopularityNightClub") g_fPercentagePopularity = 50 GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.fNightclubPopularity = 50.0 iPopularity = 50 ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_100percentPopularityNightClub") g_fPercentagePopularity = 100 GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.fNightclubPopularity = 100.0 iPopularity = 100 ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_bNightClubUseWidgetValues: ", g_bNightClubUseWidgetValues) IF g_bNightClubUseWidgetValues iPopularity = FLOOR(g_fPercentagePopularity) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_bNightClubUseWidgetValues: TRUE, setting iPopularity to FLOOR(g_fPercentagePopularity): ", iPopularity) ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_purchasedPodiumNightClub") g_bTurnOnNCPodiumDancers = TRUE ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_StaffSetupMissionCompleteNightClub") g_bTurnOnNCStaffPeds = TRUE ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_CustomerSetupMissionCompleteNightClub") AND NOT GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) g_bTurnOnNCCustomerPeds = TRUE ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_ExtraStaffPurchasedNightClub") g_bTurnOnNCExtraBartenders = TRUE ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetupMissionCompletedNightClub") g_bTurnOnNCDJ = TRUE ENDIF IF HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(GET_OWNER_OF_THIS_NIGHTCLUB(), MBV_COLLECT_DJ_CRASH) IF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToSolomon") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_SOLOMUN") g_eActiveDJ = DJ_SOLOMUN ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToDixon") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_DIXON") g_eActiveDJ = DJ_DIXON ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToTaleOfUs") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_TALE_OF_US") g_eActiveDJ = DJ_TALE_OF_US ENDIF IF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToBlackMadonna") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_BLACK_MADONNA") g_eActiveDJ = DJ_BLACK_MADONNA ENDIF g_bTurnOnNCDJEntourage = TRUE ELSE IF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToSolomon") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_SOLOMUN but setup not complete not activating") ELIF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToDixon") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_DIXON but setup not complete not activating") ELIF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToTaleOfUs") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_TALE_OF_US but setup not complete not activating") ELIF GET_COMMANDLINE_PARAM_EXISTS("sc_DJSetToBlackMadonna") CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_COMMANDLINE_PARAM_EXISTS: DJ_BLACK_MADONNA but setup not complete not activating") ENDIF ENDIF #ENDIF IF NOT (iPopularity > 50) g_iNightClubPedsToiletLayout = 3 g_iNightClubPedsHallwayLayout = 3 ENDIF IF (g_iNightClubSetupState != NSS_FULLY_SETUP) g_iNightClubPedsToiletLayout = 4 g_iNightClubPedsHallwayLayout = 4 ENDIF #IF IS_DEBUG_BUILD IF g_bNightClubUseWidgetValues g_bTurnOnNCDJEntourage = g_bWidgetTurnOnDJEntourage g_bTurnOnNCExtraBartenders = g_bWidgetTurnOnExtraBartenders g_bTurnOnNCExtraBouncers = g_bWidgetTurnOnExtraBouncers g_bTurnOnNCStaffPeds = g_bWidgetTurnOnStaffPeds g_bTurnOnNCCustomerPeds = g_bWidgetTurnOnCustomerPeds g_bTurnOnNCPodiumDancers = g_bWidgetTurnOnPodiumDancers g_eNightClubPodiumDancersState = INT_TO_ENUM(NIGHTCLUB_PODIUM_DANCER_PED_STATE, g_iWidgetPodiumPedsState) g_eNightClubPodiumDancersStyle = INT_TO_ENUM(NIGHTCLUB_PODIUM_DANCER_PED_STYLE, g_iWidgetPodiumPedsStyle) g_iNightClubSetupState = g_iNightClubSetupStateWidget g_eActiveDJ = INT_TO_ENUM(NIGHTCLUB_DJ_ID, g_iActiveDJWidget) ELSE g_bWidgetTurnOnDJEntourage = g_bTurnOnNCDJEntourage g_bWidgetTurnOnExtraBartenders = g_bTurnOnNCExtraBartenders g_bWidgetTurnOnExtraBouncers = g_bTurnOnNCExtraBouncers g_bWidgetTurnOnPodiumDancers = g_bTurnOnNCPodiumDancers g_bWidgetTurnOnStaffPeds = g_bTurnOnNCStaffPeds g_bWidgetTurnOnCustomerPeds = g_bTurnOnNCCustomerPeds g_iWidgetPodiumPedsState = ENUM_TO_INT(g_eNightClubPodiumDancersState) g_iWidgetPodiumPedsStyle = ENUM_TO_INT(g_eNightClubPodiumDancersStyle) g_iNightClubSetupStateWidget = g_iNightClubSetupState g_iActiveDJWidget = ENUM_TO_INT(g_eActiveDJ) ENDIF #ENDIF g_fPercentagePopularity = TO_FLOAT(iPopularity) SET_NUMBER_OF_PEDS_FROM_POPULARITY(iPopularity) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsMainAreaLayout: ", g_iNightClubPedsMainAreaLayout) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsHallwayLayout: ", g_iNightClubPedsHallwayLayout) ENDPROC FUNC BOOL IsPointInFirstHallwayCullable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1569.292603,-3002.447021,-77.980042>>, <<-1569.388916,-3018.850830,-72.513222>>, 7.500000) ENDFUNC FUNC BOOL IsEntityInFirstHallwayCullable(ENTITY_INDEX ent) RETURN IsPointInFirstHallwayCullable(GET_ENTITY_COORDS(ent, FALSE)) ENDFUNC FUNC BOOL IsPointInSecondHallwayCullable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1567.860596,-3003.476807,-74.278206>>, <<-1579.618530,-3003.575684,-79.960205>>, 3.0) ENDFUNC FUNC BOOL IsEntityInSecondHallwayCullable(ENTITY_INDEX ent) RETURN IsPointInSecondHallwayCullable(GET_ENTITY_COORDS(ent, FALSE)) ENDFUNC FUNC BOOL IsPointInDownstairsBarCullable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1574.860718,-3015.938721,-79.978348>>, <<-1582.917358,-3015.264648,-77.352486>> , 5.0) ENDFUNC FUNC BOOL IsPointInDownstairsBarEntranceCullable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1576.805298,-3005.230713,-79.941902>>, <<-1576.781982,-3010.693115,-77.513519>> , 4.0) ENDFUNC FUNC BOOL IsPointInDownstairsBarViewable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1579.185669,-3004.476807,-79.854782>>, <<-1579.184082,-3019.500000,-77.861290>>, 13.750000) ENDFUNC FUNC BOOL IsEntityInDownstairsBarViewable(ENTITY_INDEX ent) RETURN IsPointInDownstairsBarViewable(GET_ENTITY_COORDS(ent, FALSE)) ENDFUNC FUNC BOOL IsPointInUpstairsBarCullable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1583.534668,-3012.318115,-76.990967>>, <<-1591.419067,-3012.316406,-74.005043>> , 14.750) ENDFUNC FUNC BOOL IsEntityInUpstairsBarCullable(ENTITY_INDEX ent) RETURN IsPointInUpstairsBarCullable(GET_ENTITY_COORDS(ent, FALSE)) ENDFUNC FUNC BOOL IsPointInMainSpaceViewable(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1586.018188,-3012.399902,-79.923111>>, <<-1623.579468,-3012.424805,-72.540604>>, 20.750000) ENDFUNC FUNC BOOL IsEntityInMainSpaceViewable(ENTITY_INDEX ent) RETURN IsPointInMainSpaceViewable(GET_ENTITY_COORDS(ent, FALSE)) ENDFUNC FUNC BOOL IsPointInToiletEntranceArea(VECTOR pos) RETURN IS_POINT_IN_ANGLED_AREA(pos, <<-1610.974487,-3019.391846,-79.940994>>, <<-1610.934814,-3005.203125,-76.569328>>, 7.850000) ENDFUNC FUNC BOOL IsPointInToiletEntrance(VECTOR pos) IF IS_POINT_IN_ANGLED_AREA(pos, <<-1600.156006,-3006.084473,-79.941856>>, <<-1607.026245,-3006.066895,-77.349518>>, 6.00000) // under walkway toilet entrance // if peds in here delete backbar peds OR IS_POINT_IN_ANGLED_AREA(pos, <<-1613.315430,-2997.624756,-79.108986>>, <<-1622.321167,-2997.599121,-75.711479>>, 4.0) // Toilet alternate entrance // if peds in here, delete backbar peds OR IS_POINT_IN_ANGLED_AREA(pos, <<-1611.146729,-3005.565430,-80.106979>>, <<-1611.037964,-2995.334717,-76.438507>>, 5.250000) // Toilet alternate entrance 2// if peds in here, delete backbar peds OR IsPointInToiletEntranceArea(pos) // Toilet area, toilet enrance area RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL IsEntityInToiletEntrance(ENTITY_INDEX ent) RETURN IsPointInToiletEntrance(GET_ENTITY_COORDS(ent, FALSE)) ENDFUNC FUNC INT GET_NIGHTCLUB_ACTUAL_PED_COUNT(NIGHT_CLUB_STRUCT &nightClubStruct, BOOL bIncludeHallwayAndToilet = TRUE) INT i = 0 INT iCount = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) IF bIncludeHallwayAndToilet OR (NOT IsEntityInFirstHallwayCullable(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IsEntityInSecondHallwayCullable(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IsPointInToiletEntranceArea(GET_ENTITY_COORDS(nightClubStruct.activityPeds[i].piScenePeds, FALSE))) // Toilet area, toilet enrance area iCount++ ENDIF ENDIF ENDREPEAT RETURN iCount ENDFUNC FUNC INT GET_NIGHTCLUB_CUSTOMER_PED_COUNT() UPDATE_NIGHTCLUB_LAYOUT() INT iCount = 0 INT i = 0 // VECTOR vPos REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IS_NC_PED_TYPE_CUSTOMER(GET_NIGHTCLUB_PED_TYPE(i)) // vPos = ActualPos(i) // IF IsPointInToiletEntranceArea(vPos) // OR IsPointInFirstHallwayCullable(vPos) // OR IsPointInSecondHallwayCullable(vPos) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_NIGHTCLUB_CUSTOMER_PED_COUNT: Ped ", i, " = ", GET_NC_PED_TYPE_STRING(GET_NIGHTCLUB_PED_TYPE(i)), ", position = ", vPos) iCount++ // ENDIF ENDIF ENDREPEAT RETURN iCount ENDFUNC #IF IS_DEBUG_BUILD PROC SHOW_PED_IDS(NIGHT_CLUB_STRUCT &nightClubStruct, INT iNightClubPedHighlight) INT iRed, iGreen, iBlue, iAlpha iAlpha = 100 //FLOAT fYvar = 0.017 FLOAT fRowZ = 0.06 TEXT_LABEL_63 str INT i, iRow, j //FLOAT fScreenX //FLOAT fScreenY VECTOR vCamCoords = GET_FINAL_RENDERED_CAM_COORD() IF NOT (g_SpawnData.bDebugLinesActive) SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) g_SpawnData.bDebugLinesActive = TRUE ENDIF BOOL bDoRender BOOL bDoHighlight HUD_COLOURS HudColour VECTOR vDrawPos INT iRemain VECTOR vPedPos VECTOR vActualPedPos FLOAT fPedHeading REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) bDoRender = FALSE bDoHighlight = FALSE iRow = 0 vPedPos = ActualPos(nightClubStruct.activityPeds[i].iNightClubPedID) vActualPedPos = GET_ENTITY_COORDS(nightClubStruct.activityPeds[i].piScenePeds, FALSE) fPedHeading = ActualHeading(nightClubStruct.activityPeds[i].iNightClubPedID) IF (nightClubStruct.activityPeds[i].iNightClubPedID > -1) AND (VDIST(vCamCoords, vPedPos) < 5.0) bDoRender = TRUE ENDIF IF NOT (bDoRender) IF (VDIST(vCamCoords, vActualPedPos) < 5.0) bDoRender = TRUE ENDIF ENDIF IF (iNightClubPedHighlight = -2) bDoRender = TRUE ENDIF IF (NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) AND IS_ENTITY_ON_SCREEN(nightClubStruct.activityPeds[i].piScenePeds) AND GET_ROOM_KEY_FROM_ENTITY(nightClubStruct.activityPeds[i].piScenePeds) = GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID())) OR (bDoRender) IF (nightClubStruct.activityPeds[i].iNightClubPedID > -1) IF (nightClubStruct.activityPeds[i].iNightClubPedID = iNightClubPedHighlight) bDoHighlight = TRUE bDoRender = TRUE ENDIF ENDIF IF (bDoRender) str = "activityPeds[" str += GET_STRING_FROM_INT(i) str += "]: NightClubPedID " str += GET_STRING_FROM_INT(nightClubStruct.activityPeds[i].iNightClubPedID) IF (bDoHighlight) HudColour = HUD_COLOUR_PINK ELSE IF (nightClubStruct.bDoProcessEveryFrame[i]) HudColour = HUD_COLOUR_YELLOW ELSE HudColour = HUD_COLOUR_PURE_WHITE ENDIF ENDIF GET_HUD_COLOUR(HudColour, iRed, iGreen, iBlue, iAlpha) vDrawPos = vActualPedPos IF (nightClubStruct.activityPeds[i].iNightClubPedID > -1) DRAW_DEBUG_SPAWN_POINT(vPedPos,fPedHeading, HudColour, 0, 0.5) DRAW_DEBUG_LINE(vDrawPos, GET_ENTITY_COORDS(nightClubStruct.activityPeds[i].piScenePeds, FALSE), 0, 0, 255, 255) DRAW_DEBUG_TEXT(str, vDrawPos, iRed, iGreen, iBlue, iAlpha) ENDIF IF (VMAG(vDrawPos) <= 0.0) vDrawPos = GET_ENTITY_COORDS(nightClubStruct.activityPeds[i].piScenePeds, FALSE) DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) ENDIF //IF VDIST2(vActualPedPos, vPedPos) > 10 str = ""iRow++ str += "PED POS: " str += FLOAT_TO_STRING(vActualPedPos.x, 1) str += ", " str += FLOAT_TO_STRING(vActualPedPos.y, 1) str += ", " str += FLOAT_TO_STRING(vActualPedPos.z, 1) str += ", " DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) //ENDIF str = "" IF nightClubStruct.activityPeds[i].eActiveActivity != AC_SLOT_NULL iRow++ str += "Act: " str += GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[i].eActiveActivity) DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) iRow++ str = "iCurrentSequence: " str += nightClubStruct.activityPeds[i].iCurrentSequence DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) IF nightClubStruct.activityPeds[i].iActiveSlot != -1 iRow++ str = "ActSlot: " str += GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[i].iActiveSlot), nightClubStruct.activityPeds[i].bAddRandomnessToActivitySlot) DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) ENDIF ENDIF // if not started then display as red IF NOT nightClubStruct.activityPeds[i].bHasSyncSceneStarted GET_HUD_COLOUR(HUD_COLOUR_RED, iRed, iGreen, iBlue, iAlpha) ENDIF str = "" iRow++ SET_TEXT_SCALE(0.25, 0.25) GET_HUD_COLOUR(HudColour, iRed, iGreen, iBlue, iAlpha) SET_TEXT_COLOUR(iRed, iGreen, iBlue, iAlpha) str = "AnimClip: " str += nightClubStruct.activityPeds[i].sDebugAnimClipName DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // IF NOT IS_STRING_NULL_OR_EMPTY(nightClubStruct.activityPeds[i].sDebugAnimFacialClipName) // str = "" // iRow++ // SET_TEXT_SCALE(0.25, 0.25) // GET_HUD_COLOUR(HudColour, iRed, iGreen, iBlue, iAlpha) // SET_TEXT_COLOUR(iRed, iGreen, iBlue, iAlpha) // str = "FacialAnimClip: " // str += nightClubStruct.activityPeds[i].sDebugAnimFacialClipName // DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // // // anim info // iRow++ // str = "facial dur:" // str += nightClubStruct.activityPeds[i].iFacialAnimDuration // str += " remain:" // iRemain = FacialAnimTimeRemaining(nightClubStruct.activityPeds[i]) // str += iRemain // DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // // // ENDIF // str = "" // iRow++ // SET_TEXT_SCALE(0.25, 0.25) // GET_HUD_COLOUR(HudColour, iRed, iGreen, iBlue, iAlpha) // SET_TEXT_COLOUR(iRed, iGreen, iBlue, iAlpha) // str = "AnimDict: " // str += nightClubStruct.activityPeds[i].sDebugAnimDictName // DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) str = "" iRow++ SET_TEXT_SCALE(0.25, 0.25) GET_HUD_COLOUR(HudColour, iRed, iGreen, iBlue, iAlpha) SET_TEXT_COLOUR(iRed, iGreen, iBlue, iAlpha) str += "fPhaseRate: " str += FLOAT_TO_STRING(nightClubStruct.activityPeds[i].fPhaseRate) str += " iAnimDuration: " str += nightClubStruct.activityPeds[i].iAnimDuration DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // anim info iRow++ str = "dur:" str += nightClubStruct.activityPeds[i].iAnimDuration //str = "adj dur:" //str += AnimAdjustedDuration(nightClubStruct.activityPeds[i]) str += " remain:" iRemain = AnimTimeRemaining(nightClubStruct.activityPeds[i]) str += iRemain str += " frames:" iRemain = ExpectedFramesUntilEndOfAnim(nightClubStruct.activityPeds[i]) str += iRemain DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // headtrack iRow++ str = "headtrack: " IF nightClubStruct.activityPeds[i].bUsePassiveHeadTrack str += "passive" ELIF nightClubStruct.activityPeds[i].bHeadTrackPlayer str += "player" ELIF nightClubStruct.activityPeds[i].iPedToHeadTrack != -1 str += "ped" ELIF NOT IS_VECTOR_ZERO(nightClubStruct.activityPeds[i].vCoordToHeadTrack) str += "position" ELSE str += "none" ENDIF DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // nc ped type iRow++ str = "nc ped type: " str += GET_NC_PED_TYPE_STRING(INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[i].iNCPedType)) DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) // nc offset IF (nightClubStruct.activityPeds[i].iOffsetNCPedId > -1) iRow++ str = "offset nc ped: " str += nightClubStruct.activityPeds[i].iOffsetNCPedId DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_LINE(vDrawPos, GetNCPedPos(nightClubStruct.activityPeds[i].iOffsetNCPedId), 255, 255, 0, 255) ENDIF // nc ped ambient speech IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[i].iNCPedType)) j = 0 REPEAT NCP_SPEECH_MAX j NC_PED_SPEECH_ENUM eNC_PedSpeech = INT_TO_ENUM(NC_PED_SPEECH_ENUM, j) IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[i].iNCPedType), eNC_PedSpeech) iRow++ str = "speech:" str += GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_LINE(vDrawPos, GetNCPedPos(nightClubStruct.activityPeds[i].iOffsetNCPedId), 255, 255, 0, 255) ENDIF ENDREPEAT ENDIF j = 0 REPEAT MAX_NUMBER_NC_PED_OFFSET_CHILDREN j IF nightClubStruct.activityPeds[i].iOffsetNCPedChildrenId[j] > -1 iRow++ str = "offset nc ped child: " str += nightClubStruct.activityPeds[i].iOffsetNCPedChildrenId[j] DRAW_DEBUG_TEXT(str, <>, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_LINE(vDrawPos + <<0,0,0.4>>, ActualPos(nightClubStruct.activityPeds[i].iOffsetNCPedChildrenId[j]) + <<0,0,0.4>>, 0, 255, 255, 255) ENDIF ENDREPEAT ENDIF ENDIF ENDIF ENDREPEAT i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF nightClubStruct.iNightClubPedIDsReverse[i] = -1 AND GET_NIGHTCLUB_PED_TYPE(i) != NC_NULL_PED vPedPos = ActualPos(i) IF NOT IS_VECTOR_ZERO(vPedPos) AND VDIST(vCamCoords, vPedPos) < 5.0 fPedHeading = ActualHeading(i) str = "NightClubPedID " str += GET_STRING_FROM_INT(i) GET_HUD_COLOUR(HUD_COLOUR_RED, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_SPAWN_POINT(vPedPos, fPedHeading, HUD_COLOUR_RED, 0, 0.5) DRAW_DEBUG_TEXT(str, vPedPos, iRed, iGreen, iBlue, iAlpha) ENDIF ENDIF ENDREPEAT ENDPROC //PROC SHOW_PED_IDS(NIGHT_CLUB_STRUCT &nightClubStruct) // // INT iRed, iGreen, iBlue, iAlpha // TEXT_LABEL_63 str // INT iSeat // // FLOAT fScreenX // FLOAT fScreenY // // REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS iSeat // str += "SeatID: " // str += GET_STRING_FROM_INT(iSeat) // //// CDEBUG1LN(DEBUG_SAFEHOUSE, "[PROPERTY_SEAT] mpOffsetOfficeSeats[iSeat].vLoc = ", mpOffsetOfficeSeats[iSeat].vLoc, ", fScreenX: ", fScreenX, ", fScreenY: ", fScreenY) // // GET_SCREEN_COORD_FROM_WORLD_COORD(GET_ENTITY_COORDS(nightClubStruct.activityPeds[iSeat].piScenePeds)+<<0,0, 1.5>>, fScreenX, fScreenY) // //// SET_TEXT_SCALE(0.0000, CUSTOM_MENU_TEXT_SCALE_Y) //// SET_TEXT_COLOUR(255, 165, 0, 255) //// SET_TEXT_CENTRE(TRUE) //// BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING") //// END_TEXT_COMMAND_DISPLAY_TEXT(fScreenX, fScreenY) // // GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, 0), iRed, iGreen, iBlue, iAlpha) // DRAW_DEBUG_TEXT_2D(str, <>, iRed, iGreen, iBlue, iAlpha) // iGreen = 0 // iRed = 0 // str = "" // ENDREPEAT //ENDPROC PROC SHOW_PED_SPEECH(NIGHT_CLUB_STRUCT &nightClubStruct) TEXT_LABEL_63 str = "" INT iOffset_x = 0, iOffset_y = 0 INT i, iRed, iGreen, iBlue, iAlpha HUD_COLOURS eHudColour = HUD_COLOUR_YELLOW IF NOT (g_SpawnData.bDebugLinesActive) SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) g_SpawnData.bDebugLinesActive = TRUE ENDIF // VECTOR vPlayerCoord = GET_ENTITY_COORDS(PLAYER_PED_ID()) REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i iOffset_x = 0 iOffset_y = 0 NC_PED_TYPES ePeds = GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[i].iNightClubPedID) IF NOT SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds) // ELIF NOT DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) OR IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) // ELSE VECTOR vScenePedCoord = GET_ENTITY_COORDS(nightClubStruct.activityPeds[i].piScenePeds, FALSE) INT iSpeechTimerDiffMS = -1 IF HAS_NET_TIMER_STARTED(nightClubStruct.activityPeds[i].stIdleSpeechTimer) iSpeechTimerDiffMS = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(nightClubStruct.activityPeds[i].stIdleSpeechTimer) ENDIF GET_HUD_COLOUR(HUD_COLOUR_BLUE, iRed, iGreen, iBlue, iAlpha) // DRAW_DEBUG_LINE(vPlayerCoord, vScenePedCoord, // iRed, iGreen, iBlue, iAlpha) str = " " str += GET_NC_PED_TYPE_STRING(ePeds) str += " timer: " IF (iSpeechTimerDiffMS = -1) str += "NULL" ELSE str += GET_STRING_FROM_FLOAT(TO_FLOAT(iSpeechTimerDiffMS)/1000.0) ENDIF IF (GET_OWNER_OF_THIS_NIGHTCLUB() != INVALID_PLAYER_INDEX()) str += " \"" str += GET_PLAYER_NAME(GET_OWNER_OF_THIS_NIGHTCLUB()) str += "\" " ELSE str += " \"INVALID_OWNER\"" ENDIF GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_y++ IF NOT (nightClubStruct.activityPeds[i].eLastSpeech[0] = NCP_SPEECH_INVALID) OR NOT (nightClubStruct.activityPeds[i].eLastSpeech[1] = NCP_SPEECH_INVALID) str = " " IF NOT (nightClubStruct.activityPeds[i].eLastSpeech[0] = NCP_SPEECH_INVALID) str += "eLastSpeech[0] " str += GET_NC_PED_SPEECH_STRING(nightClubStruct.activityPeds[i].eLastSpeech[0]) ENDIF IF NOT (nightClubStruct.activityPeds[i].eLastSpeech[1] = NCP_SPEECH_INVALID) IF NOT (nightClubStruct.activityPeds[i].eLastSpeech[0] = NCP_SPEECH_INVALID) str += ", [1] " ELSE str += "eLastSpeech[1] " ENDIF str += GET_NC_PED_SPEECH_STRING(nightClubStruct.activityPeds[i].eLastSpeech[1]) ENDIF eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_y++ ENDIF // TEXT_LABEL_63 tl63Reason = "" IF IS_NIGHTCLUB_PEDS_SPEECH_BLOCKED_FOR_ACTIVITY(nightClubStruct.activityPeds[i], tl63Reason) str = tl63Reason eHudColour = HUD_COLOUR_RED GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_y++ ELIF NOT IS_STRING_NULL_OR_EMPTY(tl63Reason) str = tl63Reason eHudColour = HUD_COLOUR_RED GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_y++ ENDIF NC_PED_SPEECH_ENUM eNC_PedSpeech REPEAT NCP_SPEECH_MAX eNC_PedSpeech IF SHOULD_PLAY_NIGHTCLUB_PEDS_SPEECH(ePeds, eNC_PedSpeech) str = GET_NC_PED_SPEECH_STRING(eNC_PedSpeech) eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iOffset_x = 0 DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_x += 15 str = "t:" IF GET_NC_PED_SPEECH_TIMEDELAY(ePeds, eNC_PedSpeech) = HIGHEST_INT str+= "ERROR" ELIF GET_NC_PED_SPEECH_TIMEDELAY(ePeds, eNC_PedSpeech) = 0 str+= "ZERO" ELSE str+= ROUND(TO_FLOAT(GET_NC_PED_SPEECH_TIMEDELAY(ePeds, eNC_PedSpeech))/1000.0) str+= "s" ENDIF eHudColour = HUD_COLOUR_REDLIGHT GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_x += 5 IF IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[i], eNC_PedSpeech) str = "SET" eHudColour = HUD_COLOUR_WHITE GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = "unset" eHudColour = HUD_COLOUR_GREYDARK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF iOffset_x += 5 IF IS_BIT_SET(g_iBSNightclubSPeech, ENUM_TO_INT(eNC_PedSpeech)) str = "BS_SET" eHudColour = HUD_COLOUR_WHITE GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = "BS_unset" eHudColour = HUD_COLOUR_GREYDARK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF IF (eNC_PedSpeech = NCP_SPEECH_GREET_FIRST) iOffset_y++ IF IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[i], NCP_SPEECHCHECK_PLAYED_GREET_FIRST) str = " GREET_FIRST played" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = " GREET_FIRST not played" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF ELIF (eNC_PedSpeech = NCP_SPEECH_GREET) iOffset_y++ IF IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[i], NCP_SPEECHCHECK_PLAYED_GREET) str = " GREET played" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = " GREET not played" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF ELIF (eNC_PedSpeech = NCP_SPEECH_LOW_POP) IF g_iNightClubSetupState != NSS_FULLY_SETUP iOffset_y++ str = " Setup state " str+= g_iNightClubSetupState eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE iOffset_y++ str = " NC PedCount " str+= GET_NUMBER_OF_NIGHTCLUB_PEDS_BASED_OF_POPULARITY(FLOOR(GET_PLAYER_NIGHTCLUB_POPULARITY(GET_OWNER_OF_THIS_NIGHTCLUB()))) eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF ELIF (eNC_PedSpeech = NCP_SPEECH_SHOUT_TONY) iOffset_y++ IF IS_TONY_PRESENT_IN_NIGHTCLUB() str = " TONY present" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = " TONY not present" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF ELIF (eNC_PedSpeech = NCP_SPEECH_SHOUT_OWNER) iOffset_y++ IF IS_OWNER_PRESENT_IN_NIGHTCLUB() str = " OWNER present" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = " OWNER not present" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF ELIF (eNC_PedSpeech = NCP_SPEECH_SHOUT_CELEB) IF NOT g_bTurnOnNCCustomerPeds iOffset_y++ str = " NC CustomerPeds OFF" eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE BOOL bAreAnyCelebsInClub = FALSE NIGHTCLUB_CELEBRITY_ENUM eCeleb FOR eCeleb = eNIGHTCLUB_CELEB_JIMMY_BOSTON TO eNIGHTCLUB_CELEB_MIRANDA_COWAN STRING sCelebName = GET_NIGHTCLUB_CELEBRITY_NAME_FOR_DEBUG(eCeleb) iOffset_y++ str = " " str += GET_STRING_FROM_STRING(sCelebName, GET_LENGTH_OF_LITERAL_STRING("eNIGHTCLUB_CELEB_"), GET_LENGTH_OF_LITERAL_STRING(sCelebName)) NC_PED_SPEECH_ENUM eIndex = NCP_SPEECH_INVALID SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN eIndex = (NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK ENDSWITCH IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eCeleb) INT iHistory, iOrder = -1 REPEAT ciGB_NIGHTCLUB_CELEBRITY_LIST_SIZE iHistory IF INT_TO_ENUM(NIGHTCLUB_CELEBRITY_ENUM, GlobalplayerBD_FM_3[NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB())].sMagnateGangBossData.iNightclubCelebrityList[iHistory]) = eCeleb iOrder = iHistory ENDIF ENDREPEAT IF (IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[i], eIndex)) str += " present" IF (iOrder != -1) str += "[" str += iOrder str += "]" ENDIF str += ", PLAYED" eHudColour = HUD_COLOUR_YELLOW ELSE str += " present" IF (iOrder != -1) str += "[" str += iOrder str += "]" ENDIF eHudColour = HUD_COLOUR_YELLOW ENDIF GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) bAreAnyCelebsInClub = TRUE ELSE IF (IS_BIT_SET_DJ_SPEECH(nightClubStruct.activityPeds[i], eIndex)) str += " NOT present, PLAYED" eHudColour = HUD_COLOUR_YELLOW ELSE str += " NOT present" eHudColour = HUD_COLOUR_YELLOW ENDIF GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF IF IS_BIT_SET(g_iBSNightclubSpeech, ENUM_TO_INT(eIndex)) str = "BS_SET" eHudColour = HUD_COLOUR_WHITE GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, (iOffset_x+5)*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ELSE str = "BS_unset" eHudColour = HUD_COLOUR_GREYDARK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, (iOffset_x+5)*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF ENDFOR IF bAreAnyCelebsInClub IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1588.8320, -3013.4741, -78.7061>>, <<3.0000, 6.0000, 1.5000>>) // from enterance OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-1605.5630, -3006.1045, -76.5750>>, <<2.0000, 2.0000, 3.5000>>) // from office/garage eHudColour = HUD_COLOUR_BLUE ELSE eHudColour = HUD_COLOUR_YELLOW ENDIF GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) ELSE eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) ENDIF DRAW_DEBUG_BOX(<<-1588.8320, -3013.4741, -78.7061>>-<<3.0000, 6.0000, 1.5000>>, <<-1588.8320, -3013.4741, -78.7061>>+<<3.0000, 6.0000, 1.5000>>, 255-iRed, 255-iGreen, 255-iBlue, ROUND(TO_FLOAT(iAlpha)*0.5)) DRAW_DEBUG_BOX(<<-1605.5630, -3006.1045, -76.5750>>-<<2.0000, 2.0000, 3.5000>>, <<-1605.5630, -3006.1045, -76.5750>>+<<2.0000, 2.0000, 3.5000>>, 255-iRed, 255-iGreen, 255-iBlue, ROUND(TO_FLOAT(iAlpha)*0.5)) ENDIF ELIF eNC_PedSpeech = NCP_SPEECH_SHOUT_AREA iOffset_y++ str = GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[i].eActiveActivity) eHudColour = HUD_COLOUR_YELLOW GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, 0*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) ENDIF iOffset_y++ ENDIF ENDREPEAT // CONST_INT iCONST_SPEECH_REINIT_GREET 30000 // CONST_INT iCONST_SPEECH_REINIT_POPULARITY 20000 // CONST_INT iCONST_SPEECH_REINIT_SHOUT 15000 //greet/bye/howsitgoing BOOL bIsPlayerInGreetArea = FALSE IF (ePeds = NC_DJ) OR (ePeds = NC_DJ_2) VECTOR vMin = <<-1606.4541, -3015.3416, -76.1021>> VECTOR vMax = <<-1601.9031, -3009.8877, -78.7964>> bIsPlayerInGreetArea = IS_ENTITY_IN_AREA(PLAYER_PED_ID(), vMin, vMax) ELIF (ePeds = NC_BUSBOY_TOILET) VECTOR vToiletAttendantTriggerCoord = <<-1611.5958, -3009.9456, -79.0060>> bIsPlayerInGreetArea = IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vToiletAttendantTriggerCoord, <<0.8, 0.75, 2.0>>) ELSE CONST_FLOAT fCONST_GREET_AREA 2.0 VECTOR vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE) VECTOR vScenePedPos = GET_ENTITY_COORDS(nightClubStruct.activityPeds[i].piScenePeds, FALSE) bIsPlayerInGreetArea = (GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, vScenePedPos) < fCONST_GREET_AREA) eHudColour = HUD_COLOUR_BLACK IF eHudColour = HUD_COLOUR_BLACK IF ABSF(vPlayerPos.z - vScenePedPos.z) > 1.0 bIsPlayerInGreetArea = FALSE eHudColour = HUD_COLOUR_GREEN ENDIF ENDIF IF eHudColour = HUD_COLOUR_BLACK INT iPlayerRoomKey = GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) INT iScenePedRoomKey = GET_ROOM_KEY_FROM_ENTITY(nightClubStruct.activityPeds[i].piScenePeds) IF (iPlayerRoomKey != iScenePedRoomKey) bIsPlayerInGreetArea = FALSE eHudColour = HUD_COLOUR_YELLOW ENDIF ENDIF IF bIsPlayerInGreetArea eHudColour = HUD_COLOUR_PURE_WHITE ENDIF GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) DRAW_DEBUG_SPHERE(vScenePedCoord, fCONST_GREET_AREA, 255-iRed, 255-iGreen, 255-iBlue, iAlpha) ENDIF ENDIF ENDREPEAT VECTOR vScenePedCoord = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)+<<0,0,0.5>> // iOffset_y = -2 iOffset_x = -10 str = "iLazlowCelebStage: " str += nightClubStruct.iLazlowCelebStage IF HAS_NET_TIMER_STARTED(nightClubStruct.stLazlowCelebStage) str += GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(nightClubStruct.stLazlowCelebStage) ENDIF eHudColour = HUD_COLOUR_BLACK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) // iOffset_y = -1 iOffset_x = -10 str = "stTime: " IF NOT HAS_NET_TIMER_STARTED(g_stNightclubSpeechTime) str += "NULL" eHudColour = HUD_COLOUR_BLACK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) ELSE str += GET_STRING_FROM_FLOAT(TO_FLOAT(GET_ABS_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(g_stNightclubSpeechTime))/1000.0) eHudColour = HUD_COLOUR_BLACK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) ENDIF str += ", stGreetTime: " IF NOT HAS_NET_TIMER_STARTED(g_stNightclubSpeechGreetTime) str += "NULL" eHudColour = HUD_COLOUR_BLACK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) iAlpha = ROUND(TO_FLOAT(iAlpha)*0.5) ELSE str += GET_STRING_FROM_FLOAT(TO_FLOAT(GET_ABS_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(g_stNightclubSpeechGreetTime))/1000.0) eHudColour = HUD_COLOUR_BLACK GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) ENDIF DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_y = 0 REPEAT COUNT_OF(nightClubStruct.sDebugSpeech.tl31Context) iOffset_y IF NOT IS_STRING_NULL_OR_EMPTY(nightClubStruct.sDebugSpeech.tl31Context[iOffset_y]) iOffset_x = -20 str = GET_NC_PED_TYPE_STRING(nightClubStruct.sDebugSpeech.ePeds[iOffset_y]) eHudColour = HUD_COLOUR_PURE_WHITE GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_x += 15 str = "\"" str += nightClubStruct.sDebugSpeech.tl31Context[iOffset_y] str += "\"" eHudColour = HUD_COLOUR_PURE_WHITE GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_x += 20 str = "" str += GET_STRING_FROM_FLOAT(TO_FLOAT(ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), nightClubStruct.sDebugSpeech.Timer[iOffset_y])))/1000.0) eHudColour = HUD_COLOUR_PURE_WHITE GET_HUD_COLOUR(eHudColour, iRed, iGreen, iBlue, iAlpha) DRAW_DEBUG_TEXT_WITH_OFFSET(str, vScenePedCoord, iOffset_x*10, iOffset_y*10, iRed, iGreen, iBlue, iAlpha) iOffset_x += 20 ENDIF ENDREPEAT ENDPROC CONST_FLOAT cfELEMENT_HEIGHT 0.04 CONST_FLOAT cfELEMENT_WIDTH 0.82 FUNC STRING GET_STRING_AUDIO_TAG_FROM_AUDIO_TRACK_HASH(INT iHashedTrackName) STRING sReturn SWITCH iHashedTrackName CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_01") // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: found track DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_01") sReturn = "DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_01" BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_02") // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: found track DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_02") sReturn = "DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_02" BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_01") // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: found track DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_01") sReturn = "DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_01" BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_02") // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: found track DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_02") sReturn = "DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_02" BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_01") // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: found track DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_01") sReturn = "DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_01" BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_02") // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: found track DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_02") sReturn = "DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_02" BREAK DEFAULT // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NIGHTCLUB_AUDIO_TAGS: did not find track ") sReturn = GET_STRING_FROM_INT(iHashedTrackName) // sReturn = GET_STRING_FROM_HASH_KEY(iHashedTrackName) BREAK ENDSWITCH RETURN sReturn ENDFUNC PROC MAINTAIN_VISUAL_DEBUG_BLOCK_DISPLAY(NIGHT_CLUB_STRUCT &nightClubStruct) // FLOAT fWorkableHeight = MAX_VISIBLE_BLOCKS_AREA - MIN_VISIBLE_BLOCKS_AREA //FLOAT fTimeTillNextBeat, fBpm //INT iBeatNum TEXT_LABEL_63 tlBeatTemp // FLOAT fNumberOfSecBetweenBeats // TEXT_LABEL_63 tlCullCount NC_ACTIVITY_MAIN activityMain DISABLE_CELLPHONE_THIS_FRAME_ONLY(TRUE) INT i REPEAT g_VisualDisplayStruct.iBlockCount i IF NOT IS_STRING_NULL_OR_EMPTY(g_VisualDisplayStruct.VisualBlockArray[i].tlBlockHeading) g_VisualDisplayStruct.VisualBlockArray[i].fCentreX = 0.8 // g_VisualDisplayStruct.VisualBlockArray[i].fCentreY = (fWorkableHeight/g_VisualDisplayStruct.iBlockCount*2)*i + (0.1) g_VisualDisplayStruct.VisualBlockArray[i].fCentreY = 0.5 //0.2*i + (0.07) // DRAW_SPRITE("helicopterhud", "hud_outline", 0.0, 0.0, (fBoxDrawSize / 4.0), fBoxDrawSize, 0, r, g b, a) g_VisualDisplayStruct.VisualBlockArray[i].fWidth = 0.4 // g_VisualDisplayStruct.VisualBlockArray[i].fHeight = ((fWorkableHeight - 0.05) /g_VisualDisplayStruct.iBlockCount) // g_VisualDisplayStruct.VisualBlockArray[i].fHeight = ((fWorkableHeight - 0.05) /(g_VisualDisplayStruct.iBlockCount)) g_VisualDisplayStruct.VisualBlockArray[i].fHeight = 0.09 ENDIF ENDREPEAT i = 0 DRAW_RECT(g_VisualDisplayStruct.VisualBlockArray[0].fCentreX, 0.75, g_VisualDisplayStruct.VisualBlockArray[0].fWidth, 0.5, 0, 0, 0, 128) FLOAT fTextScale = 0.25 FLOAT fYLineSpacer = 0.015 FLOAT fYPos REPEAT MAX_NUMBER_OF_VISIBLE_BLOCKS i IF NOT IS_STRING_NULL_OR_EMPTY(g_VisualDisplayStruct.VisualBlockArray[i].tlBlockHeading) AND (i = 0) fYPos = g_VisualDisplayStruct.VisualBlockArray[i].fCentreY //fYPos += fYLineSpacer tlBeatTemp = "g_bWidgetTurnOnDJEntourage = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bWidgetTurnOnDJEntourage) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bWidgetTurnOnExtraBartenders = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bWidgetTurnOnExtraBartenders) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bWidgetTurnOnExtraBouncers = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bWidgetTurnOnExtraBouncers) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bWidgetTurnOnPodiumDancers = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bWidgetTurnOnPodiumDancers) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bTurnOnNCDJEntourage = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bTurnOnNCDJEntourage) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bTurnOnNCExtraBartenders = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bTurnOnNCExtraBartenders) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bTurnOnNCExtraBouncers = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bTurnOnNCExtraBouncers) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_bTurnOnNCPodiumDancers = " tlBeatTemp += GET_STRING_FROM_BOOL(g_bTurnOnNCPodiumDancers) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_iNightClubPedsHallwayLayout = " tlBeatTemp += GET_STRING_FROM_INT(g_iNightClubPedsHallwayLayout) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_iNightClubPedsToiletLayout = " tlBeatTemp += GET_STRING_FROM_INT(g_iNightClubPedsToiletLayout) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "RADIO STATION[" tlBeatTemp += GET_STRING_FROM_INT(nightClubStruct.iCurrentStationID) tlBeatTemp += "] = " tlBeatTemp += GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "GET_TRACK_PLAY_TIME = " tlBeatTemp += GET_STRING_FROM_INT(GET_CURRENT_TRACK_PLAY_TIME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID))) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "TRACK_NAME = " tlBeatTemp += GET_STRING_AUDIO_TAG_FROM_AUDIO_TRACK_HASH(GET_CURRENT_TRACK_SOUND_NAME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID))) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "MusicTag = " tlBeatTemp += getAudioTagString(g_eNightClubAudioIntensityLevel) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "Next MusicTag = " tlBeatTemp += getAudioTagString(g_eNightClubAudioIntensityLevelNext) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "Time until change = " tlBeatTemp += GET_STRING_FROM_INT(g_iNightClubAudioNextTagTime - GET_CURRENT_TRACK_PLAY_TIME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID))) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_iNightClubPedsHallwayLayout = " tlBeatTemp += GET_STRING_FROM_INT(g_iNightClubPedsHallwayLayout) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_iNightClubPedsMainAreaLayout = " tlBeatTemp += GET_STRING_FROM_INT(g_iNightClubPedsMainAreaLayout) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "g_fPercentagePopularity = " tlBeatTemp += FLOAT_TO_STRING(g_fPercentagePopularity, 1) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "GET_NIGHTCLUB_ACTUAL_PED_COUNT = " tlBeatTemp += GET_NIGHTCLUB_ACTUAL_PED_COUNT(nightClubStruct) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed fYPos += fYLineSpacer tlBeatTemp = "With no toilet/hallways = " tlBeatTemp += GET_NIGHTCLUB_ACTUAL_PED_COUNT(nightClubStruct, FALSE) SET_TEXT_SCALE(fTextScale, fTextScale) DISPLAY_TEXT_WITH_LITERAL_STRING(g_VisualDisplayStruct.VisualBlockArray[i].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[i].fWidth/2), fYPos, "STRING", tlBeatTemp)//5th arg must be "STRING" for the string literal in next argument to be printed ENDIF ENDREPEAT FLOAT fLeftMostCoord INT j REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[j].iNCPedType) = NC_NULL_PED #IF IS_DEBUG_BUILD g_VisualDisplayStruct.VisualPedBlockArray[j].iR = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iG = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iB = 255 #ENDIF ELSE IF NOT DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) #IF IS_DEBUG_BUILD g_VisualDisplayStruct.VisualPedBlockArray[j].iR = 255 g_VisualDisplayStruct.VisualPedBlockArray[j].iG = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iB = 0 #ENDIF ELSE g_VisualDisplayStruct.VisualPedBlockArray[j].iR = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iG = 255 g_VisualDisplayStruct.VisualPedBlockArray[j].iB = 0 ENDIF ENDIF IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) IF NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[j].piScenePeds) IF HAS_ANIM_EVENT_FIRED(nightClubStruct.activityPeds[j].piScenePeds, HASH("BEAT_LOOP_MARKER")) g_VisualDisplayStruct.VisualPedBlockArray[j].iR = 255 g_VisualDisplayStruct.VisualPedBlockArray[j].iG = 255 g_VisualDisplayStruct.VisualPedBlockArray[j].iB = 0 // IF NOT nightClubStruct.activityPeds[j].bSTB1 // IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.activityPeds[j].stTimerBeat1) // START_NET_TIMER(nightClubStruct.activityPeds[j].stTimerBeat1) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_VISUAL_DEBUG_BLOCK_DISPLAY: beat net timer started j=[", j, "] ") // ELSE // nightClubStruct.activityPeds[j].fNumberOfSecondsBetweenBeatAnim = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(nightClubStruct.activityPeds[j].stTimerBeat1, TRUE) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_VISUAL_DEBUG_BLOCK_DISPLAY: beat net timer found: j=[", j, "] fNumberOfSecondsBetweenBeatAnim: ", nightClubStruct.activityPeds[j].fNumberOfSecondsBetweenBeatAnim) // nightClubStruct.activityPeds[j].bSTB1 = TRUE // ENDIF // // ENDIF // FLOAT fTimeTillNextBeat, fBpm // INT iBeatNum // GET_NEXT_AUDIBLE_BEAT(fTimeTillNextBeat, fBpm, iBeatNum) ENDIF ENDIF ENDIF g_VisualDisplayStruct.VisualPedBlockArray[j].fWidth = g_VisualDisplayStruct.VisualBlockArray[0].fWidth/MAX_NUMBER_OF_NIGHTCLUB_PEDS // CDEBUG1LN(DEBUG_NET_PED_DANCING, "g_VisualDisplayStruct.VisualPedBlockArray[j].fWidth = ", g_VisualDisplayStruct.VisualPedBlockArray[j].fWidth) g_VisualDisplayStruct.VisualPedBlockArray[j].fHeight = 0.09 fLeftMostCoord = g_VisualDisplayStruct.VisualBlockArray[1].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[0].fWidth/2) // left most coord of block // CDEBUG1LN(DEBUG_NET_PED_DANCING, " fLeftMostCoord = ", fLeftMostCoord ) g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreX = fLeftMostCoord + (g_VisualDisplayStruct.VisualPedBlockArray[j].fWidth/2) + (g_VisualDisplayStruct.VisualPedBlockArray[j].fWidth*j) g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreY = g_VisualDisplayStruct.VisualBlockArray[1].fCentreY // CDEBUG1LN(DEBUG_NET_PED_DANCING, " j: ", j, " fCentreX = ", g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreX, ", g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreY: ", g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreY, ", g_VisualDisplayStruct.VisualPedBlockArray[j].fHeight ", g_VisualDisplayStruct.VisualPedBlockArray[j].fHeight ) //DRAW_RECT(g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreX, g_VisualDisplayStruct.VisualPedBlockArray[j].fCentreY, g_VisualDisplayStruct.VisualPedBlockArray[j].fWidth, g_VisualDisplayStruct.VisualPedBlockArray[j].fHeight, g_VisualDisplayStruct.VisualPedBlockArray[j].iR, g_VisualDisplayStruct.VisualPedBlockArray[j].iG, g_VisualDisplayStruct.VisualPedBlockArray[j].iB, 200) ENDREPEAT j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j ASSIGN_NC_ACTIVITY_PROPS(nightClubStruct.activityPeds[j].eActiveActivity, activityMain) IF IS_MODEL_IN_CDIMAGE(ActivityMain.objectModelName[0]) IF NOT DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].oiSceneObjects[0]) #IF IS_DEBUG_BUILD g_VisualDisplayStruct.VisualPropBlockArray[j].iR = 255 g_VisualDisplayStruct.VisualPropBlockArray[j].iG = 0 g_VisualDisplayStruct.VisualPropBlockArray[j].iB = 0 #ENDIF ELSE #IF IS_DEBUG_BUILD g_VisualDisplayStruct.VisualPropBlockArray[j].iR = 0 g_VisualDisplayStruct.VisualPropBlockArray[j].iG = 255 g_VisualDisplayStruct.VisualPropBlockArray[j].iB = 0 #ENDIF ENDIF ELSE #IF IS_DEBUG_BUILD g_VisualDisplayStruct.VisualPropBlockArray[j].iR = 0 g_VisualDisplayStruct.VisualPropBlockArray[j].iG = 0 g_VisualDisplayStruct.VisualPropBlockArray[j].iB = 255 #ENDIF ENDIF g_VisualDisplayStruct.VisualPropBlockArray[j].fWidth = g_VisualDisplayStruct.VisualBlockArray[0].fWidth/MAX_NUMBER_OF_NIGHTCLUB_PEDS // CDEBUG1LN(DEBUG_NET_PED_DANCING, "g_VisualDisplayStruct.VisualPropBlockArray[j].fWidth = ", g_VisualDisplayStruct.VisualPropBlockArray[j].fWidth) g_VisualDisplayStruct.VisualPropBlockArray[j].fHeight = 0.09 fLeftMostCoord = g_VisualDisplayStruct.VisualBlockArray[1].fCentreX - (g_VisualDisplayStruct.VisualBlockArray[3].fWidth/2) // left most coord of block // CDEBUG1LN(DEBUG_NET_PED_DANCING, " fLeftMostCoord = ", fLeftMostCoord ) g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreX = fLeftMostCoord + (g_VisualDisplayStruct.VisualPropBlockArray[j].fWidth/2) + (g_VisualDisplayStruct.VisualPropBlockArray[j].fWidth*j) g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreY = g_VisualDisplayStruct.VisualBlockArray[3].fCentreY // CDEBUG1LN(DEBUG_NET_PED_DANCING, " j: ", j, " fCentreX = ", g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreX, ", g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreY: ", g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreY, ", g_VisualDisplayStruct.VisualPropBlockArray[j].fHeight ", g_VisualDisplayStruct.VisualPropBlockArray[j].fHeight ) //DRAW_RECT(g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreX, g_VisualDisplayStruct.VisualPropBlockArray[j].fCentreY, g_VisualDisplayStruct.VisualPropBlockArray[j].fWidth, g_VisualDisplayStruct.VisualPropBlockArray[j].fHeight, g_VisualDisplayStruct.VisualPropBlockArray[j].iR, g_VisualDisplayStruct.VisualPropBlockArray[j].iG, g_VisualDisplayStruct.VisualPropBlockArray[j].iB, 200) ENDREPEAT ENDPROC /* CURRENTLY UNUSED PROC MAINTAIN_ANIM_BEAT_LOGIC_USING_ANIM_BEAT_SAMPLES(NIGHT_CLUB_STRUCT &nightClubStruct) FLOAT fTimeTillNextBeat, fBpmAu INT iBeatNum FLOAT fbpsAu, fbpsAnim, fbpsD, fbpsDF, fNewPhaseRate INT j REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) IF NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[j].piScenePeds) IF HAS_ANIM_EVENT_FIRED(nightClubStruct.activityPeds[j].piScenePeds, HASH("BEAT_LOOP_MARKER")) IF NOT nightClubStruct.activityPeds[j].bSTB1 IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.activityPeds[j].stTimerBeat1) START_NET_TIMER(nightClubStruct.activityPeds[j].stTimerBeat1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: beat net timer started j=[", j, "] ") ELSE IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.activityPeds[j].stTimerBeat2) START_NET_TIMER(nightClubStruct.activityPeds[j].stTimerBeat2) nightClubStruct.activityPeds[j].fNumberOfSecondsBetweenBeatAnim = TO_FLOAT((GET_NET_TIMER_DIFFERENCE(nightClubStruct.activityPeds[j].stTimerBeat2, nightClubStruct.activityPeds[j].stTimerBeat1)))/1000 // nightClubStruct.activityPeds[j].fNumberOfSecondsBetweenBeatAnim = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(nightClubStruct.activityPeds[j].stTimerBeat1, TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: beat net timer found: j=[", j, "] fNumberOfSecondsBetweenBeatAnim: ", nightClubStruct.activityPeds[j].fNumberOfSecondsBetweenBeatAnim) nightClubStruct.activityPeds[j].bSTB1 = TRUE ENDIF ENDIF ENDIF ENDIF IF nightClubStruct.activityPeds[j].bSTB1 = TRUE GET_NEXT_AUDIBLE_BEAT(fTimeTillNextBeat, fBpmAu, iBeatNum) fbpsAu = (fBpmAu/60) // FLOAT fNumberOfSecBetweenBeatsAudio = 1/fbpsAu fbpsAnim = 1/nightClubStruct.activityPeds[j].fNumberOfSecondsBetweenBeatAnim CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fbpsAu = ", fbpsAu, ", fbpsAnim = ", fbpsAnim) fbpsD = ABSF(fbpsAnim - fbpsAu) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fbpsD = ", fbpsD) fbpsDF = fbpsD/fbpsAnim CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fbpsDF = ", fbpsDF) IF fbpsAu < fbpsAnim fNewPhaseRate = 1-fbpsDF CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fNewPhaseRate = 1-fbpsDF: ", fNewPhaseRate) ELSE fNewPhaseRate = 1+fbpsDF CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fNewPhaseRate = 1+fbpsDF: ", fNewPhaseRate) ENDIF IF fNewPhaseRate > 0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] SET_ANIM_RATE: fNewPhaseRate: ", fNewPhaseRate) UpdatePhaseRateForPed(nightClubStruct.activityPeds[j], fNewPhaseRate) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] NOT SET_ANIM_RATE: fNewPhaseRate: ", fNewPhaseRate) ENDIF ENDIF ENDIF ENDIF ENDREPEAT IF nightClubStruct.activityPeds[nightClubStruct.iStaggerID].bSTB1 nightClubStruct.activityPeds[nightClubStruct.iStaggerID].bSTB1 = FALSE RESET_NET_TIMER(nightClubStruct.activityPeds[nightClubStruct.iStaggerID].stTimerBeat1) RESET_NET_TIMER(nightClubStruct.activityPeds[nightClubStruct.iStaggerID].stTimerBeat2) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", nightClubStruct.iStaggerID, "].bSTB1 is being reset, resampling the anim clip") ENDIF IF nightClubStruct.iStaggerID < MAX_NUMBER_OF_NIGHTCLUB_PEDS nightClubStruct.iStaggerID++ ELSE nightClubStruct.iStaggerID = 0 ENDIF ENDPROC PROC MAINTAIN_ANIM_BEAT_LOGIC_USING_HARDCODED_BEAT_TIMING(NIGHT_CLUB_STRUCT &nightClubStruct) FLOAT fbpsAu FLOAT fbpsAnim FLOAT fbpsD FLOAT fbpsDF FLOAT fNewPhaseRate INT iBeatNum FLOAT fTimeTillNextBeat, fBpmAu INT j REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) IF NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[j].piScenePeds) GET_NEXT_AUDIBLE_BEAT(fTimeTillNextBeat, fBpmAu, iBeatNum) fbpsAu = (fBpmAu/60) fbpsAnim = 1/0.5 // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fbpsAu = ", fbpsAu, ", fbpsAnim = ", fbpsAnim) fbpsD = ABSF(fbpsAnim - fbpsAu) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fbpsD = ", fbpsD) fbpsDF = fbpsD/fbpsAnim // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fbpsDF = ", fbpsDF) IF fbpsAu < fbpsAnim fNewPhaseRate = 1-fbpsDF // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fNewPhaseRate = 1-fbpsDF: ", fNewPhaseRate) ELSE fNewPhaseRate = 1+fbpsDF // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] fNewPhaseRate = 1+fbpsDF: ", fNewPhaseRate) ENDIF IF fNewPhaseRate > 0 IF GET_SCRIPT_TASK_STATUS(nightClubStruct.activityPeds[j].piScenePeds, SCRIPT_TASK_PLAY_ANIM) = PERFORMING_TASK AND nightClubStruct.activityPeds[j].iActiveSlot = ENUM_TO_INT(GET_FACE_DJ_FOR_NC_PED(nightClubStruct.activityPeds[j].iNightClubPedID)) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] SET_ANIM_RATE: fNewPhaseRate: ", fNewPhaseRate) UpdatePhaseRateForPed(nightClubStruct.activityPeds[j], fNewPhaseRate) ENDIF ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_ANIM_BEAT_LOGIC: j=[", j, "] NOT SET_ANIM_RATE: fNewPhaseRate: ", fNewPhaseRate) ENDIF ENDIF ENDIF ENDREPEAT ENDPROC*/ PROC DEBUG_DISPLAY_NIGHTCLUB_PED_DEBUG(NIGHT_CLUB_STRUCT &nightClubStruct) IF IS_DEBUG_KEY_JUST_RELEASED(KEY_RETURN, KEYBOARD_MODIFIER_CTRL_SHIFT, "script related purposes") IF nightClubStruct.iDrawStateDebug < 4 nightClubStruct.iDrawStateDebug++ ELSE nightClubStruct.iDrawStateDebug = 0 ENDIF ENDIF SWITCH nightClubStruct.iDrawStateDebug CASE 0 nightClubStruct.bDrawDebugState = FALSE nightClubStruct.bDrawDebugPedIds = FALSE nightClubStruct.bDrawDebugPedSpeech = FALSE BREAK CASE 1 nightClubStruct.bDrawDebugState = TRUE nightClubStruct.bDrawDebugPedIds = FALSE nightClubStruct.bDrawDebugPedSpeech = FALSE BREAK CASE 2 nightClubStruct.bDrawDebugState = FALSE nightClubStruct.bDrawDebugPedIds = TRUE nightClubStruct.bDrawDebugPedSpeech = FALSE BREAK CASE 3 nightClubStruct.bDrawDebugState = TRUE nightClubStruct.bDrawDebugPedIds = TRUE nightClubStruct.bDrawDebugPedSpeech = FALSE BREAK CASE 4 nightClubStruct.bDrawDebugState = FALSE nightClubStruct.bDrawDebugPedIds = FALSE nightClubStruct.bDrawDebugPedSpeech = TRUE BREAK ENDSWITCH IF nightClubStruct.bDrawDebugPedIds AND nightClubStruct.bDrawDebugState OR (GET_COMMANDLINE_PARAM_EXISTS("sc_DrawDebugNightClubPedsInfo") AND g_ncState != NC_STAGE_UPDATE_PED_BEHAVIOUR AND !nightClubStruct.bDrawDebugPedSpeech) MAINTAIN_VISUAL_DEBUG_BLOCK_DISPLAY(nightClubStruct) SHOW_PED_IDS(nightClubStruct, nightClubStruct.iNightclubPedToHighlight) ELSE IF nightClubStruct.bDrawDebugState = TRUE OR (GET_COMMANDLINE_PARAM_EXISTS("sc_DrawDebugNightClubPedsInfo") AND g_ncState != NC_STAGE_UPDATE_PED_BEHAVIOUR) MAINTAIN_VISUAL_DEBUG_BLOCK_DISPLAY(nightClubStruct) ENDIF IF nightClubStruct.bDrawDebugPedIds = TRUE OR (GET_COMMANDLINE_PARAM_EXISTS("sc_DrawDebugNightClubPedsInfo") AND g_ncState != NC_STAGE_UPDATE_PED_BEHAVIOUR) SHOW_PED_IDS(nightClubStruct, nightClubStruct.iNightclubPedToHighlight) ENDIF IF nightClubStruct.bDrawDebugPedSpeech = TRUE OR (GET_COMMANDLINE_PARAM_EXISTS("sc_DrawDebugNightClubPedsSpeech") AND g_ncState != NC_STAGE_UPDATE_PED_BEHAVIOUR) SHOW_PED_SPEECH(nightClubStruct) ENDIF ENDIF ENDPROC PROC CLEANUP_VISUAL_DEBUG_DATA() INT i REPEAT g_VisualDisplayStruct.iBlockCount i g_VisualDisplayStruct.VisualBlockArray[i].fCentreX = 0 g_VisualDisplayStruct.VisualBlockArray[i].fCentreY = 0 g_VisualDisplayStruct.VisualBlockArray[i].fWidth = 0 g_VisualDisplayStruct.VisualBlockArray[i].fHeight = 0 g_VisualDisplayStruct.VisualBlockArray[i].tlBlockHeading = "" ENDREPEAT INT j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j g_VisualDisplayStruct.VisualPropBlockArray[j].iB = 0 g_VisualDisplayStruct.VisualPropBlockArray[j].iG = 0 g_VisualDisplayStruct.VisualPropBlockArray[j].iR = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iB = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iR = 0 g_VisualDisplayStruct.VisualPedBlockArray[j].iG = 0 ENDREPEAT g_VisualDisplayStruct.iBlockCount = 0 ENDPROC PROC ADD_VISIBLE_BLOCK(TEXT_LABEL_63 tlBlockHeading) INT i REPEAT g_VisualDisplayStruct.iBlockCount i IF NOT IS_STRING_NULL_OR_EMPTY(tlBlockHeading) AND NOT IS_STRING_NULL_OR_EMPTY(g_VisualDisplayStruct.VisualBlockArray[i].tlBlockHeading) IF ARE_STRINGS_EQUAL(g_VisualDisplayStruct.VisualBlockArray[i].tlBlockHeading, tlBlockHeading) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "ADD_VISIBLE_BLOCK: Block String already found, exiting") EXIT ENDIF ENDIF ENDREPEAT IF g_VisualDisplayStruct.iBlockCount < MAX_NUMBER_OF_VISIBLE_BLOCKS g_VisualDisplayStruct.VisualBlockArray[g_VisualDisplayStruct.iBlockCount].tlBlockHeading = tlBlockHeading g_VisualDisplayStruct.iBlockCount ++ ENDIF ENDPROC #ENDIF PROC GET_AUDIO_TAG_DATA_FROM_AUDIO_TRACK(INT iHashedTrackName, INT iTagIndex, INT &iTagTime, NIGHTCLUB_AUDIO_TAGS &eTag) iTagTime = -1 eTag = AUDIO_TAG_NULL SWITCH iHashedTrackName CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_PRIVATE_CLUB_01") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 1 iTagTime = 8571 eTag = AUDIO_TAG_LOW BREAK CASE 2 iTagTime = 40298 eTag = AUDIO_TAG_MEDIUM BREAK CASE 3 iTagTime = 96807 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 133109 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 157311 eTag = AUDIO_TAG_HIGH BREAK CASE 6 iTagTime = 221345 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 7 iTagTime = 237479 eTag = AUDIO_TAG_HIGH BREAK CASE 8 iTagTime = 273555 eTag = AUDIO_TAG_MEDIUM BREAK CASE 9 iTagTime = 309502 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 10 iTagTime = 325448 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 373109 eTag = AUDIO_TAG_MEDIUM BREAK CASE 12 iTagTime = 404952 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 13 iTagTime = 420768 eTag = AUDIO_TAG_MEDIUM BREAK CASE 14 iTagTime = 436604 eTag = AUDIO_TAG_HIGH BREAK CASE 15 iTagTime = 468185 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 16 iTagTime = 483943 eTag = AUDIO_TAG_HIGH BREAK CASE 17 iTagTime = 558655 eTag = AUDIO_TAG_MEDIUM BREAK CASE 18 iTagTime = 619053 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 19 iTagTime = 630756 eTag = AUDIO_TAG_HIGH BREAK CASE 20 iTagTime = 648908 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 681236 eTag = AUDIO_TAG_MEDIUM BREAK CASE 22 iTagTime = 696807 eTag = AUDIO_TAG_HIGH BREAK CASE 23 iTagTime = 758518 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 24 iTagTime = 774073 eTag = AUDIO_TAG_MEDIUM BREAK CASE 25 iTagTime = 805061 eTag = AUDIO_TAG_HIGH BREAK CASE 26 iTagTime = 851597 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 27 iTagTime = 867127 eTag = AUDIO_TAG_MEDIUM BREAK CASE 28 iTagTime = 898218 eTag = AUDIO_TAG_HIGH BREAK CASE 29 iTagTime = 944874 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 30 iTagTime = 956604 eTag = AUDIO_TAG_MEDIUM BREAK CASE 31 iTagTime = 976093 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 983891 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 1018992 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 34 iTagTime = 1038438 eTag = AUDIO_TAG_HIGH BREAK CASE 35 iTagTime = 1077186 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 36 iTagTime = 1093361 eTag = AUDIO_TAG_HIGH BREAK CASE 37 iTagTime = 1116863 eTag = AUDIO_TAG_MEDIUM BREAK CASE 38 iTagTime = 1124712 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 39 iTagTime = 1136475 eTag = AUDIO_TAG_HIGH BREAK CASE 40 iTagTime = 1165714 eTag = AUDIO_TAG_MEDIUM BREAK CASE 41 iTagTime = 1171829 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 42 iTagTime = 1187549 eTag = AUDIO_TAG_HIGH BREAK CASE 43 iTagTime = 1296242 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 44 iTagTime = 1312963 eTag = AUDIO_TAG_HIGH BREAK CASE 45 iTagTime = 1387225 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 46 iTagTime = 1406418 eTag = AUDIO_TAG_HIGH BREAK CASE 47 iTagTime = 1476388 eTag = AUDIO_TAG_MEDIUM BREAK CASE 48 iTagTime = 1544111 eTag = AUDIO_TAG_HIGH BREAK CASE 49 iTagTime = 1554686 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 50 iTagTime = 1570301 eTag = AUDIO_TAG_HIGH BREAK CASE 51 iTagTime = 1617389 eTag = AUDIO_TAG_MEDIUM BREAK CASE 52 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH_HANDS BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_PRIVATE_CLUB_02") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 1 iTagTime = 16673 eTag = AUDIO_TAG_HIGH BREAK CASE 2 iTagTime = 74228 eTag = AUDIO_TAG_MEDIUM BREAK CASE 3 iTagTime = 111694 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 126165 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 141796 eTag = AUDIO_TAG_HIGH BREAK CASE 6 iTagTime = 157311 eTag = AUDIO_TAG_MEDIUM BREAK CASE 7 iTagTime = 198878 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 8 iTagTime = 216020 eTag = AUDIO_TAG_HIGH BREAK CASE 9 iTagTime = 331158 eTag = AUDIO_TAG_MEDIUM BREAK CASE 10 iTagTime = 346759 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 11 iTagTime = 362314 eTag = AUDIO_TAG_HIGH BREAK CASE 12 iTagTime = 440347 eTag = AUDIO_TAG_MEDIUM BREAK CASE 13 iTagTime = 456020 eTag = AUDIO_TAG_HIGH BREAK CASE 14 iTagTime = 471475 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 15 iTagTime = 487012 eTag = AUDIO_TAG_HIGH BREAK CASE 16 iTagTime = 564903 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 17 iTagTime = 574133 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 611555 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 19 iTagTime = 627140 eTag = AUDIO_TAG_HIGH BREAK CASE 20 iTagTime = 704927 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 722304 eTag = AUDIO_TAG_MEDIUM BREAK CASE 22 iTagTime = 813571 eTag = AUDIO_TAG_HIGH BREAK CASE 23 iTagTime = 852391 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 24 iTagTime = 867939 eTag = AUDIO_TAG_HIGH BREAK CASE 25 iTagTime = 952968 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 26 iTagTime = 966388 eTag = AUDIO_TAG_MEDIUM BREAK CASE 27 iTagTime = 1014715 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 28 iTagTime = 1029082 eTag = AUDIO_TAG_HIGH BREAK CASE 29 iTagTime = 1045361 eTag = AUDIO_TAG_MEDIUM BREAK CASE 30 iTagTime = 1106137 eTag = AUDIO_TAG_HIGH BREAK CASE 31 iTagTime = 1119694 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 1134878 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 1152510 eTag = AUDIO_TAG_MEDIUM BREAK CASE 34 iTagTime = 1198061 eTag = AUDIO_TAG_HIGH BREAK CASE 35 iTagTime = 1274617 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 36 iTagTime = 1282306 eTag = AUDIO_TAG_HIGH BREAK CASE 37 iTagTime = 1305248 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 38 iTagTime = 1320510 eTag = AUDIO_TAG_HIGH BREAK CASE 39 iTagTime = 1366551 eTag = AUDIO_TAG_MEDIUM BREAK CASE 40 iTagTime = 1382224 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 41 iTagTime = 1393000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 42 iTagTime = 1427779 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 43 iTagTime = 1443091 eTag = AUDIO_TAG_HIGH BREAK CASE 44 iTagTime = 1626967 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 45 iTagTime = 1653571 eTag = AUDIO_TAG_HIGH BREAK CASE 46 iTagTime = 1760837 eTag = AUDIO_TAG_MEDIUM BREAK CASE 47 iTagTime = 1780055 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 48 iTagTime = 1795362 eTag = AUDIO_TAG_HIGH BREAK CASE 49 iTagTime = 1825980 eTag = AUDIO_TAG_MEDIUM BREAK CASE 50 iTagTime = 1856632 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 51 iTagTime = 1871947 eTag = AUDIO_TAG_HIGH BREAK CASE 52 iTagTime = 1927450 eTag = AUDIO_TAG_MEDIUM BREAK CASE 53 iTagTime = 1947449 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 54 iTagTime = 1960002 eTag = AUDIO_TAG_HIGH BREAK CASE 55 iTagTime = 2117002 eTag = AUDIO_TAG_MEDIUM BREAK CASE 56 iTagTime = 2132321 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 57 iTagTime = 2139939 eTag = AUDIO_TAG_HIGH BREAK CASE 58 iTagTime = 2162959 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 59 iTagTime = 2178284 eTag = AUDIO_TAG_HIGH BREAK CASE 60 iTagTime = 2242796 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 61 iTagTime = 2256738 eTag = AUDIO_TAG_HIGH BREAK CASE 62 iTagTime = 2277827 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 63 iTagTime = 2293137 eTag = AUDIO_TAG_HIGH BREAK CASE 64 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH_HANDS BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX1_PRIVATE_CLUB_03") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 1 iTagTime = 16320 eTag = AUDIO_TAG_HIGH BREAK CASE 2 iTagTime = 31680 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 3 iTagTime = 39303 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 70080 eTag = AUDIO_TAG_MEDIUM BREAK CASE 5 iTagTime = 116160 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 6 iTagTime = 138720 eTag = AUDIO_TAG_HIGH BREAK CASE 7 iTagTime = 154080 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 8 iTagTime = 161760 eTag = AUDIO_TAG_MEDIUM BREAK CASE 9 iTagTime = 253645 eTag = AUDIO_TAG_HIGH BREAK CASE 10 iTagTime = 284261 eTag = AUDIO_TAG_MEDIUM BREAK CASE 11 iTagTime = 345600 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 12 iTagTime = 360960 eTag = AUDIO_TAG_MEDIUM BREAK CASE 13 iTagTime = 391633 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 14 iTagTime = 406962 eTag = AUDIO_TAG_HIGH BREAK CASE 15 iTagTime = 430002 eTag = AUDIO_TAG_MEDIUM BREAK CASE 16 iTagTime = 483727 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 17 iTagTime = 499123 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 606788 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 19 iTagTime = 618324 eTag = AUDIO_TAG_HIGH BREAK CASE 20 iTagTime = 668372 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 683792 eTag = AUDIO_TAG_HIGH BREAK CASE 22 iTagTime = 861257 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 23 iTagTime = 876700 eTag = AUDIO_TAG_HIGH BREAK CASE 24 iTagTime = 892165 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 25 iTagTime = 907609 eTag = AUDIO_TAG_HIGH BREAK CASE 26 iTagTime = 938503 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 27 iTagTime = 954025 eTag = AUDIO_TAG_HIGH BREAK CASE 28 iTagTime = 1015680 eTag = AUDIO_TAG_MEDIUM BREAK CASE 29 iTagTime = 1023647 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 30 iTagTime = 1031520 eTag = AUDIO_TAG_MEDIUM BREAK CASE 31 iTagTime = 1039180 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 1070170 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 1178751 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 34 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH_HANDS BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_PRIVATE_CLUB_01") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_LOW BREAK CASE 1 iTagTime = 61935 eTag = AUDIO_TAG_MEDIUM BREAK CASE 2 iTagTime = 77419 eTag = AUDIO_TAG_HIGH BREAK CASE 3 iTagTime = 100652 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 4 iTagTime = 131613 eTag = AUDIO_TAG_LOW BREAK CASE 5 iTagTime = 162581 eTag = AUDIO_TAG_MEDIUM BREAK CASE 6 iTagTime = 209049 eTag = AUDIO_TAG_LOW BREAK CASE 7 iTagTime = 224516 eTag = AUDIO_TAG_HIGH BREAK CASE 8 iTagTime = 286452 eTag = AUDIO_TAG_MEDIUM BREAK CASE 9 iTagTime = 317419 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 10 iTagTime = 356116 eTag = AUDIO_TAG_MEDIUM BREAK CASE 11 iTagTime = 379355 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 12 iTagTime = 425780 eTag = AUDIO_TAG_HIGH BREAK CASE 13 iTagTime = 472257 eTag = AUDIO_TAG_MEDIUM BREAK CASE 14 iTagTime = 503125 eTag = AUDIO_TAG_HIGH BREAK CASE 15 iTagTime = 518710 eTag = AUDIO_TAG_LOW BREAK CASE 16 iTagTime = 534194 eTag = AUDIO_TAG_HIGH BREAK CASE 17 iTagTime = 580645 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 18 iTagTime = 619355 eTag = AUDIO_TAG_MEDIUM BREAK CASE 19 iTagTime = 689032 eTag = AUDIO_TAG_HIGH BREAK CASE 20 iTagTime = 735485 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 781938 eTag = AUDIO_TAG_HIGH BREAK CASE 22 iTagTime = 847742 eTag = AUDIO_TAG_MEDIUM BREAK CASE 23 iTagTime = 905806 eTag = AUDIO_TAG_HIGH BREAK CASE 24 iTagTime = 936738 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 25 iTagTime = 967742 eTag = AUDIO_TAG_LOW BREAK CASE 26 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_LOW BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_PRIVATE_CLUB_02") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_LOW BREAK CASE 1 iTagTime = 2419 eTag = AUDIO_TAG_MEDIUM BREAK CASE 2 iTagTime = 33387 eTag = AUDIO_TAG_HIGH BREAK CASE 3 iTagTime = 64355 eTag = AUDIO_TAG_LOW BREAK CASE 4 iTagTime = 95323 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 153387 eTag = AUDIO_TAG_MEDIUM BREAK CASE 6 iTagTime = 188226 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 7 iTagTime = 219194 eTag = AUDIO_TAG_HIGH BREAK CASE 8 iTagTime = 250161 eTag = AUDIO_TAG_LOW BREAK CASE 9 iTagTime = 265645 eTag = AUDIO_TAG_MEDIUM BREAK CASE 10 iTagTime = 296613 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 358548 eTag = AUDIO_TAG_MEDIUM BREAK CASE 12 iTagTime = 389529 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 13 iTagTime = 435968 eTag = AUDIO_TAG_MEDIUM BREAK CASE 14 iTagTime = 497419 eTag = AUDIO_TAG_LOW BREAK CASE 15 iTagTime = 513387 eTag = AUDIO_TAG_MEDIUM BREAK CASE 16 iTagTime = 575323 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 17 iTagTime = 606290 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 668226 eTag = AUDIO_TAG_MEDIUM BREAK CASE 19 iTagTime = 735484 eTag = AUDIO_TAG_HIGH BREAK CASE 20 iTagTime = 788226 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 810484 eTag = AUDIO_TAG_HIGH BREAK CASE 22 iTagTime = 923710 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 23 iTagTime = 957097 eTag = AUDIO_TAG_MEDIUM BREAK CASE 24 iTagTime = 1003548 eTag = AUDIO_TAG_HIGH BREAK CASE 25 iTagTime = 1047581 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 26 iTagTime = 1109516 eTag = AUDIO_TAG_HIGH BREAK CASE 27 iTagTime = 1140484 eTag = AUDIO_TAG_MEDIUM BREAK CASE 28 iTagTime = 1155968 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 29 iTagTime = 1194677 eTag = AUDIO_TAG_MEDIUM BREAK CASE 30 iTagTime = 1210161 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 31 iTagTime = 1241129 eTag = AUDIO_TAG_LOW BREAK CASE 32 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_LOW BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX2_PRIVATE_CLUB_03") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_LOW BREAK CASE 1 iTagTime = 1001 eTag = AUDIO_TAG_MEDIUM BREAK CASE 2 iTagTime = 31935 eTag = AUDIO_TAG_HIGH BREAK CASE 3 iTagTime = 47419 eTag = AUDIO_TAG_MEDIUM BREAK CASE 4 iTagTime = 62903 eTag = AUDIO_TAG_LOW BREAK CASE 5 iTagTime = 80356 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 6 iTagTime = 103548 eTag = AUDIO_TAG_MEDIUM BREAK CASE 7 iTagTime = 122419 eTag = AUDIO_TAG_LOW BREAK CASE 8 iTagTime = 134549 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 9 iTagTime = 150968 eTag = AUDIO_TAG_HIGH BREAK CASE 10 iTagTime = 173226 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 11 iTagTime = 189194 eTag = AUDIO_TAG_HIGH BREAK CASE 12 iTagTime = 219710 eTag = AUDIO_TAG_MEDIUM BREAK CASE 13 iTagTime = 260323 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 14 iTagTime = 276290 eTag = AUDIO_TAG_HIGH BREAK CASE 15 iTagTime = 288387 eTag = AUDIO_TAG_MEDIUM BREAK CASE 16 iTagTime = 322258 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 17 iTagTime = 336290 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 399677 eTag = AUDIO_TAG_LOW BREAK CASE 19 iTagTime = 430678 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 20 iTagTime = 457742 eTag = AUDIO_TAG_MEDIUM BREAK CASE 21 iTagTime = 504227 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 22 iTagTime = 525517 eTag = AUDIO_TAG_HIGH BREAK CASE 23 iTagTime = 558420 eTag = AUDIO_TAG_MEDIUM BREAK CASE 24 iTagTime = 581646 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 25 iTagTime = 624194 eTag = AUDIO_TAG_MEDIUM BREAK CASE 26 iTagTime = 686129 eTag = AUDIO_TAG_HIGH BREAK CASE 27 iTagTime = 717097 eTag = AUDIO_TAG_MEDIUM BREAK CASE 28 iTagTime = 732581 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 29 iTagTime = 748065 eTag = AUDIO_TAG_HIGH BREAK CASE 30 iTagTime = 779065 eTag = AUDIO_TAG_MEDIUM BREAK CASE 31 iTagTime = 842903 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 871935 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 918387 eTag = AUDIO_TAG_MEDIUM BREAK CASE 34 iTagTime = 933871 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 35 iTagTime = 949355 eTag = AUDIO_TAG_HIGH BREAK CASE 36 iTagTime = 1026774 eTag = AUDIO_TAG_MEDIUM BREAK CASE 37 iTagTime = 1113871 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 38 iTagTime = 1137097 eTag = AUDIO_TAG_HIGH BREAK CASE 39 iTagTime = 1175806 eTag = AUDIO_TAG_MEDIUM BREAK CASE 40 iTagTime = 1206774 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 41 iTagTime = 1223226 eTag = AUDIO_TAG_HIGH BREAK CASE 42 iTagTime = 1254194 eTag = AUDIO_TAG_MEDIUM BREAK CASE 43 iTagTime = 1291935 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 44 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_LOW BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_PRIVATE_CLUB_01") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 1 iTagTime = 16517 eTag = AUDIO_TAG_MEDIUM BREAK CASE 2 iTagTime = 257017 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 3 iTagTime = 273017 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 321110 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 363255 eTag = AUDIO_TAG_MEDIUM BREAK CASE 6 iTagTime = 401310 eTag = AUDIO_TAG_HIGH BREAK CASE 7 iTagTime = 417350 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 8 iTagTime = 449717 eTag = AUDIO_TAG_MEDIUM BREAK CASE 9 iTagTime = 482386 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 10 iTagTime = 515194 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 615198 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 12 iTagTime = 628531 eTag = AUDIO_TAG_MEDIUM BREAK CASE 13 iTagTime = 646480 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 14 iTagTime = 662890 eTag = AUDIO_TAG_HIGH BREAK CASE 15 iTagTime = 728372 eTag = AUDIO_TAG_MEDIUM BREAK CASE 16 iTagTime = 744942 eTag = AUDIO_TAG_HIGH BREAK CASE 17 iTagTime = 811096 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 18 iTagTime = 817249 eTag = AUDIO_TAG_MEDIUM BREAK CASE 19 iTagTime = 843060 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 20 iTagTime = 875360 eTag = AUDIO_TAG_HIGH BREAK CASE 21 iTagTime = 907601 eTag = AUDIO_TAG_MEDIUM BREAK CASE 22 iTagTime = 931834 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 23 iTagTime = 964088 eTag = AUDIO_TAG_HIGH BREAK CASE 24 iTagTime = 980233 eTag = AUDIO_TAG_MEDIUM BREAK CASE 25 iTagTime = 996372 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 26 iTagTime = 1028641 eTag = AUDIO_TAG_HIGH BREAK CASE 27 iTagTime = 1044775 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 28 iTagTime = 1077032 eTag = AUDIO_TAG_HIGH BREAK CASE 29 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_MEDIUM BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_PRIVATE_CLUB_02") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_MEDIUM BREAK CASE 1 iTagTime = 33277 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 2 iTagTime = 65546 eTag = AUDIO_TAG_HIGH BREAK CASE 3 iTagTime = 267231 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 4 iTagTime = 299496 eTag = AUDIO_TAG_HIGH BREAK CASE 5 iTagTime = 364034 eTag = AUDIO_TAG_MEDIUM BREAK CASE 6 iTagTime = 396303 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 7 iTagTime = 412437 eTag = AUDIO_TAG_HIGH BREAK CASE 8 iTagTime = 476975 eTag = AUDIO_TAG_MEDIUM BREAK CASE 9 iTagTime = 493109 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 10 iTagTime = 525378 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 541513 eTag = AUDIO_TAG_MEDIUM BREAK CASE 12 iTagTime = 573782 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 13 iTagTime = 606050 eTag = AUDIO_TAG_HIGH BREAK CASE 14 iTagTime = 621681 eTag = AUDIO_TAG_MEDIUM BREAK CASE 15 iTagTime = 636807 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 16 iTagTime = 654454 eTag = AUDIO_TAG_HIGH BREAK CASE 17 iTagTime = 698824 eTag = AUDIO_TAG_MEDIUM BREAK CASE 18 iTagTime = 702857 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 19 iTagTime = 718992 eTag = AUDIO_TAG_MEDIUM BREAK CASE 20 iTagTime = 735126 eTag = AUDIO_TAG_HIGH BREAK CASE 21 iTagTime = 772437 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 22 iTagTime = 791597 eTag = AUDIO_TAG_HIGH BREAK CASE 23 iTagTime = 857647 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 24 iTagTime = 872269 eTag = AUDIO_TAG_HIGH BREAK CASE 25 iTagTime = 904538 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 26 iTagTime = 920672 eTag = AUDIO_TAG_HIGH BREAK CASE 27 iTagTime = 969076 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 28 iTagTime = 985210 eTag = AUDIO_TAG_HIGH BREAK CASE 29 iTagTime = 1026555 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 30 iTagTime = 1049748 eTag = AUDIO_TAG_HIGH BREAK CASE 31 iTagTime = 1130420 eTag = AUDIO_TAG_MEDIUM BREAK CASE 32 iTagTime = 1162689 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 1184370 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 34 iTagTime = 1203025 eTag = AUDIO_TAG_HIGH BREAK CASE 35 iTagTime = 1227227 eTag = AUDIO_TAG_MEDIUM BREAK CASE 36 iTagTime = 1259496 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 37 iTagTime = 1275630 eTag = AUDIO_TAG_HIGH BREAK CASE 38 iTagTime = 1291765 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 39 iTagTime = 1307899 eTag = AUDIO_TAG_HIGH BREAK CASE 40 iTagTime = 1320000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 41 iTagTime = 1324034 eTag = AUDIO_TAG_HIGH BREAK CASE 42 iTagTime = 1356303 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 43 iTagTime = 1388571 eTag = AUDIO_TAG_MEDIUM BREAK CASE 44 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH_HANDS BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX3_PRIVATE_CLUB_03") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 1 iTagTime = 73613 eTag = AUDIO_TAG_HIGH BREAK CASE 2 iTagTime = 120000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 3 iTagTime = 141176 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 190588 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 222857 eTag = AUDIO_TAG_HIGH BREAK CASE 6 iTagTime = 339832 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 7 iTagTime = 369076 eTag = AUDIO_TAG_HIGH BREAK CASE 8 iTagTime = 432605 eTag = AUDIO_TAG_MEDIUM BREAK CASE 9 iTagTime = 532613 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 10 iTagTime = 560322 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 590523 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 12 iTagTime = 607878 eTag = AUDIO_TAG_HIGH BREAK CASE 13 iTagTime = 654489 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 14 iTagTime = 670357 eTag = AUDIO_TAG_HIGH BREAK CASE 15 iTagTime = 719013 eTag = AUDIO_TAG_MEDIUM BREAK CASE 16 iTagTime = 740275 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 17 iTagTime = 758622 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 782919 eTag = AUDIO_TAG_MEDIUM BREAK CASE 19 iTagTime = 798318 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 20 iTagTime = 814224 eTag = AUDIO_TAG_HIGH BREAK CASE 21 iTagTime = 893498 eTag = AUDIO_TAG_MEDIUM BREAK CASE 22 iTagTime = 925278 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 23 iTagTime = 941101 eTag = AUDIO_TAG_HIGH BREAK CASE 24 iTagTime = 956969 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 25 iTagTime = 972840 eTag = AUDIO_TAG_HIGH BREAK CASE 26 iTagTime = 1020519 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 27 iTagTime = 1036308 eTag = AUDIO_TAG_HIGH BREAK CASE 28 iTagTime = 1084407 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 29 iTagTime = 1099779 eTag = AUDIO_TAG_MEDIUM BREAK CASE 30 iTagTime = 1115691 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 31 iTagTime = 1131514 eTag = AUDIO_TAG_HIGH BREAK CASE 32 iTagTime = 1212341 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 33 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH_HANDS BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_CLUB_01") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_PRIVATE_CLUB_01") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 1 iTagTime = 12500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 2 iTagTime = 44995 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 3 iTagTime = 84500 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 111500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 140500 eTag = AUDIO_TAG_HIGH BREAK CASE 6 iTagTime = 204500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 7 iTagTime = 212500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 8 iTagTime = 224500 eTag = AUDIO_TAG_HIGH BREAK CASE 9 iTagTime = 292880 eTag = AUDIO_TAG_MEDIUM BREAK CASE 10 iTagTime = 308500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 11 iTagTime = 324500 eTag = AUDIO_TAG_HIGH BREAK CASE 12 iTagTime = 372500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 13 iTagTime = 388508 eTag = AUDIO_TAG_HIGH BREAK CASE 14 iTagTime = 436500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 15 iTagTime = 452500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 16 iTagTime = 470500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 17 iTagTime = 482500 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 500505 eTag = AUDIO_TAG_MEDIUM BREAK CASE 19 iTagTime = 535827 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 20 iTagTime = 548000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 21 iTagTime = 564500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 22 iTagTime = 584500 eTag = AUDIO_TAG_HIGH BREAK CASE 23 iTagTime = 664000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 24 iTagTime = 682500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 25 iTagTime = 698500 eTag = AUDIO_TAG_HIGH BREAK CASE 26 iTagTime = 715000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 27 iTagTime = 730500 eTag = AUDIO_TAG_HIGH BREAK CASE 28 iTagTime = 778500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 29 iTagTime = 794500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 30 iTagTime = 806500 eTag = AUDIO_TAG_HIGH BREAK CASE 31 iTagTime = 826500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 842500 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 874500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 34 iTagTime = 882500 eTag = AUDIO_TAG_HIGH BREAK CASE 35 iTagTime = 906500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 36 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_MEDIUM BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_CLUB_02") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_PRIVATE_CLUB_02") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_MEDIUM BREAK CASE 1 iTagTime = 81000 eTag = AUDIO_TAG_HIGH BREAK CASE 2 iTagTime = 127399 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 3 iTagTime = 145000 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 177000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 5 iTagTime = 189000 eTag = AUDIO_TAG_HIGH BREAK CASE 6 iTagTime = 241000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 7 iTagTime = 257000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 8 iTagTime = 269000 eTag = AUDIO_TAG_HIGH BREAK CASE 9 iTagTime = 287000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 10 iTagTime = 299000 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 311366 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 12 iTagTime = 324961 eTag = AUDIO_TAG_HIGH BREAK CASE 13 iTagTime = 345500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 14 iTagTime = 371500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 15 iTagTime = 388956 eTag = AUDIO_TAG_HIGH BREAK CASE 16 iTagTime = 409000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 17 iTagTime = 463000 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 468000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 19 iTagTime = 478187 eTag = AUDIO_TAG_MEDIUM BREAK CASE 20 iTagTime = 493474 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 506473 eTag = AUDIO_TAG_MEDIUM BREAK CASE 22 iTagTime = 517468 eTag = AUDIO_TAG_HIGH BREAK CASE 23 iTagTime = 565500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 24 iTagTime = 577000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 25 iTagTime = 680000 eTag = AUDIO_TAG_HIGH BREAK CASE 26 iTagTime = 693500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 27 iTagTime = 707500 eTag = AUDIO_TAG_HIGH BREAK CASE 28 iTagTime = 821500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 29 iTagTime = 837500 eTag = AUDIO_TAG_HIGH BREAK CASE 30 iTagTime = 925500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 31 iTagTime = 942000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 955500 eTag = AUDIO_TAG_HIGH BREAK CASE 33 iTagTime = 990500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 34 iTagTime = 995000 eTag = AUDIO_TAG_HIGH BREAK CASE 35 iTagTime = 1003481 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 36 iTagTime = 1019500 eTag = AUDIO_TAG_HIGH BREAK CASE 37 iTagTime = 1059000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 38 iTagTime = 1063500 eTag = AUDIO_TAG_HIGH BREAK CASE 39 iTagTime = 1139500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 40 iTagTime = 1151542 eTag = AUDIO_TAG_HIGH BREAK CASE 41 iTagTime = 1183747 eTag = AUDIO_TAG_MEDIUM BREAK CASE 42 iTagTime = 1252000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 43 iTagTime = 1265774 eTag = AUDIO_TAG_HIGH BREAK CASE 44 iTagTime = 1283762 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 45 iTagTime = 1301500 eTag = AUDIO_TAG_HIGH BREAK CASE 46 iTagTime = 1313223 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 47 iTagTime = 1326021 eTag = AUDIO_TAG_HIGH BREAK CASE 48 iTagTime = 1404267 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 49 iTagTime = 1420751 eTag = AUDIO_TAG_HIGH BREAK CASE 50 iTagTime = 1437000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 51 iTagTime = 1452655 eTag = AUDIO_TAG_HIGH BREAK CASE 52 iTagTime = 1500500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 53 iTagTime = 1572752 eTag = AUDIO_TAG_HIGH BREAK CASE 54 iTagTime = 1608767 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 55 iTagTime = 1624748 eTag = AUDIO_TAG_HIGH BREAK CASE 56 iTagTime = 1678707 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 57 iTagTime = 1688700 eTag = AUDIO_TAG_HIGH BREAK CASE 58 iTagTime = 1763000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 59 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH BREAK ENDSWITCH BREAK CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_CLUB_03") CASE HASH("DLC_BATTLE_MUSIC_BATTLE_MIX4_PRIVATE_CLUB_03") SWITCH iTagIndex CASE 0 iTagTime = 0 eTag = AUDIO_TAG_HIGH BREAK CASE 1 iTagTime = 17000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 2 iTagTime = 41000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 3 iTagTime = 65000 eTag = AUDIO_TAG_HIGH BREAK CASE 4 iTagTime = 97000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 5 iTagTime = 161000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 6 iTagTime = 175000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 7 iTagTime = 192724 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 8 iTagTime = 208632 eTag = AUDIO_TAG_HIGH BREAK CASE 9 iTagTime = 256761 eTag = AUDIO_TAG_MEDIUM BREAK CASE 10 iTagTime = 288025 eTag = AUDIO_TAG_HIGH BREAK CASE 11 iTagTime = 319743 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 12 iTagTime = 367500 eTag = AUDIO_TAG_HIGH BREAK CASE 13 iTagTime = 446797 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 14 iTagTime = 462653 eTag = AUDIO_TAG_MEDIUM BREAK CASE 15 iTagTime = 478500 eTag = AUDIO_TAG_HIGH BREAK CASE 16 iTagTime = 494500 eTag = AUDIO_TAG_MEDIUM BREAK CASE 17 iTagTime = 510338 eTag = AUDIO_TAG_HIGH BREAK CASE 18 iTagTime = 559000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 19 iTagTime = 573829 eTag = AUDIO_TAG_HIGH BREAK CASE 20 iTagTime = 589000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 21 iTagTime = 596000 eTag = AUDIO_TAG_HIGH BREAK CASE 22 iTagTime = 615090 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 23 iTagTime = 627107 eTag = AUDIO_TAG_HIGH BREAK CASE 24 iTagTime = 639088 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 25 iTagTime = 663000 eTag = AUDIO_TAG_HIGH BREAK CASE 26 iTagTime = 705000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 27 iTagTime = 717000 eTag = AUDIO_TAG_HIGH BREAK CASE 28 iTagTime = 804000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 29 iTagTime = 819000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 30 iTagTime = 830859 eTag = AUDIO_TAG_HIGH BREAK CASE 31 iTagTime = 855000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 32 iTagTime = 872000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 33 iTagTime = 896749 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 34 iTagTime = 912794 eTag = AUDIO_TAG_HIGH BREAK CASE 35 iTagTime = 961500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 36 iTagTime = 981853 eTag = AUDIO_TAG_HIGH BREAK CASE 37 iTagTime = 1026550 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 38 iTagTime = 1042800 eTag = AUDIO_TAG_HIGH BREAK CASE 39 iTagTime = 1138500 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 40 iTagTime = 1158766 eTag = AUDIO_TAG_HIGH BREAK CASE 41 iTagTime = 1292000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 42 iTagTime = 1309238 eTag = AUDIO_TAG_HIGH BREAK CASE 43 iTagTime = 1354000 eTag = AUDIO_TAG_MEDIUM BREAK CASE 44 iTagTime = 1377000 eTag = AUDIO_TAG_HIGH_HANDS BREAK CASE 45 // follow on to next track iTagTime = GET_LENGTH_OF_MIX_TRACK(iHashedTrackName) eTag = AUDIO_TAG_HIGH_HANDS BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC GET_AUDIO_TAG_FROM_AUDIO_TRACK(INT iHashedTrackName, INT iTrackTime, NIGHTCLUB_AUDIO_TAGS& currentTag, NIGHTCLUB_AUDIO_TAGS& nextTag, INT &nextTagTime, INT& currentTagIndex) NIGHTCLUB_AUDIO_TAGS eReturn = AUDIO_TAG_NULL NIGHTCLUB_AUDIO_TAGS ePrevReturn = AUDIO_TAG_NULL INT iTagTime = 0 //Check current tag is correct, else reset GET_AUDIO_TAG_DATA_FROM_AUDIO_TRACK(iHashedTrackName, currentTagIndex, iTagTime, eReturn) IF iTagTime > iTrackTime OR iTagTime < 0 //CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_AUDIO_TAG_FROM_AUDIO_TRACK: iTagTime > iTrackTime, resetting.") currentTagIndex = 0 ELSE currentTagIndex++ ENDIF WHILE iTagTime < iTrackTime AND iTagTime >= 0 ePrevReturn = eReturn GET_AUDIO_TAG_DATA_FROM_AUDIO_TRACK(iHashedTrackName, currentTagIndex, iTagTime, eReturn) currentTagIndex++ //CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_AUDIO_TAG_FROM_AUDIO_TRACK: INC: iTagTime: ", iTagTime, ", currentTagIndex: ", currentTagIndex, ", eReturn: ", getAudioTagString(eReturn)) ENDWHILE IF iTagTime < 0 iTagTime = -1 ENDIF nextTagTime = iTagTime currentTagIndex -= 2 IF currentTagIndex < 0 currentTagIndex = 0 ENDIF currentTag = ePrevReturn nextTag = eReturn //CDEBUG1LN(DEBUG_NET_PED_DANCING, "GET_AUDIO_TAG_FROM_AUDIO_TRACK: iTrackTime: ", iTrackTime, ", nextTagTime: ", nextTagTime, ", currentTagIndex: ", currentTagIndex, ", currentTag: ", getAudioTagString(currentTag)) ENDPROC PROC CULL_PED_BAR_HALLWAY_TRIGGER_LOGIC(NIGHT_CLUB_STRUCT &nightClubStruct) SWITCH nightClubStruct.iCullTriggerStagger - NC_CULL_TRIGGER_HALLWAY CASE 0 IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInFirstHallwayCullable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInFirstHallwayCullable(GET_FINAL_RENDERED_CAM_COORD()) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK) ENDIF BREAK CASE 1 IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInSecondHallwayCullable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInSecondHallwayCullable(GET_FINAL_RENDERED_CAM_COORD()) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK) ENDIF BREAK CASE 2 IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInDownstairsBarViewable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInDownstairsBarViewable(GET_FINAL_RENDERED_CAM_COORD()) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK) ENDIF BREAK CASE 3 IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInUpstairsBarCullable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInUpstairsBarCullable(GET_FINAL_RENDERED_CAM_COORD()) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE_CHECK) ENDIF BREAK CASE 4 IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInMainSpaceViewable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInMainSpaceViewable(GET_FINAL_RENDERED_CAM_COORD()) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE_CHECK) ENDIF BREAK ENDSWITCH IF nightClubStruct.iCullTriggerStagger = NC_CULL_TRIGGER_CHECK IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) != IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK) IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) ELSE CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "CULL_PED_BAR_HALLWAY_TRIGGER_LOGIC: triggered: reseting state to NC_STAGE_INIT_PED_CULLING") IF g_ncState != NC_STAGE_POPULATE_CULLED_PED_ARRAY AND g_ncState != NC_STAGE_REMOVE_CULLED_PEDS AND g_ncState != NC_STAGE_INIT_PED_CULLING SetNCActStage(NC_STAGE_INIT_PED_CULLING) ENDIF ENDIF IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) != IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE_CHECK) IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE_CHECK) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) ELSE CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "CULL_PED_BAR_HALLWAY_TRIGGER_LOGIC: triggered: reseting state to NC_STAGE_INIT_PED_CULLING") IF g_ncState != NC_STAGE_POPULATE_CULLED_PED_ARRAY AND g_ncState != NC_STAGE_REMOVE_CULLED_PEDS AND g_ncState != NC_STAGE_INIT_PED_CULLING SetNCActStage(NC_STAGE_INIT_PED_CULLING) ENDIF ENDIF CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR_CHECK) CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE_CHECK) ENDIF ENDPROC PROC CULL_PED_TOILET_TRIGGER_LOGIC(NIGHT_CLUB_STRUCT &nightClubStruct) IF nightClubStruct.iCullTriggerStagger = NC_CULL_TRIGGER_TOILET IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInToiletEntrance(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInToiletEntrance(GET_FINAL_RENDERED_CAM_COORD()) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA_CHECK) ELSE SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA_CHECK) ENDIF ENDIF IF nightClubStruct.iCullTriggerStagger = NC_CULL_TRIGGER_CHECK IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) != IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA_CHECK) IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA_CHECK) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) ELSE CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) ENDIF IF g_ncState != NC_STAGE_POPULATE_CULLED_PED_ARRAY AND g_ncState != NC_STAGE_REMOVE_CULLED_PEDS AND g_ncState != NC_STAGE_INIT_PED_CULLING CDEBUG1LN(DEBUG_NET_PED_DANCING, "CULL_PED_TOILET_TRIGGER_LOGIC: triggered: reseting state to NC_STAGE_INIT_PED_CULLING, bInToiletOrToiletEntranceArea") SetNCActStage(NC_STAGE_INIT_PED_CULLING) ENDIF ENDIF IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) != IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA_CHECK) IF IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA_CHECK) SET_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) ELSE CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) ENDIF IF g_ncState != NC_STAGE_POPULATE_CULLED_PED_ARRAY AND g_ncState != NC_STAGE_REMOVE_CULLED_PEDS AND g_ncState != NC_STAGE_INIT_PED_CULLING CDEBUG1LN(DEBUG_NET_PED_DANCING, "CULL_PED_TOILET_TRIGGER_LOGIC: triggered: reseting state to NC_STAGE_INIT_PED_CULLING, bInBackBarViewableArea") SetNCActStage(NC_STAGE_INIT_PED_CULLING) ENDIF ENDIF CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA_CHECK) CLEAR_BIT(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA_CHECK) ENDIF ENDPROC #IF IS_DEBUG_BUILD PROC OUTPUT_DEBUG_NIGHTCLUB_PED_POSITIONS(NIGHT_CLUB_STRUCT &nightClubStruct) INT i IF (nightClubStruct.bDoProcessEveryFrame[0]) // do nothing but fool compiler ENDIF IF g_bOutputNightClubPedSettings g_bOutputNightClubPedChangesOnly = FALSE // always false STRING sPath = "X:/gta5/titleupdate/dev_ng/" INT iYear, iMonth, iDay, iHour, iMins, iSec GET_LOCAL_TIME(iYear, iMonth, iDay, iHour, iMins, iSec) TEXT_LABEL_63 sFile sFile = "club_data_" IF (iHour < 10) sFile += 0 ENDIF sFile += iHour sFile += "." IF (iMins < 10) sFile += 0 ENDIF sFile += iMins sFile += "." IF (iSec < 10) sFile += 0 ENDIF sFile += iSec sFile += ".txt" CLEAR_NAMED_DEBUG_FILE(sPath, sFile) OPEN_NAMED_DEBUG_FILE(sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("// === layouts === ",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubPedsMainAreaLayout = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubPedsMainAreaLayout,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubPedsMainAreaLayout_Variation = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubPedsMainAreaLayout_Variation,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubPedsHallwayLayout = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubPedsHallwayLayout,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubPedsToiletLayout = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubPedsToiletLayout,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubTonyPosition = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubTonyPosition,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubLazlowPosition = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubLazlowPosition,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("// === global bools === ",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_bTurnOnNCDJEntourage = ",sPath, sFile) SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_bTurnOnNCDJEntourage,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_bTurnOnNCExtraBartenders = ",sPath, sFile) SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_bTurnOnNCExtraBartenders,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_bTurnOnNCExtraBouncers = ",sPath, sFile) SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_bTurnOnNCExtraBouncers,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_bTurnOnNCStaffPeds = ",sPath, sFile) SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_bTurnOnNCStaffPeds,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_bTurnOnNCCustomerPeds = ",sPath, sFile) SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_bTurnOnNCCustomerPeds,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_bTurnOnNCPodiumDancers = ",sPath, sFile) SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_bTurnOnNCPodiumDancers,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_eNightClubPodiumDancersState = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(ENUM_TO_INT(g_eNightClubPodiumDancersState),sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_eNightClubPodiumDancersStyle = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(ENUM_TO_INT(g_eNightClubPodiumDancersStyle),sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("g_iNightClubSetupState = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubSetupState, sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== NIGHTCLUB PED POSITIONS =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // base SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== BASE =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedPositionSpecial(i) = FALSE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][0])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF (VMAG(g_vNightClubPedPos[i]) > 0.001) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_VECTOR_TO_NAMED_DEBUG_FILE(g_vNightClubPedPos[i],sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" // eActivitySlotName = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i])),sPath, sFile) IF (g_bNightClubPedDataChanged[i][0]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT // special SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== SPECIAL =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedPositionSpecial(i) = TRUE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][0])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF (VMAG(g_vNightClubPedPos[i]) > 0.001) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_VECTOR_TO_NAMED_DEBUG_FILE(g_vNightClubPedPos[i],sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" // eActivitySlotName = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i])),sPath, sFile) IF (g_bNightClubPedDataChanged[i][0]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== NIGHTCLUB PED HEADINGS =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== BASE =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedHeadingSpecial(i) = FALSE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][1])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF (g_fNightClubPedHeading[i] != 0.0) AND (g_fNightClubPedHeading[i] != -1.0) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_FLOAT_TO_NAMED_DEBUG_FILE(g_fNightClubPedHeading[i],sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" // eActivitySlotName = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i])),sPath, sFile) IF (g_bNightClubPedDataChanged[i][1]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== SPECIAL =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedHeadingSpecial(i) = TRUE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][1])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF (g_fNightClubPedHeading[i] != 0.0) AND (g_fNightClubPedHeading[i] != -1.0) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_FLOAT_TO_NAMED_DEBUG_FILE(g_fNightClubPedHeading[i],sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" // eActivitySlotName = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i])),sPath, sFile) IF (g_bNightClubPedDataChanged[i][1]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== ASSIGN ACTIVITY SLOTS =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // base SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== BASE =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedActivitySlotSpecial(i) = FALSE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][2])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF NOT (g_iNightClubActivitySlot[i] = -1) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" eActivitySlot = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i]), g_bNightClubActivitySlotHasRandomness[i]),sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) IF (g_bNightClubActivitySlotHasRandomness[i]) AND IS_RANDOM_ACTIVITY_SLOT_APPLICABLE(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i])) SAVE_STRING_TO_NAMED_DEBUG_FILE(" isRandom = TRUE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF SAVE_STRING_TO_NAMED_DEBUG_FILE("BREAK ",sPath, sFile) IF (g_bNightClubPedDataChanged[i][2]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== SPECIAL =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedActivitySlotSpecial(i) = TRUE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][2])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF NOT (g_iNightClubActivitySlot[i] = -1) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" eActivitySlot = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, g_iNightClubActivitySlot[i]), g_bNightClubActivitySlotHasRandomness[i]),sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) IF (g_bNightClubActivitySlotHasRandomness[i]) SAVE_STRING_TO_NAMED_DEBUG_FILE(" isRandom = TRUE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF SAVE_STRING_TO_NAMED_DEBUG_FILE("BREAK ",sPath, sFile) IF (g_bNightClubPedDataChanged[i][2]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== NC PED TYPE =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== BASE =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedTypeSpecial(i) = FALSE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][3])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF NOT (g_iNightClubPedType[i] = -1) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) //SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_NC_PED_TYPE_STRING(INT_TO_ENUM(NC_PED_TYPES, g_iNightClubPedType[i])),sPath, sFile) //SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) IF (g_bNightClubPedDataChanged[i][3]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== SPECIAL =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedTypeSpecial(i) = TRUE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][3])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF NOT (g_iNightClubPedType[i] = -1) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) //SAVE_STRING_TO_NAMED_DEBUG_FILE(" eReturn = ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_NC_PED_TYPE_STRING(INT_TO_ENUM(NC_PED_TYPES, g_iNightClubPedType[i])),sPath, sFile) //SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) IF (g_bNightClubPedDataChanged[i][3]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== OFFSET NC =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // base SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== BASE =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedOffsetSpecial(i) = FALSE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][4])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF (g_iNightClubOffsetPedId[i] > -1) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubOffsetPedId[i],sPath, sFile) IF (g_bNightClubPedDataChanged[i][4]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("==== SPECIAL =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) i = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA i IF IsNightClubPedOffsetSpecial(i) = TRUE IF ((g_bOutputNightClubPedChangesOnly) AND (g_bNightClubPedDataChanged[i][4])) OR (g_bOutputNightClubPedChangesOnly = FALSE) IF (g_iNightClubOffsetPedId[i] > -1) SAVE_STRING_TO_NAMED_DEBUG_FILE("CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(i,sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" RETURN ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(g_iNightClubOffsetPedId[i],sPath, sFile) IF (g_bNightClubPedDataChanged[i][4]) AND (g_bOutputNightClubPedChangesOnly = FALSE) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ## CHANGED ##",sPath, sFile) ENDIF SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDIF ENDREPEAT SAVE_STRING_TO_NAMED_DEBUG_FILE("==== END =====",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CLOSE_DEBUG_FILE() g_bOutputNightClubPedSettings = FALSE ENDIF ENDPROC #ENDIF PROC MANAGE_SCRIPT_CLEANUP_CONDITIONS() IF g_bTurnOnNightClubPeds = FALSE SetNCActStage(NC_STAGE_CLEANUP_PROPS_PEDS_AND_TERMINATE) ENDIF ENDPROC PROC MANAGE_BOUNCER_PLAYER_TURN_AWAY(NIGHT_CLUB_STRUCT &nightClubData) INT iTurnAwayTriggerBit = 0 NIGHT_CLUB_PEDS bouncerNCPedData INT iBouncerIndex = 0 INT iBouncerClubPedId = 0 REPEAT 6 iBouncerIndex SWITCH iBouncerIndex CASE 0 iBouncerClubPedId = 46 iTurnAwayTriggerBit = PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_DANCEFLOOR_BOUNCER_TURN_AWAY BREAK CASE 1 iBouncerClubPedId = 47 iTurnAwayTriggerBit = PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_DJ_GROUND_BOUNCER_TURN_AWAY BREAK CASE 2 iBouncerClubPedId = 42 iTurnAwayTriggerBit = PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_DJ_F1_BOUNCER_TURN_AWAY BREAK CASE 3 iBouncerClubPedId = 40 iTurnAwayTriggerBit = PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_TOILET_BOUNCER_TURN_AWAY BREAK CASE 4 iBouncerClubPedId = 45 iTurnAwayTriggerBit = PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_VIP_BOUNCER_TURN_AWAY BREAK CASE 5 iBouncerClubPedId = 147 iTurnAwayTriggerBit = PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_HEAD_BOUNCER_TURN_AWAY ENDSWITCH INT iBouncerArrayId = nightClubData.iNightClubPedIDsReverse[iBouncerClubPedId] IF iBouncerArrayId > -1 bouncerNCPedData = nightClubData.activityPeds[iBouncerArrayId] IF DOES_ENTITY_EXIST(bouncerNCPedData.piScenePeds) AND NOT IS_ENTITY_DEAD(bouncerNCPedData.piScenePeds) AND (IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit) OR IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit+1)) STRING sTurnAwayAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" String sTurnAwayAnim = "mini_strip_club_idles_bouncer_stop_stop" FLOAT fStartPhase = 0.010 IF IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit+1) IF IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit) //This should never be set at the same time but clear it here anyway just in case REMOVE_ANIM_DICT(sTurnAwayAnimDict) CLEAR_BIT(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit) ENDIF sTurnAwayAnimDict = "ANIM@AMB@NIGHTCLUB@PEDS@" sTurnAwayAnim = "mini_strip_club_idles_bouncer_go_away_go_away" fStartPhase = 0.195 ENDIF REQUEST_ANIM_DICT(sTurnAwayAnimDict) REQUEST_ANIM_DICT("ANIM@AMB@NIGHTCLUB@PEDS@") IF HAS_ANIM_DICT_LOADED(sTurnAwayAnimDict) IF IS_ENTITY_PLAYING_ANIM(bouncerNCPedData.piScenePeds, sTurnAwayAnimDict, sTurnAwayAnim) IF GET_ENTITY_ANIM_CURRENT_TIME(bouncerNCPedData.piScenePeds, sTurnAwayAnimDict, sTurnAwayAnim) > 0.85 AND HAS_ANIM_DICT_LOADED("ANIM@AMB@NIGHTCLUB@PEDS@") CLEAR_BIT(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit) CLEAR_BIT(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, iTurnAwayTriggerBit+1) TASK_PLAY_ANIM(bouncerNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "amb_world_human_stand_guard_male_base", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, DEFAULT, AF_LOOPING, 0.0) REMOVE_ANIM_DICT(sTurnAwayAnimDict) REMOVE_ANIM_DICT("ANIM@AMB@NIGHTCLUB@PEDS@") ENDIF ELSE TASK_PLAY_ANIM(bouncerNCPedData.piScenePeds, sTurnAwayAnimDict, sTurnAwayAnim, DEFAULT, DEFAULT, DEFAULT, AF_HOLD_LAST_FRAME, fStartPhase) ENDIF ENDIF ENDIF ENDIF ENDREPEAT ENDPROC PROC MANAGE_CLOAKROOM_PED_ACCEPT_PAYMENT(NIGHT_CLUB_STRUCT &nightClubData) CONST_INT iCLOAKROOM_NIGHT_CLUB_PED_ID 146 INT iCloakRoomPedIndex = nightClubData.iNightClubPedIDsReverse[iCLOAKROOM_NIGHT_CLUB_PED_ID] IF iCloakRoomPedIndex = -1 CLEAR_BIT(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_CLOAKROOM_PED_WAVE) EXIT ENDIF NIGHT_CLUB_PEDS cloakRoomPedNCPedData = nightClubData.activityPeds[iCloakRoomPedIndex] IF DOES_ENTITY_EXIST(cloakRoomPedNCPedData.piScenePeds) AND NOT IS_ENTITY_DEAD(cloakRoomPedNCPedData.piScenePeds) IF IS_BIT_SET(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_CLOAKROOM_PED_WAVE) REQUEST_ANIM_DICT("ANIM@AMB@NIGHTCLUB@PEDS@") IF HAS_ANIM_DICT_LOADED("ANIM@AMB@NIGHTCLUB@PEDS@") IF IS_ENTITY_PLAYING_ANIM(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_e") IF GET_ENTITY_ANIM_CURRENT_TIME(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_e") > 0.99 TASK_PLAY_ANIM_ADVANCED(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_d_v2", cloakRoomPedNCPedData.vPos, << 0.000, 0.000, cloakRoomPedNCPedData.fHeading >>, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT,DEFAULT, AF_LOOPING|AF_EXTRACT_INITIAL_OFFSET|AF_USE_KINEMATIC_PHYSICS|AF_USE_MOVER_EXTRACTION, 0, DEFAULT, AIK_DISABLE_ARM_IK|AIK_DISABLE_LEG_IK) CLEAR_BIT(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_CLOAKROOM_PED_WAVE) ENDIF ELSE TASK_PLAY_ANIM_ADVANCED(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_e", cloakRoomPedNCPedData.vPos, << 0.000, 0.000, cloakRoomPedNCPedData.fHeading >>, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT,DEFAULT, AF_EXTRACT_INITIAL_OFFSET|AF_USE_KINEMATIC_PHYSICS|AF_USE_MOVER_EXTRACTION, 0, DEFAULT, AIK_DISABLE_ARM_IK|AIK_DISABLE_LEG_IK) ENDIF ENDIF ELSE REQUEST_ANIM_DICT("ANIM@AMB@NIGHTCLUB@PEDS@") IF cloakRoomPedNCPedData.bCurrentlyHeadTrackingPlayer IF HAS_ANIM_DICT_LOADED("ANIM@AMB@NIGHTCLUB@PEDS@") AND NOT IS_ENTITY_PLAYING_ANIM(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_d_v2") TASK_PLAY_ANIM_ADVANCED(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_d_v2", cloakRoomPedNCPedData.vPos, << 0.000, 0.000, cloakRoomPedNCPedData.fHeading >>, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT,DEFAULT, AF_LOOPING|AF_EXTRACT_INITIAL_OFFSET|AF_USE_KINEMATIC_PHYSICS|AF_USE_MOVER_EXTRACTION, 0, DEFAULT, AIK_DISABLE_ARM_IK|AIK_DISABLE_LEG_IK) ENDIF ELSE IF HAS_ANIM_DICT_LOADED("ANIM@AMB@NIGHTCLUB@PEDS@") AND NOT IS_ENTITY_PLAYING_ANIM(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_d") TASK_PLAY_ANIM_ADVANCED(cloakRoomPedNCPedData.piScenePeds, "ANIM@AMB@NIGHTCLUB@PEDS@", "anim_amb_prop_human_seat_bar_female_elbows_on_bar_idle_d", cloakRoomPedNCPedData.vPos, << 0.000, 0.000, cloakRoomPedNCPedData.fHeading >>, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT,DEFAULT, AF_LOOPING|AF_EXTRACT_INITIAL_OFFSET|AF_USE_KINEMATIC_PHYSICS|AF_USE_MOVER_EXTRACTION, 0, DEFAULT, AIK_DISABLE_ARM_IK|AIK_DISABLE_LEG_IK) ENDIF ENDIF ENDIF ELSE REMOVE_ANIM_DICT("ANIM@AMB@NIGHTCLUB@PEDS@") CLEAR_BIT(GlobalPlayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdNightclubData.iBSNightclub2, PROPERTY_BROADCAST_BS_NIGHTCLUB_TRIGGER_CLOAKROOM_PED_WAVE) ENDIF ENDPROC PROC MANAGE_DANCE_FLOOR_COLLISIONS(PLAYER_BROADCAST_DATA &PlayerBD[NUM_NETWORK_PLAYERS]) VECTOR vDanceFloorCentre = <<-1597.1,-3013.3,-79.0>> VECTOR vDanceFloorDimensions = <<4,4,2>> FLOAT fCapsuleSize = 0.17 INT i IF (g_iNightClubSetupState = NSS_FULLY_SETUP) REPEAT NETWORK_GET_MAX_NUM_PARTICIPANTS() i IF NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(i)) IF IS_ENTITY_AT_COORD(GET_PLAYER_PED(NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(i))),vDanceFloorCentre, vDanceFloorDimensions) IF PLAYER_ID() = NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(i)) FLOAT fLRMovement = GET_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_MOVE_LR) FLOAT fUDMovement = GET_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_MOVE_UD) IF ABSF(fLRMovement) > 0.5 OR ABSF(fUDMovement) > 0.5 IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) SET_PED_CAPSULE(PLAYER_PED_ID(), fCapsuleSize) PlayerBD[i].bIsPlayerCapsuleResized = TRUE ENDIF ELSE PlayerBD[i].bIsPlayerCapsuleResized = FALSE ENDIF ELIF PlayerBD[i].bIsPlayerCapsuleResized IF NOT IS_ENTITY_DEAD(GET_PLAYER_PED(NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(i)))) SET_PED_CAPSULE(GET_PLAYER_PED(NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(i))), fCapsuleSize) ENDIF ENDIF ELSE PlayerBD[i].bIsPlayerCapsuleResized = FALSE ENDIF ENDIF ENDREPEAT ENDIF ENDPROC PROC MAINTAIN_PEDS_READY_TO_BE_VIEWED(NIGHT_CLUB_STRUCT &nightClubStruct) BOOL bFoundAllPedsAnimating bFoundAllPedsAnimating = TRUE IF g_ncState = NC_STAGE_UPDATE_PED_BEHAVIOUR AND g_bNightClubPedsReadyToView = FALSE INT j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[j].piScenePeds) IF NOT g_bPerventNightClubPedsCacheData GET_NIGHTCLUB_PED_TYPE(j) ENDIF IF NOT SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE(nightClubStruct.activityPeds[j].eActiveActivity) IF nightClubStruct.activityPeds[j].eActiveActivity != AC_SLOT_NULL AND GET_SCRIPT_TASK_STATUS(nightClubStruct.activityPeds[j].piScenePeds, SCRIPT_TASK_PLAY_ANIM) <> PERFORMING_TASK bFoundAllPedsAnimating = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: nightClubStruct.activityPeds[", j, "].piScenePeds: bHasSyncSceneStarted = FALSE, Activity = ", GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[j].eActiveActivity), ", PedID = ", nightClubStruct.activityPeds[j].iNightClubPedID) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: nightClubStruct.activityPeds[", j, "].piScenePeds: bHasSyncSceneStarted = TRUE, Activity = ", GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[j].eActiveActivity), ", PedID = ", nightClubStruct.activityPeds[j].iNightClubPedID) ENDIF ENDIF IF nightClubStruct.activityPeds[j].eActiveActivity != AC_SLOT_NULL AND SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE(nightClubStruct.activityPeds[j].eActiveActivity) IF GET_SCRIPT_TASK_STATUS(nightClubStruct.activityPeds[j].piScenePeds, SCRIPT_TASK_SYNCHRONIZED_SCENE) <> PERFORMING_TASK bFoundAllPedsAnimating = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: SYNC_SCENE nightClubStruct.activityPeds[", j, "].piScenePeds: bHasSyncSceneStarted = FALSE, Activity = ", GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[j].eActiveActivity), ", PedID = ", nightClubStruct.activityPeds[j].iNightClubPedID) ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: SYNC_SCENE nightClubStruct.activityPeds[", j, "].piScenePeds: bHasSyncSceneStarted = TRUE, Activity = ", GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[j].eActiveActivity), ", PedID = ", nightClubStruct.activityPeds[j].iNightClubPedID) ENDIF ENDIF ENDIF ENDREPEAT IF NOT g_bDisableNightClubPedsPedReadyBailTimer IF HAS_NET_TIMER_EXPIRED(nightClubStruct.stPedReadyBailTimer, g_iNightClubPedsPedReadyBailTimer) bFoundAllPedsAnimating = TRUE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: taking to long bail") ENDIF ENDIF IF bFoundAllPedsAnimating = TRUE IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.stPedReadyToViewTimer) START_NET_TIMER(nightClubStruct.stPedReadyToViewTimer, TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: nightClubStruct.stPedReadyToViewTimer started") ELSE IF HAS_NET_TIMER_EXPIRED(nightClubStruct.stPedReadyToViewTimer, 500, TRUE) g_bNightClubPedsReadyToView = TRUE nightClubStruct.bInitialStagger = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_PEDS_READY_TO_BE_VIEWED: Peds ready") RESET_NET_TIMER(nightClubStruct.stPedReadyToViewTimer) RESET_NET_TIMER(nightClubStruct.stPedReadyBailTimer) ENDIF ENDIF ENDIF ELSE RESET_NET_TIMER(nightClubStruct.stPedReadyBailTimer) ENDIF ENDPROC //PROC MAINTAIN_AUDIO_TAGGING_LOGIC(NIGHT_CLUB_STRUCT &nightClubStruct) //// CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_AUDIO_TAGGING_LOGIC: GET_CURRENT_TRACK_PLAY_TIME: ", GET_CURRENT_TRACK_PLAY_TIME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID)), ", GET_CURRENT_TRACK_SOUND_NAME: ", GET_CURRENT_TRACK_SOUND_NAME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID))) //ENDPROC PROC MAINTAIN_GLOBAL_AUDIO_INTENSITY_LEVEL(NIGHT_CLUB_STRUCT &nightClubStruct) IF nightClubStruct.iCurrentStationID != -1 g_iNightClubAudioCurrentTime = GET_CURRENT_TRACK_PLAY_TIME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID)) NIGHTCLUB_AUDIO_TAGS ePrevTag = g_eNightClubAudioIntensityLevel GET_AUDIO_TAG_FROM_AUDIO_TRACK(GET_CURRENT_TRACK_SOUND_NAME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID)), g_iNightClubAudioCurrentTime, g_eNightClubAudioIntensityLevel, g_eNightClubAudioIntensityLevelNext, g_iNightClubAudioNextTagTime, nightClubStruct.iCurrentAudioIntensityTagID) IF ePrevTag != g_eNightClubAudioIntensityLevel CDEBUG1LN(DEBUG_NET_PED_DANCING, "MAINTAIN_GLOBAL_AUDIO_INTENSITY_LEVEL: Intensity level changed from ", getAudioTagString(ePrevTag), " to ", getAudioTagString(g_eNightClubAudioIntensityLevel), " track ", GET_STRING_AUDIO_TAG_FROM_AUDIO_TRACK_HASH(GET_CURRENT_TRACK_SOUND_NAME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID))), " (", GET_CURRENT_TRACK_SOUND_NAME(GET_RADIO_STATION_NAME(nightClubStruct.iCurrentStationID)), ")") INT i REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF DANCEFLOOR_GROUP_ANIMS(nightClubStruct.activityPeds[i].eActiveActivity) nightClubStruct.activityPeds[i].iDanceTransitionVariation = -1 nightClubStruct.activityPeds[i].iFacialAnimStartTime = -1 ENDIF ENDREPEAT // unload dicts SWITCH ePrevTag CASE AUDIO_TAG_LOW CASE AUDIO_TAG_NULL IF g_eNightClubAudioIntensityLevel != AUDIO_TAG_LOW AND g_eNightClubAudioIntensityLevel != AUDIO_TAG_NULL REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj@low_intesnsity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_low_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups@low_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups_transitions@from_low_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props@low_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_low_intensity") IF g_eNightClubAudioIntensityLevel != AUDIO_TAG_MEDIUM REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@club_ambientpeds@low-med_intensity") ENDIF ENDIF BREAK CASE AUDIO_TAG_MEDIUM IF g_eNightClubAudioIntensityLevel != AUDIO_TAG_MEDIUM REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj@med_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_med_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups@med_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups_transitions@from_med_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props@med_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_med_intensity") IF g_eNightClubAudioIntensityLevel != AUDIO_TAG_LOW AND g_eNightClubAudioIntensityLevel != AUDIO_TAG_NULL REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@club_ambientpeds@low-med_intensity") ENDIF ENDIF BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS IF g_eNightClubAudioIntensityLevel != AUDIO_TAG_HIGH AND g_eNightClubAudioIntensityLevel != AUDIO_TAG_HIGH_HANDS REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_hi_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups@hi_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups_transitions@from_hi_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props@hi_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_hi_intensity") REMOVE_ANIM_DICT("anim@amb@nightclub@dancers@club_ambientpeds@med-hi_intensity") ENDIF BREAK ENDSWITCH // load dicts SWITCH g_eNightClubAudioIntensityLevel CASE AUDIO_TAG_LOW CASE AUDIO_TAG_NULL IF ePrevTag != AUDIO_TAG_LOW AND ePrevTag != AUDIO_TAG_NULL REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj@low_intesnsity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_low_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups@low_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups_transitions@from_low_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props@low_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_low_intensity") IF ePrevTag != AUDIO_TAG_MEDIUM REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@club_ambientpeds@low-med_intensity") ENDIF ENDIF BREAK CASE AUDIO_TAG_MEDIUM IF ePrevTag != AUDIO_TAG_MEDIUM REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj@med_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_med_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups@med_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups_transitions@from_med_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props@med_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_med_intensity") IF ePrevTag != AUDIO_TAG_LOW AND ePrevTag != AUDIO_TAG_NULL REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@club_ambientpeds@low-med_intensity") ENDIF ENDIF BREAK CASE AUDIO_TAG_HIGH CASE AUDIO_TAG_HIGH_HANDS IF ePrevTag != AUDIO_TAG_HIGH AND ePrevTag != AUDIO_TAG_HIGH_HANDS REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_facedj_transitions@from_hi_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups@hi_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_groups_transitions@from_hi_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props@hi_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@crowddance_single_props_transitions@from_hi_intensity") REQUEST_ANIM_DICT("anim@amb@nightclub@dancers@club_ambientpeds@med-hi_intensity") ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDPROC PROC UpdateExpectedTimeUntilNextPedProcess(NIGHT_CLUB_STRUCT &nightClubStruct) // get current fps FLOAT fFrameTime = GET_FRAME_TIME() // how many frame to process again? FLOAT fNumFrames = TO_FLOAT(MAX_NUMBER_OF_NIGHTCLUB_PEDS) / TO_FLOAT(nightClubStruct.iStaggerPerFrame) FLOAT fTimeUntilNextProcess = (fFrameTime * fNumFrames) * 1000.0 // convert to ms INT iTimeUntilNextProcess = FLOOR(fTimeUntilNextProcess) nightClubStruct.iExpectedTimeToProcessStaggerPed = iTimeUntilNextProcess ENDPROC FUNC BOOL Is_Approaching_End_Of_Scene(NIGHT_CLUB_STRUCT &nightClubStruct, NIGHT_CLUB_PEDS &nightClubPed, INT iPedID = -1) INT iThisTime = GET_GAME_TIMER() #IF IS_DEBUG_BUILD // INT iSinceLastProcess = iThisTime - nightClubPed.iLastProcessTime // CDEBUG1LN(DEBUG_NET_PED_DANCING, "Is_Approaching_End_Of_Scene: - iPedID: ", iPedID, " iSinceLastProcess = ", iSinceLastProcess) #ENDIF nightClubPed.iLastProcessTime = iThisTime IF (iPedID = -1) // do nothing, fix for release compiler ENDIF // if we are 70% of the way towards then PhaseToStopScene then return TRUE IF (nightClubPed.bHasSyncSceneStarted) IF SHOULD_ACTIVITY_BE_PLAYED_AS_SYNC_SCENE(nightClubPed.eActiveActivity) IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubPed.iSceneID) INT iRemainingTime = AnimTimeRemaining(nightClubPed) INT iOffset = 500 IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) iOffset = 1500 ENDIF IF (iRemainingTime < (nightClubStruct.iExpectedTimeToProcessStaggerPed + iOffset)) OR ExpectedFramesUntilEndOfAnim(nightClubPed) <= 1 OR GET_SYNCHRONIZED_SCENE_PHASE(nightClubPed.iSceneID) >= 1.0 // CDEBUG1LN(DEBUG_NET_PED_DANCING, "Is_Approaching_End_Of_Scene (anim):TRUE - pedid: ", iPedID, " iRemainingTime = ", iRemainingTime, " iExpectedTimeToProcessStaggerPed = ", nightClubStruct.iExpectedTimeToProcessStaggerPed) RETURN TRUE ENDIF IF IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) //last anim, will have to cut for mix so keep processing AND nightClubPed.iCurrentSequence >= GET_NC_DJ_LAST_ANIM_CLIP_INDEX(nightClubPed.eActiveActivity) RETURN TRUE ENDIF ELSE RETURN TRUE ENDIF ELSE IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) OR IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "Is_Approaching_End_Of_Scene: - pedid: ", iPedID, " DANCEFLOOR_GROUP_ANIMS") SCRIPTTASKSTATUS TaskStatus = GET_SCRIPT_TASK_STATUS(nightClubPed.piScenePeds, SCRIPT_TASK_PLAY_ANIM) IF (TaskStatus = PERFORMING_TASK) INT iRemainingTime = AnimTimeRemaining(nightClubPed) IF (iRemainingTime < (nightClubStruct.iExpectedTimeToProcessStaggerPed + 500)) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "Is_Approaching_End_Of_Scene (anim):TRUE - pedid: ", iPedID, " iRemainingTime = ", iRemainingTime, " iExpectedTimeToProcessStaggerPed = ", nightClubStruct.iExpectedTimeToProcessStaggerPed) RETURN TRUE ENDIF IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) NC_ACTIVITY_ANIM_SEQUENCE activityAnimSequence GET_DANCE_ANIM_DATA(nightClubPed.eActiveActivity, activityAnimSequence, GET_TRANSITION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_LENGTH_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_VARIATION_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_INTENSITY_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient), GET_NEXT_INTENSITY_FROM_ANIM_VARIENT(nightClubPed.iAnimVarient)) IF (NOT IS_ENTITY_PLAYING_ANIM(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) OR GET_ENTITY_ANIM_CURRENT_TIME(nightClubPed.piScenePeds, activityAnimSequence.activitySyncScenePed[0].sAnimDict, activityAnimSequence.activitySyncScenePed[0].sAnimClip) >= 1.0) RETURN TRUE ENDIF ENDIF ELSE RETURN TRUE ENDIF ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "Is_Approaching_End_Of_Scene: - pedid: ", iPedID, " NOT - DANCEFLOOR_GROUP_ANIMS") ENDIF ENDIF ELSE IF DANCEFLOOR_GROUP_ANIMS(nightClubPed.eActiveActivity) OR IS_MULTI_ANIM_SEQUENCE_ACTIVITY(nightClubPed.eActiveActivity) OR IS_DJ_ACTIVITY(nightClubPed.eActiveActivity) // end of scene, beginning of scene, same thing really RETURN TRUE ENDIF // CDEBUG1LN(DEBUG_NET_PED_DANCING, "Is_Approaching_End_Of_Scene: FALSE - pedid: ", iPedID, " bHasSyncSceneStarted") ENDIF RETURN FALSE ENDFUNC #IF IS_DEBUG_BUILD PROC Process_DJ_Sig_Move(NIGHT_CLUB_STRUCT &nightClubStruct) INT i VECTOR vScenePos vScenePos = <<-1604.66, -3012.58, -80.0>> STRING strAnimDict = "" MODEL_NAMES ModelName1 = DUMMY_MODEL_FOR_SCRIPT MODEL_NAMES ModelName2 = DUMMY_MODEL_FOR_SCRIPT IF (g_bDoDJSignatureMove) SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN strAnimDict = "anim@amb@nightclub@djs@solomun@" ModelName1 = INT_TO_ENUM(MODEL_NAMES, HASH("BA_Prop_Battle_Headphones_DJ")) ModelName2 = Prop_Wine_Glass BREAK CASE DJ_DIXON strAnimDict = "anim@amb@nightclub@djs@dixon@" ModelName1 = INT_TO_ENUM(MODEL_NAMES, HASH("BA_Prop_Battle_Headphones_DJ")) ModelName2 = Prop_Wine_Glass BREAK CASE DJ_TALE_OF_US strAnimDict = "anim@amb@nightclub@djs@tale_of_us@" ModelName1 = INT_TO_ENUM(MODEL_NAMES, HASH("BA_Prop_Battle_Headphones_DJ")) ModelName2 = Prop_Laptop_01a BREAK CASE DJ_BLACK_MADONNA strAnimDict = "anim@amb@nightclub@djs@black_madonna@" ModelName1 = INT_TO_ENUM(MODEL_NAMES, HASH("BA_Prop_Battle_Headphones_DJ")) ModelName2 = INT_TO_ENUM(MODEL_NAMES, HASH("P_Tumbler_CS2_S")) BREAK ENDSWITCH SWITCH g_iDJSignatureMoveState // load stuff CASE 0 REQUEST_ANIM_DICT(strAnimDict) REQUEST_MODEL(ModelName1) REQUEST_MODEL(ModelName2) IF HAS_ANIM_DICT_LOADED(strAnimDict) AND HAS_MODEL_LOADED(ModelName1) AND HAS_MODEL_LOADED(ModelName2) g_iDJSignatureMoveState++ CDEBUG1LN(DEBUG_NET_PED_DANCING, "Process_DJ_Sig_Move: loaded stuff.") g_iDJ_active_id1 = -1 g_iDJ_active_id2 = -1 ENDIF BREAK // create stuff / grab peds CASE 1 // grab dj peds REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF (nightClubStruct.activityPeds[i].iNCPedType = ENUM_TO_INT(NC_DJ)) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) g_ped_DJ_1 = nightClubStruct.activityPeds[i].piScenePeds nightClubStruct.activityPeds[i].iFacialAnimDuration = 0 g_iDJ_active_id1 = i CLEAR_PED_TASKS_IMMEDIATELY(g_ped_DJ_1) ENDIF ENDIF IF (nightClubStruct.activityPeds[i].iNCPedType = ENUM_TO_INT(NC_DJ_2)) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) g_ped_DJ_2 = nightClubStruct.activityPeds[i].piScenePeds nightClubStruct.activityPeds[i].iFacialAnimDuration = 0 g_iDJ_active_id2 = i CLEAR_PED_TASKS_IMMEDIATELY(g_ped_DJ_2) ENDIF ENDIF ENDREPEAT // create objects g_objectDJSigMove_1 = CREATE_OBJECT(ModelName1, vScenePos, FALSE) g_objectDJSigMove_2 = CREATE_OBJECT(ModelName2, vScenePos, FALSE) IF (g_eCurrentPlayingDJ = DJ_TALE_OF_US) g_objectDJSigMove_3 = CREATE_OBJECT(ModelName1, vScenePos, FALSE) g_objectDJSigMove_4 = CREATE_OBJECT(ModelName2, vScenePos, FALSE) ENDIF g_iDJSignatureMoveState++ CDEBUG1LN(DEBUG_NET_PED_DANCING, "Process_DJ_Sig_Move: created stuff.") BREAK // start sync scene CASE 2 g_iDJSigMove_Scene = CREATE_SYNCHRONIZED_SCENE(<<-1604.66, -3012.58, -80.0>>, <<0,0,0>>) SWITCH g_eCurrentPlayingDJ CASE DJ_SOLOMUN TASK_SYNCHRONIZED_SCENE(g_ped_DJ_1, g_iDJSigMove_Scene, strAnimDict, "NEW_SOL_DANCE_A_Sol", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_1, g_iDJSigMove_Scene, "NEW_SOL_DANCE_A_Headphones", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_2, g_iDJSigMove_Scene, "NEW_SOL_DANCE_A_WineGlass", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) BREAK CASE DJ_DIXON TASK_SYNCHRONIZED_SCENE(g_ped_DJ_1, g_iDJSigMove_Scene, strAnimDict, "DIXN_DANCE_A_Dixon", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_1, g_iDJSigMove_Scene, "DIXN_DANCE_A_Headphones", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_2, g_iDJSigMove_Scene, "DIXN_DANCE_A_WineGlass", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) BREAK CASE DJ_TALE_OF_US TASK_SYNCHRONIZED_SCENE(g_ped_DJ_1, g_iDJSigMove_Scene, strAnimDict, "TOU_SYNC_A_TalCC", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) TASK_SYNCHRONIZED_SCENE(g_ped_DJ_2, g_iDJSigMove_Scene, strAnimDict, "TOU_SYNC_A_TalMM", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_1, g_iDJSigMove_Scene, "TOU_SYNC_A_Headphones", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_2, g_iDJSigMove_Scene, "TOU_SYNC_A_Laptop_01a", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_3, g_iDJSigMove_Scene, "TOU_SYNC_A_Headphones^1", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_4, g_iDJSigMove_Scene, "TOU_SYNC_A_Laptop_01a^1 ", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) BREAK CASE DJ_BLACK_MADONNA TASK_SYNCHRONIZED_SCENE(g_ped_DJ_1, g_iDJSigMove_Scene, strAnimDict, "BMAD_DANCE_A_BlaMadon", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_1, g_iDJSigMove_Scene, "BMAD_DANCE_A_Headphones", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) PLAY_SYNCHRONIZED_ENTITY_ANIM(g_objectDJSigMove_2, g_iDJSigMove_Scene, "BMAD_DANCE_A_Tumbler_CS2_S", strAnimDict,INSTANT_BLEND_IN, INSTANT_BLEND_OUT,ENUM_TO_INT(SYNCED_SCENE_DONT_INTERRUPT)) BREAK ENDSWITCH SET_SYNCHRONIZED_SCENE_PHASE(g_iDJSigMove_Scene, 0.0) g_iDJSignatureMoveState++ CDEBUG1LN(DEBUG_NET_PED_DANCING, "Process_DJ_Sig_Move: started sync scene.") BREAK // wait for sync scene to finish CASE 3 IF GET_SYNCHRONIZED_SCENE_PHASE(g_iDJSigMove_Scene) >= 1.0 IF DOES_ENTITY_EXIST(g_objectDJSigMove_1) DELETE_OBJECT(g_objectDJSigMove_1) ENDIF IF DOES_ENTITY_EXIST(g_objectDJSigMove_2) DELETE_OBJECT(g_objectDJSigMove_2) ENDIF IF DOES_ENTITY_EXIST(g_objectDJSigMove_3) DELETE_OBJECT(g_objectDJSigMove_3) ENDIF IF DOES_ENTITY_EXIST(g_objectDJSigMove_4) DELETE_OBJECT(g_objectDJSigMove_4) ENDIF IF DOES_ENTITY_EXIST(g_ped_DJ_1) AND NOT IS_ENTITY_DEAD(g_ped_DJ_1) CLEAR_PED_TASKS_IMMEDIATELY(g_ped_DJ_1) SET_ENTITY_COORDS_NO_OFFSET(g_ped_DJ_1, GetNCPedPos(34)) SET_ENTITY_HEADING(g_ped_DJ_1, GetNCPedHeading(34)) ENDIF IF DOES_ENTITY_EXIST(g_ped_DJ_2) AND NOT IS_ENTITY_DEAD(g_ped_DJ_2) CLEAR_PED_TASKS_IMMEDIATELY(g_ped_DJ_2) SET_ENTITY_COORDS_NO_OFFSET(g_ped_DJ_2, GetNCPedPos(119)) SET_ENTITY_HEADING(g_ped_DJ_2, GetNCPedHeading(119)) ENDIF g_bDoDJSignatureMove = FALSE g_iDJSignatureMoveState = 0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "Process_DJ_Sig_Move: started sync finished.") ENDIF BREAK ENDSWITCH // give facial anims IF NOT (g_iDJ_active_id1 = -1) RUN_NC_FACIAL_ANIM(nightClubStruct.activityPeds[g_iDJ_active_id1]) ENDIF IF NOT (g_iDJ_active_id2 = -1) RUN_NC_FACIAL_ANIM(nightClubStruct.activityPeds[g_iDJ_active_id2]) ENDIF ELSE IF NOT (g_iDJSignatureMoveState = 0) g_iDJSignatureMoveState = 0 ENDIF ENDIF ENDPROC #ENDIF FUNC BOOL ShouldCullThisNCPed(INT iNCPed, INT iNumberToCull) IF g_iNightClubPedsMainAreaLayout_Variation = 0 SWITCH iNCPed CASE 1 IF (iNumberToCull >= 1) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 3 IF (iNumberToCull >= 2) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 13 IF (iNumberToCull >= 3) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 52 IF (iNumberToCull >= 4) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 53 IF (iNumberToCull >= 5) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 57 IF (iNumberToCull >= 6) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 58 IF (iNumberToCull >= 7) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 60 IF (iNumberToCull >= 8) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 61 IF (iNumberToCull >= 9) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 65 IF (iNumberToCull >= 10) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 66 IF (iNumberToCull >= 11) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 67 IF (iNumberToCull >= 12) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 77 IF (iNumberToCull >= 13) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 78 IF (iNumberToCull >= 14) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 84 IF (iNumberToCull >= 15) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 85 IF (iNumberToCull >= 16) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 86 IF (iNumberToCull >= 17) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 87 IF (iNumberToCull >= 18) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 93 IF (iNumberToCull >= 19) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 94 IF (iNumberToCull >= 20) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 95 IF (iNumberToCull >= 21) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 96 IF (iNumberToCull >= 22) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 97 IF (iNumberToCull >= 23) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 98 IF (iNumberToCull >= 24) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 99 IF (iNumberToCull >= 25) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 101 IF (iNumberToCull >= 26) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 102 IF (iNumberToCull >= 27) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 110 IF (iNumberToCull >= 28) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 121 IF (iNumberToCull >= 29) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 103 CASE 104 IF (iNumberToCull >= 30) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 113 CASE 116 IF (iNumberToCull >= 32) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 123 CASE 124 IF (iNumberToCull >= 34) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 5 CASE 20 IF (iNumberToCull >= 36) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 50 CASE 68 IF (iNumberToCull >= 38) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 54 CASE 59 IF (iNumberToCull >= 40) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 6 CASE 33 IF (iNumberToCull >= 42) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 72 CASE 73 IF (iNumberToCull >= 44) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 74 CASE 76 IF (iNumberToCull >= 46) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 80 CASE 82 CASE 83 IF (iNumberToCull >= 48) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK ENDSWITCH ELSE SWITCH iNCPed CASE 1 IF (iNumberToCull >= 1) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 3 IF (iNumberToCull >= 2) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 13 IF (iNumberToCull >= 3) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 26 IF (iNumberToCull >= 4) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 52 IF (iNumberToCull >= 5) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 53 IF (iNumberToCull >= 6) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 57 IF (iNumberToCull >= 7) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 58 IF (iNumberToCull >= 8) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 61 IF (iNumberToCull >= 9) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 66 IF (iNumberToCull >= 10) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 77 IF (iNumberToCull >= 11) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 78 IF (iNumberToCull >= 12) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 83 IF (iNumberToCull >= 13) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 84 IF (iNumberToCull >= 14) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 85 IF (iNumberToCull >= 15) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 86 IF (iNumberToCull >= 16) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 87 IF (iNumberToCull >= 17) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 95 IF (iNumberToCull >= 18) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 96 IF (iNumberToCull >= 19) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 97 IF (iNumberToCull >= 20) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 99 IF (iNumberToCull >= 21) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 101 IF (iNumberToCull >= 22) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 110 IF (iNumberToCull >= 23) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 114 IF (iNumberToCull >= 24) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 115 IF (iNumberToCull >= 25) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 119 IF (iNumberToCull >= 26) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 121 IF (iNumberToCull >= 27) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 103 CASE 104 IF (iNumberToCull >= 28) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 113 CASE 116 IF (iNumberToCull >= 30) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 123 CASE 124 IF (iNumberToCull >= 32) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 54 CASE 59 IF (iNumberToCull >= 34) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 6 CASE 33 IF (iNumberToCull >= 36) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 60 CASE 67 IF (iNumberToCull >= 38) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 72 CASE 73 IF (iNumberToCull >= 40) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 74 CASE 76 IF (iNumberToCull >= 42) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 75 CASE 79 CASE 81 IF (iNumberToCull >= 44) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 80 CASE 82 IF (iNumberToCull >= 47) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK CASE 93 CASE 94 IF (iNumberToCull >= 49) PRINTLN("ShouldCullThisNCPed - TRUE - iNCPed = ", iNCPed, ", iNumberToCull= ", iNumberToCull) RETURN TRUE ENDIF BREAK ENDSWITCH ENDIF RETURN FALSE ENDFUNC FUNC INT CountTotalCullableNCPeds() INT iCount INT i REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF ShouldCullThisNCPed(i, MAX_NUMBER_OF_NIGHTCLUB_PEDS) iCount++ ENDIF ENDREPEAT RETURN iCount ENDFUNC PROC UpdateTotalExpectedPedsInMainHall(NIGHT_CLUB_STRUCT &nightClubStruct) INT i INT iCount iCount = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF (VMAG(GetNCPedPos(i)) > 0.1) AND (GetNCPedType(i) != -1) iCount++ ENDIF ENDREPEAT nightClubStruct.iTotalExpectedPedsInMainHall = iCount nightClubStruct.iTotalReservedMissionPeds = GET_NUM_RESERVED_MISSION_PEDS(TRUE) nightClubStruct.iTotalCullablePeds = CountTotalCullableNCPeds() PRINTLN("UpdateTotalExpectedPedsInMainHall iTotalExpectedPedsInMainHall = ", nightClubStruct.iTotalExpectedPedsInMainHall, " iTotalReservedMissionPeds = ", nightClubStruct.iTotalReservedMissionPeds, " iTotalCullablePeds = ", nightClubStruct.iTotalCullablePeds) ENDPROC FUNC BOOL ShouldCullNCPed(INT iNCPedID, INT iCurrentExpectedTotalInMainHall, INT iCurrentReservedPeds, INT iTotalCullablePeds) INT iParticipant INT iPlayerCount REPEAT NETWORK_GET_MAX_NUM_PARTICIPANTS() iParticipant IF NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(iParticipant)) iPlayerCount++ ENDIF ENDREPEAT INT iTotal = iCurrentExpectedTotalInMainHall + iCurrentReservedPeds IF iPlayerCount > 20 iTotal += 35 ELIF iPlayerCount > 12 iTotal += 20 ENDIF // if the total is greater than 125 then we need to start culling. IF (iTotal > MAX_NUM_OF_ALLOWED_PEDS) INT iNumberToCull = iTotal - MAX_NUM_OF_ALLOWED_PEDS PRINTLN("ShouldCullNCPed - iNumberToCull = ", iNumberToCull) IF (iNumberToCull > iTotalCullablePeds+2) //increased by 2 for the case when dj's are not yet cleaned up after a changeover and values are not updated before a renovation is triggered PRINTLN("ShouldCullNCPed - iTotal = ", iTotal, " iNumberToCull = ", iNumberToCull, " iTotalCullablePeds = ", iTotalCullablePeds, " iPlayerCount = ", iPlayerCount) SCRIPT_ASSERT("ShouldCullNCPed - reached maximum number we can cull.") ENDIF RETURN ShouldCullThisNCPed(iNCPedID, iNumberToCull) ENDIF RETURN FALSE ENDFUNC PROC Process_Ped_Behaviour(NIGHT_CLUB_STRUCT &nightClubStruct, INT k, NC_ACTIVITY_MAIN &activityMain) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE //TEXT_LABEL_63 str //str = "Process_Ped_Behaviour - s " //str += k ADD_SCRIPT_PROFILE_MARKER("Process_Ped_Behaviour - start") #ENDIF #ENDIF IF (nightClubStruct.bDoStagger) AND NOT nightClubStruct.bInitialStagger INT iStaggerMin = nightClubStruct.iProcessStagger INT iStaggerMax = iStaggerMin + nightClubStruct.iStaggerPerFrame BOOL bIsInsideStagger = FALSE IF (k >= iStaggerMin) AND (k < iStaggerMax) bIsInsideStagger = TRUE ELSE IF ((k+MAX_NUMBER_OF_NIGHTCLUB_PEDS) >= iStaggerMin) AND ((k+MAX_NUMBER_OF_NIGHTCLUB_PEDS) < iStaggerMax) bIsInsideStagger = TRUE ENDIF ENDIF IF NOT (nightClubStruct.bDoProcessEveryFrame[k]) AND NOT (bIsInsideStagger) // dont process this frame #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("stagger check") #ENDIF #ENDIF EXIT ENDIF nightClubStruct.bDoProcessEveryFrame[k] = FALSE // default value // Update a max of 10 ped animations per frame B*6495275 IF (nightClubStruct.iProcessedThisFrame >= MAX_NUMBER_NC_PED_ANIMS_PROCESSED_PER_FRAME) EXIT ENDIF ENDIF // Cull offscreen peds IF nightClubStruct.activityPeds[k].iOffsetNCPedId = -1 AND (ShouldCullNCPed(nightClubStruct.activityPeds[k].iNightClubPedID, nightClubStruct.iTotalExpectedPedsInMainHall, nightClubStruct.iTotalReservedMissionPeds, nightClubStruct.iTotalCullablePeds)) AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[k].piScenePeds) AND NOT IS_ENTITY_ON_SCREEN(nightClubStruct.activityPeds[k].piScenePeds) BOOL bCleanup = TRUE INT iChildCount REPEAT MAX_NUMBER_NC_PED_OFFSET_CHILDREN iChildCount IF nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount] != -1 AND nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]] != -1 AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]]].piScenePeds) AND IS_ENTITY_ON_SCREEN(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]]].piScenePeds) bCleanup = FALSE BREAKLOOP ENDIF ENDREPEAT IF bCleanup SET_BIT(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[k].iNightClubPedID], NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR - CULLING PED ID: ", nightClubStruct.activityPeds[k].iNightClubPedID) iChildCount = 0 CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: ShouldCullNCPed = TRUE - Culling offscreen ped ID ", nightClubStruct.activityPeds[k].iNightClubPedID) REPEAT MAX_NUMBER_NC_PED_OFFSET_CHILDREN iChildCount IF nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount] != -1 AND nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]] != -1 CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: ShouldCullNCPed = TRUE - Culling offscreen ped ID ", nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]) INT iChildSlot = nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]] IF iChildSlot >= 0 AND iChildSlot < MAX_NUMBER_OF_NIGHTCLUB_PEDS SET_BIT(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]]].iNightClubPedID], NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR - CULLING CHILD PED ID: ", nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]]].iNightClubPedID) ENDIF CLEANUP_NIGHT_CLUB_PED(nightClubStruct, nightClubStruct.iNightClubPedIDsReverse[nightClubStruct.activityPeds[k].iOffsetNCPedChildrenId[iChildCount]]) ENDIF ENDREPEAT CLEANUP_NIGHT_CLUB_PED(nightClubStruct, k) EXIT ENDIF ENDIF //INT j,i,l CLEAR_ACTIVITY_PROPS_DATA(activityMain) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("CLEAR_ACTIVITY_PROPS_DATA") #ENDIF #ENDIF IF nightClubStruct.activityPeds[k].iActiveSlot != -1 AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[k].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[k].piScenePeds) #IF IS_DEBUG_BUILD IF (g_bDoDJSignatureMove) IF (nightClubStruct.activityPeds[k].iNCPedType = ENUM_TO_INT(NC_DJ)) OR (nightClubStruct.activityPeds[k].iNCPedType = ENUM_TO_INT(NC_DJ_2)) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: dj, while g_bDoDJSignatureMove. exit") EXIT ENDIF ENDIF #ENDIF // CLEAR_ACTIVITY_PROPS_DATA(activityMain) IF nightClubStruct.activityPeds[k].iOffsetNCPedId = -1 // do not process if we are an offset child, the parent will process for us ActivityMain.vActPosOrigin = ActualPos(nightClubStruct.activityPeds[k].iNightClubPedID) ActivityMain.fActHeading = ActualHeading(nightClubStruct.activityPeds[k].iNightClubPedID) IF Is_Approaching_End_Of_Scene(nightClubStruct, nightClubStruct.activityPeds[k], nightClubStruct.activityPeds[k].iNightClubPedID) nightClubStruct.bDoProcessEveryFrame[k] = TRUE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: setting to process every frame , k = ", k, " pedid = ", nightClubStruct.activityPeds[k].iNightClubPedID) ENDIF IF RUN_NC_ANIM_LOCAL_SYNC_SCENE_SEQUENCE(nightClubStruct, activityMain, nightClubStruct.activityPeds[k], nightClubStruct.activityPeds[k].iNightClubPedID) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: just been given anims, k = ", k, " pedid = ", nightClubStruct.activityPeds[k].iNightClubPedID) nightClubStruct.bDoProcessEveryFrame[k] = TRUE nightClubStruct.iProcessedThisFrame++ ENDIF ENDIF // Run facial anims RUN_NC_FACIAL_ANIM(nightClubStruct.activityPeds[k]) ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_UPDATE_PED_BEHAVIOUR: nightClubStruct.activityPeds[", k, "] doesn't have an assigned activity slot or doesn't exist") ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("Process Behaviour") #ENDIF #ENDIF MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC(nightClubStruct, nightClubStruct.activityPeds[k] #IF IS_DEBUG_BUILD, k #ENDIF) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MAINTAIN_HEAD_TRACKING_BETWEEN_NC_PEDS_LOGIC") #ENDIF #ENDIF MAINTAIN_NC_PEDS_SPEECH(nightClubStruct.activityPeds[k], nightClubStruct.sPedsForConversation #IF IS_DEBUG_BUILD, nightClubStruct.sDebugSpeech #ENDIF) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MAINTAIN_NC_PEDS_SPEECH") #ENDIF #ENDIF ENDPROC PROC UPDATE_SERVER_BROADCAST_DATA(SERVER_BROADCAST_DATA &ServerBD) IF NETWORK_IS_HOST_OF_THIS_SCRIPT() IF ServerBD.ncState != g_ncState ServerBD.ncState = g_ncState ENDIF ENDIF ENDPROC FUNC BOOL IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE(NIGHT_CLUB_STRUCT &nightClubStruct, SERVER_BROADCAST_DATA &ServerBD) IF GB_GET_MEGA_BUSINESS_VARIATION_PLAYER_IS_ON(PLAYER_ID()) = MBV_COLLECT_DJ_CRASH IF MPGlobalsAmbience.bNightclubSetupComplete = TRUE // SAFE TO CONTINUE CDEBUG1LN(DEBUG_NET_PED_DANCING, "IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE: Player is on MBV_COLLECT_DJ_CRASH and MPGlobalsAmbience.bNightclubSetupComplete = TRUE") ELSE RETURN FALSE CWARNINGLN(DEBUG_NET_PED_DANCING, "IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE: Player is on MBV_COLLECT_DJ_CRASH and MPGlobalsAmbience.bNightclubSetupComplete = FALSE") ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE: Player is not on MBV_COLLECT_DJ_CRASH") // SAFE TO CONTINUE ENDIF IF NETWORK_IS_HOST_OF_THIS_SCRIPT() // SAFE TO CONTINUE ELSE IF ServerBD.ncState > NC_STAGE_INIT // SAFE TO CONTINUE ELSE CWARNINGLN(DEBUG_NET_PED_DANCING, "IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE: CLIENT: Server hasn't proceded from init stage yet, preventing client from proceding") RETURN FALSE ENDIF ENDIF IF ServerBD.iHostCompletedSetup <= nightClubStruct.iCompletedSetup CWARNINGLN(DEBUG_NET_PED_DANCING, "IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE: CLIENT: ServerBD.iHostCompletedSetup (", ServerBD.iHostCompletedSetup, ") <= nightClubStruct.iCompletedSetup (", nightClubStruct.iCompletedSetup, ")") RETURN FALSE ENDIF RETURN TRUE ENDFUNC #IF IS_DEBUG_BUILD PROC CREATE_NIGHT_CLUB_WIDGET(NIGHT_CLUB_STRUCT &nightClubStruct, SERVER_BROADCAST_DATA &serverBD, PLAYER_BROADCAST_DATA &PlayerBD[NUM_NETWORK_PLAYERS]) INT i TEXT_LABEL_63 str START_WIDGET_GROUP("Nightclubpeds") START_WIDGET_GROUP("Signature Move") ADD_WIDGET_BOOL("g_bDoDJSignatureMove", g_bDoDJSignatureMove) ADD_WIDGET_INT_READ_ONLY("g_iDJSignatureMoveState", g_iDJSignatureMoveState) ADD_WIDGET_INT_READ_ONLY("g_iDJSigMove_Scene", g_iDJSigMove_Scene) STOP_WIDGET_GROUP() START_WIDGET_GROUP("serverbd") ADD_WIDGET_INT_READ_ONLY("iHostCompletedSetup", serverBD.iHostCompletedSetup) ADD_WIDGET_INT_READ_ONLY("iToiletLayout", serverBD.iToiletLayout) ADD_WIDGET_INT_READ_ONLY("iHallwayLayout", serverBD.iHallwayLayout) ADD_WIDGET_INT_READ_ONLY("iMainArea", serverBD.iMainArea) ADD_WIDGET_INT_READ_ONLY("iMainAreaVariation", serverBD.iMainAreaVariation) ADD_WIDGET_INT_READ_ONLY("iTonyPosition", serverBD.iTonyPosition) ADD_WIDGET_INT_READ_ONLY("iLazlowPosition", serverBD.iLazlowPosition) ADD_WIDGET_INT_READ_ONLY("iClientele", serverBD.iClientele) ADD_WIDGET_INT_READ_ONLY("iClienteleVariation", serverBD.iClienteleVariation) STOP_WIDGET_GROUP() START_WIDGET_GROUP("playerBD") REPEAT NUM_NETWORK_PLAYERS i str = "bIsPlayerCapsuleResized[" str += i str += "]" ADD_WIDGET_BOOL(str, PlayerBD[i].bIsPlayerCapsuleResized) ENDREPEAT STOP_WIDGET_GROUP() START_WIDGET_GROUP("LAYOUTS") ADD_WIDGET_BOOL("g_bNightClubUseWidgetValues", g_bNightClubUseWidgetValues) ADD_WIDGET_INT_SLIDER("clientele", g_iNightClubClientele_WidgetValue, -1, 2, 1) ADD_WIDGET_INT_SLIDER("clientele variation", g_iNightClubClienteleVariation_WidgetValue, -1, 2, 1) ADD_WIDGET_INT_SLIDER("tony position ", g_iWidgetTonyPosition, -1, 8, 1) ADD_WIDGET_INT_SLIDER("lazlow position ", g_iWidgetLazlowPosition, -1, 8, 1) ADD_WIDGET_INT_SLIDER("hall layout", g_iHallwayPedLayoutWidget, -1, 4, 1) ADD_WIDGET_INT_SLIDER("toilet layout", g_iToiletPedsLayoutWidget, -1, 4, 1) ADD_WIDGET_INT_SLIDER("main layout ", g_iMainAreaLayoutWidget, -1, 4, 1) ADD_WIDGET_INT_SLIDER("main variation ", g_iMainAreaLayoutVariationWidget, -1, 1, 1) STOP_WIDGET_GROUP() START_WIDGET_GROUP("globals") ADD_WIDGET_BOOL("g_bNightClubUseWidgetValues", g_bNightClubUseWidgetValues) ADD_WIDGET_BOOL("g_bNightClubPedsReadyToView", g_bNightClubPedsReadyToView) ADD_WIDGET_BOOL("g_bTurnOnNightClubPeds", g_bTurnOnNightClubPeds) ADD_WIDGET_BOOL("g_bTurnOnNCExtraBouncers", g_bTurnOnNCExtraBouncers) ADD_WIDGET_BOOL("g_bTurnOnNCExtraBartenders", g_bTurnOnNCExtraBartenders) ADD_WIDGET_BOOL("g_bTurnOnNCDJ", g_bTurnOnNCDJ) ADD_WIDGET_BOOL("g_bTurnOnNCDJEntourage", g_bTurnOnNCDJEntourage) ADD_WIDGET_BOOL("g_bTurnOnNCPodiumDancers", g_bTurnOnNCPodiumDancers) ADD_WIDGET_BOOL("g_bTurnOnNCExtraDJ", g_bTurnOnNCExtraDJ) ADD_WIDGET_BOOL("g_bTurnOnNCStaffPeds", g_bTurnOnNCStaffPeds) ADD_WIDGET_BOOL("g_bTurnOnNCCustomerPeds", g_bTurnOnNCCustomerPeds) ADD_WIDGET_BOOL("g_bOutputPedVariations", g_bOutputPedVariations) ADD_WIDGET_BOOL("g_bDebugNightClubKick", g_bDebugNightClubKick) ADD_WIDGET_INT_SLIDER("active dj id", g_iActiveDJWidget, -1, 3, 1) ADD_WIDGET_INT_SLIDER("club setup state ", g_iNightClubSetupStateWidget, 0, NSS_FULLY_SETUP, 1) ADD_WIDGET_INT_SLIDER("g_iNightClubStationID", g_iNightClubStationID, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("g_iNightClubPedScriptInstance", g_iNightClubPedScriptInstance, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_FLOAT_SLIDER("g_fPercentagePopularity", g_fPercentagePopularity, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("g_iDJSequenceID", g_iDJSequenceID, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("g_iNightClubKickStrikes", g_iNightClubKickStrikes, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("g_iCurrentClubPedCount_get", g_iCurrentClubPedCount_get, LOWEST_INT, HIGHEST_INT, 1) START_WIDGET_GROUP("g_ncState") START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("INIT") ADD_TO_WIDGET_COMBO("DJ_ENTER_CUTSCENE") ADD_TO_WIDGET_COMBO("ACTIVITY_CREATE_PED_PROPS") ADD_TO_WIDGET_COMBO("INIT_PED_CULLING") ADD_TO_WIDGET_COMBO("REMOVE_CULLED_PEDS") ADD_TO_WIDGET_COMBO("POPULATE_CULLED_PED_ARRAY") ADD_TO_WIDGET_COMBO("CREATE_PEDS") ADD_TO_WIDGET_COMBO("ASSIGN_PEDS_TO_ACTIVITY") ADD_TO_WIDGET_COMBO("UPDATE_PED_BEHAVIOUR") ADD_TO_WIDGET_COMBO("CLEANUP_PROPS_PEDS_AND_TERMINATE") ADD_TO_WIDGET_COMBO("RECREATE") STOP_WIDGET_COMBO("current value", g_incState_get) ADD_WIDGET_INT_SLIDER("set to ", g_incState_set, -1, 8, 1) STOP_WIDGET_GROUP() START_WIDGET_GROUP("g_eNightClubAudioIntensityLevel") START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("NULL") ADD_TO_WIDGET_COMBO("LOW") ADD_TO_WIDGET_COMBO("MEDIUM") ADD_TO_WIDGET_COMBO("HIGH") ADD_TO_WIDGET_COMBO("HIGH_HANDS") STOP_WIDGET_COMBO("current value", g_iNightClubAudioIntensityLevel_get) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("NULL") ADD_TO_WIDGET_COMBO("LOW") ADD_TO_WIDGET_COMBO("MEDIUM") ADD_TO_WIDGET_COMBO("HIGH") ADD_TO_WIDGET_COMBO("LOW_MEDIUM_TRANSITION") ADD_TO_WIDGET_COMBO("LOW_HIGH_TRANSITION") ADD_TO_WIDGET_COMBO("MEDIUM_LOW_TRANSITION") ADD_TO_WIDGET_COMBO("HIGH_LOW_TRANSITION") ADD_TO_WIDGET_COMBO("MEDIUM_HIGH_TRANSITION") ADD_TO_WIDGET_COMBO("HIGH_MEDIUM_TRANSITION") STOP_WIDGET_COMBO("next value", g_iNightClubAudioIntensityLevelNext_get) ADD_WIDGET_INT_SLIDER("set to ", g_iNightClubAudioIntensityLevel_set, -1, 7, 1) ADD_WIDGET_INT_SLIDER("g_iNightClubAudioCurrentTime", g_iNightClubAudioCurrentTime, -1, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("g_iNightClubAudioNextTagTime", g_iNightClubAudioNextTagTime, -1, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("g_iDebugNightClubMixStartMinute", g_iDebugNightClubMixStartMinute, -1, HIGHEST_INT, 1) STOP_WIDGET_GROUP() START_WIDGET_GROUP("g_eNightClubPodiumDancersState") START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("NULL") ADD_TO_WIDGET_COMBO("FEMALE") ADD_TO_WIDGET_COMBO("MALE") ADD_TO_WIDGET_COMBO("MIX") STOP_WIDGET_COMBO("current value", g_iNightClubPodiumDancersState_get) ADD_WIDGET_INT_SLIDER("set to ", g_iNightClubPodiumDancersState_set, -1, 3, 1) STOP_WIDGET_GROUP() START_WIDGET_GROUP("g_eNightClubPodiumDancersStyle") START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("NULL") ADD_TO_WIDGET_COMBO("STYLE_1") ADD_TO_WIDGET_COMBO("STYLE_2") ADD_TO_WIDGET_COMBO("STYLE_3") STOP_WIDGET_COMBO("current value", g_iNightClubPodiumDancersStyle_get) ADD_WIDGET_INT_SLIDER("set to ", g_iNightClubPodiumDancersStyle_set, -1, 3, 1) STOP_WIDGET_GROUP() // START_WIDGET_GROUP("g_eCurrentPlayingDJ") // START_NEW_WIDGET_COMBO() // ADD_TO_WIDGET_COMBO("NULL") // ADD_TO_WIDGET_COMBO("SOLOMUN") // ADD_TO_WIDGET_COMBO("DIXON") // ADD_TO_WIDGET_COMBO("TALE_OF_US") // ADD_TO_WIDGET_COMBO("BLACK_MADONNA") // STOP_WIDGET_COMBO("current value", g_iCurrentPlayingDJ_get) // ADD_WIDGET_INT_SLIDER("set to ", g_iCurrentPlayingDJ_set, -1, 4, 1) // STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() START_WIDGET_GROUP("Nightclubpeds - NIGHT_CLUB_STRUCT") ADD_WIDGET_INT_SLIDER("iNightclubPedToHighlight", nightClubStruct.iNightclubPedToHighlight, -2, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA, 1) ADD_WIDGET_INT_SLIDER("iNumberOfRunningAnims", nightClubStruct.iNumberOfRunningAnims, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iCurrentStationID", nightClubStruct.iCurrentStationID, LOWEST_INT, HIGHEST_INT, 1) //ADD_WIDGET_INT_SLIDER("iStaggerID", nightClubStruct.iStaggerID, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iNumberOfCulledPeds", nightClubStruct.iNumberOfCulledPeds, LOWEST_INT, HIGHEST_INT, 1) BOOL bInUpstairsBarOrNightClubMainSpace = IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) BOOL bInHallwayOrDownstairsBar = IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) BOOL bInBackBarViewableArea = IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) BOOL bInToiletOrToiletEntranceArea = IS_BIT_SET(nightClubStruct.iPlayerCullCheckBS, NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) ADD_WIDGET_BOOL("bInUpstairsBarOrNightClubMainSpace", bInUpstairsBarOrNightClubMainSpace) ADD_WIDGET_BOOL("bInHallwayOrDownstairsBar", bInHallwayOrDownstairsBar) ADD_WIDGET_BOOL("bInBackBarViewableArea", bInBackBarViewableArea) ADD_WIDGET_BOOL("bInToiletOrToiletEntranceArea", bInToiletOrToiletEntranceArea) ADD_WIDGET_BOOL("bStageGroupDancingStarted", nightClubStruct.bStageGroupDancingStarted) ADD_WIDGET_INT_SLIDER("iSceneIDDancingStage", nightClubStruct.iSceneIDDancingStage, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iCreateStagger", nightClubStruct.iCreateStagger, 0, MAX_NUMBER_OF_NIGHTCLUB_PEDS, 1) ADD_WIDGET_INT_SLIDER("iProcessStagger", nightClubStruct.iProcessStagger, 0, MAX_NUMBER_OF_NIGHTCLUB_PEDS, 1) ADD_WIDGET_INT_SLIDER("iStaggerPerFrame", nightClubStruct.iStaggerPerFrame, 0, MAX_NUMBER_OF_NIGHTCLUB_PEDS, 1) ADD_WIDGET_BOOL("bDoStagger", nightClubStruct.bDoStagger) ADD_WIDGET_INT_SLIDER("iExpectedTimeToProcessStaggerPed", nightClubStruct.iExpectedTimeToProcessStaggerPed, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iProcessedThisFrame", nightClubStruct.iProcessedThisFrame, 0, MAX_NUMBER_OF_NIGHTCLUB_PEDS, 1) ADD_WIDGET_INT_SLIDER("iTotalExpectedPedsInMainHall", nightClubStruct.iTotalExpectedPedsInMainHall, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iTotalReservedMissionPeds", nightClubStruct.iTotalReservedMissionPeds, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iTotalCullablePeds", nightClubStruct.iTotalCullablePeds, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iCompletedSetup", nightClubStruct.iCompletedSetup, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("iLazlowPedID", nightClubStruct.iLazlowPedID, -1, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA, 1) ADD_WIDGET_INT_SLIDER("iDJPedID1", nightClubStruct.iDJPedID1, -1, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA, 1) ADD_WIDGET_INT_SLIDER("iDJPedID2", nightClubStruct.iDJPedID2, -1, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA, 1) ADD_WIDGET_INT_SLIDER("iTonyPedID", nightClubStruct.iTonyPedID, -1, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA, 1) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Nightclubpeds - EDITOR") ADD_WIDGET_BOOL("Activate Editor", g_bNightClubPedEditorActive) ADD_WIDGET_BOOL("Output Data", g_bOutputNightClubPedSettings) //ADD_WIDGET_BOOL("Output changes only", g_bOutputNightClubPedChangesOnly) ADD_WIDGET_BOOL("Recreate Peds", g_bRecreateNightClubPeds) ADD_WIDGET_INT_SLIDER("Highlight NC Ped", nightClubStruct.iNightclubPedToHighlight, -2, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA, 1) REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i str = "ActivityPed[" str += i str += "]" START_WIDGET_GROUP(str) ADD_WIDGET_INT_READ_ONLY("Nightclub Ped Id", nightClubStruct.activityPeds[i].iNightClubPedID) ADD_WIDGET_VECTOR_SLIDER("Position", nightClubStruct.activityPeds[i].vPos, -9999.9, 9999.9, 0.01) ADD_WIDGET_FLOAT_SLIDER("Heading", nightClubStruct.activityPeds[i].fHeading, -360.0, 360.0, 0.1) ADD_WIDGET_INT_SLIDER("iActiveSlot", nightClubStruct.activityPeds[i].iActiveSlot, -1, ENUM_TO_INT(AC_SLOT_TOTAL) -1, 1) ADD_WIDGET_BOOL("bAddRandomnessToActivitySlot", nightClubStruct.activityPeds[i].bAddRandomnessToActivitySlot) ADD_WIDGET_INT_SLIDER("iNCPedType", nightClubStruct.activityPeds[i].iNCPedType, -1, ENUM_TO_INT(MAX_NUMBER_OF_NC_PED_TYPES) -1, 1) ADD_WIDGET_INT_SLIDER("iOffsetNCPedId", nightClubStruct.activityPeds[i].iOffsetNCPedId, -1, MAX_NUMBER_OF_NIGHTCLUB_PED_DATA -1, 1) STOP_WIDGET_GROUP() ENDREPEAT STOP_WIDGET_GROUP() START_WIDGET_GROUP("Nightclub Music") ADD_WIDGET_INT_SLIDER("Station", nightClubStruct.iStationName, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_INT_SLIDER("Start Time", nightClubStruct.iTrackStartTime, LOWEST_INT, HIGHEST_INT, 1) ADD_WIDGET_BOOL("Start with these settings", nightClubStruct.bStartDebugMusic) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Synchronized Scene Rate") ADD_WIDGET_FLOAT_SLIDER("Speed", nightClubStruct.fDebugSyncSpeed, -9999.9, 9999.9, 0.01) STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() ENDPROC PROC UPDATE_NIGHT_CLUB_WIDGET(NIGHT_CLUB_STRUCT &nightClubStruct) INT i ACTIVITY_SLOT_NAMES eActivity IF (g_incState_set != -1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "UPDATE_NIGHT_CLUB_WIDGET: changing g_ncState to : ", g_incState_set) g_ncState = INT_TO_ENUM(ACT_NIGHTCLUB_ACT_STATE, g_incState_set) g_incState_set = -1 ENDIF g_incState_get = ENUM_TO_INT(g_ncState) IF (g_iNightClubAudioIntensityLevel_set != -1) g_eNightClubAudioIntensityLevel = INT_TO_ENUM(NIGHTCLUB_AUDIO_TAGS, g_iNightClubAudioIntensityLevel_set) g_iNightClubAudioIntensityLevel_set = -1 ENDIF g_iNightClubAudioIntensityLevel_get = ENUM_TO_INT(g_eNightClubAudioIntensityLevel) g_iNightClubAudioIntensityLevelNext_get = ENUM_TO_INT(g_eNightClubAudioIntensityLevelNext) IF (g_iNightClubPodiumDancersState_set != -1) g_eNightClubPodiumDancersState = INT_TO_ENUM(NIGHTCLUB_PODIUM_DANCER_PED_STATE, g_iNightClubPodiumDancersState_set) g_iNightClubPodiumDancersState_set = -1 ENDIF g_iNightClubPodiumDancersState_get = ENUM_TO_INT(g_eNightClubPodiumDancersState) IF (g_iNightClubPodiumDancersStyle_set != -1) g_eNightClubPodiumDancersStyle = INT_TO_ENUM(NIGHTCLUB_PODIUM_DANCER_PED_STYLE, g_iNightClubPodiumDancersStyle_set) g_iNightClubPodiumDancersStyle_set = -1 ENDIF g_iNightClubPodiumDancersStyle_get = ENUM_TO_INT(g_eNightClubPodiumDancersStyle) IF (g_iCurrentPlayingDJ_set != -1) g_eCurrentPlayingDJ = INT_TO_ENUM(NIGHTCLUB_DJ_ID, g_iCurrentPlayingDJ_set) g_iCurrentPlayingDJ_set = -1 ENDIF g_iCurrentPlayingDJ_get = ENUM_TO_INT(g_eCurrentPlayingDJ) IF IS_DEBUG_KEY_JUST_PRESSED(KEY_O, KEYBOARD_MODIFIER_CTRL, "recreate nightclub peds") OR (g_bRecreateNightClubPeds) RECREATE_NIGHTCLUB_PEDS() g_bRecreateNightClubPeds = FALSE ENDIF IF IS_DEBUG_KEY_JUST_PRESSED(KEY_I, KEYBOARD_MODIFIER_CTRL, "check DJ sync") // check DJ sync IF nightClubStruct.iDJPedID1 != -1 AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].piScenePeds) AND IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iSceneID) NC_ACTIVITY_MAIN activityMain GetAnimDataForPed(ActivityMain, nightClubStruct.activityPeds[nightClubStruct.iDJPedID1]) i = 0 FLOAT fSyncDuration = (GET_ANIM_DURATION(ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimDict, ActivityMain.activityAnimSequence.activitySyncScenePed[0].sAnimClip) * (GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iSceneID))) FLOAT fClipDuration TEXT_LABEL_63 tlDixClip REPEAT nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].iCurrentSequence i tlDixClip = GET_NC_DJ_ANIM_CLIP(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].eActiveActivity, i) fClipDuration = GET_ANIM_DURATION(GET_NC_DJ_ANIM_DICT(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].eActiveActivity, i), tlDixClip) fSyncDuration += fClipDuration //CDEBUG1LN(DEBUG_NET_PED_DANCING, "Duration of ", tlDixClip, " = ", fClipDuration, ", total sync = ", fSyncDuration) ENDREPEAT CDEBUG1LN(DEBUG_NET_PED_DANCING, "Sync duration = ", fSyncDuration, ", Mix duration is ", GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID)) ENDIF ENDIF //BOOL bDoRecreate IF (g_bNightClubPedEditorActive) AND (g_ncState = NC_STAGE_UPDATE_PED_BEHAVIOUR) REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) eActivity = INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[i].iActiveSlot) IF NOT (eActivity = nightClubStruct.activityPeds[i].eActiveActivity) nightClubStruct.activityPeds[i].eActiveActivity = eActivity ENDIF ENDIF ENDREPEAT UpdateNCPositionsAndHeadings(nightClubStruct) // REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i // IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) // AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[i].piScenePeds) // FREEZE_ENTITY_POSITION(nightClubStruct.activityPeds[i].piScenePeds, FALSE) // SET_ENTITY_COORDS_NO_OFFSET(nightClubStruct.activityPeds[i].piScenePeds, nightClubStruct.activityPeds[i].vPos, TRUE, FALSE, FALSE) // SET_ENTITY_HEADING(nightClubStruct.activityPeds[i].piScenePeds, nightClubStruct.activityPeds[i].fHeading) // ENDIF // ENDREPEAT ENDIF IF (g_bOutputPedVariations) PRINTLN("OUTPUT_PED_VARIATIONS ========") REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[i].piScenePeds) OUTPUT_PED_VARIATIONS(nightClubStruct.activityPeds[i].piScenePeds) ENDIF ENDREPEAT g_bOutputPedVariations = FALSE ENDIF //g_iCurrentClubPedCount_get = GET_NIGHTCLUB_CUSTOMER_PED_COUNT() ENDPROC #ENDIF //links with GET_NIGHTCLUB_RADIO_STATION (please try to keep in sync) PROC SET_DJ_TRACK() SWITCH g_eCurrentPlayingDJ CASE DJ_TALE_OF_US IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("DLC_BATTLE_MIX2_CLUB_PRIV")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_TALE_OF_US, setting radio station to DLC_BATTLE_MIX2_CLUB_PRIV g_iNightClubStationID: ", g_iNightClubStationID) ELSE g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("RADIO_23_DLC_BATTLE_MIX2_CLUB")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_TALE_OF_US, setting radio station to RADIO_23_DLC_BATTLE_MIX2_CLUB, g_iNightClubStationID: ", g_iNightClubStationID) ENDIF BREAK CASE DJ_DIXON IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("DLC_BATTLE_MIX3_CLUB_PRIV")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_DIXON, setting radio station to DLC_BATTLE_MIX3_CLUB_PRIV, g_iNightClubStationID: ", g_iNightClubStationID) ELSE g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("RADIO_24_DLC_BATTLE_MIX3_CLUB")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_DIXON, setting radio station to RADIO_24_DLC_BATTLE_MIX3_CLUB, g_iNightClubStationID: ", g_iNightClubStationID) ENDIF BREAK CASE DJ_SOLOMUN IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("DLC_BATTLE_MIX1_CLUB_PRIV")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_SOLOMUN, setting radio station to DLC_BATTLE_MIX1_CLUB_PRIV g_iNightClubStationID: ", g_iNightClubStationID) ELSE g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("RADIO_22_DLC_BATTLE_MIX1_CLUB")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_SOLOMUN, setting radio station to RADIO_22_DLC_BATTLE_MIX1_CLUB, g_iNightClubStationID: ", g_iNightClubStationID) ENDIF BREAK CASE DJ_BLACK_MADONNA IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("DLC_BATTLE_MIX4_CLUB_PRIV")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_BLACK_MADONNA, setting radio station to DLC_BATTLE_MIX4_CLUB_PRIV, g_iNightClubStationID: ", g_iNightClubStationID) ELSE g_iNightClubStationID = FIND_RADIO_STATION_INDEX(HASH("RADIO_25_DLC_BATTLE_MIX4_CLUB")) CDEBUG1LN(DEBUG_NET_PED_DANCING, "SET_DJ_TRACK: eCurrentPlayingDJ = DJ_BLACK_MADONNA, setting radio station to RADIO_25_DLC_BATTLE_MIX4_CLUB, g_iNightClubStationID: ", g_iNightClubStationID) ENDIF BREAK ENDSWITCH ENDPROC PROC SET_DJ_OF_NIGHTCLUB(SERVER_BROADCAST_DATA &ServerBD) IF NETWORK_IS_HOST_OF_THIS_SCRIPT() IF NATIVE_TO_INT(GET_OWNER_OF_THIS_NIGHTCLUB()) != -1 ServerBD.djID = g_eActiveDJ g_eCurrentPlayingDJ = g_eActiveDJ //SET_NIGHTCLUB_DJ_ACTIVE_STATE(ServerBD.djID, TRUE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: SERVER: g_eCurrentPlayingDJ = ", ServerBD.djID) ENDIF ELSE g_eCurrentPlayingDJ = ServerBD.djID CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: CLIENT: g_eCurrentPlayingDJ = ", ServerBD.djID) ENDIF SET_DJ_TRACK() ENDPROC PROC CREATE_PED_STAND_ALONE_PROPS(NIGHT_CLUB_STRUCT &nightClubStruct) IF nightClubStruct.iNightClubPedIDsReverse[146] != -1 IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[146]].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[nightClubStruct.iNightClubPedIDsReverse[146]].piScenePeds) IF NOT DOES_ENTITY_EXIST(nightClubStruct.eiCloakRoomStool) REQUEST_MODEL(prop_bar_stool_01) IF HAS_MODEL_LOADED(prop_bar_stool_01) nightClubStruct.eiCloakRoomStool = CREATE_OBJECT_NO_OFFSET(prop_bar_stool_01, <<-1572.1608, -3013.1316, -75.4265>>, FALSE) // SET_ENTITY_ROTATION(nightClubStruct.eiCloakRoomStool, tempRotation) IF DOES_ENTITY_EXIST(nightClubStruct.eiCloakRoomStool) SET_MODEL_AS_NO_LONGER_NEEDED(prop_bar_stool_01) SET_ENTITY_INVINCIBLE(nightClubStruct.eiCloakRoomStool, TRUE) FREEZE_ENTITY_POSITION(nightClubStruct.eiCloakRoomStool, TRUE) ENDIF // url:bugstar:4978046 CLEAR_AREA(<<-1572.1608, -3013.1316, -75.4265>>, 10.0, TRUE) ENDIF ENDIF ENDIF ENDIF ACTIVITY_SLOT_NAMES eTonyActivity BOOL isRandom GetTonyActivity(eTonyActivity, isRandom) IF eTonyActivity != AC_SLOT_USE_COMPUTER AND NOT DOES_ENTITY_EXIST(nightClubStruct.eiTonyChair) MODEL_NAMES chairModel IF IS_PLAYER_NIGHTCLUB_STYLE_0_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) chairModel = INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Battle_Club_Chair_01")) ELIF IS_PLAYER_NIGHTCLUB_STYLE_1_PURCHASED(GET_OWNER_OF_THIS_NIGHTCLUB()) chairModel = INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Battle_Club_Chair_02")) ELSE chairModel = INT_TO_ENUM(MODEL_NAMES, HASH("ba_Prop_Battle_Club_Chair_03")) ENDIF REQUEST_MODEL(chairModel) IF HAS_MODEL_LOADED(chairModel) nightClubStruct.eiTonyChair = CREATE_OBJECT_NO_OFFSET(chairModel, <<-1619.6196, -3011.7012, -75.5800>>, FALSE) IF DOES_ENTITY_EXIST(nightClubStruct.eiTonyChair) SET_MODEL_AS_NO_LONGER_NEEDED(chairModel) SET_ENTITY_ROTATION(nightClubStruct.eiTonyChair, <<0, 0, 199.72>>) SET_ENTITY_INVINCIBLE(nightClubStruct.eiTonyChair, TRUE) FREEZE_ENTITY_POSITION(nightClubStruct.eiTonyChair, TRUE) ENDIF ENDIF ELIF eTonyActivity = AC_SLOT_USE_COMPUTER AND DOES_ENTITY_EXIST(nightClubStruct.eiTonyChair) DELETE_OBJECT(nightClubStruct.eiTonyChair) ENDIF GetLazlowActivity(eTonyActivity) IF eTonyActivity = AC_SLOT_LAZLOW_LOW_BAR AND nightClubStruct.mLazlowStoolRemove = DUMMY_MODEL_FOR_SCRIPT nightClubStruct.mLazlowStoolRemove = GET_LAZLOW_STOOL_MODEL() CREATE_MODEL_HIDE_EXCLUDING_SCRIPT_OBJECTS(<<-1586.273, -3009.073, -77.006>>, 0.5, nightClubStruct.mLazlowStoolRemove, FALSE) ELIF eTonyActivity != AC_SLOT_LAZLOW_LOW_BAR AND nightClubStruct.mLazlowStoolRemove != DUMMY_MODEL_FOR_SCRIPT REMOVE_MODEL_HIDE(<<-1586.273, -3009.073, -77.006>>, 0.5, nightClubStruct.mLazlowStoolRemove) nightClubStruct.mLazlowStoolRemove = DUMMY_MODEL_FOR_SCRIPT ENDIF ENDPROC PROC FreezeActivityPed(NIGHT_CLUB_PEDS &nightclubped) // some activities should be frozen so we can line them up exactly IF SHOULD_FREEZE_FOR_ACTIVITY(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightclubped.iActiveSlot)) FREEZE_ENTITY_POSITION(nightclubped.piScenePeds, TRUE) SET_ENTITY_COORDS_NO_OFFSET(nightclubped.piScenePeds, nightclubped.vPos) SET_ENTITY_HEADING(nightclubped.piScenePeds, nightclubped.fHeading) ELSE FREEZE_ENTITY_POSITION(nightclubped.piScenePeds, FALSE) ENDIF ENDPROC PROC CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS(NIGHT_CLUB_STRUCT &nightClubStruct, INT iNightClubPedID) BOOL bResetCulledBit = FALSE IF IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[iNightClubPedID], NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY) bResetCulledBit = TRUE ENDIF nightClubStruct.iNCPedCullCheckBS[iNightClubPedID] = 0 IF bResetCulledBit SET_BIT(nightClubStruct.iNCPedCullCheckBS[iNightClubPedID], NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY) ENDIF VECTOR vPos = ActualPos(iNightClubPedID) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS: iNightClubPedID: ", iNightClubPedID, ", vPos: ", vPos) // IF IsPointInFirstHallwayCullable(vPos) // OR IsPointInSecondHallwayCullable(vPos) // SET_BIT(nightClubStruct.iNCPedCullCheckBS[iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS: Setting NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR") // ENDIF IF IsPointInUpstairsBarCullable(vPos) SET_BIT(nightClubStruct.iNCPedCullCheckBS[iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS: Setting NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE") ENDIF IF IsPointInToiletEntranceArea(vPos) SET_BIT(nightClubStruct.iNCPedCullCheckBS[iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS: Setting NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA") ENDIF IF IsPointInDownstairsBarCullable(vPos) OR IsPointInDownstairsBarEntranceCullable(vPos) SET_BIT(nightClubStruct.iNCPedCullCheckBS[iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS: Setting NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA") ENDIF ENDPROC FUNC BOOL ShouldDoWaitZero() IF (g_ncLastState != g_ncState) AND NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) // so if player is walking about club not too much is done in a single frame RETURN FALSE ENDIF RETURN TRUE ENDFUNC FUNC INT GetMaxPedsCreatedPerFrame() IF NOT ShouldDoWaitZero() OR NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) OR IS_SCREEN_FADED_OUT() RETURN 25 ENDIF RETURN 2 ENDFUNC CONST_INT MAX_DJ_CUTSCENE_FALLBACK_TIME 30000 // Duration of intro cutscene, 30 sec FUNC STRING GET_ANIM_DICT_FOR_DJ_SWITCH(NIGHTCLUB_DJ_ID eFromDJ, NIGHTCLUB_DJ_ID eToDJ, NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage) SWITCH eStage CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END SWITCH eFromDJ CASE DJ_SOLOMUN RETURN "anim@amb@nightclub@djs@switch@smun_djset_switchover@" CASE DJ_DIXON RETURN "anim@amb@nightclub@djs@switch@dixn_djset_switchover@" CASE DJ_TALE_OF_US RETURN "anim@amb@nightclub@djs@switch@tale_djset_switchover@" CASE DJ_BLACK_MADONNA RETURN "anim@amb@nightclub@djs@switch@bmad_djset_switchover@" ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER SWITCH eToDJ CASE DJ_SOLOMUN RETURN "anim@amb@nightclub@djs@switch@smun_djset_switchover@" CASE DJ_DIXON RETURN "anim@amb@nightclub@djs@switch@dixn_djset_switchover@" CASE DJ_TALE_OF_US RETURN "anim@amb@nightclub@djs@switch@tale_djset_switchover@" CASE DJ_BLACK_MADONNA RETURN "anim@amb@nightclub@djs@switch@bmad_djset_switchover@" ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 IF (eFromDJ = DJ_DIXON AND eToDJ = DJ_SOLOMUN) OR (eFromDJ = DJ_SOLOMUN AND eToDJ = DJ_DIXON) RETURN "anim@amb@nightclub@djs@switch@smun_djset_switchover@" ELIF eFromDJ = DJ_TALE_OF_US AND (eToDJ = DJ_SOLOMUN OR eToDJ = DJ_DIXON) RETURN "anim@amb@nightclub@djs@switch@dixn_djset_switchover@" ELIF eToDJ = DJ_TALE_OF_US AND (eFromDJ = DJ_SOLOMUN OR eFromDJ = DJ_DIXON) RETURN "anim@amb@nightclub@djs@switch@tale_djset_switchover@" ELSE RETURN "anim@amb@nightclub@djs@switch@bmad_djset_switchover@" ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_START SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eFromDJ CASE DJ_SOLOMUN CASE DJ_DIXON RETURN "anim@amb@nightclub@djs@switch@smun_djset_switchover@" CASE DJ_TALE_OF_US CASE DJ_BLACK_MADONNA RETURN "anim@amb@nightclub@djs@switch@dixn_djset_switchover@" ENDSWITCH BREAK CASE DJ_TALE_OF_US RETURN "anim@amb@nightclub@djs@switch@tale_djset_switchover@" CASE DJ_BLACK_MADONNA RETURN "anim@amb@nightclub@djs@switch@bmad_djset_switchover@" ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC STRING GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(NIGHTCLUB_DJ_ID eFromDJ, NIGHTCLUB_DJ_ID eToDJ, NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage, NIGHTCLUB_PEDS_DJ_CUTSCENE_PED eEntity) SWITCH eStage CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END SWITCH eFromDJ CASE DJ_SOLOMUN SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "sol_end_sol" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "sol_end_solmanager" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "sol_end_bg_male_1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "sol_end_bg_male_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "sol_end_bg_female_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "sol_end_bg_female_4" ENDSWITCH BREAK CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "dix_end_dix" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "dix_end_cc" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "dix_end_mm" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 RETURN "dix_end_manager" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "dix_end_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "dix_end_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "dix_end_bg_female1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "dix_end_bg_female2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_3 RETURN "dix_end_bg_female3" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "tale_end_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 RETURN "tale_end_mm" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "tale_end_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "tale_end_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 //RETURN "tale_end_bg_female1" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 //RETURN "tale_end_bg_female2" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_3 //RETURN "tale_end_bg_female3" RETURN "" ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "bmad_end_blamadon" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "bmad_end_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "bmad_end_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 //RETURN "bmad_end_bg_male4" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 //RETURN "bmad_end_bg_female2" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 //RETURN "bmad_end_bg_female3" RETURN "" ENDSWITCH BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER SWITCH eToDJ CASE DJ_SOLOMUN SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "sol_enter_sol" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "sol_enter_bg_male_1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "sol_enter_bg_male_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "sol_enter_bg_female_4" ENDSWITCH BREAK CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "dix_enter_dix" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "dix_enter_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "dix_enter_bg_female1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 RETURN "dix_enter_manager" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "tale_enter_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 RETURN "tale_enter_mm" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "tale_enter_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "tale_enter_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "tale_enter_bg_female1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "tale_enter_bg_female2" ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "bmad_enter_blamadon" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "bmad_enter_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "bmad_enter_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 RETURN "bmad_enter_bg_male4" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "bmad_enter_bg_female2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "bmad_enter_bg_female3" ENDSWITCH BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH IF (eFromDJ = DJ_DIXON AND eToDJ = DJ_SOLOMUN) OR (eFromDJ = DJ_SOLOMUN AND eToDJ = DJ_DIXON) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "soldix_switch_dix" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "soldix_switch_sol" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "soldix_switch_solmanager" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "soldix_switch_bg_male_1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "soldix_switch_bg_male_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "soldix_switch_bg_female_2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "soldix_switch_bg_female_4" ENDSWITCH ELIF eFromDJ = DJ_TALE_OF_US AND (eToDJ = DJ_SOLOMUN OR eToDJ = DJ_DIXON) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "tale_out_soldix_in_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 RETURN "tale_out_soldix_in_mm" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "tale_out_soldix_in_dix" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "tale_out_soldix_in_manager" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "tale_out_soldix_in_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 RETURN "tale_out_soldix_in_bg_female1" ENDSWITCH ELIF eToDJ = DJ_TALE_OF_US AND (eFromDJ = DJ_SOLOMUN OR eFromDJ = DJ_DIXON) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "soldixn_out_tale_in_sol" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "soldixn_out_tale_in_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 RETURN "soldixn_out_tale_in_mm" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 RETURN "soldixn_out_tale_in_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 RETURN "soldixn_out_tale_in_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "soldixn_out_tale_in_bg_female1" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "soldixn_out_tale_in_bg_female2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_3 RETURN "soldixn_out_tale_in_bg_female3" ENDSWITCH ELSE SWITCH eFromDJ CASE DJ_BLACK_MADONNA SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "bmad_out_soldix_in_a_blamadon" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "bmad_out_soldix_in_a_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "bmad_out_soldix_in_a_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "bmad_out_soldix_in_a_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 RETURN "bmad_out_soldix_in_a_bg_male4" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "bmad_out_soldix_in_a_bg_female2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "bmad_out_soldix_in_a_bg_female3" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "bmad_out_tale_in_a_blamadon" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "bmad_out_tale_in_a_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 RETURN "bmad_out_tale_in_a_mm" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "bmad_out_tale_in_a_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "bmad_out_tale_in_a_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 //RETURN "bmad_out_tale_in_a_bg_male4" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 //RETURN "bmad_out_tale_in_a_bg_female2" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 //RETURN "bmad_out_tale_in_a_bg_female3" RETURN "" ENDSWITCH BREAK ENDSWITCH BREAK CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "soldix_out_bmad_in_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "soldix_out_bmad_in_blamadon" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "soldix_out_bmad_in_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "soldix_out_bmad_in_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 RETURN "soldix_out_bmad_in_bg_male4" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "soldix_out_bmad_in_bg_female2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "soldix_out_bmad_in_bg_female3" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "tale_out_bmad_in_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 RETURN "tale_out_bmad_in_mm" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "tale_out_bmad_in_blamadon" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "tale_out_bmad_in_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "tale_out_bmad_in_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 //RETURN "tale_out_bmad_in_bg_male4" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 //RETURN "tale_out_bmad_in_bg_female2" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 //RETURN "tale_out_bmad_in_bg_female3" RETURN "" ENDSWITCH BREAK ENDSWITCH ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 IF eFromDJ = DJ_BLACK_MADONNA SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "bmad_out_soldix_in_b_blamadon" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "bmad_out_soldix_in_b_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "bmad_out_soldix_in_b_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "bmad_out_soldix_in_b_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 RETURN "bmad_out_soldix_in_b_bg_male4" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 RETURN "bmad_out_soldix_in_b_bg_female2" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 RETURN "bmad_out_soldix_in_b_bg_female3" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "bmad_out_tale_in_b_blamadon" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "bmad_out_tale_in_b_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 RETURN "bmad_out_tale_in_b_mm" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 RETURN "bmad_out_tale_in_b_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 RETURN "bmad_out_tale_in_b_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 //RETURN "bmad_out_tale_in_b_bg_male4" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 //RETURN "bmad_out_tale_in_b_bg_female2" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 //RETURN "bmad_out_tale_in_b_bg_female3" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 RETURN "bmad_out_tale_in_b_blamadon" ENDSWITCH BREAK ENDSWITCH ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_START SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eFromDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "sol_start_sol" ENDSWITCH BREAK CASE DJ_TALE_OF_US CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "dix_start_dix" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "dix_start_manager" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "dix_start_bg_male1" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 RETURN "dix_start_bg_female1" ENDSWITCH BREAK ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "tale_start_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 RETURN "tale_start_mm" ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 RETURN "bmad_start_blamadon" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 RETURN "bmad_start_bg_male2" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 RETURN "bmad_start_bg_male3" CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 //RETURN "bmad_start_bg_male4" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 //RETURN "bmad_start_bg_female2" RETURN "" CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 //RETURN "bmad_start_bg_female3" RETURN "" ENDSWITCH IF eFromDJ = DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 RETURN "bmad_start_cc" CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 RETURN "bmad_start_mm" ENDSWITCH ENDIF BREAK ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC STRING GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(NIGHTCLUB_DJ_ID eFromDJ, NIGHTCLUB_DJ_ID eToDJ, NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage, NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT eEntity) SWITCH eStage CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END SWITCH eFromDJ CASE DJ_SOLOMUN SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_BEER_1 RETURN "sol_end_beer" ENDSWITCH BREAK CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 RETURN "dix_end_dix_headphones" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "tale_end_cc_headphones" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 //RETURN "tale_end_mm_headphones" RETURN "" ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_end_headphonesblamadon" RETURN "" ENDSWITCH BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER SWITCH eToDJ CASE DJ_SOLOMUN SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_BEER_1 RETURN "sol_enter_beer" ENDSWITCH BREAK CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "dix_enter_dix_headphones" RETURN "" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "tale_enter_cc_headphones" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 //RETURN "tale_enter_mm_headphones" RETURN "" ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_enter_headphonesblamadon" RETURN "" ENDSWITCH BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH IF (eFromDJ = DJ_DIXON AND eToDJ = DJ_SOLOMUN) OR (eFromDJ = DJ_SOLOMUN AND eToDJ = DJ_DIXON) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_BEER_1 RETURN "soldix_switch_beer" ENDSWITCH ELIF eFromDJ = DJ_TALE_OF_US AND (eToDJ = DJ_SOLOMUN OR eToDJ = DJ_DIXON) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "tale_out_soldix_in_dix_headphones" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 RETURN "tale_out_soldix_in_other_headphones" ENDSWITCH ELIF eToDJ = DJ_TALE_OF_US AND (eFromDJ = DJ_SOLOMUN OR eFromDJ = DJ_DIXON) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 RETURN "soldixn_out_tale_in_cc_headphones" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 RETURN "soldixn_out_tale_in_mm_headphones" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 //RETURN "soldixn_out_tale_in_sol_headphones" RETURN "" ENDSWITCH ELSE SWITCH eFromDJ CASE DJ_BLACK_MADONNA SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_out_soldix_in_a_headphonesblamadon" RETURN "" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_out_tale_in_a_headphonesblamadon" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 //RETURN "bmad_out_tale_in_a_headphonescc" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 //RETURN "bmad_out_tale_in_a_headphonesmm" RETURN "" ENDSWITCH BREAK ENDSWITCH BREAK CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "soldix_out_bmad_in_headphonesblamadon" RETURN "" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "tale_out_bmad_in_headphonesblamadon" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 //RETURN "tale_out_bmad_in_headphonescc" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 //RETURN "tale_out_bmad_in_headphonesmm" RETURN "" ENDSWITCH BREAK ENDSWITCH ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 IF eFromDJ = DJ_BLACK_MADONNA SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_out_soldix_in_b_headphonesblamadon" RETURN "" ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_out_tale_in_b_headphonesblamadon" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 RETURN "bmad_out_tale_in_b_blamadon" //RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 //RETURN "bmad_out_tale_in_b_headphonesmm" RETURN "" ENDSWITCH BREAK ENDSWITCH ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_START SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eFromDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_BEER_1 RETURN "sol_start_beer" ENDSWITCH BREAK CASE DJ_TALE_OF_US CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 RETURN "dix_start_dix_headphones" ENDSWITCH BREAK ENDSWITCH BREAK CASE DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 RETURN "tale_start_cc_headphones" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 RETURN "tale_start_mm_headphones" ENDSWITCH BREAK CASE DJ_BLACK_MADONNA SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 //RETURN "bmad_start_headphonesblamadon" RETURN "" ENDSWITCH IF eFromDJ = DJ_TALE_OF_US SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 //RETURN "bmad_start_headphonescc" RETURN "" CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 //RETURN "bmad_start_headphonesmm" RETURN "" ENDSWITCH ENDIF BREAK ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC FUNC STRING GET_ANIM_CLIP_FOR_DJ_SWITCH_CAMERA(NIGHTCLUB_DJ_ID eFromDJ, NIGHTCLUB_DJ_ID eToDJ, NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage) SWITCH eStage CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END SWITCH eFromDJ CASE DJ_SOLOMUN RETURN "sol_end_camera" CASE DJ_DIXON RETURN "dix_end_camera" CASE DJ_TALE_OF_US RETURN "tale_end_camera" CASE DJ_BLACK_MADONNA RETURN "bmad_end_camera" ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER SWITCH eToDJ CASE DJ_SOLOMUN RETURN "sol_enter_camera" CASE DJ_DIXON RETURN "dix_enter_camera" CASE DJ_TALE_OF_US RETURN "tale_enter_camera" CASE DJ_BLACK_MADONNA RETURN "bmad_enter_camera" ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH IF (eFromDJ = DJ_DIXON AND eToDJ = DJ_SOLOMUN) OR (eFromDJ = DJ_SOLOMUN AND eToDJ = DJ_DIXON) RETURN "soldix_switch_camera" ELIF eFromDJ = DJ_TALE_OF_US AND (eToDJ = DJ_SOLOMUN OR eToDJ = DJ_DIXON) RETURN "tale_out_soldix_in_camera" ELIF eToDJ = DJ_TALE_OF_US AND (eFromDJ = DJ_SOLOMUN OR eFromDJ = DJ_DIXON) RETURN "soldixn_out_tale_in_camera" ELSE SWITCH eFromDJ CASE DJ_BLACK_MADONNA SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON RETURN "bmad_out_soldix_in_a_camera" CASE DJ_TALE_OF_US RETURN "bmad_out_tale_in_a_camera" ENDSWITCH BREAK CASE DJ_SOLOMUN CASE DJ_DIXON RETURN "soldix_out_bmad_in_camera" CASE DJ_TALE_OF_US RETURN "tale_out_bmad_in_camera" ENDSWITCH ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 IF eFromDJ = DJ_BLACK_MADONNA SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON RETURN "bmad_out_soldix_in_b_camera" CASE DJ_TALE_OF_US RETURN "bmad_out_tale_in_b_camera" ENDSWITCH ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_START SWITCH eToDJ CASE DJ_SOLOMUN CASE DJ_DIXON SWITCH eFromDJ CASE DJ_SOLOMUN CASE DJ_DIXON RETURN "sol_start_camera" CASE DJ_TALE_OF_US CASE DJ_BLACK_MADONNA RETURN "dix_start_camera" ENDSWITCH BREAK CASE DJ_TALE_OF_US RETURN "tale_start_camera" CASE DJ_BLACK_MADONNA RETURN "bmad_start_camera" ENDSWITCH BREAK ENDSWITCH RETURN "" ENDFUNC PROC GET_PED_DATA_FOR_DJ_SWITCH(NIGHTCLUB_DJ_ID eFromDJ, NIGHTCLUB_DJ_ID eToDJ, NIGHTCLUB_PEDS_DJ_CUTSCENE_PED eEntity, NC_PED_DATA &sReturnData) NIGHTCLUB_DJ_ID eCheckDJ = DJ_NULL SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 eCheckDJ = eFromDJ BREAK CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 eCheckDJ = eToDJ BREAK ENDSWITCH SWITCH eEntity CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_1 SWITCH eCheckDJ CASE DJ_SOLOMUN GET_NC_PED_NC_DJ_SOLOMUN_DATA(sReturnData) BREAK CASE DJ_DIXON GET_NC_PED_NC_DJ_DIXON_DATA(sReturnData) BREAK CASE DJ_TALE_OF_US GET_NC_PED_NC_DJ_TALE_OF_US_DATA(sReturnData, 0) BREAK CASE DJ_BLACK_MADONNA GET_NC_PED_NC_DJ_BLACK_MADONNA_DATA(sReturnData) BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 CASE PEDS_DJ_CUTSCENE_PED_DJ_TO_2 IF eCheckDJ = DJ_TALE_OF_US GET_NC_PED_NC_DJ_TALE_OF_US_DATA(sReturnData, 1) ENDIF BREAK CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 SWITCH eCheckDJ CASE DJ_SOLOMUN GET_NC_PED_SOL_MANAGER_DATA(sReturnData) BREAK CASE DJ_DIXON GET_NC_PED_DIX_MANAGER_DATA(sReturnData) BREAK CASE DJ_TALE_OF_US GET_NC_PED_TAL_AURELIA_DATA(sReturnData) BREAK CASE DJ_BLACK_MADONNA GET_NC_PED_BLAM_RUPERT_DATA(sReturnData) BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 SWITCH eCheckDJ CASE DJ_SOLOMUN GET_NC_PED_SOL_JAKOB_DATA(sReturnData) BREAK CASE DJ_TALE_OF_US GET_NC_PED_TAL_IGNAZIO_DATA(sReturnData) BREAK CASE DJ_BLACK_MADONNA GET_NC_PED_BLAM_RYANS_DATA(sReturnData) BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 CASE PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 SWITCH eCheckDJ CASE DJ_SOLOMUN GET_NC_PED_SOL_FOTIOS_DATA(sReturnData) BREAK CASE DJ_BLACK_MADONNA GET_NC_PED_BLAM_RYANH_DATA(sReturnData) BREAK ENDSWITCH BREAK CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_1 CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_2 CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_3 CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_4 CASE PEDS_DJ_CUTSCENE_PED_CROWD_M_5 GET_NC_PED_HIPSTER_M_DATA(sReturnData) BREAK CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_1 CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_2 CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_3 CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_4 CASE PEDS_DJ_CUTSCENE_PED_CROWD_F_5 GET_NC_PED_HIPSTER_F_DATA(sReturnData) BREAK ENDSWITCH ENDPROC FUNC MODEL_NAMES GET_OBJECT_MODEL_FOR_DJ_SWITCH(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT eEntity) SWITCH eEntity CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_1 CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_2 CASE PEDS_DJ_CUTSCENE_OBJECT_HEADPHONES_3 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("ba_prop_battle_headphones_dj")) CASE PEDS_DJ_CUTSCENE_OBJECT_BEER_1 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("prop_beer_bottle")) CASE PEDS_DJ_CUTSCENE_OBJECT_GLASS_1 CASE PEDS_DJ_CUTSCENE_OBJECT_GLASS_2 RETURN INT_TO_ENUM(MODEL_NAMES, HASH("prop_pint_glass_01")) ENDSWITCH RETURN DUMMY_MODEL_FOR_SCRIPT ENDFUNC FUNC NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE GET_NEXT_DJ_SWITCH_SCENE(NIGHTCLUB_DJ_ID eFromDJ, NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage) SWITCH eStage CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END RETURN PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER RETURN PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH IF eFromDJ = DJ_BLACK_MADONNA RETURN PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 ELSE RETURN PEDS_DJ_CUTSCENE_STAGE_PLAY_START ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 RETURN PEDS_DJ_CUTSCENE_STAGE_PLAY_START ENDSWITCH RETURN PEDS_DJ_CUTSCENE_STAGE_CLEANUP ENDFUNC PROC CLEANUP_DJ_CUTSCENE(NIGHT_CLUB_STRUCT &nightClubStruct) RENDER_SCRIPT_CAMS(FALSE, FALSE) IF DOES_CAM_EXIST(nightClubStruct.sDJCutscene.cCam) DESTROY_CAM(nightClubStruct.sDJCutscene.cCam) ENDIF INT i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.pPeds[i]) DELETE_PED(nightClubStruct.sDJCutscene.pPeds[i]) ENDIF ENDREPEAT REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_OBJECT_MAX) i IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.oObjects[i]) DELETE_OBJECT(nightClubStruct.sDJCutscene.oObjects[i]) ENDIF ENDREPEAT SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) BOOL bClearHelp = FALSE IF IS_ANY_FLOATING_HELP_BEING_DISPLAYED() bClearHelp = TRUE ENDIF CLEANUP_MP_CUTSCENE(bClearHelp, TRUE) SET_SIMPLE_INTERIOR_INT_SCRIPT_SHOULD_NOT_FADE_IN_ON_ENTRY(FALSE) IF NOT IS_STRING_NULL_OR_EMPTY(g_drunkCameraTimeCycleName) SET_TIMECYCLE_MODIFIER(g_drunkCameraTimeCycleName) ENDIF IF GET_OWNER_OF_THIS_NIGHTCLUB() = PLAYER_ID() SET_LOCAL_PLAYER_NIGHTCLUB_DJ_SWITCH_CUTSCENE_ACTIVE(FALSE) SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-1591.4854, -3013.6069, -80.0060>>) SET_ENTITY_HEADING(PLAYER_PED_ID(), 74.0804) SET_GAMEPLAY_CAM_RELATIVE_HEADING(12.1322) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-3.2652) ENDIF IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) AND NOT IS_TRANSITION_ACTIVE() AND IS_SKYSWOOP_AT_GROUND() AND NOT IS_NEW_LOAD_SCENE_ACTIVE() NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) ENDIF ENDPROC PROC SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(NIGHT_CLUB_STRUCT &nightClubStruct, NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE eStage) nightClubStruct.sDJCutscene.eDJSwitchSceneState = eStage CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - SWITCHING TO ", GET_STRING_FOR_DJ_CUTSCENE_STAGE(eStage)) ENDPROC PROC MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(NIGHT_CLUB_STRUCT &nightClubStruct) INT i, j TEXT_LABEL_63 tlAnimationClipBase = "" INT backgroundPedsSyncedScene NIGHTCLUB_PEDS_DJ_CUTSCENE_PED ePed NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT eObject NC_PED_DATA sPedData BOOL bExistsInAnims = FALSE VECTOR scenePosition = <<-1604.66, -3012.58, -80.00>> VECTOR sceneRotation = <<0, 0, 0>> NIGHTCLUB_DJ_ID eFromDJ = GET_PLAYER_NIGHTCLUB_DJ_LAST_FOR_SWITCH(GET_OWNER_OF_THIS_NIGHTCLUB()) NIGHTCLUB_DJ_ID eToDJ = g_eActiveDJ IF (GET_FRAME_COUNT() % 120) = 0 CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - STAGE = ", GET_STRING_FOR_DJ_CUTSCENE_STAGE(nightClubStruct.sDJCutscene.eDJSwitchSceneState)) ENDIF SWITCH nightClubStruct.sDJCutscene.eDJSwitchSceneState CASE PEDS_DJ_CUTSCENE_STAGE_INITIALISE IF HAS_NET_TIMER_STARTED(nightClubStruct.stDJSwitchTransitionSoundReset) AND HAS_NET_TIMER_EXPIRED(nightClubStruct.stDJSwitchTransitionSoundReset, 15000) RELEASE_NAMED_SCRIPT_AUDIO_BANK("DLC_BATTLE/BTL_CLUB_OPEN_TRANSITION_CROWD") RESET_NET_TIMER(nightClubStruct.stDJSwitchTransitionSoundReset) ENDIF IF nightClubStruct.bPlayDjEnterCutscene AND g_bNightClubPedsReadyToView SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_ASSET_REQUEST) ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_ASSET_REQUEST nightClubStruct.bHavePedsBeenTasked = FALSE // PEDS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i ePed = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED, i) CLEAR_NC_PED_DATA_STRUCT(sPedData) GET_PED_DATA_FOR_DJ_SWITCH(eFromDJ, eToDJ, ePed, sPedData) IF sPedData.mnPedModel != DUMMY_MODEL_FOR_SCRIPT bExistsInAnims = FALSE REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_START) - ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END) j IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE, j + ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END)), ePed)) bExistsInAnims = TRUE BREAKLOOP ENDIF ENDREPEAT IF bExistsInAnims REQUEST_MODEL(sPedData.mnPedModel) ENDIF ENDIF ENDREPEAT // OBJECTS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_OBJECT_MAX) i eObject = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT, i) IF GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject) != DUMMY_MODEL_FOR_SCRIPT bExistsInAnims = FALSE REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_START) - ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END) j IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE, j + ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END)), eObject)) bExistsInAnims = TRUE BREAKLOOP ENDIF ENDREPEAT IF bExistsInAnims REQUEST_MODEL(GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject)) ENDIF ENDIF ENDREPEAT IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) REQUEST_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) ENDIF SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_LOAD) BREAK CASE PEDS_DJ_CUTSCENE_STAGE_LOAD //PEDS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i ePed = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED, i) CLEAR_NC_PED_DATA_STRUCT(sPedData) GET_PED_DATA_FOR_DJ_SWITCH(eFromDJ, eToDJ, ePed, sPedData) IF sPedData.mnPedModel != DUMMY_MODEL_FOR_SCRIPT bExistsInAnims = FALSE j = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_START) - ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END) j IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE, j + ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END)), ePed)) bExistsInAnims = TRUE BREAKLOOP ENDIF ENDREPEAT IF bExistsInAnims IF NOT DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.pPeds[i]) REQUEST_MODEL(sPedData.mnPedModel) IF NOT HAS_MODEL_LOADED(sPedData.mnPedModel) EXIT ELSE nightClubStruct.sDJCutscene.pPeds[i] = CREATE_PED(PEDTYPE_CIVMALE, sPedData.mnPedModel, scenePosition, 0, FALSE) IF sPedData.mnPedModel != INT_TO_ENUM(MODEL_NAMES, HASH("A_F_Y_ClubCust_01")) j = 0 REPEAT NUM_PED_COMPONENTS j IF sPedData.pcsComponents[j].NewPaletteNumber != -1 AND sPedData.pcsComponents[j].NewTextureNumber != -1 AND sPedData.pcsComponents[j].NewDrawableNumber != -1 SET_PED_COMPONENT_VARIATION(nightClubStruct.sDJCutscene.pPeds[i], INT_TO_ENUM(PED_COMPONENT,j), sPedData.pcsComponents[j].NewDrawableNumber, sPedData.pcsComponents[j].NewTextureNumber, sPedData.pcsComponents[j].NewPaletteNumber) ENDIF ENDREPEAT j = 0 REPEAT NUM_PED_PROPS j IF sPedData.ppsProps[j].iPropIndex != -1 AND (sPedData.mnPedModel != INT_TO_ENUM(MODEL_NAMES, HASH("IG_TalMM"))) SET_PED_PROP_INDEX(nightClubStruct.sDJCutscene.pPeds[i], INT_TO_ENUM(PED_PROP_POSITION, j), sPedData.ppsProps[j].iPropIndex, sPedData.ppsProps[j].iTexIndex) ENDIF ENDREPEAT ENDIF SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , FALSE) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], TRUE) ENDIF ELIF NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.pPeds[i]) AND NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(nightClubStruct.sDJCutscene.pPeds[i]) EXIT ENDIF ENDIF ENDIF ENDREPEAT //OBJECTS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_OBJECT_MAX) i eObject = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT, i) IF GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject) != DUMMY_MODEL_FOR_SCRIPT bExistsInAnims = FALSE j = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_START) - ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END) j IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_STAGE, j + ENUM_TO_INT(PEDS_DJ_CUTSCENE_STAGE_PLAY_END)), eObject)) bExistsInAnims = TRUE BREAKLOOP ENDIF ENDREPEAT IF bExistsInAnims IF NOT DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.oObjects[i]) REQUEST_MODEL(GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject)) IF NOT HAS_MODEL_LOADED(GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject)) EXIT ELSE nightClubStruct.sDJCutscene.oObjects[i] = CREATE_OBJECT(GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject), scenePosition + <>, FALSE) SET_ENTITY_COORDS(nightClubStruct.sDJCutscene.oObjects[i], scenePosition) //have to create them all offset otherwise it asserts SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.oObjects[i] , FALSE) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.oObjects[i], TRUE) ENDIF ENDIF ENDIF ENDIF ENDREPEAT IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) REQUEST_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) IF NOT HAS_ANIM_DICT_LOADED(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) EXIT ENDIF ENDIF IF DOES_CAM_EXIST(nightClubStruct.sDJCutscene.cCam) DESTROY_CAM(nightClubStruct.sDJCutscene.cCam) ENDIF nightClubStruct.sDJCutscene.cCam = CREATE_CAMERA(CAMTYPE_ANIMATED) nightClubStruct.sDJCutscene.iSyncSceneID = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - BEGIN RUN ANIMS FOR ", GET_STRING_FOR_DJ_CUTSCENE_STAGE(PEDS_DJ_CUTSCENE_STAGE_PLAY_END), " FROM DJ ", eFromDJ, " TO DJ ", eToDJ) // PEDS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i ePed = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED, i) GET_PED_DATA_FOR_DJ_SWITCH(eFromDJ, eToDJ, ePed, sPedData) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.pPeds[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.pPeds[i]) AND NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, ePed)) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , TRUE) tlAnimationClipBase = GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, ePed) TASK_SYNCHRONIZED_SCENE(nightClubStruct.sDJCutscene.pPeds[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END), tlAnimationClipBase, INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, ePed)) IF ePed = PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_TO_1 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_TO_2 tlAnimationClipBase += "_Face" TASK_PLAY_ANIM(nightClubStruct.sDJCutscene.pPeds[i], GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END), tlAnimationClipBase, DEFAULT, DEFAULT, DEFAULT, AF_SECONDARY) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING FACIAL ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", tlAnimationClipBase) ENDIF ELSE CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NOT RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed)) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(sPedData.mnPedModel) ENDREPEAT // OBJECTS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_OBJECT_MAX) i eObject = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT, i) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.oObjects[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.oObjects[i]) AND NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, eObject)) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.oObjects[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.oObjects[i] , TRUE) PLAY_SYNCHRONIZED_ENTITY_ANIM(nightClubStruct.sDJCutscene.oObjects[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, eObject), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END), INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR OBJECT ", GET_STRING_FOR_DJ_CUTSCENE_OBJECT(eObject), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END, eObject)) ELSE CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NOT RUNNING ANIMS FOR OBJECT ", GET_STRING_FOR_DJ_CUTSCENE_OBJECT(eObject)) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(GET_OBJECT_MODEL_FOR_DJ_SWITCH(eObject)) ENDREPEAT PLAY_SYNCHRONIZED_CAM_ANIM(nightClubStruct.sDJCutscene.cCam, nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_CLIP_FOR_DJ_SWITCH_CAMERA(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) REMOVE_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, PEDS_DJ_CUTSCENE_STAGE_PLAY_END)) IF NOT REQUEST_SCRIPT_AUDIO_BANK("DLC_BATTLE/BTL_CLUB_OPEN_TRANSITION_CROWD") CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - REQUESTED DLC_BATTLE/BTL_CLUB_OPEN_TRANSITION_CROWD BANK NOT LOADED YET") EXIT ENDIF IF LOAD_STREAM("DJ_Changeover", "dlc_btl_club_dj_changeover_sounds") CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - DJ_CHANGEOVER LOADED") SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_FADEIN) ELSE CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - DJ_CHANGEOVER NOT LOADED YET") ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_FADEIN DISABLE_CELLPHONE_THIS_FRAME_ONLY(TRUE) HIDE_HELP_TEXT_THIS_FRAME() THEFEED_HIDE_THIS_FRAME() IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) AND GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID) > 0.0 IF NOT IS_STREAM_PLAYING() PLAY_STREAM_FRONTEND() CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - PLAYING THE STREAM") ENDIF CLEAR_TIMECYCLE_MODIFIER() SET_CAM_ACTIVE(nightClubStruct.sDJCutscene.cCam, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_MP_CUTSCENE(TRUE) NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) PRINTLN("NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - Scene is playing, fading screen in.") ENDIF RESET_NET_TIMER(nightClubStruct.sDJCutscene.stFailSafe) SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_PLAY_END) ENDIF BREAK //Massive hack to fix: url:bugstar:5143661 - CLUB_DJ_SWITCH - Tale of Us' entourage popped in a frame after the DJs entered the DJ Booth when swapping with The Black Madonna. CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_END DISABLE_CELLPHONE_THIS_FRAME_ONLY(TRUE) HIDE_HELP_TEXT_THIS_FRAME() THEFEED_HIDE_THIS_FRAME() IF eFromDJ = DJ_BLACK_MADONNA AND eToDJ = DJ_TALE_OF_US IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) AND GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID) > 0.95 AND NOT nightClubStruct.bHavePedsBeenTasked backgroundPedsSyncedScene = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i ePed = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED, i) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.pPeds[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.pPeds[i]) AND(ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_1 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_2 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_3 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_4 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_5) IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , TRUE) TASK_SYNCHRONIZED_SCENE(nightClubStruct.sDJCutscene.pPeds[i], backgroundPedsSyncedScene, GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed), INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) ENDIF ENDIF ENDREPEAT nightClubStruct.bHavePedsBeenTasked = TRUE ENDIF ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) REQUEST_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) AND GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID) > 0.99 IF HAS_ANIM_DICT_LOADED(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) nightClubStruct.sDJCutscene.iSyncSceneID = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - BEGIN RUN ANIMS FOR ", GET_STRING_FOR_DJ_CUTSCENE_STAGE(GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " FROM DJ ", eFromDJ, " TO DJ ", eToDJ) //PEDS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i ePed = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED, i) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.pPeds[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.pPeds[i]) IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) tlAnimationClipBase = GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed) IF eFromDJ = DJ_BLACK_MADONNA AND eToDJ = DJ_TALE_OF_US IF NOT(ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_1 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_2 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_TO_3 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_1 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_2 OR ePed = PEDS_DJ_CUTSCENE_PED_ENTOURAGE_FROM_3 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_1 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_2 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_3 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_4 OR ePed = PEDS_DJ_CUTSCENE_PED_CROWD_F_5) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , TRUE) TASK_SYNCHRONIZED_SCENE(nightClubStruct.sDJCutscene.pPeds[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), tlAnimationClipBase, INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) ENDIF ELSE FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , TRUE) TASK_SYNCHRONIZED_SCENE(nightClubStruct.sDJCutscene.pPeds[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), tlAnimationClipBase, INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) ENDIF IF ePed = PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_TO_1 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_TO_2 tlAnimationClipBase += "_Face" TASK_PLAY_ANIM(nightClubStruct.sDJCutscene.pPeds[i], GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), tlAnimationClipBase, DEFAULT, DEFAULT, DEFAULT, AF_SECONDARY) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING FACIAL ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", tlAnimationClipBase) ENDIF ELSE FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], TRUE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , FALSE) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NOT RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed)) ENDIF ENDIF ENDREPEAT //OBYEKTS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_OBJECT_MAX) i eObject = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT, i) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.oObjects[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.oObjects[i]) IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), eObject)) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.oObjects[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.oObjects[i] , TRUE) PLAY_SYNCHRONIZED_ENTITY_ANIM(nightClubStruct.sDJCutscene.oObjects[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), eObject), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR OBJECT ", GET_STRING_FOR_DJ_CUTSCENE_OBJECT(eObject), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), eObject)) ELSE FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.oObjects[i], TRUE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.oObjects[i] , FALSE) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NOT RUNNING ANIMS FOR OBJECT ", GET_STRING_FOR_DJ_CUTSCENE_OBJECT(eObject)) ENDIF ENDIF ENDREPEAT PLAY_SYNCHRONIZED_CAM_ANIM(nightClubStruct.sDJCutscene.cCam, nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_CLIP_FOR_DJ_SWITCH_CAMERA(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) IF NOT ARE_STRINGS_EQUAL(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)))) REMOVE_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) ENDIF SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)) ELSE CWARNINGLN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - CANNOT CONTINUE AS CUTSCENE NOT LOADED!") ENDIF ENDIF ELIF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) AND GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID) > 0.99 IF GET_OWNER_OF_THIS_NIGHTCLUB() != PLAYER_ID() DO_SCREEN_FADE_OUT(SIMPLE_INTERIOR_SCREEN_FADE_TIME) ENDIF SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_CLEANUP) ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_ENTER CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_SWITCH2 CASE PEDS_DJ_CUTSCENE_STAGE_PLAY_START DISABLE_CELLPHONE_THIS_FRAME_ONLY(TRUE) HIDE_HELP_TEXT_THIS_FRAME() THEFEED_HIDE_THIS_FRAME() IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) REQUEST_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) AND GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID) > 0.99 IF HAS_ANIM_DICT_LOADED(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) nightClubStruct.sDJCutscene.iSyncSceneID = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - BEGIN RUN ANIMS FOR ", GET_STRING_FOR_DJ_CUTSCENE_STAGE(GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " FROM DJ ", eFromDJ, " TO DJ ", eToDJ) //PEDS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_PED_MAX) i ePed = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_PED, i) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.pPeds[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.pPeds[i]) IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , TRUE) tlAnimationClipBase = GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed) TASK_SYNCHRONIZED_SCENE(nightClubStruct.sDJCutscene.pPeds[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), tlAnimationClipBase, INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_PED(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), ePed)) IF ePed = PEDS_DJ_CUTSCENE_PED_DJ_FROM_1 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_FROM_2 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_TO_1 OR ePed = PEDS_DJ_CUTSCENE_PED_DJ_TO_2 tlAnimationClipBase += "_Face" TASK_PLAY_ANIM(nightClubStruct.sDJCutscene.pPeds[i], GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), tlAnimationClipBase, DEFAULT, DEFAULT, DEFAULT, AF_SECONDARY) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING FACIAL ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", tlAnimationClipBase) ENDIF ELSE FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.pPeds[i], TRUE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.pPeds[i] , FALSE) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NOT RUNNING ANIMS FOR PED ", GET_STRING_FOR_DJ_CUTSCENE_PED(ePed)) ENDIF ENDIF ENDREPEAT //OBJECTS i = 0 REPEAT ENUM_TO_INT(PEDS_DJ_CUTSCENE_OBJECT_MAX) i eObject = INT_TO_ENUM(NIGHTCLUB_PEDS_DJ_CUTSCENE_OBJECT, i) IF DOES_ENTITY_EXIST(nightClubStruct.sDJCutscene.oObjects[i]) AND NOT IS_ENTITY_DEAD(nightClubStruct.sDJCutscene.oObjects[i]) IF NOT IS_STRING_NULL_OR_EMPTY(GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), eObject)) FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.oObjects[i], FALSE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.oObjects[i] , TRUE) PLAY_SYNCHRONIZED_ENTITY_ANIM(nightClubStruct.sDJCutscene.oObjects[i], nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), eObject), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), INSTANT_BLEND_IN, INSTANT_BLEND_OUT) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - RUNNING ANIMS FOR OBJECT ", GET_STRING_FOR_DJ_CUTSCENE_OBJECT(eObject), ": ", GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), " ", GET_ANIM_CLIP_FOR_DJ_SWITCH_OBJECT(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState), eObject)) ELSE FREEZE_ENTITY_POSITION(nightClubStruct.sDJCutscene.oObjects[i], TRUE) SET_ENTITY_VISIBLE(nightClubStruct.sDJCutscene.oObjects[i] , FALSE) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NOT RUNNING ANIMS FOR OBJECT ", GET_STRING_FOR_DJ_CUTSCENE_OBJECT(eObject)) ENDIF ENDIF ENDREPEAT PLAY_SYNCHRONIZED_CAM_ANIM(nightClubStruct.sDJCutscene.cCam, nightClubStruct.sDJCutscene.iSyncSceneID, GET_ANIM_CLIP_FOR_DJ_SWITCH_CAMERA(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) IF NOT ARE_STRINGS_EQUAL(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)), GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)))) REMOVE_ANIM_DICT(GET_ANIM_DICT_FOR_DJ_SWITCH(eFromDJ, eToDJ, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState))) ENDIF SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, GET_NEXT_DJ_SWITCH_SCENE(eFromDJ, nightClubStruct.sDJCutscene.eDJSwitchSceneState)) ELSE CWARNINGLN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - CANNOT CONTINUE AS CUTSCENE NOT LOADED!") ENDIF ENDIF ELIF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) AND GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID) > 0.99 IF GET_OWNER_OF_THIS_NIGHTCLUB() != PLAYER_ID() DO_SCREEN_FADE_OUT(SIMPLE_INTERIOR_SCREEN_FADE_TIME) ENDIF SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_CLEANUP) ENDIF #IF IS_DEBUG_BUILD IF IS_SYNCHRONIZED_SCENE_RUNNING(nightClubStruct.sDJCutscene.iSyncSceneID) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - CURRENT PHASE = ", GET_SYNCHRONIZED_SCENE_PHASE(nightClubStruct.sDJCutscene.iSyncSceneID)) ENDIF #ENDIF IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.sDJCutscene.stFailSafe) START_NET_TIMER(nightClubStruct.sDJCutscene.stFailSafe) ENDIF IF HAS_NET_TIMER_EXPIRED(nightClubStruct.sDJCutscene.stFailSafe, MAX_DJ_CUTSCENE_FALLBACK_TIME) CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - Net timer has expired, cleaning cutscene.") RESET_NET_TIMER(nightClubStruct.sDJCutscene.stFailSafe) SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_CLEANUP) ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_CLEANUP DISABLE_CELLPHONE_THIS_FRAME_ONLY(TRUE) HIDE_HELP_TEXT_THIS_FRAME() THEFEED_HIDE_THIS_FRAME() IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.sDJCutscene.stIdleFallBack) START_NET_TIMER(nightClubStruct.sDJCutscene.stIdleFallBack) ENDIF // If we idle in the cleanup for more than 5 seconds then bail and force cleanup. IF HAS_NET_TIMER_EXPIRED(nightClubStruct.sDJCutscene.stIdleFallBack, 5000) nightClubStruct.sDJCutscene.bIdleTimeout = TRUE CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - Idle fallback timer has expired, forcing cleanup.") ENDIF IF NOT HAS_NET_TIMER_STARTED(nightClubStruct.sDJCutscene.stFailSafe) OR HAS_NET_TIMER_EXPIRED(nightClubStruct.sDJCutscene.stFailSafe, 1000) OR nightClubStruct.sDJCutscene.bIdleTimeout RESET_NET_TIMER(nightClubStruct.sDJCutscene.stIdleFallBack) CLEANUP_DJ_CUTSCENE(nightClubStruct) IF GET_OWNER_OF_THIS_NIGHTCLUB() != PLAYER_ID() g_bNightClubPedsReadyToView = FALSE SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_FADEIN_END) ELSE START_NET_TIMER(nightClubStruct.stDJSwitchTransitionSoundReset) PLAY_SOUND_FRONTEND(-1, "club_crowd_transition", "dlc_btl_club_open_transition_crowd_sounds") CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NIGHTCLUB END TRANSITION SOUND PLAYED") nightClubStruct.bPlayDjEnterCutscene = FALSE SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_INITIALISE) // set all peds to be processed this frame REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS i nightClubStruct.bDoProcessEveryFrame[i] = TRUE ENDREPEAT ENDIF CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - ******* FINISHED ******") ELSE CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - WAITING FOR REFRESH") ENDIF BREAK CASE PEDS_DJ_CUTSCENE_STAGE_FADEIN_END IF g_bNightClubPedsReadyToView START_NET_TIMER(nightClubStruct.stDJSwitchTransitionSoundReset) PLAY_SOUND_FRONTEND(-1, "club_crowd_transition", "dlc_btl_club_open_transition_crowd_sounds") CDEBUG1LN(DEBUG_CUTSCENE, "NIGHTCLUBPEDS - MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE - NIGHTCLUB END TRANSITION SOUND PLAYED") DO_SCREEN_FADE_IN(SIMPLE_INTERIOR_SCREEN_FADE_TIME) nightClubStruct.bPlayDjEnterCutscene = FALSE SET_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct, PEDS_DJ_CUTSCENE_STAGE_INITIALISE) ENDIF BREAK ENDSWITCH ENDPROC #IF IS_DEBUG_BUILD PROC CREATE_ALL_PEDS_FOR_COMPONENTS(MODEL_NAMES ClienteleModel, STRING sPath, STRING sFile) REQUEST_MODEL(ClienteleModel) WHILE NOT HAS_MODEL_LOADED(ClienteleModel) WAIT(0) ENDWHILE INT j INT m PED_INDEX PedID[MAX_NUMBER_OF_NIGHTCLUB_PED_DATA] INT iPackedDrawable INT iPackedTexture INT iDrawable INT iTexture PED_COMPONENT_CONFIG ComponentConfig VECTOR vPos SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" // ",sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_MODEL_NAME_FOR_DEBUG(ClienteleModel),sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // create first 100 peds REPEAT 100 j vPos = ActualPos(j) IF (VMAG(vPos) > 0.0) pedID[j] = CREATE_PED(PEDTYPE_MISSION, ClienteleModel, vPos, ActualHeading(j), FALSE, FALSE) IF DOES_ENTITY_EXIST(pedID[j]) AND NOT IS_ENTITY_DEAD(pedID[j]) REPEAT NUM_PED_COMPONENTS m iDrawable = GET_PED_DRAWABLE_VARIATION(pedID[j], INT_TO_ENUM(PED_COMPONENT, m)) iTexture = GET_PED_TEXTURE_VARIATION(pedID[j], INT_TO_ENUM(PED_COMPONENT, m)) IF (m < MAX_NUM_OF_SETTABLE_COMPONENTS) ComponentConfig.ComponentData[m].iDrawable = iDrawable ComponentConfig.ComponentData[m].iTexture = iTexture ENDIF ENDREPEAT PACK_PED_COMPONENT_CONFIG(ComponentConfig, iPackedDrawable, iPackedTexture) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(j,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" iPackedDrawable = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(iPackedDrawable,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" iPackedTexture = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(iPackedTexture,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDREPEAT // delete REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA j IF DOES_ENTITY_EXIST(pedID[j]) DELETE_PED(pedid[j]) ENDIF ENDREPEAT // create remaining peds REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA j IF (j < 100) j = 100 ENDIF vPos = ActualPos(j) IF (VMAG(vPos) > 0.0) pedID[j] = CREATE_PED(PEDTYPE_MISSION, ClienteleModel, vPos, ActualHeading(j), FALSE, FALSE) IF DOES_ENTITY_EXIST(pedID[j]) AND NOT IS_ENTITY_DEAD(pedID[j]) REPEAT NUM_PED_COMPONENTS m iDrawable = GET_PED_DRAWABLE_VARIATION(pedID[j], INT_TO_ENUM(PED_COMPONENT, m)) iTexture = GET_PED_TEXTURE_VARIATION(pedID[j], INT_TO_ENUM(PED_COMPONENT, m)) IF (m < MAX_NUM_OF_SETTABLE_COMPONENTS) ComponentConfig.ComponentData[m].iDrawable = iDrawable ComponentConfig.ComponentData[m].iTexture = iTexture ENDIF ENDREPEAT PACK_PED_COMPONENT_CONFIG(ComponentConfig, iPackedDrawable, iPackedTexture) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(j,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" iPackedDrawable = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(iPackedDrawable,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" iPackedTexture = ",sPath, sFile) SAVE_INT_TO_NAMED_DEBUG_FILE(iPackedTexture,sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) ENDIF ENDIF ENDREPEAT // delete REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA j IF DOES_ENTITY_EXIST(pedID[j]) DELETE_PED(pedid[j]) ENDIF ENDREPEAT ENDPROC PROC OUTPUT_COMPONENT_VARIAITONS() STRING sPath = "X:/gta5/titleupdate/dev_ng/" INT iYear, iMonth, iDay, iHour, iMins, iSec GET_LOCAL_TIME(iYear, iMonth, iDay, iHour, iMins, iSec) TEXT_LABEL_63 sFile sFile = "club_component_data_" IF (iHour < 10) sFile += 0 ENDIF sFile += iHour sFile += "." IF (iMins < 10) sFile += 0 ENDIF sFile += iMins sFile += "." IF (iSec < 10) sFile += 0 ENDIF sFile += iSec sFile += ".txt" CLEAR_NAMED_DEBUG_FILE(sPath, sFile) OPEN_NAMED_DEBUG_FILE(sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("// === club ped components === ",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE("SWITCH g_iNightClubClientele",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // clientele 0 SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 0",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH g_iNightClubClienteleVariation",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 0",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 0),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 0),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 1",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 0),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 0),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 2",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 0),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 0),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // clientele 1 SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 1",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH g_iNightClubClienteleVariation",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 0",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 1),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 1),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 1",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 1),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 1),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 2",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 1),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 1),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // clientele 2 SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 2",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH g_iNightClubClienteleVariation",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 0",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 2),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 2),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 1",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 2),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 2),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" CASE 2",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" IF (bFemale)",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(TRUE, 2),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ELSE",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" SWITCH iNCPedID",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CREATE_ALL_PEDS_FOR_COMPONENTS(GetClienteleModel(FALSE, 2),sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDIF",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) SAVE_STRING_TO_NAMED_DEBUG_FILE(" BREAK",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) // end SAVE_STRING_TO_NAMED_DEBUG_FILE("ENDSWITCH",sPath, sFile) SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile) CLOSE_DEBUG_FILE() ENDPROC #ENDIF PROC UPDATE_PED_BEHAVIOUR(NIGHT_CLUB_STRUCT &nightClubStruct, PLAYER_BROADCAST_DATA &PlayerBD[NUM_NETWORK_PLAYERS], NC_ACTIVITY_MAIN &activityMain) #IF IS_DEBUG_BUILD TEXT_LABEL_63 tlTemp = "NC_STAGE_UPDATE_PED_BEHAVIOUR" ADD_VISIBLE_BLOCK(tlTemp) #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("ADD_VISIBLE_BLOCK") #ENDIF #ENDIF // ACT_NIGHTCLUB_PED_STATE eStateToGoToNext // eStateToGoToNext = NC_POS_ACT_STAGE_WALKING_TO_FIRST_ACTIVITY UpdateExpectedTimeUntilNextPedProcess(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("UpdateExpectedTimeUntilNextPedProcess") #ENDIF #ENDIF #IF IS_DEBUG_BUILD Process_DJ_Sig_Move(nightClubStruct) #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("Process_DJ_Sig_Move") #ENDIF #ENDIF INT k #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_PRE_LOOP_MARKER("MAX_NUMBER_OF_NIGHTCLUB_PEDS") #ENDIF #ENDIF nightClubStruct.iProcessedThisFrame = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS k Process_Ped_Behaviour(nightClubStruct, k, activityMain) ENDREPEAT #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_POST_LOOP_MARKER() #ENDIF #ENDIF nightClubStruct.iProcessStagger += nightClubStruct.iStaggerPerFrame IF (nightClubStruct.iProcessStagger >= MAX_NUMBER_OF_NIGHTCLUB_PEDS) nightClubStruct.iProcessStagger -= MAX_NUMBER_OF_NIGHTCLUB_PEDS ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE CLOSE_SCRIPT_PROFILE_MARKER_GROUP() #ENDIF #ENDIF MANAGE_BOUNCER_PLAYER_TURN_AWAY(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MANAGE_BOUNCER_PLAYER_TURN_AWAY") #ENDIF #ENDIF MANAGE_LAZLOW_PED_CUSTOM_SPEECH(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MANAGE_LAZLOW_PED_CUSTOM_SPEECH") #ENDIF #ENDIF MANAGE_DJ_PED_CUSTOM_SPEECH(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MANAGE_DJ_PED_CUSTOM_SPEECH") #ENDIF #ENDIF MANAGE_CLOAKROOM_PED_ACCEPT_PAYMENT(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MANAGE_CLOAKROOM_PED_ACCEPT_PAYMENT") #ENDIF #ENDIF MANAGE_DANCE_FLOOR_COLLISIONS(PlayerBD) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MANAGE_DANCE_FLOOR_COLLISIONS") #ENDIF #ENDIF ENDPROC PROC RUN_PEDS_UPDATE(NIGHT_CLUB_STRUCT &nightClubStruct, SERVER_BROADCAST_DATA &ServerBD, PLAYER_BROADCAST_DATA &PlayerBD[NUM_NETWORK_PLAYERS]) VECTOR vPos FLOAT fHeading INT j, l, m BOOL bInHallwayOrDownstairsBar BOOL bInUpstairsBarOrNightClubMainSpace BOOL bInToiletOrToiletEntranceArea BOOL bInBackBarViewableArea #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE SCRIPT_PROFILER_START_OF_FRAME() #ENDIF #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE OPEN_SCRIPT_PROFILE_MARKER_GROUP("RUN_PEDS_UPDATE - start functions (every frame)") #ENDIF #ENDIF CREATE_PED_STAND_ALONE_PROPS(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("CREATE_PED_STAND_ALONE_PROPS") #ENDIF #ENDIF SCRIPT_SHUTDOWN_LOGIC(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("SCRIPT_SHUTDOWN_LOGIC") #ENDIF #ENDIF // CDEBUG1LN(DEBUG_NET_PED_DANCING, " iNCMaxSyncSceneEntityInSequence = ", iNCMaxSyncSceneEntityInSequence) CREATE_COKE_POWDER() #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("CREATE_COKE_POWDER") #ENDIF #ENDIF MAINTAIN_GLOBAL_AUDIO_INTENSITY_LEVEL(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MAINTAIN_GLOBAL_AUDIO_INTENSITY_LEVEL") #ENDIF #ENDIF // EDIT_JACK_CLIP(nightClubStruct) MAINTAIN_NIGHTCLUB_RADIO(nightClubStruct, ServerBD) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MAINTAIN_NIGHTCLUB_RADIO") #ENDIF #ENDIF MANAGE_SCRIPT_CLEANUP_CONDITIONS() #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MANAGE_SCRIPT_CLEANUP_CONDITIONS") #ENDIF #ENDIF // MAINTAIN_AUDIO_TAGGING_LOGIC(nightClubStruct) // MAINTAIN_ANIM_BEAT_LOGIC_USING_HARDCODED_BEAT_TIMING(nightClubStruct) NC_ACTIVITY_MAIN activityMain #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_ACTIVITY_MAIN") #ENDIF #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("DEBUG_UPDATE_PED_POSITIONS_FROM_WIDGET") #ENDIF #ENDIF #IF IS_DEBUG_BUILD DEBUG_DISPLAY_NIGHTCLUB_PED_DEBUG(nightClubStruct) TEXT_LABEL_63 tlTemp #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("DEBUG_DISPLAY_NIGHTCLUB_PED_DEBUG") #ENDIF #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE CLOSE_SCRIPT_PROFILE_MARKER_GROUP() #ENDIF #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE OPEN_SCRIPT_PROFILE_MARKER_GROUP("RUN_PEDS_UPDATE - state machine") #ENDIF #ENDIF UPDATE_SERVER_BROADCAST_DATA(ServerBD) IF g_ncState = NC_STAGE_REMOVE_CULLED_PEDS OR g_ncState = NC_STAGE_POPULATE_CULLED_PED_ARRAY // Setup bounding box vars IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInFirstHallwayCullable(PLAYER_PED_ID()) OR NOT nightClubStruct.bUseCameraForCulling AND IsEntityInSecondHallwayCullable(PLAYER_PED_ID()) OR NOT nightClubStruct.bUseCameraForCulling AND IsEntityInDownstairsBarViewable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInFirstHallwayCullable(GET_FINAL_RENDERED_CAM_COORD()) OR nightClubStruct.bUseCameraForCulling AND IsPointInSecondHallwayCullable(GET_FINAL_RENDERED_CAM_COORD()) OR nightClubStruct.bUseCameraForCulling AND IsPointInDownstairsBarViewable(GET_FINAL_RENDERED_CAM_COORD()) bInHallwayOrDownstairsBar = TRUE ELIF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInUpstairsBarCullable(PLAYER_PED_ID()) OR NOT nightClubStruct.bUseCameraForCulling AND IsEntityInMainSpaceViewable(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInUpstairsBarCullable(GET_FINAL_RENDERED_CAM_COORD()) OR nightClubStruct.bUseCameraForCulling AND IsPointInMainSpaceViewable(GET_FINAL_RENDERED_CAM_COORD()) bInUpstairsBarOrNightClubMainSpace = TRUE ENDIF //CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: bInHallwayOrDownstairsBar: ", bInHallwayOrDownstairsBar, ", bInUpstairsBarOrNightClubMainSpace: ", bInUpstairsBarOrNightClubMainSpace) IF NOT nightClubStruct.bUseCameraForCulling AND IsEntityInToiletEntrance(PLAYER_PED_ID()) OR nightClubStruct.bUseCameraForCulling AND IsPointInToiletEntrance(GET_FINAL_RENDERED_CAM_COORD()) bInToiletOrToiletEntranceArea = TRUE ELSE bInBackBarViewableArea = TRUE ENDIF //CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: bInToiletOrToiletEntranceArea: ", bInToiletOrToiletEntranceArea, ", bInBackBarViewableArea: ", bInBackBarViewableArea) ENDIF SWITCH g_ncState CASE NC_STAGE_INIT IF NOT NETWORK_IS_HOST_OF_THIS_SCRIPT() CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: client: ServerBD.iHostCompletedSetup = ", ServerBD.iHostCompletedSetup, " , nightClubStruct.iCompletedSetup = ", nightClubStruct.iCompletedSetup ) IF ServerBD.iHostCompletedSetup <= nightClubStruct.iCompletedSetup // added timeout for url:bugstar:5085066 - Nightclub Property - After setting the Club to Private and Renovating the Local Player was stuck on a black loading screen. j = GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), nightClubStruct.resetTimer) IF (j > 30000) nightClubStruct.iCompletedSetup = -1 CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: client: hit timout!" ) ENDIF CWARNINGLN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: waiting for host to complete setup: ServerBD.iHostCompletedSetup (", ServerBD.iHostCompletedSetup, ") <= nightClubStruct.iCompletedSetup (", nightClubStruct.iCompletedSetup, ", time = ", j, " )") BREAK ENDIF ENDIF #IF IS_DEBUG_BUILD tlTemp = "NC_STAGE_INIT" ADD_VISIBLE_BLOCK(tlTemp) #ENDIF j = 0 UPDATE_NIGHTCLUB_LAYOUT() IF NETWORK_IS_HOST_OF_THIS_SCRIPT() AND ServerBD.iHostCompletedSetup <= nightClubStruct.iCompletedSetup #IF IS_DEBUG_BUILD IF g_bNightClubUseWidgetValues ServerBD.iTonyPosition = g_iWidgetTonyPosition ServerBD.iLazlowPosition = g_iWidgetLazlowPosition ServerBD.iToiletLayout = g_iToiletPedsLayoutWidget ServerBD.iHallwayLayout = g_iHallwayPedLayoutWidget ServerBD.iMainArea = g_iMainAreaLayoutWidget ServerBD.iMainAreaVariation = g_iMainAreaLayoutVariationWidget ServerBD.iClientele = g_iNightClubClientele_WidgetValue ServerBD.iClienteleVariation = g_iNightClubClienteleVariation_WidgetValue ENDIF #ENDIF // choose random lazlow location, but should be on stage if club has just been fully setup, or is doing a dj switch scene IF (ServerBD.iLazlowPosition = -1) IF (g_iNightClubSetupState = NSS_FULLY_SETUP) IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) AND (g_fPercentagePopularity > 50.0) ServerBD.iLazlowPosition = 2 // always in VIP area when in private mode ELIF IsLazlowGoingToDoAnnouncement() ServerBD.iLazlowPosition = 1 // always on railings after announcment ELSE IF (g_fPercentagePopularity <= 40.0) ServerBD.iLazlowPosition = GET_RANDOM_INT_IN_RANGE(4,8) IF (ServerBD.iLazlowPosition = 6) IF NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE_2(biFmCut2_Nightclub_Office_Cutscene) // url:bugstar:5088997 - Nightclub Property - While watching the tutorial cut scene for the office the local player was seeing a shadow moving on the couch. ServerBD.iLazlowPosition = 7 ENDIF ENDIF ELSE IF g_fPercentagePopularity > 80.0 AND g_bTurnOnNCPodiumDancers AND HAS_LOCAL_PLAYER_VIEWED_NIGHTCLUB_SOLOMUN_CUTSCENE() AND NOT IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(PLAYER_ID()) PRINTLN("NC_STAGE_INIT: - LAZLOW POSITION - random") ServerBD.iLazlowPosition = GET_RANDOM_INT_IN_RANGE(0,4) ELSE ServerBD.iLazlowPosition = GET_RANDOM_INT_IN_RANGE(0,3) // no podium dancers ENDIF ENDIF ENDIF g_iNightClubLazlowPosition = ServerBD.iLazlowPosition ENDIF ENDIF // choose random tony location, but should be on stage if club has just been fully setup, or is doing a dj switch scene IF (ServerBD.iTonyPosition = -1) IF (g_iNightClubSetupState = NSS_FULLY_SETUP) IF GET_PLAYER_NIGHTCLUB_PRIVATE_MODE(GET_OWNER_OF_THIS_NIGHTCLUB()) ServerBD.iTonyPosition = 1 // always on computer when in private mode ELSE IF GET_PLAYER_NIGHTCLUB_DJ_SWITCH_CUTSCENE_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB()) PRINTLN("NC_STAGE_INIT: - TONY POSITION - dj cutscene") ServerBD.iTonyPosition = 8 ELSE PRINTLN("NC_STAGE_INIT: - TONY POSITION - random") ServerBD.iTonyPosition = GET_RANDOM_INT_IN_RANGE(0,9) IF ServerBD.iTonyPosition = 2 AND g_iNightClubLazlowPosition = 6 ServerBD.iTonyPosition = 3 ENDIF IF ServerBD.iTonyPosition = 5 AND g_iNightClubLazlowPosition = 2 ServerBD.iTonyPosition = 3 ENDIF ENDIF g_iNightClubTonyPosition = ServerBD.iTonyPosition ENDIF ENDIF ENDIF // choose toilet layout IF (ServerBD.iToiletLayout = -1) IF (g_iNightClubSetupState != NSS_FULLY_SETUP) ServerBD.iToiletLayout = 4 ELSE IF ((GET_PLAYER_NIGHTCLUB_POPULARITY(GET_OWNER_OF_THIS_NIGHTCLUB())) > 50.0) // choose 'next' layout g_iNightClubPedsToiletLayout_Last += GET_RANDOM_INT_IN_RANGE(1,3) // ensure it will never be same as last one ServerBD.iToiletLayout = g_iNightClubPedsToiletLayout_Last % 3 ELSE ServerBD.iToiletLayout = 3 ENDIF ENDIF ENDIF // choose hallway layout IF (ServerBD.iHallwayLayout = -1) IF (g_iNightClubSetupState != NSS_FULLY_SETUP) ServerBD.iHallwayLayout = 4 ELSE IF ((GET_PLAYER_NIGHTCLUB_POPULARITY(GET_OWNER_OF_THIS_NIGHTCLUB())) > 50.0) // choose 'next' layout g_iNightClubPedsHallwayLayout_Last += GET_RANDOM_INT_IN_RANGE(1,3) // ensure it will never be same as last one ServerBD.iHallwayLayout = g_iNightClubPedsHallwayLayout_Last % 3 ELSE ServerBD.iHallwayLayout = 3 ENDIF ENDIF ENDIF // main hall IF (ServerBD.iMainArea = -1) ServerBD.iMainArea = g_iNightClubPedsMainAreaLayout ENDIF // choose main hall variation IF (ServerBD.iMainAreaVariation = -1) g_iNightClubPedsMainAreaLayout_Variation_Last++ ServerBD.iMainAreaVariation = g_iNightClubPedsMainAreaLayout_Variation_Last % 2 ENDIF // clientele IF (ServerBD.iClientele = -1) ServerBD.iClientele = GET_PLAYER_NIGHTCLUB_CLIENTELE(GET_OWNER_OF_THIS_NIGHTCLUB()) ENDIF // clientele variation IF (ServerBD.iClienteleVariation = -1) g_iNightClubClienteleVariation_Last++ ServerBD.iClienteleVariation = g_iNightClubClienteleVariation_Last % 3 ENDIF ENDIF g_iNightClubPedsToiletLayout = ServerBD.iToiletLayout g_iNightClubPedsHallwayLayout = ServerBD.iHallwayLayout g_iNightClubTonyPosition = ServerBD.iTonyPosition g_iNightClubLazlowPosition = ServerBD.iLazlowPosition g_iNightClubPedsMainAreaLayout = ServerBD.iMainArea g_iNightClubPedsMainAreaLayout_Variation = ServerBD.iMainAreaVariation g_iNightClubClientele = ServerBD.iClientele g_iNightClubClienteleVariation = ServerBD.iClienteleVariation INT iBSNightclubSpeech_temp iBSNightclubSpeech_temp = g_iBSNightclubSpeech g_iBSNightclubSpeech = 0 IF NETWORK_IS_HOST_OF_THIS_SCRIPT() NIGHTCLUB_CELEBRITY_ENUM eCeleb REPEAT eNIGHTCLUB_CELEB_MAX eCeleb INT iIndex SWITCH eCeleb CASE eNIGHTCLUB_CELEB_JIMMY_BOSTON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_JIMMY_BOSTON) BREAK CASE eNIGHTCLUB_CELEB_LACEY_JONAS iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_LACEY_JONAS) BREAK CASE eNIGHTCLUB_CELEB_KERRY_MCINTOSH iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_KERRY_MCINTOSH) BREAK CASE eNIGHTCLUB_CELEB_POPPY_MITCHELL iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_POPPY_MITCHELL) BREAK CASE eNIGHTCLUB_CELEB_TYLER_DIXON iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_TYLER_DIXON) BREAK CASE eNIGHTCLUB_CELEB_MIRANDA_COWAN iIndex = ENUM_TO_INT(NCP_SPEECHCHECK_PLAYED_CELEB_MIRANDA_COWAN) BREAK ENDSWITCH IF IS_CELEBRITY_IN_PLAYERS_NIGHTCLUB_CELEBRITY_LIST(GET_OWNER_OF_THIS_NIGHTCLUB(), eCeleb) IF IS_BIT_SET(iBSNightclubSpeech_temp, iIndex) IF NOT IS_BIT_SET(g_iBSNightclubSpeech, iIndex) CPRINTLN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT - Set g_iBSNightclubSpeech ", iIndex, " for ", GET_NIGHTCLUB_CELEBRITY_NAME_FOR_DEBUG(eCeleb)) SET_BIT(g_iBSNightclubSpeech, iIndex) ENDIF ELSE IF IS_BIT_SET(g_iBSNightclubSpeech, iIndex) CPRINTLN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT - Clear g_iBSNightclubSpeech ", iIndex, " for ", GET_NIGHTCLUB_CELEBRITY_NAME_FOR_DEBUG(eCeleb), ", bit not set") CLEAR_BIT(g_iBSNightclubSpeech, iIndex) ENDIF ENDIF ELSE IF IS_BIT_SET(g_iBSNightclubSpeech, iIndex) CPRINTLN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT - Clear g_iBSNightclubSpeech ", iIndex, " for ", GET_NIGHTCLUB_CELEBRITY_NAME_FOR_DEBUG(eCeleb), ", not in club") CLEAR_BIT(g_iBSNightclubSpeech, iIndex) ENDIF ENDIF ENDREPEAT ENDIF BLOCK_SPEECH_CONTEXT_GROUP("DLC_BTL_Nightclub_SCL",AUD_CONTEXT_BLOCK_EVERYONE) #IF IS_DEBUG_BUILD IF NOT g_bNightClubUseWidgetValues g_iWidgetTonyPosition = g_iNightClubTonyPosition g_iWidgetLazlowPosition = g_iNightClubLazlowPosition g_iToiletPedsLayoutWidget = g_iNightClubPedsToiletLayout g_iHallwayPedLayoutWidget = g_iNightClubPedsHallwayLayout g_iMainAreaLayoutWidget = g_iNightClubPedsMainAreaLayout g_iMainAreaLayoutVariationWidget = g_iNightClubPedsMainAreaLayout_Variation g_iNightClubClientele_WidgetValue = g_iNightClubClientele g_iNightClubClienteleVariation_WidgetValue = g_iNightClubClienteleVariation ENDIF #ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsToiletLayout: ", g_iNightClubPedsToiletLayout) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsHallwayLayout: ", g_iNightClubPedsHallwayLayout) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubTonyPosition: ", g_iNightClubTonyPosition) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubLazlowPosition: ", g_iNightClubLazlowPosition) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsMainAreaLayout: ", g_iNightClubPedsMainAreaLayout) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsMainAreaLayout_Variation: ", g_iNightClubPedsMainAreaLayout_Variation) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubClientele: ", g_iNightClubClientele) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubClienteleVariation: ", g_iNightClubClienteleVariation) // should we step down a layout size if too many mission peds are reserved? nightClubStruct.iDjEnterCutsceneStage = 0 RESET_NET_TIMER(nightClubStruct.stDjEnterCutsceneTimer) SET_DJ_OF_NIGHTCLUB(ServerBD) nightClubStruct.bResetRadioToStart = FALSE IF g_bForceNightclubRadioToRestart nightClubStruct.bResetRadioToStart = TRUE ENDIF IF IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(PLAYER_ID()) OR IS_PLAYER_WATCHING_NIGHTCLUB_SOLOMUN_CUTSCENE(GET_OWNER_OF_THIS_NIGHTCLUB()) nightClubStruct.bResetRadioToStart = TRUE IF NETWORK_IS_HOST_OF_THIS_SCRIPT() RESET_NET_TIMER(ServerBD.stMusicTimer) ENDIF ENDIF IF GET_PLAYER_NIGHTCLUB_DJ_SWITCH_CUTSCENE_ACTIVE(GET_OWNER_OF_THIS_NIGHTCLUB()) nightClubStruct.bPlayDjEnterCutscene = TRUE nightClubStruct.iCurrentStationID = -1 nightClubStruct.bResetRadioToStart = TRUE IF NETWORK_IS_HOST_OF_THIS_SCRIPT() RESET_NET_TIMER(ServerBD.stMusicTimer) ENDIF ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: g_iNightClubPedsHallwayLayout: ", g_iNightClubPedsHallwayLayout) j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA - MAX_NUMBER_OF_NIGHTCLUB_PEDS j nightClubStruct.iNightClubPedIDsReverse[j + MAX_NUMBER_OF_NIGHTCLUB_PEDS] = -1 ENDREPEAT j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j nightClubStruct.activityPeds[j].iNightClubPedID = j nightClubStruct.iNightClubPedIDsReverse[j] = j nightClubStruct.activityPeds[j].bHasSyncSceneStarted = FALSE nightClubStruct.activityPeds[j].bAnimPlayed = FALSE nightClubStruct.activityPeds[j].eActiveActivity = AC_SLOT_NULL ENDREPEAT nightClubStruct.bInitialStagger = TRUE IF NOT HAS_LOADED_ALL_NIGHTCLUB_PED_MODELS() OR NOT HAS_LOADED_ALL_NIGHTCLUB_PROP_MODELS() OR NOT HAS_LOADED_ALL_NIGHTCLUB_ANIMS() CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: loading all ped & prop models") BREAK ENDIF // #IF IS_DEBUG_BUILD // OUTPUT_COMPONENT_VARIAITONS() // #ENDIF nightClubStruct.iMixAnimCatchupTime = GET_CURRENT_MIX_TIME(nightClubStruct.iCurrentStationID) IF NETWORK_IS_HOST_OF_THIS_SCRIPT() IF ServerBD.iHostCompletedSetup <= nightClubStruct.iCompletedSetup CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: setting ServerBD.iHostCompletedSetup (", ServerBD.iHostCompletedSetup, ") = nightClubStruct.iCompletedSetup (", nightClubStruct.iCompletedSetup, ") + 1 ") ServerBD.iHostCompletedSetup = nightClubStruct.iCompletedSetup + 1 ENDIF ENDIF IF IS_IT_SAFE_FOR_PLAYER_TO_CONTINUE_FROM_INIT_STAGE(nightClubStruct, ServerBD) // Clients of the script will keep in init until Server has completed init. CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_INIT: setting nightClubStruct.iCompletedSetup (", nightClubStruct.iCompletedSetup, ") = ServerBD.iHostCompletedSetup (", ServerBD.iHostCompletedSetup, ")") nightClubStruct.iCompletedSetup = ServerBD.iHostCompletedSetup j = 0 REPEAT NC_CULL_TRIGGER_MAX j nightClubStruct.iCullTriggerStagger = j CULL_PED_BAR_HALLWAY_TRIGGER_LOGIC(nightClubStruct) CULL_PED_TOILET_TRIGGER_LOGIC(nightClubStruct) ENDREPEAT nightClubStruct.iCullTriggerStagger = 0 //g_bForceNightclubRadioToRestart = FALSE SetNCActStage(NC_STAGE_INIT_PED_CULLING) ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_INIT") #ENDIF #ENDIF BREAK CASE NC_STAGE_INIT_PED_CULLING //g_bForceNightclubRadioToRestart = FALSE nightClubStruct.iCreateStagger = 0 nightClubStruct.iTotalCustomers = 0 g_bNightClubPedsReadyToView = FALSE SetNCActStage(NC_STAGE_REMOVE_CULLED_PEDS) BREAK CASE NC_STAGE_REMOVE_CULLED_PEDS //CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: bInToiletOrToiletEntranceArea: ", bInToiletOrToiletEntranceArea, ", bInBackBarViewableArea: ", bInBackBarViewableArea) j = nightClubStruct.iCreateStagger WHILE (j < nightClubStruct.iCreateStagger+nightClubStruct.iStaggerPerFrame OR nightClubStruct.bInitialStagger) AND j < MAX_NUMBER_OF_NIGHTCLUB_PED_DATA CALCULATE_NIGHTCLUB_PED_CULL_CHECK_BS(nightClubStruct, j) // cull customer peds if too many IF nightClubStruct.iNightClubPedIDsReverse[j] != -1 AND IS_NC_PED_TYPE_CUSTOMER_FOR_CULL(GET_NIGHTCLUB_PED_TYPE(j)) AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[j], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[j], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) nightClubStruct.iTotalCustomers++ IF nightClubStruct.iTotalCustomers > GetCurrentPedsFromLayout() CLEANUP_NIGHT_CLUB_PED(nightClubStruct, nightClubStruct.iNightClubPedIDsReverse[j]) ENDIF ENDIF j++ ENDWHILE nightClubStruct.iCreateStagger += nightClubStruct.iStaggerPerFrame IF nightClubStruct.iCreateStagger < MAX_NUMBER_OF_NIGHTCLUB_PED_DATA AND NOT nightClubStruct.bInitialStagger BREAK ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: iTotalCustomers: ", nightClubStruct.iTotalCustomers, "/", GetCurrentPedsFromLayout()) j = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF nightClubStruct.activityPeds[j].iNightClubPedID != -1 // cull null peds IF GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[j].iNightClubPedID) = NC_NULL_PED CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) RELOOP ENDIF IF bInToiletOrToiletEntranceArea IF IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[j].iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID= ", nightClubStruct.activityPeds[j].iNightClubPedID, " is in the downstairs bar, so erasing, nightClubStruct.iNumberOfCulledPeds: ", nightClubStruct.iNumberOfCulledPeds) nightClubStruct.iNumberOfCulledPeds++ CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) RELOOP ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID = ", nightClubStruct.activityPeds[j].iNightClubPedID, " is not in the downstairs bar") ENDIF ENDIF IF bInBackBarViewableArea IF IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[j].iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID= ", nightClubStruct.activityPeds[j].iNightClubPedID, " is in the toilet area, so erasing, nightClubStruct.iNumberOfCulledPeds: ", nightClubStruct.iNumberOfCulledPeds) nightClubStruct.iNumberOfCulledPeds++ CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) RELOOP ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID = ", nightClubStruct.activityPeds[j].iNightClubPedID, " is not in the toilet") ENDIF ENDIF IF bInHallwayOrDownstairsBar IF IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[j].iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) nightClubStruct.iNumberOfCulledPeds++ CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID= ", nightClubStruct.activityPeds[j].iNightClubPedID, " is in the upstairs bar, so erasing, nightClubStruct.iNumberOfCulledPeds: ", nightClubStruct.iNumberOfCulledPeds) CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) RELOOP ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID = ", nightClubStruct.activityPeds[j].iNightClubPedID, " is not in the upstairs bar") ENDIF ENDIF IF bInUpstairsBarOrNightClubMainSpace IF IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[j].iNightClubPedID], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) nightClubStruct.iNumberOfCulledPeds++ CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID= ", nightClubStruct.activityPeds[j].iNightClubPedID, " is in the hallway, so erasing, nightClubStruct.iNumberOfCulledPeds: ", nightClubStruct.iNumberOfCulledPeds) CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) RELOOP ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID= ", nightClubStruct.activityPeds[j].iNightClubPedID, " is not in the hallway") ENDIF ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_REMOVE_CULLED_PEDS: nightClubStruct.activityPeds[", j, "].iNightClubPedID = -1 or networked ped") ENDIF ENDREPEAT nightClubStruct.iCreateStagger = 0 SetNCActStage(NC_STAGE_POPULATE_CULLED_PED_ARRAY) BREAK CASE NC_STAGE_POPULATE_CULLED_PED_ARRAY // Then I need to go back through the array and check if there are any more peds that I could add from the cullable areas j = 0 l = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: nightClubStruct.activityPeds[", j, "].iNightClubPedID = ",nightClubStruct.activityPeds[j].iNightClubPedID) IF nightClubStruct.activityPeds[j].iNightClubPedID = -1 // there's at least 150 data points for peds WHILE l < MAX_NUMBER_OF_NIGHTCLUB_PED_DATA IF nightClubStruct.iNightClubPedIDsReverse[l] = -1 AND (nightClubStruct.iNCPedCullCheckBS[l] = 0 OR (bInHallwayOrDownstairsBar AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR)) OR (bInUpstairsBarOrNightClubMainSpace AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE)) OR (bInToiletOrToiletEntranceArea AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA)) OR (bInBackBarViewableArea AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA))) AND GET_NIGHTCLUB_PED_TYPE(l) != NC_NULL_PED AND (NOT IS_NC_PED_TYPE_CUSTOMER_FOR_CULL(GET_NIGHTCLUB_PED_TYPE(l)) OR nightClubStruct.iTotalCustomers < GetCurrentPedsFromLayout() OR IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) OR IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA)) nightClubStruct.activityPeds[j].iNightClubPedID = l nightClubStruct.iNightClubPedIDsReverse[l] = j IF IS_NC_PED_TYPE_CUSTOMER(GET_NIGHTCLUB_PED_TYPE(l)) AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) nightClubStruct.iTotalCustomers++ CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: New ped, iTotalCustomers: ", nightClubStruct.iTotalCustomers, "/", GetCurrentPedsFromLayout()) ENDIF CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: bInHallwayOrDownstairsBar: Adding ID: nightClubStruct.activityPeds[", j, "].iNightClubPedID = ", l) l++ BREAKLOOP #IF IS_DEBUG_BUILD ELSE IF nightClubStruct.iNightClubPedIDsReverse[l] != -1 CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is already in the ped array at ", nightClubStruct.iNightClubPedIDsReverse[l]) ELIF GET_NIGHTCLUB_PED_TYPE(l) = NC_NULL_PED CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is a null ped") ELIF (IS_NC_PED_TYPE_CUSTOMER_FOR_CULL(GET_NIGHTCLUB_PED_TYPE(l)) AND nightClubStruct.iTotalCustomers >= GetCurrentPedsFromLayout()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is a customer and iTotalCustomers = ", nightClubStruct.iTotalCustomers, "/", GetCurrentPedsFromLayout()) ELIF bInHallwayOrDownstairsBar AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is a not in bInHallwayOrDownstairsBar and not a network ped") ELIF bInUpstairsBarOrNightClubMainSpace AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is a not in bInUpstairsBarOrNightClubMainSpace and not a network ped") ELIF bInToiletOrToiletEntranceArea AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is a not in bInToiletOrToiletEntranceArea and not a network ped") ELIF bInBackBarViewableArea AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[l], NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: UNSUITABLE: l: ", l, " is a not in bInBackBarViewableArea and not a network ped") ENDIF #ENDIF ENDIF l++ ENDWHILE IF l >= MAX_NUMBER_OF_NIGHTCLUB_PED_DATA BREAKLOOP ENDIF ENDIF ENDREPEAT nightClubStruct.iCreateStagger = 0 j = 0 l = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PED_DATA j CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: nightClubStruct.iNightClubPedIDsReverse[", j, "] = ", nightClubStruct.iNightClubPedIDsReverse[j], " ", GET_NC_PED_TYPE_STRING(GET_NIGHTCLUB_PED_TYPE(j))) IF nightClubStruct.iNightClubPedIDsReverse[j] != -1 l++ ENDIF ENDREPEAT CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: total activityPeds = ", l, ", iTotalCustomers: ", nightClubStruct.iTotalCustomers, "/", GetCurrentPedsFromLayout()) // Replace cullable peds if the array is full IF l = MAX_NUMBER_OF_NIGHTCLUB_PEDS l = 1 m = 0 BOOL bCulledPedReplaced CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: ped array full, will now try to cull peds to fit any others in") // level loop REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS l bCulledPedReplaced = FALSE // culled ped loop REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j // should cull this ped at this level only IF ShouldCullThisNCPed(nightClubStruct.activityPeds[j].iNightClubPedID, l) AND NOT ShouldCullThisNCPed(nightClubStruct.activityPeds[j].iNightClubPedID, l-1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: Checking cullable ped ", nightClubStruct.activityPeds[j].iNightClubPedID) WHILE m < MAX_NUMBER_OF_NIGHTCLUB_PED_DATA IF nightClubStruct.iNightClubPedIDsReverse[m] = -1 AND NOT ShouldCullThisNCPed(m, l) AND (nightClubStruct.iNCPedCullCheckBS[m] = 0 OR (bInHallwayOrDownstairsBar AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[m], NC_PED_CULL_CHECK_BS_IN_HALLWAY_OR_DOWNSTAIRS_BAR)) OR (bInUpstairsBarOrNightClubMainSpace AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[m], NC_PED_CULL_CHECK_BS_IN_UPSTAIRS_BAR_OR_NIGHT_CLUB_MAIN_SPACE)) OR (bInToiletOrToiletEntranceArea AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[m], NC_PED_CULL_CHECK_BS_IN_TOILET_OR_TOILET_ENTRANCE_AREA)) OR (bInBackBarViewableArea AND IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[m], NC_PED_CULL_CHECK_BS_IN_BACK_BAR_VIEWABLE_AREA))) AND GET_NIGHTCLUB_PED_TYPE(m) != NC_NULL_PED AND NOT IS_NC_PED_TYPE_CUSTOMER_FOR_CULL(GET_NIGHTCLUB_PED_TYPE(m)) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_POPULATE_CULLED_PED_ARRAY: Culling ped ", nightClubStruct.activityPeds[j].iNightClubPedID, " at ", j, " in favour of ped ", m) CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) nightClubStruct.activityPeds[j].iNightClubPedID = m nightClubStruct.iNightClubPedIDsReverse[m] = j bCulledPedReplaced = TRUE m++ BREAKLOOP ENDIF m++ ENDWHILE IF m >= MAX_NUMBER_OF_NIGHTCLUB_PED_DATA IF bCulledPedReplaced // cleanup other culled peds at this level as they are in a group CLEANUP_NIGHT_CLUB_PED(nightClubStruct, j) ELSE BREAKLOOP ENDIF ENDIF ENDIF ENDREPEAT IF m >= MAX_NUMBER_OF_NIGHTCLUB_PED_DATA BREAKLOOP ENDIF ENDREPEAT ENDIF // have to wait till this point to assign peds to routes, because the array of pedids has to be searched for after ped culling has occured. UpdateTotalExpectedPedsInMainHall(nightClubStruct) SetNCActStage(NC_STAGE_CREATE_PEDS) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_POPULATE_CULLED_PED_ARRAY") #ENDIF #ENDIF BREAK CASE NC_STAGE_CREATE_PEDS #IF IS_DEBUG_BUILD tlTemp = "NC_STAGE_CREATE_PEDS" ADD_VISIBLE_BLOCK(tlTemp) #ENDIF NC_PED_DATA pedData j = 0 l = 0 m = 0 // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: about to loop through: ", MAX_NUMBER_OF_NIGHTCLUB_PEDS+nightClubStruct.iNumberOfCulledPeds, " peds, MAX_NUMBER_OF_NIGHTCLUB_PEDS: ", MAX_NUMBER_OF_NIGHTCLUB_PEDS, ", iNumberOfCulledPeds: ", nightClubStruct.iNumberOfCulledPeds) REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF nightClubStruct.activityPeds[j].iNightClubPedID < 0 OR (nightClubStruct.activityPeds[j].iNightClubPedID >= 0 AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[j].iNightClubPedID], NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY)) IF (nightClubStruct.activityPeds[j].iNightClubPedID > -1) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: iNightClubPedID = ", nightClubStruct.activityPeds[j].iNightClubPedID) GET_NIGHTCLUB_PED_ACTIVITY_SLOT(nightClubStruct.activityPeds[j].iNightClubPedID, nightClubStruct.activityPeds[j].iActiveSlot, nightClubStruct.activityPeds[j].bAddRandomnessToActivitySlot ) nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(GET_NIGHTCLUB_PED_TYPE(nightClubStruct.activityPeds[j].iNightClubPedID)) nightClubStruct.activityPeds[j].vPos = GET_NIGHTCLUB_PED_POSITION(nightClubStruct.activityPeds[j].iNightClubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[j].iActiveSlot)) nightClubStruct.activityPeds[j].fHeading = GET_NIGHTCLUB_PED_HEADING(nightClubStruct.activityPeds[j].iNightClubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[j].iActiveSlot)) nightClubStruct.activityPeds[j].iOffsetNCPedId = GET_NIGHTCLUB_PED_OFFSET_NCPEDID(nightClubStruct.activityPeds[j].iNightClubPedID) // check ped has correct activity for sex #IF IS_DEBUG_BUILD IF NOT IS_DANCEFLOOR_GROUP_ANIM_CORRECT_SEX_FOR_NC_PED(INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[j].iNCPedType), INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[j].iActiveSlot)) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: Sex does not match activity: j = ", j, ", nightClubStruct.activityPeds[j].iNightClubPedID: ", nightClubStruct.activityPeds[j].iNightClubPedID) SCRIPT_ASSERT("NC_STAGE_CREATE_PEDS: Sex does not match activity!") ENDIF #ENDIF // should cull ped? IF (ShouldCullNCPed(nightClubStruct.activityPeds[j].iNightClubPedID, nightClubStruct.iTotalExpectedPedsInMainHall, nightClubStruct.iTotalReservedMissionPeds, nightClubStruct.iTotalCullablePeds)) nightClubStruct.activityPeds[j].iNCPedType = -1 ENDIF IF (INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[j].iNCPedType) != NC_NULL_PED) AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) = FALSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: j = ", j, ", nightClubStruct.activityPeds[j].iNightClubPedID: ", nightClubStruct.activityPeds[j].iNightClubPedID) GENERATE_PED_FOR_NIGHTCLUB_ACTIVITY(INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[j].iNCPedType), pedData) IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) = FALSE vPos = ActualPos(nightClubStruct.activityPeds[j].iNightClubPedID) fHeading = ActualHeading(nightClubStruct.activityPeds[j].iNightClubPedID) IF VMAG(vPos) > 0 IF CREATE_LOCAL_ACTIVITY_PEDS_FOR_NIGHT_CLUB(nightClubStruct, pedData, nightClubStruct.activityPeds[j], vPos, fHeading, serverBD) // store lazlow id IF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_LAZLOW)) nightClubStruct.iLazlowPedId = j CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: storing lazlowpedid as ", j) ENDIF // store dj 1 IF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_DJ)) nightClubStruct.iDJPedID1 = j CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: storing iDJPedID1 as ", j) ENDIF // store dj 2 IF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_DJ_2)) nightClubStruct.iDJPedID2 = j CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: storing iDJPedID2 as ", j) ENDIF // store tony IF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_TONY)) nightClubStruct.iTonyPedID = j CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: storing iTonyPedID as ", j) ENDIF // switch on poppy dialogue url:bugstar:5044144 - Poppy Mitchell dialogue - 'Poppy Mitchell' appears to produce no dialogue in the nightclub. IF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_CELEB_KERRY_MCINTOSH)) SET_AMBIENT_VOICE_NAME(nightClubStruct.activityPeds[j].piScenePeds, "KERRY") CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: setting kerry dialogue ", j) ELIF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_CELEB_POPPY_MITCHELL)) SET_AMBIENT_VOICE_NAME(nightClubStruct.activityPeds[j].piScenePeds, "POPPY") CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: setting poppy dialogue ", j) ELIF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_CELEB_JIMMY_BOSTON)) SET_AMBIENT_VOICE_NAME(nightClubStruct.activityPeds[j].piScenePeds, "JIMMYBOSTON") CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: setting jimmyboston dialogue ", j) ELIF (nightClubStruct.activityPeds[j].iNCPedType = ENUM_TO_INT(NC_CELEB_MIRANDA_COWAN)) SET_AMBIENT_VOICE_NAME(nightClubStruct.activityPeds[j].piScenePeds, "MIRANDA") CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: setting miranda dialogue ", j) ENDIF m++ IF (m >= GetMaxPedsCreatedPerFrame()) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: breaking, max peds created this frame = ", m) BREAK ENDIF ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: Ped[", j, "] not a valid position") ENDIF ELSE // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: Ped[", j, "] already created") ENDIF ELSE IF INT_TO_ENUM(NC_PED_TYPES, nightClubStruct.activityPeds[j].iNCPedType) = NC_NULL_PED CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: Ped[", j, "] set to null, not creating ped") ENDIF IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) // CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: Ped[", j, "] already created") ENDIF ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: Ped[", j, "] iNightClubPedID = -1, not creating") ENDIF ENDIF ENDREPEAT IF m >= GetMaxPedsCreatedPerFrame() CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_CREATE_PEDS: breaking, still creating peds, num created this frame = ", l) BREAK ENDIF // after all ped are created then make sure the children are set REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS j IF nightClubStruct.activityPeds[j].iNightClubPedID < 0 OR (nightClubStruct.activityPeds[j].iNightClubPedID >= 0 AND NOT IS_BIT_SET(nightClubStruct.iNCPedCullCheckBS[nightClubStruct.activityPeds[j].iNightClubPedID], NC_PED_CULL_CHECK_BS_CULLED_PERMANENTLY)) InitNightClubPedChildren(nightClubStruct.activityPeds[j]) ENDIF ENDREPEAT #IF IS_DEBUG_BUILD OutputCreatedPedDetails() #ENDIF SetNCActStage(NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_CREATE_PEDS") #ENDIF #ENDIF BREAK CASE NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY #IF IS_DEBUG_BUILD tlTemp = "NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY" ADD_VISIBLE_BLOCK(tlTemp) #ENDIF //ASSIGN_ALL_PEDS_TO_ACT_SLOTS(nightClubStruct) // Some activity slots have multiple activities assocated with them, so we have to assign the random activity to the player so they keep that activity throughout l = 0 REPEAT MAX_NUMBER_OF_NIGHTCLUB_PEDS l IF DOES_ENTITY_EXIST(nightClubStruct.activityPeds[l].piScenePeds) AND NOT IS_ENTITY_DEAD(nightClubStruct.activityPeds[l].piScenePeds) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY: l: ", l ," , activity assigned = ", GET_SLOT_NAME_STRING(INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[l].iActiveSlot))) IF INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[l].iActiveSlot) != AC_SLOT_NULL nightClubStruct.activityPeds[l].eActiveActivity = INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[l].iActiveSlot) IF (SEATED_ANIMS(nightClubStruct.activityPeds[l].eActiveActivity)) SET_PED_FOOTSTEPS_EVENTS_ENABLED(nightClubStruct.activityPeds[l].piScenePeds, FALSE) SET_PED_CLOTH_EVENTS_ENABLED(nightClubStruct.activityPeds[l].piScenePeds, FALSE) ENDIF ENDIF // some activities should be frozen so we can line them up exactly FreezeActivityPed(nightClubStruct.activityPeds[l]) ENDIF ENDREPEAT ASSIGN_HEAD_TRACKING_BETWEEN_PEDS(nightClubStruct, 114, 77) // set lazlow to look at tracey IF (g_iNightClubSetupState = NSS_COMPLETED_STAFF_AND_EQUIPMENT) ASSIGN_HEAD_TRACKING_BETWEEN_PEDS(nightClubStruct, 39, 0) // set head bouncer to look at worker ENDIF IF (g_iNightClubSetupState = NSS_COMPLETED_NOTHING) OR (g_iNightClubSetupState = NSS_COMPLETED_STAFF_ONLY) ASSIGN_HEAD_TRACKING_COORDS(nightClubStruct, 0, <<-1602.2784, -3012.7234, -73.7746>>) // set worker to look above the dance floor ENDIF SET_PLAYER_HEAD_TRACKING_LOGIC(nightClubStruct) // Loop through peds and assign some to head track the player nightClubStruct.iCreateStagger = 0 SetNCActStage(NC_STAGE_ACTIVITY_CREATE_PED_PROPS) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_ASSIGN_PEDS_TO_ACTIVITY") #ENDIF #ENDIF BREAK CASE NC_STAGE_ACTIVITY_CREATE_PED_PROPS #IF IS_DEBUG_BUILD tlTemp = "NC_STAGE_ACTIVITY_CREATE_PED_PROPS" ADD_VISIBLE_BLOCK(tlTemp) #ENDIF j = nightClubStruct.iCreateStagger WHILE j < MAX_NUMBER_OF_NIGHTCLUB_PEDS IF (nightClubStruct.activityPeds[j].eActiveActivity != AC_SLOT_NULL) activityMain.eActivity = nightClubStruct.activityPeds[j].eActiveActivity CLEAR_ACTIVITY_PROPS_DATA(activityMain) ActivityMain.vActPosOrigin = ActualPos(nightClubStruct.activityPeds[j].iNightClubPedID) //GET_NIGHTCLUB_PED_POSITION(nightClubStruct.activityPeds[j].iNightClubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[j].iActiveSlot)) ActivityMain.fActHeading = ActualHeading(nightClubStruct.activityPeds[j].iNightClubPedID) //GET_NIGHTCLUB_PED_HEADING(nightClubStruct.activityPeds[j].iNightClubPedID, INT_TO_ENUM(ACTIVITY_SLOT_NAMES, nightClubStruct.activityPeds[j].iActiveSlot)) ASSIGN_NC_ACTIVITY_PROPS(nightClubStruct.activityPeds[j].eActiveActivity, activityMain) CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_ACTIVITY_CREATE_PED_PROPS: ped j = ", j, ", activity: ", GET_SLOT_NAME_STRING(nightClubStruct.activityPeds[j].eActiveActivity)) IF NOT HAVE_ALL_LOCAL_ACTIVITY_PROPS_BEEN_CREATED_FOR_NC(activityMain, nightClubStruct.activityPeds[j]) AND DOES_ENTITY_EXIST(nightClubStruct.activityPeds[j].piScenePeds) IF NOT CREATE_NC_LOCAL_ACTIVITY_PROPS_FOR_PEDS(nightClubStruct, activityMain, nightClubStruct.activityPeds[j]) nightClubStruct.iCreateStagger = j BREAK ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_ACTIVITY_CREATE_PED_PROPS: all props have been created for ped[", j, "] ") ENDIF ELSE CDEBUG1LN(DEBUG_NET_PED_DANCING, "NC_STAGE_ACTIVITY_CREATE_PED_PROPS: ped[", j, "] not assigned an activity skipping prop creation") ENDIF j++ ENDWHILE IF nightClubStruct.iDJPedID1 != -1 AND NOT nightClubStruct.activityPeds[nightClubStruct.iDJPedID1].bHasSyncSceneStarted ATTACH_NC_DJ_HEADPHONES(nightClubStruct.activityPeds[nightClubStruct.iDJPedID1]) ENDIF IF nightClubStruct.iDJPedID2 != -1 AND NOT nightClubStruct.activityPeds[nightClubStruct.iDJPedID2].bHasSyncSceneStarted ATTACH_NC_DJ_HEADPHONES(nightClubStruct.activityPeds[nightClubStruct.iDJPedID2]) ENDIF SetNCActStage(NC_STAGE_UPDATE_PED_BEHAVIOUR) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_ACTIVITY_CREATE_PED_PROPS") #ENDIF #ENDIF BREAK CASE NC_STAGE_UPDATE_PED_BEHAVIOUR #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE OPEN_SCRIPT_PROFILE_MARKER_GROUP("NC_STAGE_UPDATE_PED_BEHAVIOUR") #ENDIF #ENDIF IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) j = 0 REPEAT NC_CULL_TRIGGER_MAX j nightClubStruct.iCullTriggerStagger = j CULL_PED_BAR_HALLWAY_TRIGGER_LOGIC(nightClubStruct) CULL_PED_TOILET_TRIGGER_LOGIC(nightClubStruct) ENDREPEAT nightClubStruct.iCullTriggerStagger = 0 ELSE CULL_PED_BAR_HALLWAY_TRIGGER_LOGIC(nightClubStruct) CULL_PED_TOILET_TRIGGER_LOGIC(nightClubStruct) nightClubStruct.iCullTriggerStagger++ IF nightClubStruct.iCullTriggerStagger >= NC_CULL_TRIGGER_MAX nightClubStruct.iCullTriggerStagger = 0 ENDIF ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("CULL_PED_TRIGGER_LOGIC") #ENDIF #ENDIF IF nightClubStruct.bPlayDjEnterCutscene AND NOT IS_LOCAL_PLAYER_NIGHTCLUB_RENOVATION_ACTIVE() AND NOT g_SpawnData.bPassedOutDrunk // skip fade in as the cutscene does it for us SET_SIMPLE_INTERIOR_INT_SCRIPT_SHOULD_NOT_FADE_IN_ON_ENTRY(TRUE) IF NOT IS_LOCAL_PLAYER_WALKING_INTO_SIMPLE_INTERIOR() MAINTAIN_NIGHTCLUB_PEDS_DJ_CUTSCENE_STATE(nightClubStruct) ENDIF ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("check DJ enter cutscene") #ENDIF #ENDIF // ALL OTHER LOGIC FROM THIS STAGE NEEDS TO HAPPEN IN THE CULLING STAGES TOO, SO IT RUNS THROUGH UPDATE_PED_BEHAVIOUR (called below) BREAK CASE NC_STAGE_CLEANUP_PROPS_PEDS_AND_TERMINATE NIGHTCLUB_PEDS_SCRIPT_CLEANUP(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_CLEANUP_PROPS_PEDS_AND_TERMINATE") #ENDIF #ENDIF BREAK CASE NC_STAGE_RECREATE RESET_EVERYTHING(nightClubStruct) IF NETWORK_IS_HOST_OF_THIS_SCRIPT() ServerBD.iToiletLayout = -1 ServerBD.iHallwayLayout = -1 ServerBD.iMainArea = -1 ServerBD.iMainAreaVariation = -1 ServerBD.iTonyPosition = -1 ServerBD.iLazlowPosition = -1 ServerBD.iClientele = -1 ServerBD.iClienteleVariation = -1 ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_RECREATE") #ENDIF #ENDIF BREAK ENDSWITCH IF g_ncState != NC_STAGE_INIT AND g_ncState != NC_STAGE_CLEANUP_PROPS_PEDS_AND_TERMINATE AND g_ncState != NC_STAGE_RECREATE UPDATE_PED_BEHAVIOUR(nightClubStruct, PlayerBD, activityMain) ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("UPDATE_PED_BEHAVIOUR") #ENDIF #ENDIF // super hacky fix for iBSNightclubSpeech IF NETWORK_IS_HOST_OF_THIS_SCRIPT() serverBD.iBSNightclubSpeech = g_iBSNightclubSpeech ELSE g_iBSNightclubSpeech = serverBD.iBSNightclubSpeech ENDIF MAINTAIN_CURRENT_DJ_SEQUENCE_TO_MIX_TIME(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MAINTAIN_CURRENT_DJ_SEQUENCE_TO_MIX_TIME") #ENDIF #ENDIF UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("UPDATE_HIDE_STAGE_PEDS_FOR_MOCAP") #ENDIF #ENDIF MAINTAIN_PEDS_READY_TO_BE_VIEWED(nightClubStruct) #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("MAINTAIN_PEDS_READY_TO_BE_VIEWED") #ENDIF #ENDIF #IF IS_DEBUG_BUILD OUTPUT_DEBUG_NIGHTCLUB_PED_POSITIONS(nightClubStruct) #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("NC_STAGE_ACTIVITY_CREATE_PED_PROPS") #ENDIF #ENDIF #IF IS_DEBUG_BUILD UPDATE_NIGHT_CLUB_WIDGET(nightClubStruct) #IF SCRIPT_PROFILER_ACTIVE ADD_SCRIPT_PROFILE_MARKER("UPDATE_NIGHT_CLUB_WIDGET") #ENDIF #ENDIF #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE CLOSE_SCRIPT_PROFILE_MARKER_GROUP() #ENDIF #ENDIF // Local: Create Assets for Activity Slots (Props) // Local: Create peds // Host: Figure out which state to go to next for peds, and broadcast state // Local: sync the state for peds from the host #IF IS_DEBUG_BUILD #IF SCRIPT_PROFILER_ACTIVE SCRIPT_PROFILER_END_OF_FRAME() #ENDIF #ENDIF ENDPROC