#region Local Var var uLocal_0 = 0; var uLocal_1 = 0; int iLocal_2 = 0; int iLocal_3 = 0; int iLocal_4 = 0; int iLocal_5 = 0; int iLocal_6 = 0; int iLocal_7 = 0; int iLocal_8 = 0; int iLocal_9 = 0; int iLocal_10 = 0; int iLocal_11 = 0; float fLocal_12 = 0f; var uLocal_13 = 0; var uLocal_14 = 0; int iLocal_15 = 0; var uLocal_16 = 0; var uLocal_17 = 0; var uLocal_18 = 0; char* sLocal_19 = NULL; var uLocal_20 = 0; var uLocal_21 = 0; float fLocal_22 = 0f; var uLocal_23 = 0; var uLocal_24 = 0; var uLocal_25 = 0; float fLocal_26 = 0f; float fLocal_27 = 0f; var uLocal_28 = 0; var uLocal_29 = 0; var uLocal_30 = 0; float fLocal_31 = 0f; float fLocal_32 = 0f; float fLocal_33 = 0f; var uLocal_34 = 0; var uLocal_35 = 0; int iLocal_36 = 0; var uLocal_37 = 0; bool bLocal_38 = 0; bool bLocal_39 = 0; int iLocal_40 = 0; int iLocal_41 = 0; struct<8> Local_42 = { 0, 0, 0, 0, 0, 0, 0, 0 } ; var uLocal_50 = 0; var uLocal_51 = 0; var uLocal_52 = 0; var uLocal_53 = 0; var uLocal_54 = 0; struct<11> Local_55[50]; int iLocal_606 = 0; char* sLocal_607 = NULL; int iLocal_608 = 0; int* iLocal_609 = NULL; int iLocal_610 = 0; int iLocal_611 = 0; char* sLocal_612[4] = { NULL, NULL, NULL, NULL }; int iLocal_617 = 0; var uLocal_618 = 0; int iLocal_619 = 0; #endregion void __EntryFunction__()//Position - 0x0 { iLocal_2 = 1; iLocal_3 = 134; iLocal_4 = 134; iLocal_5 = 1; iLocal_6 = 1; iLocal_7 = 1; iLocal_8 = 134; iLocal_9 = 1; iLocal_10 = 12; iLocal_11 = 12; fLocal_12 = 0.001f; iLocal_15 = -1; sLocal_19 = "NULL"; fLocal_22 = 0f; fLocal_26 = -0.0375f; fLocal_27 = 0.17f; fLocal_31 = 80f; fLocal_32 = 140f; fLocal_33 = 180f; iLocal_36 = 3; bLocal_38 = true; bLocal_39 = true; iLocal_606 = 4; sLocal_607 = "id1_11_tunnel6_int"; if (PLAYER::HAS_FORCE_CLEANUP_OCCURRED(210)) { func_73(); } if (SCRIPT::GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("letterscraps")) > 1) { SCRIPT::TERMINATE_THIS_THREAD(); } func_72(12); if (func_71(106) == 1) { func_70(12); func_67(287, 0, 0); func_66(106, 1); func_65(168, 0); func_73(); } while (true) { SYSTEM::WAIT(0); func_64(PLAYER::PLAYER_PED_ID()); switch (iLocal_40) { case 0: func_21(); break; case 1: func_1(); break; } } } void func_1()//Position - 0xF8 { switch (iLocal_41) { case 0: if (SCRIPT::GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("startup_positioning")) > 0) { iLocal_41 = 2; } else if (!PED::IS_PED_INJURED(PLAYER::PLAYER_PED_ID())) { if (CAM::IS_SCREEN_FADED_IN()) { if (!func_20()) { if (((!AUDIO::IS_MOBILE_PHONE_CALL_ONGOING() && !func_14()) && !func_13()) && !func_12()) { iLocal_617 = 0; iLocal_611 = 0; sLocal_612[0] = "LETTERS_PAGE_ONE" /* GXT: March 15th, 1975~n~~n~ATTN; David Richards~n~~n~My Dear David,~n~~n~Listen, I know you're a little offended by your discovery of my 'petit indiscretion' as the French would say, but I want you to understand – that's all it is – a little indiscretion. I agree whole heartedly with you – my actions were a little inhumane. But that's not a bad thing. Inhumanity is the very watchword, the very currency, the very life blood of the artist! My inhumanity makes me human. It's thanks to my inhumanity that I'm able to speak to people with the moral authority of the sinner and the creator, all at once. I had to kill her. And I had to do it in that way. The way that would hurt me most – by torturing her slowly and painfully, then sending momentos from our date to her family. */; sLocal_612[1] = "LETTERS_PAGE_TWO" /* GXT: And in the years since, I've had to, at times, goad her family into further suffering. Just to prove how very much I understand suffering and how I can represent it best as an artist – isn't it better that one family suffers so the world can be free to enjoy, to learn and to be cleansed by my masterpieces? Don't even bother answering that. The answer is obvious and if you get it wrong, well, then you're less of a man than I thought.~n~~n~But let us not concern ourselves with such trivialities – we are artists, my friend. The last of a dying breed. I dread the day when you finally retire and Solomon takes over – sure I love the kid but he's a remorseless hack with none of your passion, your creative zeal. He's a weak livered moralizer hiding in the body of a Vinewood decadent. */; sLocal_612[2] = "LETTERS_PAGE_THREE" /* GXT: He understands nothing about why we act as we do! Not because we can, but because we must. And that's the thing. Some people take advantage of their position in this town for pleasure – as if sleeping with multiple young girls, or torturing hitchhikers or eating dogs could ever be fun? It's awful. I only do it to experience it so my art is truer, deeper, more meaningful, and I believe you know that.~n~~n~I cannot wait for you to read my new draft of LEARED. I have really removed the cliches that ruined Shakespeare's plays and found the power, the moment, the thing we talked about that wonderful night in Mexico when we paid the hookers to stab each other. */; sLocal_612[3] = "LETTERS_PAGE_FOUR" /* GXT: Anyway, I hope you and Rachel have worked through your problems. I look forward to making Friday supper again soon. You've always been an inspiration to me.~n~~n~Your dear friend~n~~n~Dreyfuss */; iLocal_610 = GRAPHICS::REQUEST_SCALEFORM_MOVIE("LETTER_SCRAPS"); while (!GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(iLocal_610)) { SYSTEM::WAIT(0); } GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD(iLocal_610, "SET_LETTER_TEXT"); func_11(sLocal_612[0]); GRAPHICS::END_SCALEFORM_MOVIE_METHOD(); GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(true); func_7(1); func_6(1, 1, 1, 0); HUD::DISPLAY_HELP_TEXT_THIS_FRAME("LETTERS_HELP2" /* GXT: Press ~INPUT_FRONTEND_RIGHT~ or ~INPUT_FRONTEND_LEFT~ to cycle between pages, or press ~INPUT_FRONTEND_CANCEL~ to stop reading. */, false); MISC::SET_GAME_PAUSED(true); HUD::DISPLAY_RADAR(false); iLocal_41 = 1; } } } } break; case 1: func_3(0); HUD::DISABLE_FRONTEND_THIS_FRAME(); GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(true); GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(1); if (iLocal_611 < 4) { if (!iLocal_617) { if (PAD::IS_CONTROL_PRESSED(2 /*FRONTEND_CONTROL*/, 190 /*INPUT_FRONTEND_RIGHT*/)) { if (iLocal_611 >= 0 && iLocal_611 < 3) { iLocal_611++; GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD(iLocal_610, "SET_LETTER_TEXT"); func_11(sLocal_612[iLocal_611]); GRAPHICS::END_SCALEFORM_MOVIE_METHOD(); } iLocal_617 = 1; } else if (PAD::IS_CONTROL_PRESSED(2 /*FRONTEND_CONTROL*/, 189 /*INPUT_FRONTEND_LEFT*/)) { if (iLocal_611 > 0 && iLocal_611 < 4) { iLocal_611 = (iLocal_611 - 1); GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD(iLocal_610, "SET_LETTER_TEXT"); func_11(sLocal_612[iLocal_611]); GRAPHICS::END_SCALEFORM_MOVIE_METHOD(); } iLocal_617 = 1; } else if (PAD::IS_CONTROL_JUST_RELEASED(2 /*FRONTEND_CONTROL*/, 202 /*INPUT_FRONTEND_CANCEL*/)) { iLocal_41 = 2; } } else if (!func_2()) { iLocal_617 = 0; } GRAPHICS::DRAW_SCALEFORM_MOVIE_FULLSCREEN(iLocal_610, 255, 255, 255, 255, 0); } else { iLocal_41 = 2; } break; case 2: HUD::DISPLAY_RADAR(true); HUD::CLEAR_HELP(true); func_6(0, 1, 1, 0); func_70(12); func_73(); break; } } int func_2()//Position - 0x304 { if ((PAD::IS_CONTROL_PRESSED(2 /*FRONTEND_CONTROL*/, 190 /*INPUT_FRONTEND_RIGHT*/) || PAD::IS_CONTROL_PRESSED(2 /*FRONTEND_CONTROL*/, 189 /*INPUT_FRONTEND_LEFT*/)) || PAD::IS_CONTROL_PRESSED(2 /*FRONTEND_CONTROL*/, 202 /*INPUT_FRONTEND_CANCEL*/)) { return 1; } return 0; } void func_3(int iParam0)//Position - 0x335 { if (func_5()) { return; } if (!Global_21066.f_1 == 1) { if (func_4(0)) { func_7(iParam0); } MISC::SET_BIT(&Global_8920, 2); } } int func_4(int iParam0)//Position - 0x368 { if (iParam0 == 1) { if (Global_21066.f_1 > 3) { if (BitTest(Global_8919, 14)) { return 1; } else { return 0; } } else { return 0; } } if (SCRIPT::GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("cellphone_flashhand")) > 0) { return 1; } if (Global_21066.f_1 > 3) { return 1; } return 0; } bool func_5()//Position - 0x3BF { return BitTest(Global_1957675, 19); } int func_6(bool bParam0, bool bParam1, int iParam2, bool bParam3)//Position - 0x3CE { int iVar0; iVar0 = 0; if (MISC::IS_PC_VERSION()) { if (CUTSCENE::IS_MULTIHEAD_FADE_UP() != bParam0 && iParam2) { CUTSCENE::SET_CUTSCENE_MULTIHEAD_FADE(bParam0, bParam1, true, bParam3); iVar0 = 1; } } return iVar0; } void func_7(int iParam0)//Position - 0x401 { if (func_5()) { return; } if (Global_21284) { if (func_10()) { func_9(1, 1); } else { func_9(0, 0); } } if (Global_21066.f_1 == 10 || Global_21066.f_1 == 9) { MISC::SET_BIT(&Global_8920, 16); } if (AUDIO::IS_MOBILE_PHONE_CALL_ONGOING()) { AUDIO::STOP_SCRIPTED_CONVERSATION(false); } Global_22425 = 5; if (iParam0 == 1) { MISC::SET_BIT(&Global_8919, 30); } else { MISC::CLEAR_BIT(&Global_8919, 30); } if (!func_8()) { Global_21066.f_1 = 3; } } int func_8()//Position - 0x48B { if (Global_21066.f_1 == 1 || Global_21066.f_1 == 0) { return 1; } return 0; } void func_9(bool bParam0, bool bParam1)//Position - 0x4B2 { if (bParam0) { if (func_4(0)) { Global_21284 = 1; if (bParam1) { MOBILE::GET_MOBILE_PHONE_POSITION(&Global_21003); } Global_20994 = { Global_21012[Global_21011 /*3*/] }; MOBILE::SET_MOBILE_PHONE_POSITION(Global_20994); } } else if (Global_21284 == 1) { Global_21284 = 0; Global_20994 = { Global_21019[Global_21011 /*3*/] }; if (bParam1) { MOBILE::SET_MOBILE_PHONE_POSITION(Global_21003); } else { MOBILE::SET_MOBILE_PHONE_POSITION(Global_20994); } } } bool func_10()//Position - 0x526 { return BitTest(Global_1957675, 5); } void func_11(char* sParam0)//Position - 0x534 { GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sParam0); GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING(); } bool func_12()//Position - 0x546 { return Global_1577877; } int func_13()//Position - 0x552 { int iVar0; int iVar1; iVar0 = 0; iVar1 = 0; while (iVar1 <= 9) { if (Global_2696309[iVar1] != 0) { Global_1577878 = iVar1; iVar0 = 1; iVar1 = 10; } iVar1++; } return iVar0; } int func_14()//Position - 0x58B { int iVar0; iVar0 = 0; iVar0 = 0; while (iVar0 < Global_112784) { if (func_15(iVar0)) { return 1; } iVar0++; } return 0; } int func_15(int iParam0)//Position - 0x5B9 { int iVar0; iVar0 = iParam0; if (!MISC::ARE_STRINGS_EQUAL(&(Global_112784[iParam0 /*28*/]), "") && !MISC::IS_STRING_NULL(&(Global_112784[iParam0 /*28*/]))) { if (BitTest(Global_112784[iParam0 /*28*/].f_27, 1)) { if (BitTest(Global_112784[iParam0 /*28*/].f_27, 2)) { return func_19(iVar0, &(Global_112784[iParam0 /*28*/]), &(Global_112784[iParam0 /*28*/].f_4), Global_112784[iParam0 /*28*/].f_20); } else { return func_18(iVar0, &(Global_112784[iParam0 /*28*/]), &(Global_112784[iParam0 /*28*/].f_4)); } } else if (BitTest(Global_112784[iParam0 /*28*/].f_27, 2)) { return func_17(iVar0, &(Global_112784[iParam0 /*28*/]), Global_112784[iParam0 /*28*/].f_20); } else { return func_16(iVar0, &(Global_112784[iParam0 /*28*/])); } } return 0; } bool func_16(int iParam0, char* sParam1)//Position - 0x68D { HUD::BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sParam1); return HUD::END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED((1 + iParam0)); } bool func_17(int iParam0, char* sParam1, int iParam2)//Position - 0x6A3 { HUD::BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sParam1); HUD::ADD_TEXT_COMPONENT_INTEGER(iParam2); return HUD::END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED((1 + iParam0)); } bool func_18(int iParam0, char* sParam1, char* sParam2)//Position - 0x6BF { HUD::BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sParam1); HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sParam2); return HUD::END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED((1 + iParam0)); } bool func_19(int iParam0, char* sParam1, char* sParam2, int iParam3)//Position - 0x6DB { HUD::BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sParam1); HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sParam2); HUD::ADD_TEXT_COMPONENT_INTEGER(iParam3); return HUD::END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED((1 + iParam0)); } int func_20()//Position - 0x6FD { if (Global_44181 == 15) { return 0; } return 1; } void func_21()//Position - 0x712 { switch (iLocal_41) { case 0: func_62(); func_61(&Local_42, 1, joaat("prop_ld_scrap"), "LETTERS_COLLECT" /* GXT: ~1~/50 letter scraps collected. */); func_59(&Local_42, joaat("NUM_HIDDEN_PACKAGES_0"), 705, 50); iLocal_41 = 1; iLocal_619 = 1; break; case 1: if (!func_58(14) && !CAM::IS_SCREEN_FADED_OUT()) { if (func_23(&Local_42, &Local_55) || uLocal_618) { iLocal_41 = 2; } if (Local_42.f_1.f_4 == Local_42.f_1.f_3) { if (func_71(106) == 0) { func_66(106, 1); func_65(168, 0); } } } break; case 2: func_66(106, 1); func_65(168, 0); func_22(1); break; } } void func_22(int iParam0)//Position - 0x7CB { iLocal_40 = iParam0; iLocal_41 = 0; } int func_23(var uParam0, int iParam1)//Position - 0x7DA { int iVar0; bool bVar1; struct<3> Var2; bool bVar5; bVar5 = (!func_20() && !func_20()); PED::IS_PED_INJURED(PLAYER::PLAYER_PED_ID()); Var2 = { ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), true) }; iVar0 = 0; while (iVar0 < 1) { bVar1 = func_57(&(uParam0->f_1), uParam0->f_10); if (!(iParam1[uParam0->f_10 /*11*/])->f_10) { if (!bVar1) { if (((((((uParam0->f_10 == 1 || uParam0->f_10 == 5) || uParam0->f_10 == 7) || uParam0->f_10 == 13) || uParam0->f_10 == 18) || uParam0->f_10 == 20) || uParam0->f_10 == 37) || uParam0->f_10 == 42) { func_55(iParam1[uParam0->f_10 /*11*/], uParam0->f_7, joaat("PICKUP_CUSTOM_SCRIPT"), 0, 1, 2); } else if (uParam0->f_10 == iLocal_606) { func_55(iParam1[uParam0->f_10 /*11*/], uParam0->f_7, joaat("PICKUP_CUSTOM_SCRIPT"), 0, 1, 2); if (OBJECT::DOES_PICKUP_EXIST((iParam1[uParam0->f_10 /*11*/])->f_1)) { INTERIOR::ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME((iParam1[uParam0->f_10 /*11*/])->f_1, sLocal_607); } } else { func_55(iParam1[uParam0->f_10 /*11*/], uParam0->f_7, joaat("PICKUP_CUSTOM_SCRIPT"), 0, 0, 2); } } } else if (!bVar1) { if (func_38(uParam0, iParam1, Var2)) { if (bVar5) { if (!func_37(33)) { func_34("LETTERS_FIRST" /* GXT: Part of a confession has been found. Collect all letter scraps to solve the mystery of Leonora Johnson's murder. */, 1, 0, -1, 10000, 7, 0, 0, 0); func_33(33); } } } } uParam0->f_10++; if (uParam0->f_10 >= *iParam1) { uParam0->f_10 = 0; } iVar0++; } if (uParam0->f_11) { if (!Global_79800) { func_24(&(uParam0->f_11), &(uParam0->f_12), &(uParam0->f_9), 1, &iLocal_608, &iLocal_609, "LETTERS_TITLE" /* GXT: Scrap Collected~s~ */, "LETTERS_COLLECT" /* GXT: ~1~/50 letter scraps collected. */); } } if (!uParam0->f_12 && !uParam0->f_11) { return uParam0->f_1.f_4 >= uParam0->f_1.f_3; } return 0; } void func_24(var uParam0, var uParam1, var uParam2, int iParam3, int iParam4, int* iParam5, char* sParam6, char* sParam7)//Position - 0x9C2 { int iVar0; func_32(0); if (*uParam0) { switch (*iParam4) { case 0: *iParam5 = GRAPHICS::REQUEST_SCALEFORM_MOVIE("MIDSIZED_MESSAGE"); if (GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(*iParam5)) { iVar0 = AUDIO::GET_SOUND_ID(); if (iParam3 == 6) { AUDIO::PLAY_SOUND_FRONTEND(iVar0, "PEYOTE_COMPLETED", "HUD_AWARDS", true); } else { AUDIO::PLAY_SOUND_FRONTEND(iVar0, "COLLECTED", "HUD_AWARDS", true); } *iParam4++; } break; case 1: GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD(*iParam5, "SHOW_SHARD_MIDSIZED_MESSAGE"); GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sParam6); GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING(); GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sParam7); HUD::ADD_TEXT_COMPONENT_INTEGER(func_26(iParam3)); GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING(); GRAPHICS::END_SCALEFORM_MOVIE_METHOD(); *uParam2 = MISC::GET_GAME_TIMER(); *iParam4++; break; case 2: if ((MISC::GET_GAME_TIMER() - *uParam2) > 7000) { GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD(*iParam5, "SHARD_ANIM_OUT"); GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1); GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.33f); GRAPHICS::END_SCALEFORM_MOVIE_METHOD(); *iParam4++; } else if (!func_25()) { if (GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(*iParam5)) { func_32(1); GRAPHICS::DRAW_SCALEFORM_MOVIE_FULLSCREEN(*iParam5, 100, 100, 100, 255, 0); } } break; case 3: if ((MISC::GET_GAME_TIMER() - *uParam2) > 7500) { *iParam4++; } else if (!func_25()) { if (GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(*iParam5)) { func_32(1); GRAPHICS::DRAW_SCALEFORM_MOVIE_FULLSCREEN(*iParam5, 100, 100, 100, 255, 0); } } break; case 4: if (GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(*iParam5)) { GRAPHICS::SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(iParam5); } func_32(0); *uParam1 = 0; *uParam0 = 0; *iParam4 = 0; break; } } } int func_25()//Position - 0xB46 { if (Global_79800) { return 1; } else if (Global_64302 && !Global_64308) { return 1; } return 0; } int func_26(int iParam0)//Position - 0xB70 { int iVar0; int iVar1; int iVar2; iVar0 = 0; iVar1 = 0; if (iParam0 == 2) { iVar1 = 0; while (iVar1 < func_31(iParam0)) { if (BitTest(Global_114135.f_10053.f_108, func_30(func_31(iParam0), iVar1))) { iVar0++; } iVar1++; } } else if (iParam0 == 6) { STATS::STAT_GET_INT(joaat("NUM_HIDDEN_PACKAGES_5"), &iVar0, -1); } else if (iParam0 == 7) { STATS::STAT_GET_INT(joaat("NUM_HIDDEN_PACKAGES_7"), &iVar0, -1); } else if (iParam0 == 8) { STATS::STAT_GET_INT(joaat("NUM_HIDDEN_PACKAGES_6"), &iVar0, -1); } else { iVar1 = 0; while (iVar1 < func_31(iParam0)) { iVar2 = (func_29(iParam0) + iVar1); if (func_27(iVar2, -1)) { iVar0++; } iVar1++; } } return iVar0; } bool func_27(int iParam0, int iParam1)//Position - 0xC34 { if (iParam1 == -1) { iParam1 = func_28(); } return STATS::GET_PACKED_STAT_BOOL_CODE(iParam0, iParam1); } int func_28()//Position - 0xC50 { return Global_1574926; } int func_29(int iParam0)//Position - 0xC5C { if (iParam0 == 3) { return 815; } if (iParam0 == 5) { return 845; } if (iParam0 == 1) { return 705; } if (iParam0 == 0) { return 755; } return 805; } int func_30(int iParam0, int iParam1)//Position - 0xCA3 { if (iParam1 < 32) { return iParam1; } return (iParam0 - iParam1); } int func_31(int iParam0)//Position - 0xCBF { if (iParam0 == 3) { return 30; } if (iParam0 == 1) { return 50; } if (iParam0 == 0) { return 50; } if (iParam0 == 4) { return 10; } if (iParam0 == 5) { return 30; } return 15; } void func_32(int iParam0)//Position - 0xD0F { if (Global_79807 != iParam0) { Global_79807 = iParam0; } } void func_33(int iParam0)//Position - 0xD29 { int iVar0; int iVar1; iVar0 = iParam0; iVar1 = 0; while (iVar0 > 31) { iVar0 = (iVar0 - 32); iVar1++; } if (iVar1 < 3) { MISC::SET_BIT(&(Global_114135.f_20414.f_150[iVar1]), iVar0); } } void func_34(char* sParam0, int iParam1, int iParam2, int iParam3, int iParam4, int iParam5, int iParam6, int iParam7, int iParam8)//Position - 0xD6B { func_35(sParam0, "", iParam1, iParam2, iParam3, iParam4, iParam5, iParam6, iParam7, iParam8); } void func_35(char* sParam0, char* sParam1, var uParam2, int iParam3, int iParam4, int iParam5, int iParam6, int iParam7, int iParam8, var uParam9)//Position - 0xD8C { int iVar0; if (MISC::ARE_STRINGS_EQUAL(sParam0, "")) { return; } if (iParam3 < 0) { return; } if (iParam5 < 500 && iParam5 != -1) { return; } if (iParam4 < 0 && iParam4 != -1) { return; } if (iParam6 < 1 || iParam6 > 7) { return; } if (iParam7 == 235) { return; } if (iParam8 == 235) { return; } iVar0 = 0; while (iVar0 < Global_114135.f_20414.f_145) { if (MISC::ARE_STRINGS_EQUAL(&(Global_114135.f_20414[iVar0 /*16*/]), sParam0)) { return; } iVar0++; } if (Global_114135.f_20414.f_145 < 9) { StringCopy(&(Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/]), sParam0, 16); StringCopy(&(Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_4), sParam1, 16); Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_8 = (MISC::GET_GAME_TIMER() + iParam3); Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_9 = iParam5; Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_11 = iParam6; Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_12 = uParam2; Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_13 = iParam7; Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_14 = iParam8; Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_15 = uParam9; if (iParam4 != -1) { Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_10 = ((MISC::GET_GAME_TIMER() + iParam3) + iParam4); } else { Global_114135.f_20414[Global_114135.f_20414.f_145 /*16*/].f_10 = -1; } Global_114135.f_20414.f_145++; func_36(); } } void func_36()//Position - 0xF5F { int iVar0; iVar0 = 0; while (iVar0 < 3) { Global_114135.f_20414.f_146[iVar0] = 0; iVar0++; } iVar0 = 0; while (iVar0 < Global_114135.f_20414.f_145) { if (BitTest(Global_114135.f_20414[iVar0 /*16*/].f_11, 0)) { if (Global_114135.f_20414[iVar0 /*16*/].f_12 > Global_114135.f_20414.f_146[0]) { Global_114135.f_20414.f_146[0] = Global_114135.f_20414[iVar0 /*16*/].f_12; } } if (BitTest(Global_114135.f_20414[iVar0 /*16*/].f_11, 1)) { if (Global_114135.f_20414[iVar0 /*16*/].f_12 > Global_114135.f_20414.f_146[1]) { Global_114135.f_20414.f_146[1] = Global_114135.f_20414[iVar0 /*16*/].f_12; } } if (BitTest(Global_114135.f_20414[iVar0 /*16*/].f_11, 2)) { if (Global_114135.f_20414[iVar0 /*16*/].f_12 > Global_114135.f_20414.f_146[2]) { Global_114135.f_20414.f_146[2] = Global_114135.f_20414[iVar0 /*16*/].f_12; } } iVar0++; } } int func_37(int iParam0)//Position - 0x1076 { int iVar0; int iVar1; iVar0 = iParam0; iVar1 = 0; while (iVar0 > 31) { iVar0 = (iVar0 - 32); iVar1++; } if (iVar1 < 3) { return BitTest(Global_114135.f_20414.f_150[iVar1], iVar0); } return 0; } int func_38(var uParam0, var uParam1, struct<3> Param2)//Position - 0x10B6 { int iVar0; iVar0 = uParam0->f_10; if ((uParam1[iVar0 /*11*/])->f_10) { if ((uParam1[iVar0 /*11*/])->f_1 != 0) { if (OBJECT::HAS_PICKUP_BEEN_COLLECTED((uParam1[iVar0 /*11*/])->f_1) || func_53((uParam1[iVar0 /*11*/])->f_1)) { func_40(uParam0, uParam1, iVar0); return 1; } } } if (OBJECT::DOES_PICKUP_EXIST((uParam1[iVar0 /*11*/])->f_1)) { if ((SYSTEM::VDIST2(Param2, OBJECT::GET_PICKUP_COORDS((uParam1[iVar0 /*11*/])->f_1)) > (60f * 60f) || func_58(13)) || func_58(14)) { func_39(&((uParam1[iVar0 /*11*/])->f_1)); (uParam1[iVar0 /*11*/])->f_1 = 0; (uParam1[iVar0 /*11*/])->f_10 = 0; } } return 0; } void func_39(var uParam0)//Position - 0x1173 { if (OBJECT::DOES_PICKUP_EXIST(*uParam0)) { OBJECT::REMOVE_PICKUP(*uParam0); } } void func_40(var uParam0, var uParam1, int iParam2)//Position - 0x118C { int iVar0; iVar0 = (func_29(*uParam0) + iParam2); func_39(&((uParam1[iParam2 /*11*/])->f_1)); func_52(&((uParam1[iParam2 /*11*/])->f_2)); (uParam1[iParam2 /*11*/])->f_1 = 0; (uParam1[iParam2 /*11*/])->f_10 = 0; func_51(&(uParam0->f_1), iParam2, 1); if (*uParam0 == 1 || *uParam0 == 0) { func_50(*uParam0, iParam2, 1); } PAD::SET_CONTROL_SHAKE(0 /*PLAYER_CONTROL*/, 200, 250); STATS::STAT_INCREMENT(uParam0->f_6, 1f); if (bLocal_39) { func_49(&(uParam0->f_1), iParam2); } else { func_47(&(uParam0->f_1)); } func_44(); STATS::PLAYSTATS_ACQUIRED_HIDDEN_PACKAGE(iVar0); func_43(1, 0); func_41(); uParam0->f_11 = 1; } int func_41()//Position - 0x1237 { if (func_42(0)) { return 0; } if (Global_101727.f_8) { if (Global_101727.f_10 > 0) { return 0; } } else if (Global_101727.f_10 > 1) { return 0; } Global_101727.f_10++; return 1; } int func_42(bool bParam0)//Position - 0x1282 { if (!bParam0 && SCRIPT::GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("benchmark")) > 0) { return 1; } return BitTest(Global_79788, 0); } void func_43(int iParam0, int iParam1)//Position - 0x12AA { Global_101727.f_7 = iParam0; Global_101727.f_8 = iParam1; } void func_44()//Position - 0x12C2 { int iVar0; int iVar1; int iVar2; int iVar3; iVar3 = 0; STATS::STAT_GET_INT(func_46(0), &iVar0, -1); iVar1 = (iVar1 + iVar0); if (iVar0 > 0) { func_45(18, iVar0); } STATS::STAT_GET_INT(func_46(1), &iVar0, -1); iVar1 = (iVar1 + iVar0); if (iVar0 > 0) { func_45(19, iVar0); } STATS::STAT_GET_INT(func_46(3), &iVar0, -1); iVar1 = (iVar1 + iVar0); if (iVar0 > 0) { func_45(20, iVar0); } iVar2 = ((func_31(0) + func_31(1)) + func_31(3)); if (iVar2 > 0) { iVar3 = (iVar1 * 100 / iVar2); } STATS::STAT_SET_INT(joaat("PERCENT_HIDDEN_PACKAGES"), iVar3, true); } int func_45(int iParam0, int iParam1)//Position - 0x1365 { int iVar0; if (iParam0 < 0) { return 0; } if (iParam0 > 78) { return 0; } if (iParam1 <= 0 || iParam1 > 100) { return 0; } iVar0 = PLAYER::GET_ACHIEVEMENT_PROGRESS(iParam0); if (iParam1 > iVar0) { return PLAYER::SET_ACHIEVEMENT_PROGRESS(iParam0, iParam1); } return 0; } int func_46(int iParam0)//Position - 0x13B6 { if (iParam0 == 3) { return joaat("NUM_HIDDEN_PACKAGES_3"); } if (iParam0 == 1) { return joaat("NUM_HIDDEN_PACKAGES_0"); } if (iParam0 == 0) { return joaat("NUM_HIDDEN_PACKAGES_1"); } if (iParam0 == 5) { return joaat("NUM_HIDDEN_PACKAGES_4"); } return joaat("NUM_HIDDEN_PACKAGES_2"); } void func_47(var uParam0)//Position - 0x1407 { int iVar0; int iVar1; iVar1 = 0; if (uParam0->f_3 <= 0) { } if (uParam0->f_2 <= 0) { } if (bLocal_38) { } iVar0 = 0; while (iVar0 < uParam0->f_3) { if (func_57(uParam0, iVar0)) { iVar1++; func_48((uParam0->f_2 + iVar0), 1, -1); if (bLocal_38) { } } iVar0++; } uParam0->f_4 = iVar1; if (bLocal_38) { } if (iVar1 == uParam0->f_3 && uParam0->f_2 == 705) { func_65(168, 0); } } void func_48(int iParam0, bool bParam1, int iParam2)//Position - 0x1488 { if (iParam2 == -1) { iParam2 = func_28(); } STATS::SET_PACKED_STAT_BOOL_CODE(iParam0, bParam1, iParam2); } void func_49(var uParam0, int iParam1)//Position - 0x14A6 { if (uParam0->f_3 <= 0) { } if (uParam0->f_2 <= 0) { } if (bLocal_38) { } if (iParam1 >= uParam0->f_3) { } if (func_57(uParam0, iParam1)) { uParam0->f_4++; func_48((uParam0->f_2 + iParam1), 1, -1); if (bLocal_38) { } } if (bLocal_38) { } if (uParam0->f_4 == uParam0->f_3 && uParam0->f_2 == 705) { func_65(168, 0); } } void func_50(int iParam0, int iParam1, bool bParam2)//Position - 0x1518 { if (iParam1 < 0 || iParam1 >= 64) { return; } if (iParam0 == 1) { if (iParam1 <= 31) { if (bParam2) { MISC::SET_BIT(&(Global_114135.f_10053.f_122), iParam1); } else { MISC::CLEAR_BIT(&(Global_114135.f_10053.f_122), iParam1); } return; } if (bParam2) { MISC::SET_BIT(&(Global_114135.f_10053.f_122.f_1), (iParam1 - 32)); } else { MISC::CLEAR_BIT(&(Global_114135.f_10053.f_122.f_1), (iParam1 - 32)); } } else if (iParam0 == 0) { if (iParam1 <= 31) { if (bParam2) { MISC::SET_BIT(&(Global_114135.f_10053.f_125), iParam1); } else { MISC::CLEAR_BIT(&(Global_114135.f_10053.f_125), iParam1); } return; } if (bParam2) { MISC::SET_BIT(&(Global_114135.f_10053.f_125.f_1), (iParam1 - 32)); } else { MISC::CLEAR_BIT(&(Global_114135.f_10053.f_125.f_1), (iParam1 - 32)); } } } void func_51(int* iParam0, int iParam1, bool bParam2)//Position - 0x1604 { if (iParam1 < 0 || iParam1 >= 64) { return; } if (iParam1 <= 31) { if (bParam2) { MISC::SET_BIT(iParam0, iParam1); } else { MISC::CLEAR_BIT(iParam0, iParam1); } return; } if (bParam2) { MISC::SET_BIT(&(iParam0->f_1), (iParam1 - 32)); } else { MISC::CLEAR_BIT(&(iParam0->f_1), (iParam1 - 32)); } } void func_52(int* iParam0)//Position - 0x1665 { if (HUD::DOES_BLIP_EXIST(*iParam0)) { HUD::SET_BLIP_ROUTE(*iParam0, false); HUD::REMOVE_BLIP(iParam0); } } int func_53(int iParam0)//Position - 0x1685 { int iVar0; int iVar1; if (!OBJECT::DOES_PICKUP_EXIST(iParam0)) { return 0; } if (func_54(PLAYER::PLAYER_PED_ID())) { if (PED::IS_PED_IN_ANY_VEHICLE(PLAYER::PLAYER_PED_ID(), false)) { iVar0 = PED::GET_VEHICLE_PED_IS_IN(PLAYER::PLAYER_PED_ID(), false); iVar1 = ENTITY::GET_ENTITY_MODEL(iVar0); if (iVar1 == joaat("submersible") || iVar1 == joaat("submersible2")) { if (SYSTEM::VDIST2(ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), true), OBJECT::GET_PICKUP_COORDS(iParam0)) < (5f * 5f) || ENTITY::IS_ENTITY_TOUCHING_ENTITY(PLAYER::PLAYER_PED_ID(), OBJECT::GET_PICKUP_OBJECT(iParam0))) { return 1; } } } } return 0; } int func_54(int iParam0)//Position - 0x1711 { if (ENTITY::DOES_ENTITY_EXIST(iParam0)) { if (!ENTITY::IS_ENTITY_DEAD(iParam0, false)) { return 1; } } return 0; } void func_55(var uParam0, int iParam1, int iParam2, bool bParam3, bool bParam4, int iParam5)//Position - 0x1732 { int iVar0; if (!uParam0->f_10) { if (!PED::IS_PED_INJURED(PLAYER::PLAYER_PED_ID())) { if (!func_58(13) && !func_58(14)) { if (!OBJECT::DOES_PICKUP_EXIST(uParam0->f_1)) { if (SYSTEM::VDIST2(ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), true), uParam0->f_3) <= (50f * 50f)) { STREAMING::REQUEST_MODEL(iParam1); while (!STREAMING::HAS_MODEL_LOADED(iParam1)) { STREAMING::REQUEST_MODEL(iParam1); SYSTEM::WAIT(0); } if (bParam3) { func_56(uParam0->f_3); } MISC::CLEAR_AREA(uParam0->f_3, 2.5f, false, false, false, false); if (bParam4) { MISC::SET_BIT(&iVar0, 1); uParam0->f_1 = OBJECT::CREATE_PICKUP_ROTATE(joaat("PICKUP_CUSTOM_SCRIPT"), uParam0->f_3, uParam0->f_6, iVar0, -1, iParam5, true, iParam1); } else { MISC::SET_BIT(&iVar0, 3); MISC::SET_BIT(&iVar0, 4); MISC::SET_BIT(&iVar0, 8); MISC::SET_BIT(&iVar0, 1); uParam0->f_1 = OBJECT::CREATE_PICKUP(iParam2, uParam0->f_3, iVar0, -1, true, iParam1); } STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(iParam1); } } } if (OBJECT::DOES_PICKUP_EXIST(uParam0->f_1)) { uParam0->f_10 = 1; } } } } void func_56(struct<3> Param0)//Position - 0x184B { int iVar0; iVar0 = INTERIOR::GET_INTERIOR_AT_COORDS(Param0); if (INTERIOR::IS_VALID_INTERIOR(iVar0)) { INTERIOR::PIN_INTERIOR_IN_MEMORY(iVar0); while (!INTERIOR::IS_INTERIOR_READY(iVar0)) { SYSTEM::WAIT(0); } SYSTEM::WAIT(0); INTERIOR::UNPIN_INTERIOR(iVar0); } } int func_57(var uParam0, int iParam1)//Position - 0x1889 { if (iParam1 < 0 || iParam1 >= 64) { return 0; } if (iParam1 <= 31) { return BitTest(*uParam0, iParam1); } return BitTest(uParam0->f_1, (iParam1 - 32)); } bool func_58(int iParam0)//Position - 0x18C1 { return Global_44181 == iParam0; } void func_59(var uParam0, int iParam1, int iParam2, int iParam3)//Position - 0x18CF { uParam0->f_6 = iParam1; func_60(&(uParam0->f_1), iParam2, iParam3); } void func_60(int* iParam0, var uParam1, var uParam2)//Position - 0x18E9 { int iVar0; int iVar1; iVar1 = 0; *iParam0 = 0; iParam0->f_1 = 0; iParam0->f_2 = uParam1; iParam0->f_3 = uParam2; if (bLocal_38) { } iVar0 = 0; while (iVar0 < iParam0->f_3) { if (func_27((iParam0->f_2 + iVar0), -1)) { iVar1++; func_51(iParam0, iVar0, 1); if (bLocal_38) { } } iVar0++; } iParam0->f_4 = iVar1; if (bLocal_38) { } } void func_61(var uParam0, int iParam1, int iParam2, char* sParam3)//Position - 0x1951 { *uParam0 = iParam1; uParam0->f_7 = iParam2; uParam0->f_8 = sParam3; uParam0->f_10 = 0; } void func_62()//Position - 0x196F { int iVar0; Global_114135.f_10053.f_122.f_2 = 1; iVar0 = 0; while (iVar0 < 50) { Local_55[iVar0 /*11*/].f_3 = { func_63(iVar0, 0) }; Local_55[iVar0 /*11*/].f_10 = 0; iVar0++; } iLocal_608 = 0; Local_55[0 /*11*/].f_9 = 179.4746f; Local_55[1 /*11*/].f_6 = { 0f, 0f, 198f }; Local_55[2 /*11*/].f_9 = 104f; Local_55[3 /*11*/].f_9 = 321.5f; Local_55[4 /*11*/].f_6 = { 0f, 0f, 49f }; Local_55[5 /*11*/].f_6 = { 0f, 0f, 286.5f }; Local_55[6 /*11*/].f_9 = 278.0092f; Local_55[7 /*11*/].f_6 = { 5.3f, -1801.4f, 15.57f }; Local_55[8 /*11*/].f_9 = 80.5f; Local_55[9 /*11*/].f_9 = 116f; Local_55[10 /*11*/].f_9 = 15f; Local_55[11 /*11*/].f_9 = 305.5f; Local_55[12 /*11*/].f_9 = 0f; Local_55[13 /*11*/].f_9 = 95f; Local_55[13 /*11*/].f_6 = { -0.91f, -0.03f, -0.81f }; Local_55[14 /*11*/].f_9 = 40f; Local_55[15 /*11*/].f_9 = 40f; Local_55[16 /*11*/].f_9 = 40f; Local_55[17 /*11*/].f_9 = 90f; Local_55[17 /*11*/].f_6 = { -0.55f, 0f, 0.78f }; Local_55[18 /*11*/].f_6 = { 0f, 0f, 0f }; Local_55[19 /*11*/].f_9 = 40f; Local_55[20 /*11*/].f_6 = { 0f, 2f, 15f }; Local_55[21 /*11*/].f_9 = 40f; Local_55[22 /*11*/].f_9 = 40f; Local_55[23 /*11*/].f_9 = 40f; Local_55[24 /*11*/].f_9 = 40f; Local_55[25 /*11*/].f_9 = 40f; Local_55[26 /*11*/].f_9 = 40f; Local_55[26 /*11*/].f_6 = { -6f, 10f, 0f }; Local_55[27 /*11*/].f_9 = 40f; Local_55[27 /*11*/].f_6 = { -4.66f, 8.7f, 67.03f }; Local_55[28 /*11*/].f_9 = 40f; Local_55[28 /*11*/].f_6 = { 1.54f, -8.31f, -19.94f }; Local_55[29 /*11*/].f_9 = 40f; Local_55[30 /*11*/].f_9 = 40f; Local_55[30 /*11*/].f_6 = { 27.21f, -3.11f, -2.09f }; Local_55[31 /*11*/].f_9 = 40f; Local_55[32 /*11*/].f_9 = 40f; Local_55[33 /*11*/].f_9 = 40f; Local_55[33 /*11*/].f_6 = { -9.89f, 0.3f, -0.01f }; Local_55[34 /*11*/].f_9 = 40f; Local_55[35 /*11*/].f_9 = 40f; Local_55[36 /*11*/].f_9 = 40f; Local_55[36 /*11*/].f_6 = { 6.5f, -4.41f, -0.62f }; Local_55[37 /*11*/].f_6 = { -9f, 5.3f, -2f }; Local_55[38 /*11*/].f_9 = 40f; Local_55[38 /*11*/].f_6 = { -13.32f, -0.57f, -0.15f }; Local_55[39 /*11*/].f_9 = 40f; Local_55[39 /*11*/].f_6 = { 4.71f, -21.26f, -0.06f }; Local_55[40 /*11*/].f_9 = 40f; Local_55[41 /*11*/].f_9 = 80f; Local_55[42 /*11*/].f_6 = { -2f, 9f, 1f }; Local_55[43 /*11*/].f_9 = 198f; Local_55[44 /*11*/].f_9 = 198f; Local_55[44 /*11*/].f_6 = { 0f, -20f, 0f }; Local_55[45 /*11*/].f_9 = 198f; Local_55[46 /*11*/].f_9 = 198f; Local_55[47 /*11*/].f_9 = 198f; Local_55[48 /*11*/].f_9 = 198f; Local_55[49 /*11*/].f_9 = 198f; } Vector3 func_63(int iParam0, int iParam1)//Position - 0x1D65 { switch (iParam0) { case 0: if (iParam1 == 1) { return 1034.2743f, -3026.2754f, 4.90197f; } else { return 1026.7053f, -3026.0515f, 13.3323f; } break; case 1: if (iParam1 == 1) { return -1040.9789f, -2743.5093f, 12.94983f; } else { return -1048.6035f, -2734.218f, 12.8895f; } break; case 2: if (iParam1 == 1) { return -93.9012f, -2711.3145f, 5.01752f; } else { return -81.1199f, -2726.5112f, 7.74f; } break; case 3: return -917.6909f, -2527.3843f, 22.3218f; break; case 4: if (iParam1 == 1) { return 746.45f, -2310.32f, 26.03f; } else { return 748.922f, -2298.114f, 19.624f; } break; case 5: if (iParam1 == 1) { return 1509.7421f, -2126.0376f, 75.21973f; } else { return 1509.0994f, -2120.551f, 75.61f; } break; case 6: return 76.0032f, -1970.4752f, 20.1302f; break; case 7: if (iParam1 == 1) { return -1.82327f, -1732.6144f, 28.29367f; } else { return 0.067f, -1734.027f, 30.606f; } break; case 8: if (iParam1 == 1) { return -1377.7656f, -1409.837f, 4.63205f; } else { return -1380.4912f, -1404.3735f, 1.7273f; } break; case 9: return 2864.8079f, -1372.8402f, 1.3151f; break; case 10: return -1035.8115f, -1273.0769f, 0.8919f; break; case 11: return -1821.1364f, -1201.3599f, 18.1698f; break; case 12: return 643.0116f, -1035.6504f, 35.8891f; break; case 13: return -119.0616f, -977.2228f, 303.23f; break; case 14: if (iParam1 == 1) { return -1243.1036f, -507.8057f, 30.10775f; } else { return -1238.7655f, -506.7138f, 37.6019f; } break; case 15: if (iParam1 == 1) { return 83.79993f, -431.9302f, 36.55315f; } else { return 86.4f, -433.9f, 36f; } break; case 16: return 1095.9534f, -210.4642f, 54.9477f; break; case 17: return -1724.5217f, -196f, 57.2387f; break; case 18: return 265.374f, -199.546f, 60.795f; break; case 19: if (iParam1 == 1) { return -3020.4749f, 36.55431f, 9.11777f; } else { return -3021.4f, 38f, 10.2945f; } break; case 20: if (iParam1 == 1) { return -347.52768f, 53.37161f, 52.97814f; } else { return -347.3f, 54.865f, 53.921f; } break; case 21: return 1052.2484f, 167.611f, 87.7406f; break; case 22: return -2303.7976f, 217.4301f, 166.6017f; break; case 23: return -138.9423f, 868.3885f, 231.6956f; break; case 24: if (iParam1 == 1) { return 688.1073f, 1204.6713f, 323.3438f; } else { return 682.4505f, 1204.9277f, 344.3322f; } break; case 25: return -1548.7627f, 1380.1727f, 125.3728f; break; case 26: if (iParam1 == 1) { return -432.14f, 1598.46f, 355.73f; } else { return -432.0034f, 1597.1292f, 356.613f; } break; case 27: return 3081.93f, 1648.29f, 2.42f; break; case 28: return -594.38f, 2092f, 130.57f; break; case 29: if (iParam1 == 1) { return 3069.213f, 2160.9883f, 1.1327f; } else { return 3063.5828f, 2212.63f, 2.5863f; } break; case 30: return 180.21f, 2263.83f, 91.87f; break; case 31: if (iParam1 == 1) { return 926.96f, 2445.36f, 49.09f; } else { return 929.6946f, 2444.1155f, 48.43f; } break; case 32: if (iParam1 == 1) { return -2380.2124f, 2655.1758f, 0.832f; } else { return -2379.9482f, 2656.9534f, 1.4906f; } break; case 33: return -861.38f, 2753.3f, 12.867f; break; case 34: return -289.0195f, 2848.8533f, 53.331f; break; case 35: if (iParam1 == 1) { return 288.84085f, 2871.9116f, 42.6422f; } else { return 265.7415f, 2866.416f, 73.19f; } break; case 36: if (iParam1 == 1) { return 1297.378f, 2988.7102f, 40.11787f; } else { return 1294.2f, 3001.9f, 57.7f; } break; case 37: return 1568.65f, 3572.8f, 32.294f; break; case 38: return -1608.62f, 4274.25f, 102.95f; break; case 39: if (iParam1 == 1) { return -3.51812f, 4332.4507f, 31.21602f; } else { return -1.9585f, 4334.787f, 32.3702f; } break; case 40: return 1336.7367f, 4307.1997f, 37.1325f; break; case 41: if (iParam1 == 1) { return -1007.10284f, 4836.936f, 268.5488f; } else { return -1001.48f, 4851.322f, 273.6112f; } break; case 42: return 1877.09f, 5078.98f, 50.49f; break; case 43: if (iParam1 == 1) { return 3366.0986f, 5182.4614f, 0.68317f; } else { return 3436.4526f, 5176.911f, 6.386f; } break; case 44: if (iParam1 == 1) { return -576.12f, 5472.24f, 59.28f; } else { return -578.8057f, 5470.164f, 59.0295f; } break; case 45: return 444.6518f, 5571.7812f, 780.1888f; break; case 46: return -402.9948f, 6319.2793f, 31.2256f; break; case 47: return 1439.5989f, 6335.2075f, 22.9485f; break; case 48: if (iParam1 == 1) { return 1466.109f, 6552.2656f, 12.95773f; } else { return 1469.6321f, 6552.1743f, 13.6854f; } break; case 49: if (iParam1 == 1) { return 66.19278f, 6668.8877f, 30.80633f; } else { return 66.7136f, 6663.1978f, 30.7821f; } break; } return 0f, 0f, 0f; } bool func_64(int iParam0)//Position - 0x2545 { if (!ENTITY::DOES_ENTITY_EXIST(iParam0)) { return 0; } return !ENTITY::IS_ENTITY_DEAD(iParam0, false); } void func_65(int iParam0, int iParam1)//Position - 0x2563 { if (iParam0 == 235 || iParam0 == 0) { return; } Global_114135.f_8617[iParam0] = 1; Global_114135.f_8617.f_236[iParam0] = (MISC::GET_GAME_TIMER() + iParam1); } void func_66(int iParam0, int iParam1)//Position - 0x25A0 { if (iParam0 == 146 || iParam0 == -1) { return; } if (Global_114135.f_9089.f_99.f_58[iParam0] == iParam1) { return; } Global_114135.f_9089.f_99.f_58[iParam0] = iParam1; } void func_67(int iParam0, int iParam1, int iParam2)//Position - 0x25E5 { bool bVar0; if (iParam0 < 0) { } if (iParam0 == 321 || iParam0 > 321) { } else { func_48((891 + iParam0), 1, -1); } bVar0 = true; if (Global_114135.f_10198[iParam0 /*12*/].f_5 == 1) { if (Global_114135.f_10198[iParam0 /*12*/].f_6 == 11 || Global_114135.f_10198[iParam0 /*12*/].f_6 == 12) { bVar0 = false; } } else { Global_114135.f_10198[iParam0 /*12*/].f_5 = 1; Global_114135.f_10198[iParam0 /*12*/].f_10 = iParam1; Global_114135.f_10198[iParam0 /*12*/].f_11 = iParam2; if (iParam0 == 287) { STATS::PRESENCE_EVENT_UPDATESTAT_INT(joaat("NUM_HIDDEN_PACKAGES_0"), 50, 0); } if (iParam0 == 286) { STATS::PRESENCE_EVENT_UPDATESTAT_INT(joaat("NUM_HIDDEN_PACKAGES_1"), 50, 0); } if (iParam0 == 299) { STATS::PRESENCE_EVENT_UPDATESTAT_INT(joaat("NUM_HIDDEN_PACKAGES_3"), 50, 0); } } if (bVar0) { func_68(); } } void func_68()//Position - 0x26CB { int iVar0; float fVar1; float fVar2; float fVar3; float fVar4; float fVar5; float fVar6; float fVar7; float fVar8; int iVar9; iVar0 = 0; Global_113871 = 0; Global_113872 = 0; Global_113873 = 0; Global_113874 = 0; Global_113875 = 0; Global_113876 = 0; Global_113877 = 0; fVar1 = 0f; fVar2 = 0f; fVar3 = 0f; fVar4 = 0f; fVar5 = 0f; fVar6 = 0f; fVar7 = 0f; fVar8 = Global_114135.f_10198.f_3853; Global_114135.f_10198.f_3853 = 0f; while (iVar0 < 321) { if (Global_114135.f_10198[iVar0 /*12*/].f_5 == 1) { switch (Global_114135.f_10198[iVar0 /*12*/].f_6) { case 1: Global_113871++; fVar1 = (fVar1 + Global_114135.f_10198[iVar0 /*12*/].f_4); break; case 3: Global_113872++; fVar2 = (fVar2 + Global_114135.f_10198[iVar0 /*12*/].f_4); break; case 5: Global_113873++; fVar3 = (fVar3 + Global_114135.f_10198[iVar0 /*12*/].f_4); break; case 7: Global_113874++; fVar4 = (fVar4 + Global_114135.f_10198[iVar0 /*12*/].f_4); break; case 9: Global_113875++; fVar5 = (fVar5 + (Global_114135.f_10198[iVar0 /*12*/].f_4 * 4f)); break; case 11: Global_113876++; fVar6 = (fVar6 + Global_114135.f_10198[iVar0 /*12*/].f_4); break; case 13: Global_113877++; fVar7 = (fVar7 + Global_114135.f_10198[iVar0 /*12*/].f_4); break; default: break; } } iVar0++; } if (Global_113854 > 0) { if (Global_113871 == Global_113854) { fVar1 = 55f; } } if (Global_113855 > 0) { if (Global_113872 == Global_113855) { fVar2 = 10f; } } if (Global_113856 > 0) { if (Global_113873 == Global_113856) { fVar3 = 0f; } } if (Global_113857 > 0) { if (Global_113874 == Global_113857) { fVar4 = 10f; } } if (Global_113858 > 0) { if (((Global_113875 == Global_113858 || (Global_113858 * 10 / Global_113875) < 41) || Global_113875 > Global_113861) || Global_113875 == Global_113861) { if (!BitTest(Global_114135.f_10198.f_3856, 14)) { if (Global_113875 == Global_113858) { STATS::PRESENCE_EVENT_UPDATESTAT_INT(joaat("NUM_RNDEVENTS_COMPLETED"), Global_113858, 0); MISC::SET_BIT(&(Global_114135.f_10198.f_3856), 14); } } fVar5 = 5f; } } if (Global_113859 > 0) { if (Global_113876 == Global_113859) { fVar6 = 15f; } } if (Global_113860 > 0) { if (Global_113877 == Global_113860) { fVar7 = 5f; } } Global_114135.f_10198.f_3853 = ((((((fVar1 + fVar2) + fVar3) + fVar4) + fVar5) + fVar6) + fVar7); if (Global_113875 > Global_113861 || Global_113875 == Global_113861) { iVar9 = Global_113861; } else { iVar9 = Global_113875; } STATS::STAT_SET_INT(joaat("NUM_MISSIONS_COMPLETED"), Global_113871, true); STATS::STAT_SET_INT(joaat("NUM_MISSIONS_AVAILABLE"), Global_113854, true); STATS::STAT_SET_INT(joaat("NUM_MINIGAMES_COMPLETED"), Global_113872, true); STATS::STAT_SET_INT(joaat("NUM_MINIGAMES_AVAILABLE"), Global_113855, true); STATS::STAT_SET_INT(joaat("NUM_ODDJOBS_COMPLETED"), Global_113873, true); STATS::STAT_SET_INT(joaat("NUM_ODDJOBS_AVAILABLE"), Global_113856, true); STATS::STAT_SET_INT(joaat("NUM_RNDPEOPLE_COMPLETED"), Global_113874, true); STATS::STAT_SET_INT(joaat("NUM_RNDPEOPLE_AVAILABLE"), Global_113857, true); STATS::STAT_SET_INT(joaat("NUM_RNDEVENTS_COMPLETED"), iVar9, true); STATS::STAT_SET_INT(joaat("NUM_RNDEVENTS_AVAILABLE"), Global_113861, true); STATS::STAT_SET_INT(joaat("NUM_MISC_COMPLETED"), (Global_113877 + Global_113876), true); STATS::STAT_SET_INT(joaat("NUM_MISC_AVAILABLE"), (Global_113860 + Global_113859), true); Global_113878 = (Global_113871 * 100 / Global_113854); Global_113880 = ((Global_113873 + Global_113872) * 100 / (Global_113856 + Global_113855)); Global_113879 = ((Global_113874 + iVar9) * 100 / (Global_113857 + Global_113861)); Global_113881 = ((Global_113876 + Global_113877) * 100 / (Global_113859 + Global_113860)); STATS::STAT_SET_FLOAT(joaat("TOTAL_PROGRESS_MADE"), Global_114135.f_10198.f_3853, true); STATS::STAT_SET_INT(joaat("PERCENT_STORY_MISSIONS"), Global_113878, true); STATS::STAT_SET_INT(joaat("PERCENT_AMBIENT_MISSIONS"), Global_113879, true); STATS::STAT_SET_INT(joaat("PERCENT_ODDJOBS"), Global_113880, true); if (fVar8 > 0f && SYSTEM::FLOOR(fVar8) < SYSTEM::FLOOR(Global_114135.f_10198.f_3853)) { func_45(13, SYSTEM::FLOOR(Global_114135.f_10198.f_3853)); } if (!DATAFILE::DATAFILE_IS_SAVE_PENDING()) { if (!Global_79539) { if (func_69() == 2 == 0 && !NETWORK::NETWORK_IS_GAME_IN_PROGRESS()) { if (NETWORK::NETWORK_IS_CLOUD_AVAILABLE()) { Global_113869 = 0; } if (!Global_64308) { func_41(); } } } } } int func_69()//Position - 0x2B89 { return Global_33087; } int func_70(int iParam0)//Position - 0x2B94 { int iVar0; bool bVar1; if (iParam0 <= 31) { iVar0 = 9; bVar1 = iParam0; } else { iVar0 = 10; bVar1 = (iParam0 - 32); } if (BitTest(Global_114135.f_9089.f_99.f_219[iVar0], bVar1)) { MISC::CLEAR_BIT(&(Global_114135.f_9089.f_99.f_219[iVar0]), bVar1); return 1; } return 0; } int func_71(int iParam0)//Position - 0x2BEB { if (iParam0 == 146 || iParam0 == -1) { return 0; } return Global_114135.f_9089.f_99.f_58[iParam0]; } int func_72(int iParam0)//Position - 0x2C18 { int iVar0; bool bVar1; if (iParam0 <= 31) { iVar0 = 9; bVar1 = iParam0; } else { iVar0 = 10; bVar1 = (iParam0 - 32); } if (BitTest(Global_114135.f_9089.f_99.f_219[iVar0], bVar1)) { return 0; } MISC::SET_BIT(&(Global_114135.f_9089.f_99.f_219[iVar0]), bVar1); return 1; } void func_73()//Position - 0x2C6F { int iVar0; GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(false); GRAPHICS::SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(&iLocal_610); MISC::SET_GAME_PAUSED(false); Global_114135.f_10053.f_122.f_2 = 0; iVar0 = 0; while (iVar0 < Local_55.f_0) { func_52(&(Local_55[iVar0 /*11*/].f_2)); func_39(&(Local_55[iVar0 /*11*/].f_1)); Local_55[iVar0 /*11*/].f_1 = 0; iVar0++; } if (func_71(106) == 1) { func_66(106, 1); func_75(); func_70(12); } else if (func_74(&(Local_42.f_1))) { func_66(106, 1); func_75(); func_70(12); } else { func_72(12); } if (iLocal_619) { STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(Local_42.f_7); } SCRIPT::TERMINATE_THIS_THREAD(); } bool func_74(var uParam0)//Position - 0x2D20 { if (uParam0->f_3 <= 0) { } return uParam0->f_4 >= uParam0->f_3; } void func_75()//Position - 0x2D39 { int iVar0; iVar0 = func_76(64); Global_2645376[iVar0 /*83*/] = 64; StringCopy(&(Global_2645376[iVar0 /*83*/].f_18[0 /*16*/]), "", 64); } int func_76(int iParam0)//Position - 0x2D65 { int iVar0; int iVar1; iVar0 = 19; iVar1 = 0; while (iVar1 <= 19) { if (Global_2645376[iVar1 /*83*/] == iParam0) { iVar0 = iVar1; iVar1 = 20; } else if (Global_2645376[iVar1 /*83*/] == 0) { iVar0 = iVar1; iVar1 = 20; } iVar1++; } return iVar0; }