Skip to content

Instantly share code, notes, and snippets.

@Patrick-1994-
Last active March 9, 2022 23:58
Show Gist options
  • Save Patrick-1994-/6b3a4e17a2d687ce3fef62996d379e5d to your computer and use it in GitHub Desktop.
Save Patrick-1994-/6b3a4e17a2d687ce3fef62996d379e5d to your computer and use it in GitHub Desktop.

I read the mission script. I have not tested this all! So read properly and test what I think the mission script says - I am fallible. ^^

The plan is to use this post to predict when the minigame wants to start and at that moment you block it (also, see below). Then you will not get any feedback at all (no "try again"), but you will not get a call, either.

TL;DR (you better read this post fully )

[2:31 AM] Patrick: I guess I have a Safe Strat for Every Lazy one - as long as they are not speedrunners. 😄

[2:32 AM] Patrick: Just save your game past the possible times (see below) for the Cesar jobs. To avoid getting the jobs between the saves, block them by aiming right after saving and getting a wanted level (both block Cesar's jobs - no risk).

Possible times

There are two "Cesar jobs".

  • bcesar2, I call it "Job_Patriot":
    • Mon/Fri 5:00-16:59
  • bcesar3, I call it "Job_Sanchez":
    • Wed/Sat 00:00 - 06:59 and 19:00 - 23:59 (for both days)

How they are unlocked

  • Job_Patriot: By doing three Catalina missions.
  • Job_Sanchez:
    • As soon as "Job_Patriot" shows "Try again on Monday/Friday"
      • -> if you block it (see below), no unlocking happens

It all ends after SF is done (when passing Yay Ka-Boom-Boom [or duped Toreno's Last Flight])

Job start conditions

  • There is a timer (I call it "Cesar_Timer") that runs most of the time (see next section)
  • The Cesar job starts once all these conditions are met.
    • if it is at 400+ frames (~16s - a bit longer than the recall time for normal calls (15s) )
    • and onmission=0 (you are not on a mission or call or saving - mission icons visible on the map)
    • and the weekday and time is one of those listed above (I call that "right time")
    • and the Cesar job in question has not started on the current day, yet.
  • "Cesar job starts" does not mean that you get the Cesar call, though.
    • This is what happens:
      1. the Cesar job script starts
      2. it sets some "Cesar job currently running" variable and - "Cesar job x has started today".
      3. it checks whether a call can come in - the conditions are like for "normal" calls - you cannot get it inside a car, etc.
        • If you make sure to be inside the car, I call this "blocking" the call.
      4. The two Cesar jobs react differently to "blocking":
        • With "Job_Patriot", it will just finish, instantly.
        • With "Job_Sanchez", it just waits until you "lift the block" - so blocking is not of much use.
          • Fortunately, (as said above), this job needs to first get unlocked, so you should never be at risk of getting it.
          • If you block it until it is Sun/Tue/Thu (a day where neither Cesar job happens), then it finishes.

Cesar_Timer

  • pauses as long as a onmission=1 (mission or call is going on)
  • Is forced to 0 on Sun/Tue/Thu

How to block

You block Cesar calls just like regular phone calls. ( Both use SUB_GET_TIME_FROM_LAST_CALL to see if a call can happen [code is pasted at the end of this] ):

  • dead/busted
  • onmission=1 [irrelevant, since Cesar_Timer does not run with onmission=1, anyway]
  • in interior
  • phone ringing
    • normally this would be irrelevant, see the note about onmission=1 but with glitches, onmission=0 calls are possible
    • the block happens from "Press ~k~~PED_ANSWER_PHONE~ to answer your cell phone." until - well, until the call ends. ^^
  • GF stuff
  • minigame going on (food menu is a minigame, for example; mod shop menu)
  • player "not controllable" (=cannot start story missions)
    • tasks/events (getting into a car, etc)
    • falling/landing
    • aiming
    • being in "fighting stance"
      • for that, you hold "aim" and "jump".
        • you can sprint in this mode, but if you tap the sprint button, it is inconsistent(?) because the block is "lifted" for single frames at a time
  • wanted level
  • gang war

Save point bug/"bugs"

temporary

The first "bug" is not a bug. You simply cannot reject the first Cesar job. That means you cannot save until you cancel it by setting onmission=1. Update 2022-03-10 - there is something I don't understand here, someone got his save points permanently disabled after getting the Patriot job and just getting rid off it with a call (funny that calls can come in during these jobs, bad game design!). See the "The convo about the confusing thing" section at the end.

permanent

The next one is way more interesting: It is that the Cesar job gets stuck before Cesar even calls you (as the job starts, it loads stuff and then Cesar calls).

  • It is impossible to get rid off this one without Cheat Engine (for example) / save editor
  • The cause is that you get a normal phone call and a Cesar job in the same frame (something like that)
    • That requires some bad luck since while Cesar jobs are checked every frame, "normal" calls are on a cycle (the game only checks if a call should come in every couple of frames).
    • The only scenario I see for that is saving/dying (todo: test dying!) with a wanted level and >15s on the "normal call timer" that you know from duping setups.
      • Saving advances the clock, which (in this scenario) unlocks the Cesar job.
      • It also gets rid off the wanted level.
      • -> therefore, both can come in at the same frame

You can block after saving the game, as there is a half-second time-span where you have control over CJ and onmission=1 - just hold "aim" and "jump" to make CJ go into "punch blocking mode" ;). You can then sprint by holding the sprint button (if you mash it, the call can still come in) for maybe a second or whatever.

// All these conditions have to be true for calls/Cesar jobs *not* to be blocked
99498      `   if( 0256: player $PLAYER_CHAR defined ) {
99514      `     if( $ONMISSION == 0 ) { // not on a mission
99532      `       if( $ACTIVE_INTERIOR == 0 ) { // not in an interior
99550      `         if( $PHONE_RINGING_FLAG == 0 ) {
99568      `           if( $FREEFALL_STAGE == 0 ) {
99586      `             if( 88B4: not test $390 bit 1 ) { // gf stuff - one of these should be "standing inside the area where you can meat a gf" - near Katie, for example.
99604      `               if( 88B4: not test $390 bit 20 ) { // gf stuff - the other is "on a date"
99622      `                 if( 89BE: not are_text_boxes_locked_to_any_thread ) { // is minigame in progress
99635      `                   if( 03EE: player $PLAYER_CHAR controllable ) { // this can be set to false with the "punch blocking mode" or jumping or aiming
99651      `                     if( 044B: actor $PLAYER_ACTOR on_foot ) {
99667      `                       if( 8A03: not unknown_gang_war_in_progress ) {
99680      `                         if( 810F: not player $PLAYER_CHAR wanted_level > 0 ) {

The convo about the confusing thing

[4:10 PM] Kaan: https://www.twitch.tv/videos/1420289793 pls helppppp
Twitch
marker bug - kaanbiyiikli on Twitch

[4:11 PM] Kaan: watch the 6:35
[4:13 PM] EzeKah: what im supposed to see at 6:35
[4:14 PM] thriving: its because of the yay call
[4:14 PM] Kaan: how to fix this
[4:14 PM] thriving: too late
[4:14 PM] thriving: you have to fix it right after u get it
[4:14 PM] Kaan: dont see the save marker
[4:15 PM] Kaan: how ??
[4:15 PM] EzeKah: activating and deactivating vigilante iirc
[4:15 PM] thriving: u can trigger vigilante/taxi
[4:15 PM] Kaan: before enter save marker?
[4:15 PM] Kaan: because im still trigger vigi
[4:15 PM] thriving: well it's too late now
[4:19 PM] Kaan: @thriving  https://www.twitch.tv/videos/1420295585 😦
Twitch
2 - kaanbiyiikli on Twitch

[4:20 PM] Kaan: i enter marker after taxi
[4:28 PM] thriving: the marker reappears after u got the yay call
[4:28 PM] thriving: u didn't have to use taxi
[4:28 PM] thriving: as to why did it disappear later, idk
[12:00 AM] NBMT: Ahh thank you guys.
[12:46 AM] Patrick: This is interesting. I do not understand it.

It is clear that the very first call you get from Cesar, you cannot decline. So you accepted the minigame when hanging up. Obviously, during the minigame you cannot save. There is no bug or anything unusual there (though it is not nice game design that you cannot decline 🙂 ). onmission=1 cancels the minigame, unlocking save points.

I was not aware you could even get a phone call during this minigame, since those set onmission=1, cancelling said minigame. Nice game design. So that can mess things up somehow?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment