1970 lines
61 KiB
Scheme
Executable File
1970 lines
61 KiB
Scheme
Executable File
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// SCRIPT NAME : stripclub_public.sc //
|
|
// AUTHOR : Rob Bray //
|
|
// DESCRIPTION : Common functions used across strip club and booty calls //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_script.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "player_ped_public.sch"
|
|
USING "friendActivity_public.sch"
|
|
USING "net_common_functions.sch"
|
|
USING "commands_event.sch"
|
|
USING "common_sex.sch"
|
|
|
|
// constants
|
|
CONST_INT MP_STRIPCLUB_MAX_PLAYERS NUM_NETWORK_PLAYERS
|
|
|
|
CONST_INT MAX_NUMBER_CLUB_STAFF 5
|
|
|
|
CONST_INT MAX_NUMBER_NAMED_STRIPPERS 4
|
|
CONST_INT MAX_NUMBER_NAMED_STRIPPERS_MP 3
|
|
CONST_INT MAX_NUMBER_OF_CLUB_EMPLOYEES (MAX_NUMBER_CLUB_STAFF+MAX_NUMBER_NAMED_STRIPPERS)
|
|
CONST_INT MAX_NUMBER_OF_STRIPCLUB_CASH_OBJECTS 6
|
|
|
|
|
|
CONST_INT MAX_NUMBER_STRIPPERS_TAKE_HOME 1
|
|
|
|
CONST_INT NUM_DENIALS_TO_TRIGGER_SEXT 2
|
|
|
|
CONST_INT ADVANCE_NEXT_BOOTY_CALL_AVAILABLE_TIME_MIN 20*60*1000 //The player can only solicit a booty call once every 20 - 35 minutes
|
|
CONST_INT ADVANCE_NEXT_BOOTY_CALL_AVAILABLE_TIME_MAX 35*60*1000
|
|
|
|
CONST_INT BOOTY_CALL_WAIT_FOR_PLAYER_TIME_MIN 5 //The booty call will wait at least 5 hours for the player to pick her up
|
|
CONST_INT BOOTY_CALL_WAIT_FOR_PLAYER_TIME_MAX 7 //The booty call will wait at most 7 hours for the player to pick her up.
|
|
|
|
CONST_INT STRIPPER_MAX_LIKE 7500
|
|
CONST_INT ADVANCE_NEXT_CALL_PLAYER_TIME_MIN 6*60*60*1000 //you can only get a bootycall from anyone once every 6 - 7 hours
|
|
CONST_INT ADVANCE_NEXT_CALL_PLAYER_TIME_MAX 7*60*60*1000
|
|
CONST_INT INITIAL_NEXT_CALL_PLAYER_TIME_MIN 30*60*1000 // the first time you get the number she will call you much sooner
|
|
CONST_INT INITIAL_NEXT_CALL_PLAYER_TIME_MAX 35*60*1000
|
|
|
|
CONST_FLOAT STRIPCLUB_MP_ACTIVATION_RANGE 25.0
|
|
CONST_FLOAT STRIPPER_DUO_DANCE_THRESHOLD 0.70
|
|
CONST_FLOAT STRIPPER_COME_HOME_LIKE_THRESHOLD 0.95
|
|
CONST_FLOAT STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD 0.80
|
|
|
|
|
|
|
|
ENUM BOUNCER_STATE
|
|
BOUNCER_GOTO_STAND_LOCATION,
|
|
BOUNCER_ACHIEVE_HEADING,
|
|
BOUNCER_IDLE_PHASE1,
|
|
BOUNCER_IDLE_PHASE2,
|
|
BOUNCER_IDLE_PHASE3,
|
|
BOUNCER_STOP,
|
|
BOUNCER_STOP2,
|
|
BOUNCER_MOVE_ASIDE_ENTER,
|
|
BOUNCER_MOVE_ASIDE_EXIT,
|
|
BOUNCER_GREET,
|
|
BOUNCER_NONE
|
|
ENDENUM
|
|
|
|
// pass info into take home script
|
|
STRUCT TAKE_HOME_STRIPPER_INFO
|
|
BOOTY_CALL_CONTACT_ENUM stripperID[MAX_NUMBER_STRIPPERS_TAKE_HOME]
|
|
//VECTOR vInitPos[MAX_NUMBER_STRIPPERS_TAKE_HOME]
|
|
//FLOAT fInitRot[MAX_NUMBER_STRIPPERS_TAKE_HOME]
|
|
INT iNumStrippers
|
|
INT myCandidateID
|
|
BOOL bIsBootyCall
|
|
BOOL bIsMp
|
|
ENDSTRUCT
|
|
|
|
STRUCT OUTSIDE_BOUNCER_INFO
|
|
BOOL bIsMp
|
|
ENDSTRUCT
|
|
|
|
// get guard anim dict
|
|
FUNC STRING GET_STRIP_CLUB_ANIM_DICT_BOUNCER_IDLE()
|
|
RETURN "mini@strip_club@idles@bouncer@base"
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_ENTITY_IN_STRIPCLUB(ENTITY_INDEX checkEntity)
|
|
IF NOT DOES_ENTITY_EXIST(checkEntity)
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_DEAD(checkEntity)
|
|
//dead entities can still be in the club
|
|
ENDIF
|
|
|
|
RETURN GET_INTERIOR_FROM_ENTITY(checkEntity) = g_Interior_Instance_Strip_Club_Low
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_PED_NEAR_STRIPCLUB_ENTRYWAY(PED_INDEX ped)
|
|
RETURN VDIST2(GET_ENTITY_COORDS(ped, FALSE), <<128.70, -1298.22, 29.31>>) < 9.0
|
|
ENDFUNC
|
|
|
|
FUNC enumConversationPriority GET_STRIPCLUB_SPEECH_PRIORITY()
|
|
RETURN CONV_PRIORITY_AMBIENT_MEDIUM
|
|
ENDFUNC
|
|
|
|
// is it big trev
|
|
FUNC BOOL STRIP_CLUB_IS_PLAYER_TREVOR()
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_TREVOR_OWN_CLUB()
|
|
#if USE_CLF_DLC
|
|
return false
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
return false
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
RETURN Is_Savehouse_Respawn_Available(SAVEHOUSE_TREVOR_SC)
|
|
#endif
|
|
#endif
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_BOOTYCALL_STRIPPER(BOOTY_CALL_CONTACT_ENUM bootyCallEnum)
|
|
SWITCH bootyCallEnum
|
|
CASE BC_STRIPPER_JULIET
|
|
CASE BC_STRIPPER_NIKKI
|
|
CASE BC_STRIPPER_CHASTITY
|
|
CASE BC_STRIPPER_CHEETAH
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
CASE BC_STRIPPER_INFERNUS
|
|
CASE BC_STRIPPER_FUFU
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_STRIPPER_LIKE_PLAYERS_RIDE( BOOTY_CALL_CONTACT_ENUM bootyCallEnum, MODEL_NAMES vehModel )
|
|
SWITCH vehModel
|
|
|
|
//Classics
|
|
CASE MANANA
|
|
CASE TORNADO
|
|
CASE TORNADO3
|
|
CASE TORNADO4
|
|
CASE ZTYPE
|
|
CASE REGINA
|
|
IF bootyCallEnum = BC_STRIPPER_JULIET
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
//Compacts or Cute or hybrid looking
|
|
CASE BLISTA
|
|
CASE SURGE
|
|
CASE DILETTANTE
|
|
//Sporty / Japanese
|
|
CASE PENUMBRA
|
|
CASE ASTEROPE
|
|
IF bootyCallEnum = BC_STRIPPER_NIKKI
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
//Muscle / AMERICAN
|
|
CASE DOMINATOR
|
|
CASE GAUNTLET
|
|
CASE PHOENIX
|
|
CASE SABREGT
|
|
CASE BULLET
|
|
CASE BANSHEE
|
|
CASE PEYOTE
|
|
CASE BUFFALO
|
|
CASE BUFFALO2
|
|
IF bootyCallEnum = BC_STRIPPER_CHASTITY
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
//Luxury/ Exotic
|
|
CASE CHEETAH
|
|
CASE COGCABRIO
|
|
CASE JB700
|
|
CASE STINGERGT
|
|
CASE MONROE
|
|
CASE COMET2
|
|
CASE ORACLE
|
|
CASE ORACLE2
|
|
CASE INTRUDER
|
|
CASE JACKAL
|
|
CASE EXEMPLAR
|
|
CASE FELON
|
|
CASE SUPERD
|
|
CASE INFERNUS
|
|
CASE ENTITYXF
|
|
CASE ADDER
|
|
CASE VACCA
|
|
IF bootyCallEnum = BC_STRIPPER_CHEETAH
|
|
OR bootyCallEnum = BC_STRIPPER_INFERNUS
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
//TRUCKS
|
|
CASE BALLER
|
|
CASE BISON
|
|
CASE DUBSTA
|
|
CASE GRANGER
|
|
CASE PATRIOT
|
|
CASE BALLER2
|
|
CASE BJXL
|
|
CASE CAVALCADE
|
|
CASE CAVALCADE2
|
|
CASE GRESLEY
|
|
CASE LANDSTALKER
|
|
CASE MESA
|
|
CASE RANCHERXL
|
|
CASE SANDKING
|
|
CASE REBEL
|
|
//STRANGE
|
|
CASE STRETCH
|
|
CASE ROMERO
|
|
CASE COACH
|
|
CASE BUS
|
|
IF bootyCallEnum = BC_STRIPPER_SAPPHIRE
|
|
OR bootyCallEnum = BC_STRIPPER_PEACH
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
|
|
//Convertible
|
|
CASE SURANO
|
|
CASE RAPIDGT2
|
|
CASE NINEF2
|
|
CASE ZION2
|
|
CASE TORNADO2
|
|
CASE SENTINEL2
|
|
CASE ISSI2
|
|
CASE FELON2
|
|
IF bootyCallEnum = BC_STRIPPER_FUFU
|
|
OR bootyCallEnum = BC_STRIPPER_NIKKI
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
|
|
//BIKES
|
|
CASE VADER
|
|
CASE AKUMA
|
|
CASE BAGGER
|
|
CASE BATI
|
|
CASE BATI2
|
|
CASE DOUBLE
|
|
CASE HEXER
|
|
CASE NEMESIS
|
|
CASE RUFFIAN
|
|
IF bootyCallEnum = BC_TAXI_LIZ
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
//Service
|
|
CASE FBI
|
|
CASE TAXI
|
|
CASE PRANGER
|
|
CASE AMBULANCE
|
|
CASE POLICE3
|
|
IF bootyCallEnum = BC_HITCHER_GIRL
|
|
//OR bootyCallEnum = BC_FIXED_CAR
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_PLAYER_DRIVING_A_NICE_RIDE(BOOTY_CALL_CONTACT_ENUM bootyCallEnum)
|
|
|
|
VEHICLE_INDEX vehPlayersLast = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
MODEL_NAMES vehModel
|
|
|
|
IF IS_VEHICLE_DRIVEABLE( vehPlayersLast )
|
|
|
|
vehModel = GET_ENTITY_MODEL( vehPlayersLast )
|
|
|
|
IF DOES_STRIPPER_LIKE_PLAYERS_RIDE(bootyCallEnum, vehModel)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_STRIPPER_IN_VEHICLE_SHE_CAN_GIVE_A_BJ_IN()
|
|
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
VEHICLE_INDEX vehPlayersLast = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
MODEL_NAMES vehModel
|
|
|
|
IF IS_VEHICLE_DRIVEABLE( vehPlayersLast )
|
|
|
|
vehModel = GET_ENTITY_MODEL( vehPlayersLast )
|
|
IF IS_VEHICLE_MODEL_SUITABLE_FOR_SEX( vehModel, FALSE)
|
|
AND IS_VEHICLE_LAYOUT_VALID_FOR_SEX(vehPlayersLast)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC MODEL_NAMES GET_STRIPPER_MODEL(INT iModelVariant, BOOL bHighQuality = FALSE)
|
|
|
|
IF iModelVariant = 0
|
|
IF bHighQuality
|
|
RETURN CSB_STRIPPER_01
|
|
ELSE
|
|
RETURN S_F_Y_STRIPPER_01
|
|
ENDIF
|
|
ELIF iModelVariant = 1
|
|
IF bHighQuality
|
|
RETURN CSB_STRIPPER_02
|
|
ELSE
|
|
RETURN S_F_Y_STRIPPER_02
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN DUMMY_MODEL_FOR_SCRIPT
|
|
ENDFUNC
|
|
|
|
FUNC TEXT_LABEL_23 STRIPCLUB_FIXUP_PLAYER_LABEL(STRING sBaseLabel)
|
|
TEXT_LABEL_23 sFixup = sBaseLabel
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
sFixup += "_T"
|
|
ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
sFixup += "_M"
|
|
ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
sFixup += "_F"
|
|
ENDIF
|
|
|
|
//PRINTLN("Changed label to ", sFixup)
|
|
RETURN sFixup
|
|
ENDFUNC
|
|
|
|
// set stripper variation fields
|
|
PROC SET_HEAD_VARIATION_ON_STRIPPER(PED_INDEX ped, INT iHeD, INT iHeT)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_HEAD, iHeD, iHeT)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_HEAD, iHeD, iHeT)
|
|
ELSE
|
|
SCRIPT_ASSERT("bad PED_COMP_HEAD combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_HAIR_VARIATION_ON_STRIPPER(PED_INDEX ped, INT iHaD, INT iHaT)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_HAIR, iHaD, iHaT)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_HAIR, iHaD, iHaT)
|
|
ELSE
|
|
PRINTLN("Drawable ", iHaD, " Texture ", iHaT)
|
|
SCRIPT_ASSERT("bad PED_COMP_HAIR combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_TORSO_VARIATION_ON_STRIPPER(PED_INDEX ped, INT iToD, INT iToT)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_TORSO, iToD, iToT)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_TORSO, iToD, iToT)
|
|
ELSE
|
|
SCRIPT_ASSERT("bad PED_COMP_TORSO combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_LEG_VARIATION_ON_STRIPPER(PED_INDEX ped, INT iLeD, INT iLeT)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_LEG, iLeD, iLeT)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_LEG, iLeD, iLeT)
|
|
ELSE
|
|
SCRIPT_ASSERT("bad PED_COMP_LEG combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_FEET_VARIATION_ON_STRIPPER(PED_INDEX ped, INT iLeD, INT iLeT)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_FEET, iLeD, iLeT)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_FEET, iLeD, iLeT)
|
|
ELSE
|
|
SCRIPT_ASSERT("bad PED_COMP_FEET combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_SPECIAL_VARIATION_ON_STIPPER(PED_INDEX ped, INT iDraw, INT iTexture)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_SPECIAL, iDraw, iTexture)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_SPECIAL, iDraw, iTexture)
|
|
ELSE
|
|
SCRIPT_ASSERT("bad PED_COMP_SPECIAL combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_JBIB_VARIATION_ON_STIPPER(PED_INDEX ped, INT iDraw, INT iTexture)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(ped, PED_COMP_JBIB, iDraw, iTexture)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_JBIB, iDraw, iTexture)
|
|
ELSE
|
|
SCRIPT_ASSERT("bad PED_COMP_JBIB combo")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_JACKET_VARIATION_ON_STRIPPER(PED_INDEX ped)
|
|
|
|
IF GET_ENTITY_MODEL(ped) = S_F_Y_Stripper_02
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 2,GET_RANDOM_INT_IN_RANGE(0,3)) //jacket
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 2,GET_RANDOM_INT_IN_RANGE(0,3)) //blouse
|
|
SET_FEET_VARIATION_ON_STRIPPER(ped, 0,0) //boots
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC SETUP_TOPLESS_VARIATION_ON_STRIPPER(PED_INDEX paramPed, BOOL bTopLess, INT iTattoo = -1, INT iJewelry = -1)
|
|
IF IS_ENTITY_DEAD(paramPed)
|
|
EXIT
|
|
ENDIF
|
|
|
|
MODEL_NAMES stripperModelName = GET_ENTITY_MODEL(paramPed)
|
|
|
|
IF stripperModelName = GET_STRIPPER_MODEL(0)
|
|
OR stripperModelName = GET_STRIPPER_MODEL(0, TRUE)
|
|
IF bTopLess
|
|
SET_TORSO_VARIATION_ON_STRIPPER(paramPed, 2, 0)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(paramPed, 1, 0) // no skirt, just thongs
|
|
ENDIF
|
|
ELIF stripperModelName = GET_STRIPPER_MODEL(1)
|
|
OR stripperModelName = GET_STRIPPER_MODEL(1, TRUE)
|
|
IF bTopLess
|
|
SET_TORSO_VARIATION_ON_STRIPPER(paramPed, 0, iTattoo)
|
|
SET_FEET_VARIATION_ON_STRIPPER(paramPed, iJewelry, 0)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(paramPed, 1, 0)
|
|
ENDIF
|
|
ELIF stripperModelName = MP_F_STRIPPERLITE
|
|
IF bTopLess
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(paramPed, 1, 0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// set stripper variations
|
|
PROC SETUP_SCLUB_STRIPPER_VARIATION(PED_INDEX ped, BOOTY_CALL_CONTACT_ENUM stripperID, BOOL bTopless = FALSE)
|
|
IF NOT IS_PED_INJURED(ped)
|
|
SET_PED_DEFAULT_COMPONENT_VARIATION(ped)
|
|
//SET_PED_COMPONENT_VARIATION(ped, PED_COMP_SPECIAL, 1, 0)
|
|
|
|
// For Stripper_01
|
|
// Head has textures [0-1] (eyes)
|
|
// Hair has textures [0-1]
|
|
// Torso has drawables [0-2], 2 has no textures, 0-1 has textures [0-2]
|
|
// Lower has textures [0-2]
|
|
// Special has drawables [0-1], 1 has no textures, 0 has textures [0-1]
|
|
|
|
// For Stripper_02
|
|
// Head has textures [0-1] (eyes)
|
|
// Hair has drawables [0-2], [0] and [2] have textures [0-2], [1] has textures [0-1]
|
|
// Torso has textures [0-1]
|
|
// Lower has textures [0-2]
|
|
// Feet has drawabes [0-1], [0] has no textures, [1] has textures [0-2]...just use 0, 1 is a skirt
|
|
// Special has drawables [0-2], 0 has textures [0-3], [1-2] has textures [0-2] ... use 0 for bikini top, 1 for tape
|
|
|
|
BOOL bUsingLiteModel = FALSE
|
|
|
|
IF GET_ENTITY_MODEL(ped) = MP_F_STRIPPERLITE
|
|
bUsingLiteModel = TRUE
|
|
//EXIT
|
|
ENDIF
|
|
|
|
SWITCH stripperID
|
|
CASE BC_STRIPPER_JULIET //GET_STRIPPER_MODEL(0)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_JULIET")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, TRUE) //all white mp strippers dont wear bikini
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 1)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 2, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 1, 0)
|
|
SET_JBIB_VARIATION_ON_STIPPER(ped, 0, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_NIKKI //GET_STRIPPER_MODEL(1)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_NIKKI")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 0) //no tats
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_FEET_VARIATION_ON_STRIPPER(ped, 4, 0) //jewl 4
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0) //has bikini
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless, 0, 4)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_CHASTITY //GET_STRIPPER_MODEL(0)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_CHASTITY")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 1)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, TRUE)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 1)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 1, 1)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 1, 0)
|
|
SET_JBIB_VARIATION_ON_STIPPER(ped, 1, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_CHEETAH //GET_STRIPPER_MODEL(1)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_CHEETAH")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 2, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 2) //tatto number 2
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 1, 1)
|
|
SET_FEET_VARIATION_ON_STRIPPER(ped, 0, 0) //No skirt or jewelry
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0) //has bikini
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless, 2, 0)//tat 2, no jewl
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_SAPPHIRE //GET_STRIPPER_MODEL(0)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_SAPPHIRE")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, TRUE)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 2, 1)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 2)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 2)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 1, 0)
|
|
SET_JBIB_VARIATION_ON_STIPPER(ped, 1, 2)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_INFERNUS //GET_STRIPPER_MODEL(1)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_INFERNUS")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 1)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 1) //tat one
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 2)
|
|
SET_FEET_VARIATION_ON_STRIPPER(ped, 2, 0) //wearing jewl 2
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0) //has bikini
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless, 1, 2)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_FUFU //GET_STRIPPER_MODEL(0)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_FUFU")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, TRUE)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 1, 0)
|
|
SET_JBIB_VARIATION_ON_STIPPER(ped, 0, 1)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless, 0, 1)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BC_STRIPPER_PEACH //GET_STRIPPER_MODEL(1)
|
|
//DEBUG_MESSAGE("Setting up BC_STRIPPER_PEACH")
|
|
IF bUsingLiteModel
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 0)
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 0, 0)
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless)
|
|
ELSE
|
|
SET_HEAD_VARIATION_ON_STRIPPER(ped, 1, 0)
|
|
SET_HAIR_VARIATION_ON_STRIPPER(ped, 0, 2)
|
|
SET_TORSO_VARIATION_ON_STRIPPER(ped, 1, 1) //no tats, shirt top
|
|
SET_LEG_VARIATION_ON_STRIPPER(ped, 0, 1)
|
|
SET_FEET_VARIATION_ON_STRIPPER(ped, 0, 0) //No skirt or jewelry
|
|
SET_SPECIAL_VARIATION_ON_STIPPER(ped, 1, 0) //no bikini
|
|
SETUP_TOPLESS_VARIATION_ON_STRIPPER(ped, bTopless, 0, 0)
|
|
ENDIF
|
|
BREAK
|
|
|
|
// //non-stripper booty call
|
|
// CASE BC_FIXED_CAR //A_F_Y_Fitness_02
|
|
// //DEBUG_MESSAGE("Setting up BC_FIXED_CAR")
|
|
//
|
|
// SET_PED_COMPONENT_VARIATION(ped, PED_COMP_HEAD, 1, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(ped, PED_COMP_HAIR, 0, 1, 0)
|
|
// SET_PED_COMPONENT_VARIATION(ped, PED_COMP_LEG, 1, 4, 0)
|
|
// SET_PED_COMPONENT_VARIATION(ped, PED_COMP_TORSO, 0, 3, 0)
|
|
// SET_PED_COMPONENT_VARIATION(ped, PED_COMP_SPECIAL, 1, 0, 0)
|
|
//
|
|
// BREAK
|
|
|
|
CASE BC_TAXI_LIZ
|
|
|
|
// A_F_Y_EASTSA_03
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_TORSO, 2, 0)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_LEG, 0, 1)
|
|
|
|
BREAK
|
|
|
|
CASE BC_HITCHER_GIRL
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_HEAD, 0, 1, 0) //(head)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_HAIR, 0, 1, 0) //(hair)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_TORSO, 0, 0, 0) //(uppr)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_LEG, 0, 1, 0) //(lowr)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_SPECIAL, 1, 0, 0) //(accs)
|
|
SET_PED_COMPONENT_VARIATION(ped, PED_COMP_DECL, 0, 0, 0) //(decl)
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC STRING GET_BOOTY_CALL_VOICE(BOOTY_CALL_CONTACT_ENUM bootyCall, BOOL bIsMp = FALSE)
|
|
SWITCH bootyCall
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN "Juliet"
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
IF bIsMp
|
|
RETURN "NIKKI_MP"
|
|
ELSE
|
|
RETURN "Nikki"
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
IF bIsMp
|
|
RETURN "CHASTITY_MP"
|
|
ELSE
|
|
RETURN "Chastity"
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN "Cheetah"
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN "Sapphire"
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN "Infernus"
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
IF bIsMp
|
|
RETURN "FUFU_MP"
|
|
ELSE
|
|
RETURN "Fufu"
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN "Peach"
|
|
BREAK
|
|
// CASE BC_FIXED_CAR
|
|
// RETURN "BDownHotChick"
|
|
// BREAK
|
|
CASE BC_TAXI_LIZ
|
|
RETURN "TaxiLiz"
|
|
BREAK
|
|
CASE BC_HITCHER_GIRL
|
|
RETURN "REHH2Hiker"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "Invalid name"
|
|
ENDFUNC
|
|
|
|
// get booty call name as string
|
|
FUNC STRING GET_BOOTY_CALL_NAME_AS_STRING(BOOTY_CALL_CONTACT_ENUM bootyCall)
|
|
SWITCH bootyCall
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN "Juliet"
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN "Nikki"
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN "Chastity"
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN "Cheetah"
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN "Sapphire"
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN "Infernus"
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN "Fufu"
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN "Peach"
|
|
BREAK
|
|
// CASE BC_FIXED_CAR
|
|
// RETURN "BDownHotChick"
|
|
// BREAK
|
|
CASE BC_TAXI_LIZ
|
|
RETURN "TaxiLiz"
|
|
BREAK
|
|
CASE BC_HITCHER_GIRL
|
|
RETURN "REHH2Hiker"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "Invalid name"
|
|
ENDFUNC
|
|
|
|
FUNC TEXT_LABEL_15 GET_STRIPPER_NAME_AS_TEXT_LABEL(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
TEXT_LABEL_15 tName = "SCLUB_NM_"
|
|
tName += ENUM_TO_INT(stripper)
|
|
RETURN tName
|
|
ENDFUNC
|
|
|
|
FUNC TEXT_LABEL_15 GET_STRIPPER_LIKE_METER_TEXT_LABEL(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
TEXT_LABEL_15 tName = "SCLUB_METER_"
|
|
tName += ENUM_TO_INT(stripper)
|
|
RETURN tName
|
|
ENDFUNC
|
|
|
|
// get stripper contact enum
|
|
FUNC enumCharacterList GET_BOOTY_CALL_CONTACT_CONTACT_ENUM(BOOTY_CALL_CONTACT_ENUM bootyCall)
|
|
SWITCH bootyCall
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN CHAR_STRIPPER_JULIET
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN CHAR_STRIPPER_NIKKI
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN CHAR_STRIPPER_CHASTITY
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN CHAR_STRIPPER_CHEETAH
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN CHAR_STRIPPER_SAPPHIRE
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN CHAR_STRIPPER_INFERNUS
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN CHAR_STRIPPER_FUFU
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN CHAR_STRIPPER_PEACH
|
|
BREAK
|
|
// CASE BC_FIXED_CAR
|
|
// RETURN CHAR_BROKEN_DOWN_GIRL
|
|
// BREAK
|
|
CASE BC_TAXI_LIZ
|
|
RETURN CHAR_TAXI_LIZ
|
|
BREAK
|
|
CASE BC_HITCHER_GIRL
|
|
RETURN CHAR_HITCHER_GIRL
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN NO_CHARACTER
|
|
ENDFUNC
|
|
|
|
// get stripper contact from contact enum //CDM 19/8/2013
|
|
FUNC BOOTY_CALL_CONTACT_ENUM GET_BOOTY_CALL_CONTACT_ENUM_FROM_CHAR_ENUM(enumCharacterList bootyCallChar)
|
|
SWITCH bootyCallChar
|
|
CASE CHAR_STRIPPER_JULIET
|
|
RETURN BC_STRIPPER_JULIET
|
|
BREAK
|
|
CASE CHAR_STRIPPER_NIKKI
|
|
RETURN BC_STRIPPER_NIKKI
|
|
BREAK
|
|
CASE CHAR_STRIPPER_CHASTITY
|
|
RETURN BC_STRIPPER_CHASTITY
|
|
BREAK
|
|
CASE CHAR_STRIPPER_CHEETAH
|
|
RETURN BC_STRIPPER_CHEETAH
|
|
BREAK
|
|
CASE CHAR_STRIPPER_SAPPHIRE
|
|
RETURN BC_STRIPPER_SAPPHIRE
|
|
BREAK
|
|
CASE CHAR_STRIPPER_INFERNUS
|
|
RETURN BC_STRIPPER_INFERNUS
|
|
BREAK
|
|
CASE CHAR_STRIPPER_FUFU
|
|
RETURN BC_STRIPPER_FUFU
|
|
BREAK
|
|
CASE CHAR_STRIPPER_PEACH
|
|
RETURN BC_STRIPPER_PEACH
|
|
BREAK
|
|
// CASE BC_FIXED_CAR
|
|
// RETURN CHAR_BROKEN_DOWN_GIRL
|
|
// BREAK
|
|
CASE CHAR_TAXI_LIZ
|
|
RETURN BC_TAXI_LIZ
|
|
BREAK
|
|
CASE CHAR_HITCHER_GIRL
|
|
RETURN BC_HITCHER_GIRL
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN BC_STRIPPER_JULIET
|
|
ENDFUNC
|
|
|
|
FUNC MODEL_NAMES GET_NAMED_STRIPPER_MODEL_ENUM(BOOTY_CALL_CONTACT_ENUM stripperID, BOOL bHighQuality, BOOL mpStripclub = FALSE)
|
|
IF mpStripclub
|
|
RETURN mp_f_Stripperlite
|
|
ENDIF
|
|
SWITCH stripperID
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN GET_STRIPPER_MODEL(0, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN GET_STRIPPER_MODEL(1, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN GET_STRIPPER_MODEL(0, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN GET_STRIPPER_MODEL(1, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN GET_STRIPPER_MODEL(0, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN GET_STRIPPER_MODEL(1, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN GET_STRIPPER_MODEL(0, bHighQuality)
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN GET_STRIPPER_MODEL(1, bHighQuality)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN GET_STRIPPER_MODEL(0, bHighQuality)
|
|
ENDFUNC
|
|
|
|
|
|
// set stripper variations
|
|
FUNC MODEL_NAMES GET_BOOTYCALL_MODEL_ENUM(BOOTY_CALL_CONTACT_ENUM stripperID, BOOL mpStripclub = FALSE)
|
|
|
|
IF mpStripclub
|
|
RETURN mp_f_Stripperlite
|
|
ENDIF
|
|
|
|
enumCharacterList eCharBootyCall = GET_BOOTY_CALL_CONTACT_CONTACT_ENUM(stripperID)
|
|
|
|
IF eCharBootyCall != NO_CHARACTER
|
|
RETURN GET_NPC_PED_MODEL(eCharBootyCall)
|
|
ENDIF
|
|
|
|
RETURN GET_STRIPPER_MODEL(0)
|
|
ENDFUNC
|
|
|
|
// get stripper touch threshold
|
|
FUNC INT GET_STRIPPER_TOUCH_THRESHOLD(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN FLOOR(0.40*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN FLOOR(0.42*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN FLOOR(0.44*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN FLOOR(0.39*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN FLOOR(0.51*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN FLOOR(0.53*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN FLOOR(0.52*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN FLOOR(0.57*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_STRIPPER_DUO_DANCE_THRESHOLD(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN FLOOR(STRIPPER_DUO_DANCE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
// get stripper come home threshold
|
|
FUNC INT GET_STRIPPER_COME_HOME_THRESHOLD(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN FLOOR(STRIPPER_COME_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
// If you've lost the strippers trust, to regain it, is much easier then the last time.
|
|
FUNC INT GET_STRIPPER_COME_BACK_HOME_THRESHOLD(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN FLOOR(STRIPPER_COME_BACK_HOME_LIKE_THRESHOLD*STRIPPER_MAX_LIKE)
|
|
BREAK
|
|
|
|
|
|
//Else - will never come back B*739659
|
|
// BC_FIXED_CAR,
|
|
// BC_TAXI_LIZ,
|
|
// BC_HITCHER_GIRL
|
|
|
|
DEFAULT
|
|
RETURN STRIPPER_MAX_LIKE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_STRIPPER_BOOTYCALL_STRIPPER(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET
|
|
CASE BC_STRIPPER_NIKKI
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
CASE BC_STRIPPER_INFERNUS
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
//These strippers will never be willing for bootycall
|
|
CASE BC_STRIPPER_CHASTITY
|
|
CASE BC_STRIPPER_CHEETAH
|
|
CASE BC_STRIPPER_FUFU
|
|
CASE BC_STRIPPER_PEACH
|
|
RETURN FALSE
|
|
BREAK
|
|
|
|
//CASE BC_FIXED_CAR
|
|
CASE BC_TAXI_LIZ
|
|
CASE BC_HITCHER_GIRL
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_STRIPPER_AVAILABLE_AT_THIS_TIME_OF_DAY(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET
|
|
CASE BC_STRIPPER_NIKKI
|
|
CASE BC_STRIPPER_CHASTITY
|
|
CASE BC_STRIPPER_CHEETAH
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
CASE BC_STRIPPER_INFERNUS
|
|
CASE BC_STRIPPER_FUFU
|
|
CASE BC_STRIPPER_PEACH
|
|
IF GET_CLOCK_HOURS() < 6 OR GET_CLOCK_HOURS() > 14 //the stripper will only agree if it's not between the hours of 6am-2pm
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
//CASE BC_FIXED_CAR
|
|
CASE BC_TAXI_LIZ
|
|
CASE BC_HITCHER_GIRL
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRIP_CLUB_PLAYER_CHAR_ENUM GET_STRIP_CLUB_PLAYER_PED_ENUM()
|
|
|
|
enumCharacterList PlayerChar = GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
SWITCH PlayerChar
|
|
CASE CHAR_MICHAEL
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
BREAK
|
|
DEFAULT
|
|
//Must be in MP, get appopiate MP enum
|
|
// PRINTLN("Get Stripclub MP ID for slot ", GET_SLOT_NUMBER(-1))
|
|
SWITCH GET_SLOT_NUMBER(-1)
|
|
CASE 0
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MULTI_0
|
|
BREAK
|
|
CASE 1
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MULTI_1
|
|
BREAK
|
|
CASE 2
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MULTI_2
|
|
BREAK
|
|
CASE 3
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MULTI_3
|
|
BREAK
|
|
CASE 4
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MULTI_4
|
|
BREAK
|
|
DEFAULT
|
|
SCRIPT_ASSERT("Invalid stripclub player ID")
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN STRIP_CLUB_PLAYER_CHAR_MULTI_0
|
|
ENDFUNC
|
|
|
|
PROC SET_STRIPCLUB_USING_BAR(BOOL bUsing)
|
|
IF bUsing
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_USING_BAR)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_USING_BAR)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_STRIPCLUB_USING_BAR()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_USING_BAR)
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_STRIPCLUB_AMOUNT_OF_ALCOHOL()
|
|
RETURN Get_Peds_Drunk_Alcohol_Hit_Count(PLAYER_PED_ID())
|
|
ENDFUNC
|
|
|
|
PROC INC_STRIPCLUB_DRINKS()
|
|
Player_Takes_Alcohol_Hit(PLAYER_PED_ID())
|
|
ENDPROC
|
|
|
|
PROC SET_STRIPCLUB_GLOBAL_HOSTILE(BOOL bIsHostile)
|
|
IF bIsHostile
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_SENT_CLUB_HOSTILE)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_SENT_CLUB_HOSTILE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_STRIPCLUB_GLOBAL_HOSTILE_FLAG_SET()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_SENT_CLUB_HOSTILE)
|
|
ENDFUNC
|
|
|
|
PROC SET_STRIPCLUB_GLOBAL_FRONT_BOUNCER_DEAD(BOOL bIsDead)
|
|
IF bIsDead
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_FRONT_BOUNCER_DEAD)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_FRONT_BOUNCER_DEAD)
|
|
ENDIF
|
|
ENDPROC
|
|
PROC SET_STRIPCLUB_GLOBAL_FRONT_BOUNCER_HAS_BEEN_CREATED(BOOL bIsCreated)
|
|
IF bIsCreated
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_FRONT_BOUNCER_EXISTS)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_FRONT_BOUNCER_EXISTS)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_STRIPCLUB_GLOBAL_FORCE_CREATE_FRONT_BOUNCER(BOOL bIsCreated)
|
|
IF bIsCreated
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_FORCE_CREATE_FRONT_BOUNCER)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_FORCE_CREATE_FRONT_BOUNCER)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_STRIPCLUB_GLOBAL_FRONT_BOUNCER_DEAD()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_FRONT_BOUNCER_DEAD)
|
|
ENDFUNC
|
|
|
|
FUNC BOOL HAS_STRIPCLUB_GLOBAL_FRONT_BOUNCER_BEEN_CREATED()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_FRONT_BOUNCER_EXISTS)
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_STRIPCLUB_GLOBAL_FORCE_FRONT_BOUNCER_BE_CREATED()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_FORCE_CREATE_FRONT_BOUNCER)
|
|
ENDFUNC
|
|
|
|
PROC SET_STRIPCLUB_GLOBAL_GETTING_LAPDANCE(BOOL bSet)
|
|
IF bSet
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_GETTING_LAP_DANCE)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_GETTING_LAP_DANCE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_STRIPCLUB_GLOBAL_THROWN_OUT(BOOL bSet)
|
|
IF bSet
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_THROWN_OUT_OF_CLUB)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_THROWN_OUT_OF_CLUB)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_STRIPCLUB_GLOBAL_THROWN_OUT_SET()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_THROWN_OUT_OF_CLUB)
|
|
ENDFUNC
|
|
|
|
PROC SET_STRIPCLUB_POST_HEIST_SCENE_PLAYING(BOOL bSet)
|
|
IF bSet
|
|
SET_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_POST_HEIST_SCENE_IS_PLAYING)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_StripclubGlobals.iStripclubFlags, GSF_POST_HEIST_SCENE_IS_PLAYING)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_STRIPCLUB_POST_HEIST_SCENE_PLAYING()
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_POST_HEIST_SCENE_IS_PLAYING)
|
|
ENDFUNC
|
|
|
|
|
|
// get like for stripper ID
|
|
FUNC INT GET_LIKE_FOR_STRIPPER_ID(BOOTY_CALL_CONTACT_ENUM stripperID)
|
|
RETURN g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iLike
|
|
ENDFUNC
|
|
|
|
// set like for stripper ID
|
|
PROC SET_LIKE_FOR_STRIPPER_ID(BOOTY_CALL_CONTACT_ENUM stripperID, INT i)
|
|
g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iLike = i
|
|
ENDPROC
|
|
|
|
FUNC BOOL WAS_STRIPPER_ATTACKED_ON_BOOTY_CALL(BOOTY_CALL_CONTACT_ENUM stripperID)
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits,GBF_INJURED_ON_CALL)
|
|
ENDFUNC
|
|
|
|
PROC SET_STRIPPER_ATTACKED_ON_BOOTY_CALL(BOOTY_CALL_CONTACT_ENUM stripperID, BOOL bWasAttacked = TRUE)
|
|
IF bWasAttacked
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits,GBF_INJURED_ON_CALL)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits,GBF_INJURED_ON_CALL)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL WAS_STRIPPER_CALLED_AFTER_ATTACKED(BOOTY_CALL_CONTACT_ENUM stripperID)
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits,GBF_CALLED_AFTER_INJURED)
|
|
ENDFUNC
|
|
|
|
PROC SET_STRIPPER_CALLED_AFTER_ATTACKED(BOOTY_CALL_CONTACT_ENUM stripperID, BOOL bWasCalled = TRUE)
|
|
|
|
IF bWasCalled
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits,GBF_CALLED_AFTER_INJURED)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits,GBF_CALLED_AFTER_INJURED)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_STRIPPER_HAS_MEET_PLAYER(BOOTY_CALL_CONTACT_ENUM stripperID, BOOL bSet)
|
|
IF bSet
|
|
SET_BITMASK_AS_ENUM(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits, GBF_MEET_PLAYER)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits, GBF_MEET_PLAYER)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL HAS_STRIPPER_MEET_PLAYER(BOOTY_CALL_CONTACT_ENUM stripperID)
|
|
RETURN IS_BITMASK_AS_ENUM_SET(g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[stripperID].iBCCBits, GBF_MEET_PLAYER)
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_STRIPPER_LIKE_PLAYER_ENOUGH_TO_COME_HOME(BOOTY_CALL_CONTACT_ENUM stripper )
|
|
IF WAS_STRIPPER_ATTACKED_ON_BOOTY_CALL(stripper)
|
|
RETURN GET_LIKE_FOR_STRIPPER_ID(stripper) >= GET_STRIPPER_COME_BACK_HOME_THRESHOLD(stripper)
|
|
ELSE
|
|
RETURN GET_LIKE_FOR_STRIPPER_ID(stripper) >= GET_STRIPPER_COME_HOME_THRESHOLD(stripper)
|
|
ENDIF
|
|
ENDFUNC
|
|
|
|
|
|
|
|
// get reputation in club
|
|
FUNC INT GET_CLUB_REPUTATION(STRIP_CLUB_ENUM sCE)
|
|
RETURN g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].stripClub[sCE].iReputation
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_CLUB_DISLIKE_THRESHOLD(STRIP_CLUB_ENUM sCE)
|
|
IF sCE = STRIP_CLUB_LOW
|
|
RETURN 35
|
|
ENDIF
|
|
|
|
RETURN 35
|
|
ENDFUNC
|
|
|
|
// does the club as a whole dislike the player?
|
|
FUNC BOOL IS_PLAYER_DISLIKED_BY_CLUB(STRIP_CLUB_ENUM sCE)
|
|
IF GET_CLUB_REPUTATION(sCE) <= GET_CLUB_DISLIKE_THRESHOLD(sCE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// does the club as a whole like the player?
|
|
FUNC BOOL IS_PLAYER_LIKED_BY_CLUB(STRIP_CLUB_ENUM sCE)
|
|
INT iLikeThreshold
|
|
SWITCH sCE
|
|
CASE STRIP_CLUB_LOW
|
|
iLikeThreshold = 65
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF GET_CLUB_REPUTATION(sCE) >= iLikeThreshold
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// get is booty call for stripper ID
|
|
FUNC BOOL IS_BOOTY_CALL_ID_ACTIVATED(BOOTY_CALL_CONTACT_ENUM bootyCallID, STRIP_CLUB_PLAYER_CHAR_ENUM forCharacter = -1)
|
|
IF forCharacter < STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
forCharacter = GET_STRIP_CLUB_PLAYER_PED_ENUM()
|
|
ENDIF
|
|
|
|
RETURN g_savedGlobals.sStripClubData[forCharacter].bootyCall[bootyCallID].bActivated
|
|
ENDFUNC
|
|
|
|
// set the # of times that the player has ignored the stripper's booty call
|
|
PROC SET_STRIPPER_NUM_BOOTY_DENIALS_BY_PLAYER(BOOTY_CALL_CONTACT_ENUM bootyCallID, INT iNumDenials)
|
|
//set # of denials to zero
|
|
g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials = iNumDenials
|
|
ENDPROC
|
|
|
|
// get the # of times that the player has ignored the stripper's booty call
|
|
FUNC INT GET_STRIPPER_NUM_BOOTY_DENIALS_BY_PLAYER(BOOTY_CALL_CONTACT_ENUM bootyCallID)
|
|
IF g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials < 0
|
|
g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials = 0
|
|
ENDIF
|
|
|
|
RETURN g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials
|
|
ENDFUNC
|
|
|
|
// increment the # of times that the player has ignored the stripper's booty call
|
|
PROC INCREMENT_STRIPPER_NUM_BOOTY_DENIALS_BY_PLAYER(BOOTY_CALL_CONTACT_ENUM bootyCallID)
|
|
IF g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials < 0
|
|
g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials = 0
|
|
ENDIF
|
|
|
|
++g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iNumPlayerDenials
|
|
ENDPROC
|
|
|
|
// set the # of times that the player has ignored the stripper's booty call
|
|
PROC SET_NUM_SEXTS_SENT_BY_STRIPPER(BOOTY_CALL_CONTACT_ENUM bootyCallID, INT iSextsSent)
|
|
g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iSextsSent = iSextsSent
|
|
ENDPROC
|
|
|
|
// get the # of times that the player has ignored the stripper's booty call
|
|
FUNC INT GET_NUM_SEXTS_SENT_BY_STRIPPER(BOOTY_CALL_CONTACT_ENUM bootyCallID)
|
|
RETURN g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iSextsSent
|
|
ENDFUNC
|
|
|
|
// increments the # of times that the player has ignored the stripper's booty call
|
|
PROC INCREMENT_NUM_SEXTS_SENT_BY_STRIPPER(BOOTY_CALL_CONTACT_ENUM bootyCallID)
|
|
IF GET_NUM_SEXTS_SENT_BY_STRIPPER(bootyCallID) < 0
|
|
SET_NUM_SEXTS_SENT_BY_STRIPPER(bootyCallID, 0)
|
|
ENDIF
|
|
|
|
++g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[bootyCallID].iSextsSent
|
|
ENDPROC
|
|
|
|
|
|
// get a specific strippers text message composite part ID for a sext.
|
|
// used to build up a text message label on the comms controller at time of sending.
|
|
// NB. comms string data now found in x:\gta5\script\dev\singleplayer\include\public\comms_control_data_GTA5.sch. -BenR
|
|
FUNC CC_TextPart GET_TEXT_PARTID_FOR_STRIPPER(BOOTY_CALL_CONTACT_ENUM stripper)
|
|
SWITCH stripper
|
|
CASE BC_STRIPPER_JULIET RETURN TPART_SEXT_JULIET BREAK
|
|
CASE BC_STRIPPER_NIKKI RETURN TPART_SEXT_NIKKI BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE RETURN TPART_SEXT_SAPPHIRE BREAK
|
|
CASE BC_STRIPPER_INFERNUS RETURN TPART_SEXT_INFERNUS BREAK
|
|
CASE BC_TAXI_LIZ RETURN TPART_SEXT_LIZ BREAK
|
|
CASE BC_HITCHER_GIRL RETURN TPART_SEXT_HITCHER BREAK
|
|
ENDSWITCH
|
|
|
|
SCRIPT_ASSERT("GET_TEXT_PARTID_FOR_STRIPPER: Invalid stripper enum passed.")
|
|
RETURN TPART_NONE
|
|
ENDFUNC
|
|
|
|
|
|
// get a sext count specific text message composite part ID for a sext.
|
|
// used to build up a text message label on the comms controller at time of sending.
|
|
// NB. comms string data now found in x:\gta5\script\dev\singleplayer\include\public\comms_control_data_GTA5.sch. -BenR
|
|
FUNC CC_TextPart GET_TEXT_PARTID_FOR_SEXT_COUNT(INT iNoSextsSent)
|
|
SWITCH iNoSextsSent
|
|
CASE 0 RETURN TPART_SEXT_NEED BREAK
|
|
CASE 1 RETURN TPART_SEXT_1 BREAK
|
|
CASE 2 RETURN TPART_SEXT_2 BREAK
|
|
ENDSWITCH
|
|
|
|
SCRIPT_ASSERT("GET_TEXT_PARTID_FOR_SEXT_COUNT: Trying to get TextPart ID for a stripper who has sent too many sexts.")
|
|
RETURN TPART_NONE
|
|
ENDFUNC
|
|
|
|
|
|
// get correct phonebook to add stripper to
|
|
FUNC enumPhonebookPresence GET_PHONEBOOK_TO_ADD_STRIPPER(STRIP_CLUB_PLAYER_CHAR_ENUM forCharacter)
|
|
SWITCH forCharacter
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
RETURN MICHAEL_BOOK
|
|
BREAK
|
|
CASE STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
RETURN TREVOR_BOOK
|
|
BREAK
|
|
CASE STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
RETURN FRANKLIN_BOOK
|
|
BREAK
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_0
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_1
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_2
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_3
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_4
|
|
RETURN MULTIPLAYER_BOOK
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ALL_OWNERS_BOOKS
|
|
ENDFUNC
|
|
|
|
// advance next call player time
|
|
PROC SET_NEXT_CALL_PLAYER_TIME(INT i = -1)
|
|
|
|
PRINTLN("Setting next girl sext player time to ", i)
|
|
|
|
IF i <> -1
|
|
// if we passed in an int, adjust by this time
|
|
g_bootyCallData.iNextCallPlayerTime = GET_GAME_TIMER() + i
|
|
ELSE
|
|
// otherwise increase by a random time
|
|
g_bootyCallData.iNextCallPlayerTime = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(ADVANCE_NEXT_CALL_PLAYER_TIME_MIN, ADVANCE_NEXT_CALL_PLAYER_TIME_MAX)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// advance next available time
|
|
PROC SET_NEXT_STRIPPER_BOOTY_CALL_AVAILABLE_TIME(INT i, INT iTime = -1)
|
|
IF iTime > -1
|
|
g_bootyCallData.iNextAvailableTime[i] = GET_GAME_TIMER() + iTime
|
|
ELSE
|
|
g_bootyCallData.iNextAvailableTime[i] = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(ADVANCE_NEXT_BOOTY_CALL_AVAILABLE_TIME_MIN, ADVANCE_NEXT_BOOTY_CALL_AVAILABLE_TIME_MAX)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// set is booty call for stripper ID
|
|
PROC SET_BOOTY_CALL_ID_ACTIVATED(BOOTY_CALL_CONTACT_ENUM bootyCallID, BOOl bSetIsBootyCall, STRIP_CLUB_PLAYER_CHAR_ENUM forCharacter = -1)
|
|
|
|
IF forCharacter < STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
forCharacter = GET_STRIP_CLUB_PLAYER_PED_ENUM()
|
|
ENDIF
|
|
|
|
IF GET_PHONEBOOK_TO_ADD_STRIPPER(forCharacter) = ALL_OWNERS_BOOKS
|
|
//this should never happen. Adding assert at the request of Keith
|
|
SCRIPT_ASSERT("Trying to add stripper number to ALL_OWNERS. Shouldn't be doing this.")
|
|
ENDIF
|
|
|
|
BOOL bAlreadySet = g_savedGlobals.sStripClubData[forCharacter].bootyCall[bootyCallID].bActivated
|
|
|
|
//B*-2383107
|
|
//if marked as already in phonebook, double check phone book.
|
|
IF bAlreadySet
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF NOT IS_CONTACT_IN_PHONEBOOK(GET_BOOTY_CALL_CONTACT_CONTACT_ENUM(bootyCallID), MULTIPLAYER_BOOK)
|
|
bAlreadySet = FALSE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_CONTACT_IN_PHONEBOOK(GET_BOOTY_CALL_CONTACT_CONTACT_ENUM(bootyCallID), ALL_OWNERS_BOOKS)
|
|
bAlreadySet = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//B*-2383107
|
|
|
|
g_savedGlobals.sStripClubData[forCharacter].bootyCall[bootyCallID].bActivated = bSetIsBootyCall
|
|
|
|
IF bSetIsBootyCall
|
|
// add to the phone book if not already added
|
|
IF NOT bAlreadySet
|
|
SET_STRIPPER_NUM_BOOTY_DENIALS_BY_PLAYER(bootyCallID, 0)
|
|
ADD_CONTACT_TO_PHONEBOOK(GET_BOOTY_CALL_CONTACT_CONTACT_ENUM(bootyCallID), GET_PHONEBOOK_TO_ADD_STRIPPER(forCharacter))
|
|
INT AvilableTime = GET_RANDOM_INT_IN_RANGE(INITIAL_NEXT_CALL_PLAYER_TIME_MIN, INITIAL_NEXT_CALL_PLAYER_TIME_MAX)
|
|
#IF USE_TU_CHANGES
|
|
SWITCH forCharacter
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_0
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_1
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_2
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_3
|
|
CASE STRIP_CLUB_PLAYER_CHAR_MULTI_4
|
|
SET_BIT(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iStripperUnlockedBS,ENUM_TO_INT(bootyCallID))
|
|
PRINTLN("SET_BOOTY_CALL_ID_ACTIVATED: setting stripper gave player number for #", ENUM_TO_INT(bootyCallID))
|
|
REQUEST_SAVE(SSR_REASON_STRIP_CLUB, STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
|
|
BREAK
|
|
ENDSWITCH
|
|
#ENDIF // USE_TU_CHANGES
|
|
SET_NEXT_CALL_PLAYER_TIME(AvilableTime)
|
|
SET_NEXT_STRIPPER_BOOTY_CALL_AVAILABLE_TIME(ENUM_TO_INT(bootyCallID), AvilableTime)
|
|
g_bootyCallData.iAddNumberTime[ENUM_TO_INT(bootyCallID)] = GET_GAME_TIMER()
|
|
ENDIF
|
|
ELSE
|
|
// remove from the phone book if in there
|
|
IF bAlreadySet
|
|
REMOVE_CONTACT_FROM_INDIVIDUAL_PHONEBOOK(GET_BOOTY_CALL_CONTACT_CONTACT_ENUM(bootyCallID), GET_PHONEBOOK_TO_ADD_STRIPPER(forCharacter))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// set the debug widget tickbox for activated
|
|
#IF IS_DEBUG_BUILD
|
|
g_bDebugSetAsBootyCall[ENUM_TO_INT(bootyCallID)][forCharacter] = bSetIsBootyCall
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
|
|
// is take home script currently running?
|
|
FUNC BOOL IS_PLAYER_ON_BOOTY_CALL()
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("stripperhome")) > 0
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL STRIPCLUB_IS_PLAYER_ON_MISSION()
|
|
IF IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE()
|
|
IF NOT DOES_ENTITY_EXIST(FRIEND_A_PED_ID()) // on friend activity
|
|
AND NOT IS_PLAYER_ON_BOOTY_CALL() //running bootycall script, not on real mission
|
|
AND NOT Is_Player_Timetable_Scene_In_Progress()
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// can we start a take home?
|
|
FUNC BOOL CAN_TAKE_HOME_STRIPPER()
|
|
IF IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE()
|
|
OR g_bPreventStripperApproach
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
// prevent stripper approach (for heists, might be useful somewhere else?)
|
|
PROC SET_STRIPPER_APPROACH_ENABLED(BOOL bEnabled)
|
|
IF bEnabled
|
|
g_bPreventStripperApproach = FALSE
|
|
ELSE
|
|
g_bPreventStripperApproach = TRUE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// disable strip club
|
|
PROC DISABLE_STRIP_CLUBS()
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTSTRING("DISABLE_STRIP_CLUBS() called by script ") PRINTSTRING(GET_THIS_SCRIPT_NAME()) PRINTNL()
|
|
#ENDIF
|
|
g_bDisableStripClubs = TRUE
|
|
ENDPROC
|
|
|
|
// enable strip club
|
|
PROC ENABLE_STRIP_CLUBS()
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTSTRING("ENABLE_STRIP_CLUBS() called by script ") PRINTSTRING(GET_THIS_SCRIPT_NAME()) PRINTNL()
|
|
#ENDIF
|
|
g_bDisableStripClubs = FALSE
|
|
ENDPROC
|
|
|
|
// set back to inactive
|
|
PROC RESET_BOOTY_CALL_TO_INACTIVE(BOOL bSetNextCallTime)
|
|
g_bootyCallData.bootyCallState = BOOTY_CALL_INACTIVE
|
|
g_bootyCallData.iStripperCalling = -1
|
|
g_bootyCallData.iBootyCallID = -1
|
|
|
|
IF bSetNextCallTime
|
|
SET_NEXT_CALL_PLAYER_TIME()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC INT GET_STRIPPER_INITIAL_LIKE_FOR_PLAYER(STRIP_CLUB_PLAYER_CHAR_ENUM ePlayer, BOOTY_CALL_CONTACT_ENUM eStripper)
|
|
|
|
FLOAT fInitialLikePercent = 0.0
|
|
|
|
IF ePlayer >= STRIP_CLUB_PLAYER_CHAR_MULTI_0
|
|
RETURN FLOOR(0.10*STRIPPER_MAX_LIKE)
|
|
ENDIF
|
|
|
|
SWITCH eStripper
|
|
CASE BC_STRIPPER_JULIET
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.3
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.3
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.01
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_NIKKI
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.01
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_CHASTITY
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.3
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.15
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_CHEETAH
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.1
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.3
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.1
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_SAPPHIRE
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.3
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.01
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_INFERNUS
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.30
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.01
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_FUFU
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.30
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.01
|
|
ENDIF
|
|
BREAK
|
|
CASE BC_STRIPPER_PEACH
|
|
IF ePlayer = STRIP_CLUB_PLAYER_CHAR_MICHAEL
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_FRANKLIN
|
|
fInitialLikePercent = 0.15
|
|
ELIF ePlayer = STRIP_CLUB_PLAYER_CHAR_TREVOR
|
|
fInitialLikePercent = 0.30
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FLOOR(fInitialLikePercent*STRIPPER_MAX_LIKE)
|
|
|
|
ENDFUNC
|
|
|
|
// initialise all strip club data on clean boot
|
|
PROC Initialise_Strip_Club_Global_Variables_On_Startup()
|
|
INT i, j
|
|
REPEAT COUNT_OF(STRIP_CLUB_PLAYER_CHAR_ENUM) j
|
|
// initialise club rep
|
|
REPEAT COUNT_OF(STRIP_CLUB_ENUM) i
|
|
g_savedGlobals.sStripClubData[j].stripClub[i].iReputation = 50
|
|
ENDREPEAT
|
|
|
|
// initialise stripper like
|
|
REPEAT COUNT_OF(BOOTY_CALL_CONTACT_ENUM) i
|
|
g_savedGlobals.sStripClubData[j].bootyCall[i].iLike = GET_STRIPPER_INITIAL_LIKE_FOR_PLAYER(INT_TO_ENUM(STRIP_CLUB_PLAYER_CHAR_ENUM, j), INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, i))
|
|
g_savedGlobals.sStripClubData[j].bootyCall[i].bActivated = FALSE
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
FUNC BOOL DID_BOOTYCALL_WITNESS_PLAYER_STEALING_CAR(PED_INDEX bootyCallPed)
|
|
IF NOT IS_ENTITY_DEAD(bootyCallPed)
|
|
|
|
IF IS_SHOCKING_EVENT_IN_SPHERE( EVENT_SHOCKING_SEEN_CAR_STOLEN, GET_ENTITY_COORDS(PLAYER_PED_ID()) ,10.0)
|
|
AND HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(bootyCallPed,PLAYER_PED_ID())
|
|
//CDEBUG1LN(DEBUG_BOOTY_CALL,"DID_BOOTYCALL_WITNESS_PLAYER_STEALING_CAR - Booty call witnessed player stealing new car")
|
|
RETURN TRUE
|
|
// ELSE
|
|
// CDEBUG1LN(DEBUG_BOOTY_CALL,"DID_BOOTYCALL_WITNESS_PLAYER_STEALING_CAR - Waiting....")
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
FUNC BOOL DID_PLAYERS_VEHICLE_TAKE_DAMAGE_WHILE_DRIVING(PED_INDEX bootyCallPed, INT& iVehicleHealth)
|
|
VEHICLE_INDEX vehPlayers = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
|
|
IF IS_VEHICLE_DRIVEABLE(vehPlayers)
|
|
IF IS_PED_SITTING_IN_VEHICLE(bootyCallPed,vehPlayers )
|
|
|
|
IF HAS_ENTITY_COLLIDED_WITH_ANYTHING(vehPlayers)
|
|
INT iCurrentVehicleHealth = GET_ENTITY_HEALTH(vehPlayers)
|
|
INT iSizeOfImpact = iVehicleHealth - iCurrentVehicleHealth
|
|
iVehicleHealth = iCurrentVehicleHealth
|
|
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(vehPlayers)
|
|
|
|
IF iSizeOfImpact > 10
|
|
CDEBUG1LN(DEBUG_BOOTY_CALL,"DID_PLAYERS_VEHICLE_TAKE_DAMAGE_WHILE_DRIVING - Car got hit!")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DID_PLAYER_HIT_PED_IN_WHILE_DRIVING()
|
|
VEHICLE_INDEX vehPlayers = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
|
|
//Hit Peds
|
|
IF IS_VEHICLE_DRIVEABLE(vehPlayers)
|
|
IF GET_PED_IN_VEHICLE_SEAT(vehPlayers,VS_DRIVER) = PLAYER_PED_ID()
|
|
IF HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED(PLAYER_ID())
|
|
CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_PED(PLAYER_ID())
|
|
CDEBUG1LN(DEBUG_BOOTY_CALL,"DID_PLAYER_HIT_PED_IN_WHILE_DRIVING - Somebody got hit!")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
// debug: create widgets for strip club/booty calls
|
|
PROC CREATE_STRIP_CLUB_WIDGETS(WIDGET_GROUP_ID scWidgetGroup)
|
|
INT i, j, k
|
|
|
|
// placate the unreferenced variable spirits
|
|
scWidgetGroup = scWidgetGroup
|
|
|
|
scWidgetGroup = START_WIDGET_GROUP("Strip Club/Booty Calls")
|
|
|
|
ADD_WIDGET_STRING("****For Camera Team****")
|
|
ADD_WIDGET_BOOL("Launch Final Scene Widget for Luke", g_bTurnOnLukeHCameraDebug)
|
|
|
|
ADD_WIDGET_STRING("Strip Club Specific")
|
|
ADD_WIDGET_BOOL("Disable Strip Club",g_bDisableStripClubs)
|
|
ADD_WIDGET_BOOL("Update Strip Club Info", g_bDebugRefreshOnce)
|
|
ADD_WIDGET_BOOL("Show stripper stand points", g_bDebugDisplayStripperPoints)
|
|
|
|
ADD_WIDGET_STRING("Booty Call Specific")
|
|
ADD_WIDGET_INT_READ_ONLY("Next call player time", g_bootyCallData.iNextCallPlayerTime)
|
|
ADD_WIDGET_BOOL("Force bootycall accept", g_bDebugForceBootyCall)
|
|
ADD_WIDGET_BOOL("Force bootycall decline", g_bDebugForceBootyCallDecline)
|
|
ADD_WIDGET_BOOL("Advance next booty call time", g_bDebugAdvanceBootyCallTimes)
|
|
ADD_WIDGET_BOOL("Max out like", g_bDebugMaxOutLike)
|
|
|
|
START_WIDGET_GROUP("Add Booty Call Contacts:")
|
|
ADD_WIDGET_BOOL("Juliet", g_bDebugAddContact[BC_STRIPPER_JULIET])
|
|
ADD_WIDGET_INT_READ_ONLY("Like",g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[BC_STRIPPER_JULIET].iLike)
|
|
|
|
ADD_WIDGET_BOOL("Nikki", g_bDebugAddContact[BC_STRIPPER_NIKKI])
|
|
ADD_WIDGET_INT_READ_ONLY("Like",g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[BC_STRIPPER_NIKKI].iLike)
|
|
|
|
ADD_WIDGET_BOOL("Sapphire", g_bDebugAddContact[BC_STRIPPER_SAPPHIRE])
|
|
ADD_WIDGET_INT_READ_ONLY("Like",g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[BC_STRIPPER_SAPPHIRE].iLike)
|
|
|
|
ADD_WIDGET_BOOL("Infernus", g_bDebugAddContact[BC_STRIPPER_INFERNUS])
|
|
ADD_WIDGET_INT_READ_ONLY("Like",g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[BC_STRIPPER_INFERNUS].iLike)
|
|
|
|
ADD_WIDGET_BOOL("Liz", g_bDebugAddContact[BC_TAXI_LIZ])
|
|
ADD_WIDGET_INT_READ_ONLY("Like",g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[BC_TAXI_LIZ].iLike)
|
|
|
|
ADD_WIDGET_BOOL("Hitcher", g_bDebugAddContact[BC_HITCHER_GIRL])
|
|
ADD_WIDGET_INT_READ_ONLY("Like",g_savedGlobals.sStripClubData[GET_STRIP_CLUB_PLAYER_PED_ENUM()].bootyCall[BC_HITCHER_GIRL].iLike)
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
REPEAT COUNT_OF(STRIP_CLUB_PLAYER_CHAR_ENUM) k
|
|
SWITCH k
|
|
CASE 0
|
|
START_WIDGET_GROUP("Michael")
|
|
BREAK
|
|
CASE 1
|
|
START_WIDGET_GROUP("Franklin")
|
|
BREAK
|
|
CASE 2
|
|
START_WIDGET_GROUP("Trevor")
|
|
BREAK
|
|
CASE 3
|
|
START_WIDGET_GROUP("Multi 0")
|
|
BREAK
|
|
CASE 4
|
|
START_WIDGET_GROUP("Multi 1")
|
|
BREAK
|
|
CASE 5
|
|
START_WIDGET_GROUP("Multi 2")
|
|
BREAK
|
|
CASE 6
|
|
START_WIDGET_GROUP("Multi 3")
|
|
BREAK
|
|
CASE 7
|
|
START_WIDGET_GROUP("Multi 4")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
REPEAT COUNT_OF(STRIP_CLUB_ENUM) i
|
|
SWITCH i
|
|
CASE 0
|
|
ADD_WIDGET_STRING("VANILLA UNICORN")
|
|
BREAK
|
|
/*
|
|
CASE 1
|
|
ADD_WIDGET_STRING("MEDIUM")
|
|
BREAK
|
|
CASE 2
|
|
ADD_WIDGET_STRING("HIGH")
|
|
BREAK
|
|
*/
|
|
ENDSWITCH
|
|
|
|
ADD_WIDGET_INT_SLIDER("Reputation", g_savedGlobals.sStripClubData[k].stripClub[i].iReputation, 0, 100, 1)
|
|
ENDREPEAT
|
|
|
|
ADD_WIDGET_STRING("")
|
|
|
|
REPEAT COUNT_OF(BOOTY_CALL_CONTACT_ENUM) j
|
|
BOOTY_CALL_CONTACT_ENUM thisStripper = INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, j)
|
|
g_bDebugSetAsBootyCall[ENUM_TO_INT(thisStripper)][k] = g_savedGlobals.sStripClubData[k].bootyCall[thisStripper].bActivated
|
|
ADD_WIDGET_STRING(GET_BOOTY_CALL_NAME_AS_STRING(thisStripper))
|
|
ADD_WIDGET_INT_SLIDER("Like", g_savedGlobals.sStripClubData[k].bootyCall[thisStripper].iLike, 0, STRIPPER_MAX_LIKE, 1)
|
|
ADD_WIDGET_BOOL("Active as Booty Call?", g_bDebugSetAsBootyCall[ENUM_TO_INT(thisStripper)][k])
|
|
ENDREPEAT
|
|
|
|
|
|
STOP_WIDGET_GROUP()
|
|
ENDREPEAT
|
|
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
// debug: delete widgets for booty call
|
|
PROC DELETE_STRIP_CLUB_WIDGETS(WIDGET_GROUP_ID scWidgetGroup)
|
|
IF DOES_WIDGET_GROUP_EXIST(scWidgetGroup)
|
|
DELETE_WIDGET_GROUP(scWidgetGroup)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// debug: monitor debug activation of booty call pool
|
|
PROC MONITOR_BOOTY_CALL_DEBUG_ACTIVATION()
|
|
INT i, j
|
|
|
|
IF g_bDebugRefreshOnce
|
|
REPEAT COUNT_OF(BOOTY_CALL_CONTACT_ENUM) i
|
|
REPEAT COUNT_OF(STRIP_CLUB_PLAYER_CHAR_ENUM) j
|
|
IF g_bDebugSetAsBootyCall[i][j]
|
|
// if ticked
|
|
IF NOT IS_BOOTY_CALL_ID_ACTIVATED(INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, i), INT_TO_ENUM(STRIP_CLUB_PLAYER_CHAR_ENUM, j))
|
|
SET_BOOTY_CALL_ID_ACTIVATED(INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, i), TRUE, INT_TO_ENUM(STRIP_CLUB_PLAYER_CHAR_ENUM, j))
|
|
ENDIF
|
|
ELSE
|
|
|
|
// if unticked
|
|
IF IS_BOOTY_CALL_ID_ACTIVATED(INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, i), INT_TO_ENUM(STRIP_CLUB_PLAYER_CHAR_ENUM, j))
|
|
SET_BOOTY_CALL_ID_ACTIVATED(INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, i), FALSE, INT_TO_ENUM(STRIP_CLUB_PLAYER_CHAR_ENUM, j))
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
//g_bDebugRefreshOnce = FALSE
|
|
ENDIF
|
|
|
|
// advance times
|
|
IF g_bDebugAdvanceBootyCallTimes
|
|
REPEAT COUNT_OF(BOOTY_CALL_CONTACT_ENUM) i
|
|
REPEAT COUNT_OF(STRIP_CLUB_PLAYER_CHAR_ENUM) j
|
|
IF g_bDebugSetAsBootyCall[i][j]
|
|
g_bootyCallData.iNextAvailableTime[i] = GET_GAME_TIMER() + 2000
|
|
g_bootyCallData.iAddNumberTime[i] = GET_GAME_TIMER() - 60*60*1000
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
g_bootyCallData.iNextCallPlayerTime = GET_GAME_TIMER() + 2000
|
|
g_bDebugAdvanceBootyCallTimes = FALSE
|
|
ENDIF
|
|
|
|
// max out like
|
|
IF g_bDebugMaxOutLike
|
|
REPEAT COUNT_OF(STRIP_CLUB_PLAYER_CHAR_ENUM) j
|
|
REPEAT COUNT_OF(STRIP_CLUB_ENUM) i
|
|
g_savedGlobals.sStripClubData[j].stripClub[i].iReputation = 100
|
|
ENDREPEAT
|
|
|
|
REPEAT COUNT_OF(BOOTY_CALL_CONTACT_ENUM) i
|
|
g_savedGlobals.sStripClubData[j].bootyCall[i].iLike = STRIPPER_MAX_LIKE
|
|
g_bDebugSetAsBootyCall[i][j] = TRUE
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
g_bDebugMaxOutLike = FALSE
|
|
ENDIF
|
|
|
|
//Add Booty Call Contacts------------------------------------------------
|
|
INT iTempIter
|
|
REPEAT COUNT_OF(BOOTY_CALL_CONTACT_ENUM) iTempIter
|
|
IF g_bDebugAddContact[iTempIter]
|
|
g_bDebugMaxOutLike = TRUE
|
|
IF NOT IS_BOOTY_CALL_ID_ACTIVATED(INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, iTempIter ))
|
|
SET_BOOTY_CALL_ID_ACTIVATED(INT_TO_ENUM(BOOTY_CALL_CONTACT_ENUM, iTempIter ), TRUE)
|
|
ENDIF
|
|
g_bDebugAddContact[iTempIter] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF g_bDebugForceSext
|
|
g_bootyCallData.iNextCallPlayerTime = GET_GAME_TIMER()
|
|
g_bootyCallData.iNextAvailableTime[BC_STRIPPER_JULIET] = GET_GAME_TIMER()
|
|
IF GET_STRIPPER_NUM_BOOTY_DENIALS_BY_PLAYER(BC_STRIPPER_JULIET) < NUM_DENIALS_TO_TRIGGER_SEXT//
|
|
SET_STRIPPER_NUM_BOOTY_DENIALS_BY_PLAYER(BC_STRIPPER_JULIET, NUM_DENIALS_TO_TRIGGER_SEXT)
|
|
ENDIF
|
|
g_bDebugForceSext = FALSE
|
|
ENDIF
|
|
|
|
|
|
//Launch Luke Camera Mode Widgets----------------------------------------------------------------------
|
|
IF g_bTurnOnLukeHCameraDebug
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("bootycall_debug_controller")) = 0
|
|
REQUEST_SCRIPT("bootycall_debug_controller")
|
|
IF HAS_SCRIPT_LOADED("bootycall_debug_controller")
|
|
START_NEW_SCRIPT("bootycall_debug_controller", DEFAULT_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED("bootycall_debug_controller")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
#ENDIF
|