the cutting room mirror

Unused Text

This is a sub-page of Grand Theft Auto IV.

Unused Vehicle Handling Data#

Handling strings for vehicles that don't appear in the actual game. All of these strings come from GTA 4, and aren't leftovers from Grand Theft Auto: San Andreas.

Andromada

This is a driveable big plane from Grand Theft Auto: San Andreas.

ANDROM 50000.0 10.0 75 0.0 0.0 0.0 0.0 1 0.30 1.0 160.0 0.4 0.60 0.7 35.0 0.65 0.60 8.0 0.10 0.5 0.4 0.2 0.2 0.50 -0.20 0.0 0.5 0.5 0.5 0.8 1.5 0.0 52000 2004000 400000 0

Dodo

An old favorite debuted from Grand Theft Auto III.

DODO 5000.0 10.0 75 0.0 0.3 0.0 0.0 1 0.30 1.0 160.0 0.4 0.60 0.7 35.0 0.65 0.60 8.0 0.10 0.5 0.5 0.15 0.2 0.50 -0.05 0.0 0.5 0.5 0.5 0.8 1.5 0.0 45000 4000000 400000 13

Fighter

All that remains is its handling data. Possibly, it was some type of military aircraft.

FIGHTER 5000.0 10.0 75 0.0 0.0 0.0 0.0 1 0.30 1.0 160.0 0.4 0.60 0.7 25.0 0.65 0.60 8.0 0.10 0.5 0.5 0.2 0.2 0.50 -0.05 0.0 0.5 0.5 0.5 0.8 1.5 0.0 45000 4000000 400000 0

SWAT

Yet another vehicle from Grand Theft Auto: San Andreas, thought it is unknown how it could possibly look in IV.

#SWAT 2500.0 2.0 80 0.0 0.0 -0.3 0.5 5 0.20 1.0 160.0 0.5 0.50 0.7 35.0 0.95 0.75 10.0 0.15 0.5 1.5 1.3 1.0 0.20 -0.20 0.0 0.5 1.0 1.0 0.8 1.5 0.25 40000 8 300000 2

Cheatcodes#

Scrapped Money Cheatcode#

    0xA43E97D8 = enabled cheat - "Money"

Deactivating Cheatcode#

Seems like the game had some cheatcode that player could de-activate, either that or developers made such feature at some point for testing purposes, but cut it from release version.

    CHEAT2 = Cheat de-activated

Unused Mission Names#

american.gxt has name leftovers from some missions, which may be either cut or side missions, since the game does not have any special names for side missions missions, these names could be connected with them, here's the list of them:

  • American Dream - listed after Uncle Vlad and before Logging On missions. This is either a Roman's taxi driver side mission or a unknown cut mission. However, the taxi driver side mission unlocks after completing Jamaican Heat, so the question about American Dream is still open.
    M_7 = Uncle Vlad
    M_7A = Uncle Vlad
    M_8 = American Dream
    M_8A = American Dream
    M_9 = Logging On
    M_9A = Logging On
  • Exotic Exports - listed after Logging On and before Roman's Sorrow missions. Everything here is quite clear and logical, this side mission unlocks as it should, except that the game handles this mission as a mission for Roman and not for Brucie, but that's another question.
    M_9 = Logging On
    M_9A = Logging On
    M_10 = Exotic Exports
    M_10A = Exotic Exports
    M_11 = Roman's Sorrow
    M_11A = Roman's Sorrow
  • I and High - listed after Shadow and before Crime and Punishment missions. Here everything is also quite logical to assume that this is the name for the Jacob's Drug Delivery side mission. In the american.gxt there is another strange name - Jacob's Ladder, which is believed to be the early mission name for Concrete Jungle according to a magazine article written before the game's release.
    M_20 = Shadow
    M_20A = Shadow
    M_21 = I and High
    M_21A = I and High
    M_22 = Crime and Punishment
    M_22A = Crime and Pu...

0x3E7E8219 = Jacob's Ladder

  • Races - listed after No. 1 and before Photo Shoot missions. There is no doubt that this is the name for the races that the player can ask Brucie on the phone.
    M_42 = No. 1
    M_42A = No. 1
    M_43 = Races
    M_43A = Races
    M_44 = Photo Shoot
    M_44A = Photo Shoot
  • High-End Assassin - listed after Catch The Wave and before Trespass missions. The Fixer's missions that the game handles as Phil missions, probably because he's the one who offers them to the player, except that this side mission unlocks after Truck Hustle mission instead of Catch The Wave, but this is not the only case where the order of the missions does not match what happens in the game itself.
    M_79 = Catch The Wave
    M_79A = Catch the Wave
    M_80 = High-End Assassin
    M_80A = High-End Ass...
    M_81 = Trespass
    M_81A = Trespass

Dummy Text#

Unused Emails#

An email from Niko's mother, Milica Bellic, stored in american.gxt. It would have been sent after "A Revenger's Tragedy" in the Deal ending. Never triggered in-game.

0x1D323441

Word in the village is that Roman was killed on wedding day. I know it is true, as I checked on internet. My son, my heart is broken. Please leave evil place. Please go somewhere safe. Please do not caught up in madness. Please do not become statistic.

Xbox LIVE Leftovers#

The connection to Xbox LIVE has been lost. Returning to single player...

This connection error message leftover from the Xbox 360 version can be found in the files but isn't used for obvious reasons.

PlayStation 3 Executable Text#

Various error and developer messages found inside the executable of the PlayStation 3 version.

Need to increase datachunk size. Data is too large
Missing scripted speech asset. Check context and voice name. (context: %s; voice: %s; variation: %d)
Burnt through all our speech memory. Time: %u
audio: couldn't find speech context settings
audio: couldn't find engine settings for Heli: %s
A camera is at the origin, ceasing update up viewport to patch issues.
Camera won't be working properly because the follow ped is a network clone!
Loading IPLs about free cam
what are we transitioning from?
Hint has auto reset since an entity has seemed to disappear!
#### Registering a random object that has been moved by a clone but not claimed by that clone's machine : ####
CPedMoveBlendOnFoot : Ped has no base animation. As a temporary fix ANIM_MOVE_IDLE will be added.
THERE IS NO MAP BELOW THE FOLLOWING COORS:%f %f %f. (FindGroundZFor3DCoord)
Tell MikeD you need to increase the size of MAX_MLO_RENDER_LIST_SIZE
Could not remove entity during interior destructor. Dumping entity to world. Please note in bug report if this is fatal...
attempted to freeze a ped. will probably fall out of world...
Skinned model contains both edge & gpu geometries.. currently unsupported! (TODO)
Ran out of space for adding scripted coverpoints, only %i are allowed.
[CGTARichPresence] FOR NOW THERE IS NO RICH PRESENCE FOR PS3 ...
This will NOT apply the settings that we apply when loading from a stream. Fix the code!!!!
(I won't annoy you with more fallback spew)
********** YOUR CHANNEL MASK IS SHIT!  I'll fix it.
Attempting to load resource '%s' referencing effect that doesn't exist.  This may be due to a shader that was preloaded at resource generation time not being available now at runtime.  Sorry, I cannot continue.
***** Resourced instance data in resource '%s' (effect '%s') doesn't match the shader any longer (count should be %d, is %d).  You need rage_new resources.  I will attempt to fix it for now.
-maxtexturesize isn't supported on non-DEV builds
*** WorldInverse is no longer supported, please remove it [use WorldInverseTranspose instead with params swapped]
*** WorldViewInverse is no longer supported, please remove it [use ViewInverse and WorldInverseTranspose]
Woah no size keys!
audSoundPool::Shutdown() wasn't called - this isn't what killed the game, please don't put this in as an audio bug :-)

Windows-Exclusive#

BuildLog.htm#

Download BuildLog.htm

File: GTAIV_(Windows)-BuildLog.zip (7 KB) (info)

A shader compiler log, along with batch commands, can be found in the common\shaders directory in the Windows version.

Placeholder Text#

PLACEHOLDER

This is repeated several times.

Test.txt#

blablablablablablabla

A text file found in the pc\textures directory.

TXDCut.txt#

txdp
csbravura, bravura
csopcarla, copcarla
cscopcarla92, copcarla
cssabre92, sabre
csfirela, firela
csgreenwood, greenwoo
csvoodoo, voodoo
cszr350, zr350
cszr350b, zr350
cssadler, sadler
cswashington, washing
csbobcat92, bobcat
cssecurica92, securica
csglendale92, glendale
csandrom92, androm
csmothership, camper
csmtbike92, mtbike
cssavanna, savanna
csremington92, remingtn
csburrito92, burrito
cstaxi92, taxi
cssabre92, sabre
csmonster, monster
end

A leftover file from San Andreas that slipped right into the game's data folder. This simply redirected the game's cutscene car textures to the actual TXDs.

placeholder.sco#

void main()
{
    int iVar2;
    int iVar3;
    int iVar4;
    int iVar5;

    l_U4 = 0;
    l_U5 = 1;
    l_U6 = 3;
    l_U8 = 0;
    l_U25 = -1;
    l_U29 = 0;
    l_U30 = 1;
    l_U31 = 1;
    l_U39 = 150.00000000;
    l_U129 = 0;
    l_U130 = 150.00000000;
    l_U180 = 0;
    l_U490 = -1;
    PRINTSTRING( "+++++++ STARTED PLACEHOLDER MISSION (strand " );
    PRINTINT( l_U491 + 1 );
    PRINTSTRING( ")\n" );
    SET_MISSION_FLAG( 1 );
    l_U490 = l_U491;
    GET_GAME_TIMER( ref iVar2 );
    iVar5 = 1000;
    WAIT( 1000 );
    DO_SCREEN_FADE_IN( 500 );
    if (IS_PLAYER_PLAYING( sub_210() ))
    {
        SET_PLAYER_CONTROL( sub_210(), 1 );
    }
    while (true)
    {
        WAIT( 0 );
        GET_GAME_TIMER( ref iVar3 );
        iVar4 = iVar3 - iVar2;
        if (iVar4 >= iVar5)
        {
            PRINTSTRING( "PLACEHOLDER (strand " );
            PRINTINT( l_U490 + 1 );
            PRINTSTRING( ") MISSION RUNNING (" );
            PRINTINT( iVar4 );
            PRINTSTRING( ") - 'S' to Skip/Pass - 'F' to Fail\n" );
            iVar5 += 1000;
            PRINT_NOW( "PH_HELP", 1500, 1 );
        }
        if (IS_KEYBOARD_KEY_PRESSED( 31 ))
        {
            sub_474();
        }
        if (IS_KEYBOARD_KEY_PRESSED( 33 ))
        {
            sub_15652();
        }
    }
    return;
}

void sub_210()
{
    return CONVERT_INT_TO_PLAYERINDEX( GET_PLAYER_ID() );
}

void sub_474()
{
    PRINTSTRING( "+++++++ PLACEHOLDER COMPLETE (strand " );
    PRINTINT( l_U490 + 1 );
    PRINTSTRING( ")\n" );
    switch (l_U490)
    {
        case 0:
        sub_752();
        break;
        case 1:
        sub_13657();
        break;
        case 2:
        sub_13744();
        break;
        case 3:
        sub_13828();
        break;
        case 4:
        sub_13914();
        break;
        case 5:
        sub_14001();
        break;
        case 6:
        sub_14088();
        break;
        case 7:
        sub_14176();
        break;
        case 8:
        sub_14262();
        break;
        case 9:
        sub_14348();
        break;
        case 10:
        sub_14436();
        break;
        case 11:
        sub_14521();
        break;
        case 12:
        sub_14609();
        break;
        case 13:
        sub_14697();
        break;
        case 14:
        sub_14784();
        break;
        case 15:
        sub_14872();
        break;
        case 16:
        sub_14960();
        break;
        case 17:
        sub_15048();
        break;
        case 18:
        sub_15133();
        break;
        case 19:
        sub_15221();
        break;
        case 20:
        sub_15309();
        break;
        case 21:
        sub_15397();
        break;
        case 22:
        sub_15485();
        break;
        default: sub_1607( "Placeholder: Unknown strand" );
    }
    sub_15605();
    return;
}

void sub_752()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_829( iVar2, iVar3, iVar4 );
    return;
}

void sub_770()
{
    int I;

    I = 0;
    for ( I = 0; I < 5; I++ )
    {
        l_U475[I] = 4;
    }
    return;
}

void sub_829(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 0;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Friend_1" );
    return;
}

void sub_860(int iParam0, boolean bParam1, boolean bParam2, boolean bParam3, unknown uParam4)
{
    int iVar7;
    int iVar8;
    char[64] cVar9;
    int iVar25;
    int iVar26;
    boolean bVar27;
    unknown uVar28;
    unknown uVar29;
    int iVar30;
    boolean bVar31;

    iVar7 = -1;
    iVar8 = -1;
    StrCopy( ref cVar9, "", 64 );
    if (bParam3)
    {
        if (g_U13391[iParam0]._fU80._fU0 == 0)
        {
            StrCopy( ref cVar9, uParam4, 64 );
            ConcatString(ref cVar9, " Pass_Stats: friend mission", 64);
            sub_956( ref cVar9 );
            return;
        }
        if (g_U13391[iParam0]._fU80._fU4 == -1)
        {
            StrCopy( ref cVar9, uParam4, 64 );
            ConcatString(ref cVar9, " Pass_Stats: friend missionID", 64);
            sub_956( ref cVar9 );
            return;
        }
        iVar7 = g_U13391[iParam0]._fU80._fU4;
    }
    else if (bParam2)
    {
        if (NOT g_U13391[iParam0]._fU160._fU80)
        {
            StrCopy( ref cVar9, uParam4, 64 );
            ConcatString(ref cVar9, " Pass_Stats: proc mission", 64);
            sub_956( ref cVar9 );
            return;
        }
        if (g_U13391[iParam0]._fU160._fU76 == -1)
        {
            StrCopy( ref cVar9, uParam4, 64 );
            ConcatString(ref cVar9, " Pass_Stats: proc missionID", 64);
            sub_956( ref cVar9 );
            return;
        }
        iVar7 = g_U13391[iParam0]._fU160._fU76;
    }
    else if (g_U13391[iParam0]._fU0._fU0 == 0)
    {
        StrCopy( ref cVar9, uParam4, 64 );
        ConcatString(ref cVar9, " Pass_Stats: mission", 64);
        sub_956( ref cVar9 );
        return;
    }
    if (g_U13391[iParam0]._fU0._fU4 == -1)
    {
        StrCopy( ref cVar9, uParam4, 64 );
        ConcatString(ref cVar9, " Pass_Stats: missionID", 64);
        sub_956( ref cVar9 );
        return;
    }
    iVar7 = g_U13391[iParam0]._fU0._fU4;
    iVar8 = sub_1533( iParam0, iVar7 );;;
    iVar25 = 0;
    if (bParam1)
    {
        g_U10981[iParam0]._fU24 = iVar7;
    }
    if (bParam2)
    {
        iVar25 = g_U13391[iParam0]._fU160._fU84;
    }
    if (bParam3)
    {
        g_U10981[iParam0]._fU144._fU8++;
        if ((g_U10981[iParam0]._fU144._fU8 >= g_U10981[iParam0]._fU144._fU4) AND (NOT g_U10981[iParam0]._fU144._fU12))
        {
            iVar26 = 0;
            GET_GAME_TIMER( ref iVar26 );
            g_U10981[iParam0]._fU144._fU16 = iVar26 + 60000;
        }
        if (g_U10981[iParam0]._fU144._fU8 == 1)
        {
            if (iParam0 == 3)
            {
                sub_1951( 0, 3 );
            }
            if (iParam0 == 8)
            {
                sub_1951( 0, 4 );
            }
        }
    }
    if (NOT (sub_2040( iParam0, iVar7, iVar25, bParam1, bParam2, bParam3 )))
    {
        return;
    }
    if (bParam2)
    {
        g_U13391[iParam0]._fU160._fU84++;
    }
    if ((iVar7 == 12) AND (iParam0 == 0))
    {
        SET_PLAYER_MOOD_PISSED_OFF( sub_210(), 150 );
    }
    else
    {
        SET_PLAYER_MOOD_NORMAL( sub_210() );
    }
    sub_11272();
    bVar27 = true;
    uVar28 = sub_1533( iParam0, iVar7 );
    uVar29 = sub_11914( iParam0 );
    if (bParam1)
    {
        iVar30 = g_U13391[iParam0]._fU0._fU56;
        if ((iVar30 == 6) || (iVar30 == 5))
        {
            bVar27 = false;
        }
        if (NOT g_U0)
        {
            bVar31 = true;
            if (IS_BIT_SET( g_U26758[uVar28]._fU108, 2 ))
            {
                REGISTER_MISSION_PASSED( ref g_U9921 );
                sub_12445( 9, ref g_U13391[iParam0]._fU0._fU24 );
                if ((g_U10978) AND (NOT bVar27))
                {
                    bVar31 = false;
                }
                if (bVar31)
                {
                    sub_12875();
                    g_U9914._fU8 = 1;
                    g_U9914._fU20 = sub_12960( iParam0, iVar7 );
                }
            }
            if (bVar27)
            {
                sub_13017( iParam0 );
                sub_13152( 0 );
                sub_13233( uVar29, 0 );
            }
            g_U10981[iParam0]._fU12 = 1;
        }
        if (bVar27)
        {
            sub_13338();
        }
    }
    if (bParam2)
    {
        sub_12875();
        sub_13426();
        sub_13152( 0 );
    }
    if (bParam3)
    {
        sub_12875();
        sub_13466();
        sub_13152( 0 );
        sub_13233( uVar29, 0 );
    }
    sub_13517();
    return;
}

void sub_956(unknown uParam0)
{
    PRINTSTRING( "FLOW WARNING: " );
    PRINTSTRING( uParam0 );
    PRINTNL();
    SCRIPT_ASSERT( "FLOW WARNING: Press IGNORE button and look at console window for details" );
    return;
}

int sub_1533(int iParam0, int iParam1)
{
    unknown uVar4;
    int iVar5;
    int Result;

    if ((iParam0 >= 28) || (iParam0 < 0))
    {
        sub_1607( "Main_Missions: Find_Trigger(): Illegal Strand ID" );
    }
    uVar4 = g_U32640[iParam0]._fU0;
    iVar5 = g_U32640[iParam0]._fU4;
    for ( Result = uVar4; Result <= iVar5; Result++ )
    {
        if (g_U26758[Result]._fU4 == iParam1)
        {
            return Result;
        }
    }
    return -1;
}

void sub_1607(unknown uParam0)
{
    SCRIPT_ASSERT( uParam0 );
    return;
}

void sub_1951(unknown uParam0, unknown uParam1)
{
    int iVar4;

    iVar4 = 0;
    GET_GAME_TIMER( ref iVar4 );
    g_U15874[uParam0]._fU0 = uParam1;
    g_U15874[uParam0]._fU4 = iVar4 + 7200000;
    return;
}

int sub_2040(unknown uParam0, unknown uParam1, unknown uParam2, boolean bParam3, unknown uParam4, unknown uParam5)
{
    boolean bVar8;
    unknown uVar9;
    int iVar10;

    bVar8 = false;
    switch (uParam0)
    {
        case 0:
        bVar8 = sub_2248( uParam1 );
        break;
        case 1:
        bVar8 = sub_4326( uParam1 );
        break;
        case 2:
        bVar8 = sub_4552( uParam1 );
        break;
        case 3:
        bVar8 = sub_4702( uParam1 );
        break;
        case 4:
        bVar8 = sub_4980( uParam1 );
        break;
        case 5:
        bVar8 = sub_5283( uParam1 );
        break;
        case 6:
        bVar8 = sub_5482( uParam1 );
        break;
        case 7:
        bVar8 = sub_5708( uParam1 );
        break;
        case 8:
        bVar8 = sub_5943( uParam1 );
        break;
        case 9:
        bVar8 = sub_6318( uParam1 );
        break;
        case 10:
        bVar8 = sub_6565( uParam1 );
        break;
        case 11:
        bVar8 = sub_6704( uParam1 );
        break;
        case 12:
        bVar8 = sub_7003( uParam1 );
        break;
        case 13:
        bVar8 = sub_7231( uParam1 );
        break;
        case 14:
        bVar8 = sub_7518( uParam1 );
        break;
        case 15:
        bVar8 = sub_7800( uParam1 );
        break;
        case 16:
        bVar8 = sub_8082( uParam1 );
        break;
        case 17:
        bVar8 = sub_8283( uParam1 );
        break;
        case 18:
        bVar8 = sub_8356( uParam1 );
        break;
        case 19:
        bVar8 = sub_8570( uParam1 );
        break;
        case 20:
        bVar8 = sub_8823( uParam1 );
        break;
        case 21:
        bVar8 = sub_9070( uParam1 );
        break;
        case 22:
        bVar8 = sub_9271( uParam1 );
        break;
        default:
        PRINTSTRING( "Strand ID: " );
        PRINTINT( uParam0 );
        PRINTNL();
        sub_3931( "Flow_Pass_Stats: Flow_Pass_Strand_Mission(): Unknown strand ID." );
    }
    if (NOT bVar8)
    {
        return 0;
    }
    uVar9 = sub_1533( uParam0, uParam1 );
    if (bParam3)
    {
        iVar10 = g_U13391[uParam0]._fU0._fU56;
        if ((NOT (iVar10 == 6)) AND (NOT (iVar10 == 5)))
        {
            sub_9594( uVar9, uParam0 );
        }
    }
    return 1;
}

int sub_2248(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 0;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 25, 5, 2, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 30, 5, 2, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 0, 5, 0, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 50, 5, 2, 0, 0 );
        break;
        case 5:
        sub_2527( iVar3, 100, 5, 2, 0, 0 );
        break;
        case 6:
        sub_2527( iVar3, 150, 5, 2, 0, 0 );
        break;
        case 8:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 9:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 10:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 11:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 12:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 13:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 15:
        sub_2527( iVar3, 250000, 5, 2, 0, 0 );
        break;
        case 16:
        sub_2527( iVar3, 0, 0, 0, 0, 0 );
        break;
        case 20:
        if (g_U15654[12])
        {
            sub_2527( iVar3, 0, 5, 2, 0, 0 );
        }
        else
        {
            sub_2527( iVar3, 250000, 0, 0, 0, 0 );
        }
        break;
        case 7:
        sub_2527( iVar3, 0, 3, 1, 0, 0 );
        break;
        case 3:
        case 30:
        case 14:
        case 37:
        case 18:
        case 19:
        case 17:
        case 21: break;
        case 22:
        case 23:
        case 24:
        case 25:
        case 26:
        case 27:
        case 28:
        sub_2527( iVar3, 0, sub_3809(), sub_4075(), 0, 0 );
        break;
        default:
        sub_4234( "Friend 1", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Friend 1", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

void sub_2527(unknown uParam0, unknown uParam1, unknown uParam2, unknown uParam3, unknown uParam4, int iParam5)
{
    sub_2538( uParam1 );
    sub_2712( uParam0, 0, uParam2 );
    sub_2712( uParam0, 1, uParam3 );
    sub_2712( uParam0, 2, uParam4 );
    ProtectedSet(g_U26747[4], ProtectedGet(g_U26747[4]) + iParam5);
    sub_770();
    return;
}

void sub_2538(unknown uParam0)
{
    ADD_SCORE( sub_210(), uParam0 );
    sub_2563( uParam0 );
    return;
}

void sub_2563(int iParam0)
{
    if (g_U0)
    {
        return;
    }
    if (iParam0 < 0)
    {
        sub_1607( "Flow_Achievements_Increase_Cash_From_Missions: negative cash given. Tell Keith." );
    }
    INCREMENT_INT_STAT_NO_MESSAGE( 93, iParam0 );
    return;
}

void sub_2712(unknown uParam0, int iParam1, int iParam2)
{
    g_U10981[uParam0]._fU40[iParam1] += iParam2;
    if (g_U10981[uParam0]._fU40[iParam1] < 0)
    {
        g_U10981[uParam0]._fU40[iParam1] = 0;
    }
    if (g_U10981[uParam0]._fU40[iParam1] > 100)
    {
        g_U10981[uParam0]._fU40[iParam1] = 100;
    }
    if (iParam1 == 1)
    {
        sub_2869( uParam0 );
    }
    return;
}

void sub_2869(unknown uParam0)
{
    if (g_U0)
    {
        return;
    }
    if (IS_BIT_SET( ProtectedGet(g_U64791), 11 ))
    {
        return;
    }
    if (g_U10981[uParam0]._fU40[1] < 90)
    {
        return;
    }
    switch (uParam0)
    {
        case 0:
        SET_BIT( 1, 6 );
        break;
        break;
        2;
        1;
        ref g_U64791;
        1;
        ref g_U64791;
        break;
        case 3:
        SET_BIT( 1, 7 );
        break;
        break;
        2;
        1;
        ref g_U64791;
        1;
        ref g_U64791;
        break;
        case 7:
        SET_BIT( 1, 8 );
        break;
        break;
        2;
        1;
        ref g_U64791;
        1;
        ref g_U64791;
        break;
        case 8:
        SET_BIT( 1, 9 );
        break;
        break;
        2;
        1;
        ref g_U64791;
        1;
        ref g_U64791;
        break;
        case 13:
        SET_BIT( 1, 10 );
        break;
        break;
        2;
        1;
        ref g_U64791;
        1;
        ref g_U64791;
        break;
    }
    if ((NOT (IS_BIT_SET( ProtectedGet(g_U64791), 5 ))) || ((NOT (IS_BIT_SET( ProtectedGet(g_U64791), 4 ))) || ((NOT (IS_BIT_SET( ProtectedGet(g_U64791), 3 ))) || ((NOT (IS_BIT_SET( ProtectedGet(g_U64791), 2 ))) || (NOT (IS_BIT_SET( ProtectedGet(g_U64791), 1 )))))))
    {
        return;
    }
    if (NOT (IS_BIT_SET( ProtectedGet(g_U64791), 7 )))
    {
        return;
    }
    if (NOT (IS_BIT_SET( ProtectedGet(g_U64791), 9 )))
    {
        return;
    }
    if (NOT (IS_BIT_SET( ProtectedGet(g_U64791), 10 )))
    {
        return;
    }
    if (g_U10981[0]._fU8)
    {
        if (NOT (IS_BIT_SET( ProtectedGet(g_U64791), 6 )))
        {
            return;
        }
    }
    if (g_U10981[7]._fU8)
    {
        if (NOT (IS_BIT_SET( ProtectedGet(g_U64791), 8 )))
        {
            return;
        }
    }
    SET_BIT( 1, 11 );
    AWARD_ACHIEVEMENT( 35 );
    return;
    break;
    2;
    1;
    ref g_U64791;
    1;
    ref g_U64791;
    break;
}

int sub_3809()
{
    switch (l_U475[0])
    {
        case 0: return 14;
        case 1: return 8;
        case 2: return 6;
        case 3: return 1;
        case 4: return 0;
    }
    sub_3931( "Get_TRUST(): Unknown Friend Pass ID" );
    return 0;
}

void sub_3931(unknown uParam0)
{
    PRINTSTRING( "FLOW ERROR: " );
    PRINTSTRING( uParam0 );
    PRINTNL();
    SCRIPT_ASSERT( "FLOW ERROR: Press IGNORE button and look at console window for details" );
    return;
}

int sub_4075()
{
    switch (l_U475[1])
    {
        case 0: return 10;
        case 1: return 6;
        case 2: return 3;
        case 3: return 1;
        case 4: return 0;
    }
    sub_3931( "Get_LIKE(): Unknown Friend Pass ID" );
    return 0;
}

void sub_4234(unknown uParam0, unknown uParam1)
{
    return;
}

int sub_4326(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 1;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 50, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 100, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 150, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 200, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 2", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 2", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_4552(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 2;
    bVar4 = false;
    switch (uParam0)
    {
        case 1:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        case 0: break;
        default:
        sub_4234( "Girl 3", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Girl 3", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_4702(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 3;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 200, 5, 2, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 250, 5, 2, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 250, 3, 1, 0, 0 );
        break;
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
        sub_2527( iVar3, 0, sub_3809(), sub_4075(), 0, 0 );
        break;
        default:
        sub_4234( "Friend 4", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Friend 4", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_4980(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 4;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 200, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 400, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 500, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 600, 5, 5, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 700, 5, 5, 0, 0 );
        break;
        case 5:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        case 6:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 5", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 5", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_5283(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 5;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 1000, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 1100, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 1500, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 7", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 7", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_5482(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 6;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 1500, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 2000, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 2500, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 7b", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 7b", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_5708(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 7;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 6000, 5, 2, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 6250, 5, 2, 0, 0 );
        break;
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        sub_2527( iVar3, 0, sub_3809(), sub_4075(), 0, 0 );
        break;
        default:
        sub_4234( "Friend 8", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Friend 8", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_5943(unknown uParam0)
{
    int iVar3;
    boolean bVar4;
    int iVar5;

    iVar3 = 8;
    bVar4 = false;
    iVar5 = 500;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 3500, 5, 2, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 3500, 5, 2, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 6750, 5, 2, 0, 0 );
        break;
        case 5:
        sub_2527( iVar3, 0, 5, 2, 0, 0 );
        break;
        case 2:
        case 3: break;
        case 6:
        sub_2527( iVar3, iVar5, 3, 1, 0, 0 );
        INCREMENT_INT_STAT_NO_MESSAGE( 109, iVar5 );
        break;
        case 7:
        case 8:
        case 9:
        case 10:
        case 11:
        case 12:
        case 13:
        case 14:
        sub_2527( iVar3, 0, sub_3809(), sub_4075(), 0, 0 );
        break;
        default:
        sub_4234( "Friend 9", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Friend 9", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_6318(unknown uParam0)
{
    int iVar3;
    int iVar4;
    boolean bVar5;

    iVar3 = 9;
    iVar4 = 7;
    bVar5 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 6500, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 6750, 5, 5, 0, 0 );
        break;
        case 3:
        if (g_U15654[39])
        {
            sub_2527( iVar4, 0, 5, 10, 0, 0 );
        }
        else
        {
            sub_2527( iVar3, 0, 5, 5, 0, 0 );
        }
        break;
        case 2: break;
        default:
        sub_4234( "Contact 10", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar5)
    {
        sub_4234( "Contact 10", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_6565(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 10;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 0, 1, 1, 0, 0 );
        break;
        default:
        sub_4234( "Girl 11", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Girl 11", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_6704(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 11;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 1000, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 1000, 5, 5, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 5000, 5, 5, 0, 0 );
        break;
        case 5:
        sub_2527( iVar3, 5000, 5, 5, 0, 0 );
        break;
        case 6:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        case 7:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        case 1:
        case 2: break;
        default:
        sub_4234( "Contact 12", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 12", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_7003(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 12;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 6500, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 6750, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 7000, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 7500, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 13", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 13", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_7231(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 13;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 7500, 5, 2, 0, 5 );
        break;
        case 1:
        sub_2527( iVar3, 8000, 5, 2, 0, 5 );
        break;
        case 3:
        sub_2527( iVar3, 250000, 5, 2, 0, 5 );
        break;
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
        sub_2527( iVar3, 0, sub_3809(), sub_4075(), 0, 0 );
        break;
        case 2: break;
        default:
        sub_4234( "Friend 15", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Friend 15", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_7518(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 14;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 8500, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 9000, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 9500, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 9500, 5, 5, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 9500, 5, 5, 0, 0 );
        break;
        case 5:
        sub_2527( iVar3, 11000, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 16", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 16", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_7800(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 15;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 9000, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 9250, 5, 5, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 9500, 5, 5, 0, 0 );
        break;
        case 6:
        sub_2527( iVar3, 9750, 5, 5, 0, 0 );
        break;
        case 7:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        case 2:
        case 3:
        case 5: break;
        default:
        sub_4234( "Contact 18", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 18", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_8082(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 16;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 6500, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 7000, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 7500, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 19", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 19", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_8283(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 17;
    bVar4 = false;
    if (bVar4)
    {
        sub_4234( "Girl 20", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_8356(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 18;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 6000, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 6250, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 6500, 5, 5, 0, 0 );
        break;
        case 3: break;
        default:
        sub_4234( "Contact 21", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 21", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_8570(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 19;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 7500, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 10500, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 11000, 5, 5, 0, 0 );
        break;
        case 4:
        sub_2527( iVar3, 12000, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 0, 3, 3, 0, 0 );
        break;
        default:
        sub_4234( "Contact 22", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 22", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_8823(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 20;
    bVar4 = false;
    switch (uParam0)
    {
        case 1:
        sub_2527( iVar3, 10500, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 0, 5, 5, 0, 0 );
        break;
        case 3:
        sub_2527( iVar3, 13000, 5, 5, 0, 0 );
        break;
        case 5:
        sub_2527( iVar3, 14500, 5, 5, 0, 0 );
        break;
        case 4:
        case 0: break;
        default:
        sub_4234( "Contact 24", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 24", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_9070(unknown uParam0)
{
    int iVar3;
    boolean bVar4;

    iVar3 = 21;
    bVar4 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar3, 12000, 5, 5, 0, 0 );
        break;
        case 1:
        sub_2527( iVar3, 13250, 5, 5, 0, 0 );
        break;
        case 2:
        sub_2527( iVar3, 14500, 5, 5, 0, 0 );
        break;
        default:
        sub_4234( "Contact 25", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar4)
    {
        sub_4234( "Contact 25", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

int sub_9271(unknown uParam0)
{
    int iVar3;
    int iVar4;
    boolean bVar5;

    iVar3 = 22;
    iVar4 = 8;
    bVar5 = false;
    switch (uParam0)
    {
        case 0:
        sub_2527( iVar4, 0, 3, 1, 0, 0 );
        break;
        default:
        sub_4234( "Girl 26", 1 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    if (bVar5)
    {
        sub_4234( "Girl 26", 0 );
        sub_2527( iVar3, 10, 0, 0, 0, 0 );
        return 0;
    }
    return 1;
}

void sub_9594(int iParam0, int iParam1)
{
    if (g_U0)
    {
        return;
    }
    if (iParam0 == -1)
    {
        return;
    }
    if (iParam1 == -1)
    {
        return;
    }
    if (sub_9642( iParam0, iParam1 ))
    {
        INCREMENT_INT_STAT_NO_MESSAGE( 253, 1 );
        sub_10373( iParam1 );
    }
    return;
}

int sub_9642(int iParam0, int iParam1)
{
    int iVar4;
    boolean bVar5;
    int iVar6;

    if (g_U0)
    {
        return 0;
    }
    if (iParam0 == -1)
    {
        return 0;
    }
    if (iParam1 == -1)
    {
        return 0;
    }
    iVar4 = g_U13391[iParam1]._fU0._fU56;
    bVar5 = iVar4 == 6;
    if (bVar5)
    {
        return 0;
    }
    iVar6 = 0;
    if (NOT (IS_BIT_SET( g_U26758[iParam0]._fU108, 3 )))
    {
        iVar6 = g_U26758[iParam0]._fU104;
        if (iVar6 > 0)
        {
            sub_9782( 0, iVar6 );
            g_U13334[iParam1]._fU4 += iVar6;
        }
        SET_BIT( ref g_U26758[iParam0]._fU108, 3 );
        return 1;
    }
    return 0;
}

void sub_9782(unknown uParam0, int iParam1)
{
    g_U32871[uParam0]._fU4 += iParam1;
    if (g_U32871[uParam0]._fU4 > g_U32871[uParam0]._fU0)
    {
        SCRIPT_ASSERT( "Flow_Achievements_Game_Progress_Made: Current Category is over target value" );
        g_U32871[uParam0]._fU4 = g_U32871[uParam0]._fU0;
    }
    sub_9964( 0 );
    return;
}

void sub_9964(boolean bParam0)
{
    float fVar3;
    float fVar4;
    float fVar5;
    float fVar6;
    boolean bVar7;
    int I;

    fVar3 = 0.00000000;
    fVar4 = 0.00000000;
    fVar5 = 0.00000000;
    fVar6 = 0.00000000;
    bVar7 = true;
    I = 0;
    for ( I = 0; I < 8; I++ )
    {
        if (g_U32871[I]._fU4 == g_U32871[I]._fU0)
        {
            fVar4 = g_U32871[I]._fU8;
        }
        else
        {
            bVar7 = false;
            fVar5 = TO_FLOAT( g_U32871[I]._fU0 );
            fVar6 = TO_FLOAT( g_U32871[I]._fU4 );
            fVar4 = (fVar6 / fVar5) * g_U32871[I]._fU8;
        }
        fVar3 += fVar4;
    }
    if (fVar3 > 100.00000000)
    {
        fVar3 = 99.99000000;
    }
    if (bVar7)
    {
        fVar3 = 100.00000000;
    }
    SET_FLOAT_STAT( 0, fVar3 );
    if (bVar7)
    {
        sub_10219();
    }
    if ((NOT (# -NULL-0xc27c84())) AND ((NOT bParam0) AND (bVar7)))
    {
        PRINT_HELP( "GAME100" );
    }
    return;
}

void sub_10219()
{
    ENABLE_MAX_AMMO_CAP( 0 );
    return;
}

void sub_10373(int iParam0)
{
    float fVar3;
    float fVar4;
    float fVar5;

    if (g_U0)
    {
        return;
    }
    if (iParam0 == -1)
    {
        return;
    }
    if (g_U13334[iParam0]._fU0 == 0)
    {
        return;
    }
    fVar3 = 0.00000000;
    fVar4 = 0.00000000;
    fVar5 = 0.00000000;
    if (g_U13334[iParam0]._fU4 == g_U13334[iParam0]._fU0)
    {
        fVar3 = 100.00000000;
    }
    else
    {
        fVar4 = TO_FLOAT( g_U13334[iParam0]._fU0 );
        fVar5 = TO_FLOAT( g_U13334[iParam0]._fU4 );
        fVar3 = fVar5 / fVar4;
        fVar3 *= 100.00000000;
    }
    switch (iParam0)
    {
        case 0:
        sub_10706( 3 );
        SET_FLOAT_STAT( 3, fVar3 );
        break;
        case 1:
        sub_10706( 4 );
        SET_FLOAT_STAT( 4, fVar3 );
        break;
        case 3:
        sub_10706( 7 );
        SET_FLOAT_STAT( 7, fVar3 );
        break;
        case 4:
        sub_10706( 8 );
        SET_FLOAT_STAT( 8, fVar3 );
        break;
        case 5:
        sub_10706( 9 );
        SET_FLOAT_STAT( 9, fVar3 );
        break;
        case 6:
        sub_10706( 10 );
        SET_FLOAT_STAT( 10, fVar3 );
        break;
        case 7:
        sub_10706( 13 );
        SET_FLOAT_STAT( 13, fVar3 );
        break;
        case 8:
        sub_10706( 16 );
        SET_FLOAT_STAT( 16, fVar3 );
        break;
        case 9:
        sub_10706( 17 );
        SET_FLOAT_STAT( 17, fVar3 );
        break;
        case 11:
        sub_10706( 18 );
        SET_FLOAT_STAT( 18, fVar3 );
        break;
        case 12:
        sub_10706( 19 );
        SET_FLOAT_STAT( 19, fVar3 );
        break;
        case 13:
        sub_10706( 22 );
        SET_FLOAT_STAT( 22, fVar3 );
        break;
        case 14:
        sub_10706( 23 );
        SET_FLOAT_STAT( 23, fVar3 );
        break;
        case 15:
        sub_10706( 24 );
        SET_FLOAT_STAT( 24, fVar3 );
        break;
        case 16:
        sub_10706( 25 );
        SET_FLOAT_STAT( 25, fVar3 );
        break;
        case 18:
        sub_10706( 26 );
        SET_FLOAT_STAT( 26, fVar3 );
        break;
        case 19:
        sub_10706( 27 );
        SET_FLOAT_STAT( 27, fVar3 );
        break;
        case 20:
        sub_10706( 29 );
        SET_FLOAT_STAT( 29, fVar3 );
        break;
        case 21:
        sub_10706( 28 );
        SET_FLOAT_STAT( 28, fVar3 );
        break;
        default: return;
    }
    return;
}

void sub_10706(unknown uParam0)
{
    if ((GET_STAT_FRONTEND_VISIBILITY( uParam0 )) == 0)
    {
        SET_STAT_FRONTEND_VISIBILITY( uParam0, 1 );
    }
    return;
}

void sub_11272()
{
    int I;

    for ( I = 0; I <= (g_U569 - 1); I++ )
    {
        if ((g_U569[I]._fU20) AND ((sub_11310( 5, g_U569[I] )) == 1))
        {
            if ((sub_11310( 1, g_U569[I] )) != 0)
            {
                sub_11596( I );
            }
        }
    }
    if (NOT sub_11762())
    {
        SET_MESSAGES_WAITING( 0 );
        g_U91._fU404 = 1000;
    }
    if (g_U91._fU0 == 1014)
    {
        g_U91._fU92 = 1;
    }
    return;
}

int sub_11310(unknown uParam0, unknown uParam1, unknown uParam2, unknown uParam3, unknown uParam4, unknown uParam5, unknown uParam6)
{
    switch (uParam0)
    {
        case 0:
        return GET_BITS_IN_RANGE( uParam1._fU0[1], 14, 23 );
        break;
        case 1:
        return GET_BITS_IN_RANGE( uParam1._fU0[0], 0, 13 );
        break;
        case 2:
        return GET_BITS_IN_RANGE( uParam1._fU0[0], 14, 27 );
        break;
        case 3:
        return GET_BITS_IN_RANGE( uParam1._fU0[1], 0, 13 );
        break;
        case 4:
        return GET_BITS_IN_RANGE( uParam1._fU0[1], 24, 27 );
        break;
        case 5:
        return GET_BITS_IN_RANGE( uParam1._fU0[0], 28, 31 );
        break;
        case 6:
        return uParam1._fU0[2];
        break;
    }
    return -1;
}

void sub_11596(int iParam0)
{
    int I;

    if (iParam0 < (g_U569 - 1))
    {
        for ( I = iParam0 + 1; I <= (g_U569 - 1); I++ )
        {
            g_U569[I - 1] = {g_U569[I]};
        }
    }
    sub_11681( g_U569 - 1 );
    return;
}

void sub_11681(unknown uParam0)
{
    g_U569[uParam0]._fU0[0] = -1;
    g_U569[uParam0]._fU0[1] = -1;
    g_U569[uParam0]._fU0[2] = -1;
    return;
}

int sub_11762()
{
    int I;

    for ( I = 0; I <= (g_U569 - 1); I++ )
    {
        if ((sub_11310( 4, g_U569[I] )) == 0)
        {
            return 1;
        }
    }
    return 0;
}

int sub_11914(unknown uParam0)
{
    switch (uParam0)
    {
        case 0: return 0;
        case 1: return 1;
        case 2: return 2;
        case 3: return 3;
        case 4: return 4;
        case 5: return 5;
        case 6: return 6;
        case 7: return 7;
        case 8: return 8;
        case 9: return 9;
        case 10: return 10;
        case 11: return 11;
        case 12: return 12;
        case 13: return 13;
        case 14: return 14;
        case 15: return 15;
        case 16: return 16;
        case 17: return 17;
        case 18: return 18;
        case 19: return 19;
        case 20: return 22;
        case 21: return 20;
        case 22: return 21;
    }
    PRINTSTRING( "UNKNOWN STRAND ID: " );
    PRINTINT( uParam0 );
    PRINTNL();
    sub_1607( "Flow_public: Return_Contact_From_Strand(): Unknown strand" );
    return 57;
}

void sub_12445(unknown uParam0, unknown uParam1)
{
    sub_12464( uParam0, 0, 0.00000000, uParam1 );
    return;
}

void sub_12464(unknown uParam0, unknown uParam1, unknown uParam2, unknown uParam3)
{
    unknown uVar6;
    unknown uVar7;
    unknown uVar8;
    unknown uVar9;
    unknown uVar10;
    unknown uVar11;
    unknown uVar12;
    unknown uVar13;
    unknown uVar14;
    unknown uVar15;
    unknown uVar16;
    unknown uVar17;
    unknown uVar18;
    unknown uVar19;
    unknown uVar20;
    unknown uVar21;

    switch (uParam0)
    {
        case 0:
        PLAYSTATS_INT( "SPRUNK_BOUGHT", uParam1 );
        break;
        case 1:
        PLAYSTATS_INT( "HOTDOG_BOUGHT", uParam1 );
        break;
        case 2:
        PLAYSTATS_INT( "NUTS_BOUGHT", uParam1 );
        break;
        case 3:
        PLAYSTATS_INT( "BURGERS_BOUGHT", uParam1 );
        break;
        case 7:
        PLAYSTATS_INT( "DONATE_BEGGAR", uParam1 );
        break;
        case 8:
        PLAYSTATS_INT( "DONATE_BUSKER", uParam1 );
        break;
        case 4:
        PLAYSTATS_INT( "BSHOT_BOUGHT", uParam1 );
        break;
        case 5:
        PLAYSTATS_INT( "CBELL_BOUGHT", uParam1 );
        break;
        case 6:
        PLAYSTATS_INT( "CAFE_BOUGHT", uParam1 );
        break;
        case 9: break;
    }
    return;
}

void sub_12875()
{
    g_U9914._fU0 = 1;
    g_U9914._fU4 = 0;
    g_U9914._fU8 = 0;
    g_U9914._fU12 = 0;
    g_U9914._fU16 = 0;
    g_U9914._fU20 = 0;
    g_U9914._fU24 = 7;
    return;
}

int sub_12960(int iParam0, int iParam1)
{
    if (iParam0 == 0)
    {
        if (iParam1 == 20)
        {
            return 1;
        }
    }
    return 0;
}

void sub_13017(unknown uParam0)
{
    sub_13026();
    g_U10981[uParam0]._fU116 = 0;
    return;
}

void sub_13026()
{
    int I;

    I = 0;
    for ( I = 0; I < 28; I++ )
    {
        if (g_U10981[I]._fU144._fU36)
        {
            g_U10981[I]._fU28 = 1;
        }
        g_U10981[I]._fU144._fU36 = 0;
    }
    return;
}

void sub_13152(unknown uParam0)
{
    if (g_U9385)
    {
        g_U9385 = 0;
        return;
    }
    g_U9380._fU0 = 1;
    g_U9380._fU4 = uParam0;
    g_U9380._fU8 = 0;
    g_U9380._fU12 = 0;
    g_U9380._fU16 = 0;
    return;
}

void sub_13233(int iParam0, boolean bParam1)
{
    int iVar4;

    if (NOT (iParam0 < 57))
    {
        return;
    }
    iVar4 = 0;
    GET_GAME_TIMER( ref iVar4 );
    g_U26671[iParam0] = iVar4;
    if (bParam1)
    {
        g_U26671[iParam0] += 30000;
    }
    return;
}

void sub_13338()
{
    sub_13347();
    return;
}

void sub_13347()
{
    if (COMPARE_STRING( ref g_U9926, "" ))
    {
        return;
    }
    PLAYSTATS_MISSION_PASSED( ref g_U9926 );
    StrCopy( ref g_U9926, "", 16 );
    return;
}

void sub_13426()
{
    sub_13347();
    return;
}

void sub_13466()
{
    sub_13347();
    StrCopy( ref g_U9926, "FPASS", 16 );
    return;
}

void sub_13517()
{
    int iVar2;
    int iVar3;

    iVar2 = 0;
    GET_GAME_TIMER( ref iVar2 );
    iVar3 = iVar2 + sub_13539();
    if (iVar3 > g_U63988._fU4)
    {
        g_U63988._fU4 = iVar3;
        g_U63988._fU8 = iVar2;
    }
    return;
}

int sub_13539()
{
    if (g_U15654[8])
    {
        return 27000;
    }
    return 15000;
}

void sub_13657()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_13686( iVar2, iVar3, iVar4 );
    return;
}

void sub_13686(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 1;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_2" );
    return;
}

void sub_13744()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_13773( iVar2, iVar3, iVar4 );
    return;
}

void sub_13773(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 2;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Girl_3" );
    return;
}

void sub_13828()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_13857( iVar2, iVar3, iVar4 );
    return;
}

void sub_13857(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 3;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Friend_4" );
    return;
}

void sub_13914()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_13943( iVar2, iVar3, iVar4 );
    return;
}

void sub_13943(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 4;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_5" );
    return;
}

void sub_14001()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14030( iVar2, iVar3, iVar4 );
    return;
}

void sub_14030(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 5;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_7" );
    return;
}

void sub_14088()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14117( iVar2, iVar3, iVar4 );
    return;
}

void sub_14117(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 6;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_7b" );
    return;
}

void sub_14176()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14205( iVar2, iVar3, iVar4 );
    return;
}

void sub_14205(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 7;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Friend_8" );
    return;
}

void sub_14262()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14291( iVar2, iVar3, iVar4 );
    return;
}

void sub_14291(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 8;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Friend_9" );
    return;
}

void sub_14348()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14377( iVar2, iVar3, iVar4 );
    return;
}

void sub_14377(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 9;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_10" );
    return;
}

void sub_14436()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14465( iVar2, iVar3, iVar4 );
    return;
}

void sub_14465(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 10;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Girl_11" );
    return;
}

void sub_14521()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14550( iVar2, iVar3, iVar4 );
    return;
}

void sub_14550(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 11;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_12" );
    return;
}

void sub_14609()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14638( iVar2, iVar3, iVar4 );
    return;
}

void sub_14638(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 12;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_13" );
    return;
}

void sub_14697()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14726( iVar2, iVar3, iVar4 );
    return;
}

void sub_14726(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 13;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Friend_15" );
    return;
}

void sub_14784()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14813( iVar2, iVar3, iVar4 );
    return;
}

void sub_14813(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 14;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_16" );
    return;
}

void sub_14872()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14901( iVar2, iVar3, iVar4 );
    return;
}

void sub_14901(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 15;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_18" );
    return;
}

void sub_14960()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_14989( iVar2, iVar3, iVar4 );
    return;
}

void sub_14989(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 16;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_19" );
    return;
}

void sub_15048()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_15077( iVar2, iVar3, iVar4 );
    return;
}

void sub_15077(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 17;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Girl_20" );
    return;
}

void sub_15133()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_15162( iVar2, iVar3, iVar4 );
    return;
}

void sub_15162(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 18;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_21" );
    return;
}

void sub_15221()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_15250( iVar2, iVar3, iVar4 );
    return;
}

void sub_15250(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 19;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_22" );
    return;
}

void sub_15309()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_15338( iVar2, iVar3, iVar4 );
    return;
}

void sub_15338(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 20;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_24" );
    return;
}

void sub_15397()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_15426( iVar2, iVar3, iVar4 );
    return;
}

void sub_15426(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 21;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Contact_25" );
    return;
}

void sub_15485()
{
    int iVar2;
    int iVar3;
    int iVar4;

    iVar2 = 1;
    iVar3 = 0;
    iVar4 = 0;
    sub_770();
    sub_15514( iVar2, iVar3, iVar4 );
    return;
}

void sub_15514(unknown uParam0, unknown uParam1, unknown uParam2)
{
    int iVar5;

    iVar5 = 22;
    sub_860( iVar5, uParam0, uParam1, uParam2, "Girl_26" );
    return;
}

void sub_15605()
{
    TERMINATE_THIS_SCRIPT();
    return;
}

void sub_15652()
{
    PRINTSTRING( "+++++++ PLACEHOLDER FAILED (strand " );
    PRINTINT( l_U490 + 1 );
    PRINTSTRING( ")\n" );
    sub_15605();
    return;
}

placeholder.sco in scripts.img contains a placeholder script that may have been used for testing missions.

Unused Code#

frontend_menus.xml#

This file has a commented option that could be present in the menu, which is related to strafe mode.

            <!--optionspc  action="MENUOPT_ADJUST"             label="MO_STRAFE"  value="PREF_STRAFE"                  scaler="2" displayValue="MENU_DISPLAY_ON_OFF"/-->

This option is in the section with controls, restoring it back to the game does nothing, the option works but has no effect, the strafe mode is still works only when the player aims at pedestrians with fists or from a weapon, probably this option was supposed to turn on the strafe mode regardless of whether the player is aiming or not.

hud.dat#

hud.dat has a couple of commented out and therefore unused by the game lines. According to this comment from the developer, which is in the same file, these lines were related to debug content.

# items that have ';' at the start of their names are DEBUG items

[HD]

;HUD_DEV_KEYBOARD_MODE      0.069,0.052 0.3,0.3     HUD_COLOUR_WHITE    255
;HUD_DEV_MISSION_DESC       0.900,0.106 0.327,0.368 HUD_COLOUR_WHITE    255


[CRT]

;HUD_DEV_KEYBOARD_MODE      0.069,0.052 0.3,0.3     HUD_COLOUR_WHITE    255
;HUD_DEV_MISSION_DESC       0.500,0.106 0.327,0.368 HUD_COLOUR_WHITE    255

Since there is no debug menu in IV, all these lines do is distort the current game HUD after re-enabling them back, but they distort in different ways, if re-enable one of the lines, the HUD elements will look like this:

Before

After

GTAIV_HUDVanilla1.png GTAIV_HUDVanilla2.png GTAIV_HUDVanilla3.png GTAIV_HUDVanilla4.png

GTAIV_DebugHUDLeftover1.png GTAIV_DebugHUDLeftover2.png GTAIV_DebugHUDLeftover3.png GTAIV_DebugHUDLeftover4.png

and if restore the second line, the HUD elements will look even worse

Before

After

GTAIV_HUDVanilla1.png GTAIV_HUDVanilla2.png GTAIV_HUDVanilla3.png GTAIV_HUDVanilla4.png

GTAIV_DebugHUDLeftover5.png GTAIV_DebugHUDLeftover6.png GTAIV_DebugHUDLeftover7.png GTAIV_DebugHUDLeftover8.png

procedural.dat#

This is a file that is responsible for random generation of props on the streets, interiors, water, etc. from procobj.img and it has some commented out content.

Here is an example with one of the commented out props from this file

EXT_MEADOW_PLANTS       CJ_PROC_PLANT_14    4.0 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   0
EXT_MEADOW_PLANTS       CJ_PROC_PLANT_12    4.2 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   0
# EXT_MEADOW_PLANTS     CJ_PROC_PLANT_8     5.0 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   0

The last line has # before the group name, this disables the use of the CJ_PROC_PLANT_8 prop by this group, this is what the model of this prop looks like

and this is what it looks like after being restored in the game

Before

After

#EXT_FLOWERBED_PLANTS       SM_PLANT1       2.5 1.5 0   360 1.0 1.0 1.0 1.0 -0.2    0.0 0   0   0   0
EXT_FLOWERBED_PLANTS        CJ_PROC_PLANT_24    2.0 1.5 0   360 1.0 1.0 1.0 1.0 -0.2    0.0 0   0   0   0
EXT_FLOWERBED_PLANTS        SM_PLANT3       2.5 1.5 0   360 1.0 1.0 1.0 1.0 -0.2    0.0 0   0   0   0
EXT_FLOWERBED_PLANTS        CJ_PROC_PLANT_20    2.0 1.2 0   360 1.0 0.5 0.8 0.8  0.0    0.0 0   0   0   0
EXT_FLOWERBED_PLANTS        CJ_PROC_PLANT_23    2.0 1.2 0   360 1.0 0.5 0.8 0.8  0.0    0.0 0   0   0   0
#EXT_FLOWERBED_PLANTS       CJ_PROC_BRICK10     2.0 1.5 0   360 1.0 1.0 1.0 1.0 -0.2    0.0 0   0   0   0 
#EXT_FLOWERBED_PLANTS       CJ_PROC_BRICK7      2.0 1.5 0   360 1.0 1.0 1.0 1.0  0.0    0.0 0   0   0   0

Before

After

# EXT_PAVINGSLABS_DEBRIS    CJ_PROC_SLAB1       5.5 2.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 1   0   0   0
# EXT_PAVINGSLABS_DEBRIS    CJ_PROC_SLAB2       5.5 2.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   0
# taken out for bug no. 30145

Before

After

PROC_WTR_FLOATING_SCUM      CJ_LEAF_W       3.2 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   1
PROC_WTR_FLOATING_SCUM      CJ_PROC_WOOD_W3     6.2 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   1
PROC_WTR_FLOATING_SCUM      CJ_PROC_BEER_W      8.0 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   1
PROC_WTR_FLOATING_SCUM      CJ_PROC_FAGP_W      5.2 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   1
# PROC_WTR_FLOATING_SCUM    CJ_RUB_W        6.0 1.0 0   360 1.0 1.0 1.0 1.0 0.0 0.0 0   0   0   1

Before

After