Hao Street Races are a series of street races in Grand Theft Auto V for protagonist Franklin Clinton.
Description[]
The first race is presented to the player by Hao, during the Strangers and Freaks mission, Shift Work. After completing the mission, a new race will be unlocked by a text message from Hao and Franklin must continue to win the races in order to proceed to the next one. There are a total of five races in the series, and are only accessible between 20:00 and 05:00 hours. Earning a medal in each of the Hao Street Races counts as 5 of the compulsory 42 Hobbies and Pastimes to achieve 100% Completion.
Races[]
Shift Work[]
There is no entry fee for this race. It is two laps long and starts at Forum Drive in Chamberlain Hills against Hao and four other drivers. The reward for winning the race is $200. This race is triggered by meeting Hao for the first time in his Strangers and Freak mission and you must race him and four other racers.
It can be replayed through the Strangers and Freaks replay menu or by meeting the group of racers in Chamberlain Hills. If meeting the racers, the entry fee is $100 and the reward is $450 and Hao won't be taking part in the race. No 100% gold medal achievements can be completed this way, only through replay. If played through replay, the amount of money earned by winning the race won't be added to the player's account as he returns to the normal gameplay.
100% tasks[]
- Fastest Lap: Complete a lap within 01:20.
- Underdog: Finish the race within 02:50.
- Clean Race: Finish the race with less than 5 collisions.
City Circuit[]
The entry fee is $500. The race is one lap long. It starts on Clinton Avenue in Downtown Vinewood and goes throughout the northern and western part of Los Santos. The reward for winning is $2250.
Airport[]
The entry fee is $1000. The race is two laps long. It starts near the terminal of Los Santos International Airport and goes throughout much of southern Los Santos. The reward for winning the race is $4500.
Freeway[]
The entry fee is $1250. The race is two laps long. It focuses on freeways such as the Olympic Freeway and the Del Perro Freeway, but is a very short course focusing primarily on the on- and off-ramps. The prize for winning is $5625.
Vespucci Canals[]
The entry fee is $1500. The race is two laps long and is for motorcycles only. It starts on Invention Court in Vespucci Canals, passing through the neighborhood of Vespucci and Del Perro. The reward for winning is $6750.
After winning all the races, Hao will call to congratulate the player.
Disallowed Vehicles[]
The player can race a large majority of vehicles; however, certain vehicles will not be allowed to enter the races. A list of vehicles the player cannot race in is as follows:
- No aircraft or helicopters
- No boats
- No bikes or bicycles
- No emergency vehicles
- Airport Bus
- Airtug
- Ambulance
- Annihilator
- Army Trailer (tanker)
- Atomic Blimp
- Barracks Semi
- Barracks
- Benson
- Biff
- Blazer Lifeguard
- Blazer
- Bodhi
- Boxville (Humane Labs)
- Boxville (Post OP)
- Boxville (Utility)
- Burrito
- Burrito (Bugstars)
- Burrito (McGill-Olsen)
- Burrito (second generation)
- Bus
- Caddy
- Caddy (Civilian)
- Camper
- Clown Van
- Cutter
- Dashound
- Dock Handler
- Docktug
- Dozer
- Dump
- Duneloader
- Fieldmaster
- Fire Truck
- Flatbed
- Forklift
- Gang Burrito
- Hauler
- Hot Rod Blazer
- Insurgent
- Journey
- Kraken
- Marquis
- Maverick
- Mixer
- Mixer (6-wheeler)
- Mower
- Mule
- Mule (ramp-door)
- Packer
- Park Ranger
- Phantom
- Police Cruiser
- Police Maverick
- Police Prison Bus
- Police Riot
- Pony
- Pony (Smoke On The Water)
- Pounder
- Rat-Loader
- Rental Shuttle Bus
- Rhino Tank
- Ripley
- Romero Hearse
- Rubble
- Rumpo
- Rumpo (Deludamol)
- Sanchez
- Scrap Truck
- Speedo
- Squalo
- Stockade
- Stockade (snow variant)
- Submersible
- Taco Van
- Taxi
- Tipper
- Tipper (6-wheeler)
- Tourbus
- Towtruck (Yankee-based)
- Towtruck
- Tractor
- Trashmaster
- Utility Truck (Crane and Flatbed/Box)
- Utility Truck (Contender)
- Xero Blimp
Cut Races[]
Terminal[]
Not much is known about this race other than it being a circuit race around the docks.
Sea Races[]
The Sea Races were originally part of this sequence (presumably for Franklin only) but on release were changed to be accessible to all protagonists like the Offroad Races.[2][3]
Video Walkthrough[]
Trivia[]
- If the Strangers and Freaks mission "Shift Work" is replayed, there will be a red Ruiner[4] parked nearby as a default car ready to be used, though the player still can use any other vehicle of their choice for the race.
- If a player approaches a race gathering and decides to steal one of the cars, the race will be dismissed and the other contestants will usually run off scared.
- If a player acquires a wanted level in a race, they will automatically fail the race.
- Cars driven by NPC racers include: the Banshee, Feltzer, Sentinel XS, Prairie, and Dominator. These cars have modifications such as roll cages, and spoilers.
- If the player is a Rockstar Games Social Club member, NPC racers can also be seen driving an Elegy RH8.
- Race meet locations may show a parked 9F.
- At the beginning of each race, the car's radio will always be tuned into Soulwax FM.
- The track layout of the Freeway race is shaped like a penis. This is another example of sexual innuendo made by Rockstar.
- The events of the Shift Work race is briefly mentioned by Hao in GTA Online: Los Santos Tuners. It is also mentioned that Hao ended up on third place in that race.
References[]
- ↑ File Data:
// Position - 0x344EA bool func_489() { int iVar0; int iVar1; int iVar2[89]; if (ped::is_ped_sitting_in_any_vehicle(player::player_ped_id())) { iLocal_1171 = player::get_players_last_vehicle(); if (func_11(iLocal_1171)) { iVar0 = entity::get_entity_model(iLocal_1171); if (func_490(iVar0)) { return false; } if (iVar0 == joaat("police4") || iVar0 == joaat("policeold1") || iVar0 == joaat("policeold2") || iVar0 == joaat("fbi") || iVar0 == joaat("fbi2") || iVar0 == joaat("lguard") || iVar0 == joaat("sheriff") || iVar0 == joaat("sheriff2")) { return false; } if (vehicle::is_this_model_a_bike(iVar0) || vehicle::is_this_model_a_boat(iVar0) || vehicle::is_this_model_a_heli(iVar0) || vehicle::is_this_model_a_plane(iVar0)) { return false; } iVar2[0] = joaat("ambulance"); iVar2[1] = joaat("benson"); iVar2[2] = joaat("biff"); iVar2[3] = joaat("bus"); iVar2[4] = joaat("firetruk"); iVar2[5] = joaat("forklift"); iVar2[6] = joaat("mule"); iVar2[7] = joaat("mule2"); iVar2[8] = joaat("packer"); iVar2[9] = joaat("phantom"); iVar2[10] = joaat("mower"); iVar2[11] = joaat("stockade"); iVar2[12] = joaat("squalo"); iVar2[13] = joaat("maverick"); iVar2[14] = joaat("polmav"); iVar2[15] = joaat("airtug"); iVar2[16] = joaat("pranger"); iVar2[17] = joaat("annihilator"); iVar2[18] = joaat("dinghy"); iVar2[19] = joaat("police"); iVar2[20] = joaat("ripley"); iVar2[21] = joaat("trash"); iVar2[22] = joaat("burrito"); iVar2[23] = joaat("pony"); iVar2[24] = joaat("speedo"); iVar2[25] = joaat("marquis"); iVar2[26] = joaat("sanchez"); iVar2[27] = joaat("airtug"); iVar2[28] = joaat("taco"); iVar2[29] = joaat("barracks"); iVar2[30] = joaat("romero"); iVar2[31] = joaat("blazer"); iVar2[32] = joaat("blazer2"); iVar2[33] = joaat("bodhi2"); iVar2[34] = joaat("boxville2"); iVar2[35] = joaat("bulldozer"); iVar2[36] = joaat("caddy"); iVar2[37] = joaat("caddy2"); iVar2[38] = joaat("camper"); iVar2[39] = joaat("tiptruck"); iVar2[40] = joaat("tourbus"); iVar2[41] = joaat("towtruck"); iVar2[42] = joaat("towtruck2"); iVar2[43] = joaat("tractor"); iVar2[44] = joaat("tractor2"); iVar2[45] = joaat("utillitruck"); iVar2[46] = joaat("utillitruck2"); iVar2[47] = joaat("utillitruck3"); iVar2[48] = joaat("ratloader"); iVar2[49] = joaat("dloader"); iVar2[50] = joaat("docktug"); iVar2[51] = joaat("dump"); iVar2[52] = joaat("gburrito"); iVar2[53] = joaat("handler"); iVar2[54] = joaat("hauler"); iVar2[55] = joaat("journey"); iVar2[56] = joaat("rentalbus"); iVar2[57] = joaat("mixer"); iVar2[58] = joaat("rhino"); iVar2[59] = joaat("cutter"); iVar2[60] = joaat("pounder"); iVar2[61] = joaat("tiptruck2"); iVar2[62] = joaat("mixer2"); iVar2[63] = joaat("rubble"); iVar2[64] = joaat("scrap"); iVar2[65] = joaat("armytanker"); iVar2[66] = joaat("barracks2"); iVar2[67] = joaat("airbus"); iVar2[68] = joaat("coach"); iVar2[69] = joaat("pbus"); iVar2[70] = joaat("riot"); iVar2[71] = joaat("boxville3"); iVar2[72] = joaat("stockade3"); iVar2[73] = joaat("flatbed"); iVar2[74] = joaat("boxville"); iVar2[75] = joaat("burrito2"); iVar2[76] = joaat("burrito3"); iVar2[77] = joaat("burrito4"); iVar2[78] = joaat("rumpo"); iVar2[79] = joaat("speedo2"); iVar2[80] = joaat("blimp"); iVar2[81] = joaat("blimp2"); iVar2[82] = joaat("submersible"); iVar2[83] = joaat("submersible2"); iVar2[84] = joaat("blazer3"); iVar2[85] = joaat("pony2"); iVar2[86] = joaat("rumpo2"); iVar2[87] = joaat("taxi"); iVar2[88] = 0; iVar1 = 0; while (iVar1 < iVar2) { if (iVar0 == iVar2[iVar1]) { return false; } iVar1++; } return true; } } return false; } // Position - 0x349BA bool func_490(int iParam0) { switch (iParam0) { case joaat("police"): case joaat("police2"): case joaat("police3"): case joaat("police4"): case joaat("polmav"): case joaat("policeb"): case joaat("policet"): case joaat("policeold2"): case joaat("policeold1"): case joaat("sheriff"): case joaat("sheriff2"): return true; } return false; }
- ↑ Script: Mission_Race:
switch (iParam1) { case 0: sVar2 = "SLOSSANTOS"; break; case 1: sVar2 = "CITYCIRCUIT"; break; case 2: sVar2 = "AIRPORTR"; break; case 3: sVar2 = "FREEWAY"; break; case 4: sVar2 = "VERSPUCCI"; break; case 5: sVar2 = "NORTHCOAST"; break; case 6: sVar2 = "SOUTHCOAST"; break; case 7: sVar2 = "CANYON"; break; case 8: sVar2 = "LOSSANTOS"; break; }
- ↑ hao1.gxt2
=== hao1.gxt2 - Hao 1 (Shift Work) === HAO1_3 = Get a suitable car to race. HAO1_4 = This vehicle is not suitable. SEA_BACK = ~s~Get back on the ~b~Seashark. //>Get a suitable car to race/This vehicle is not suitable //>Get Back on the Seashark
- ↑ File Data
if (!entity::does_entity_exist(uParam0->f_35[1])) { func_649(&uParam0->f_35[1], iVar0[3], -91.07f, -1273.45f, 28.86f, 0.57f); vehicle::set_vehicle_colour_combination(uParam0->f_35[1], 10); } where iVar0[3] = joaat("ruiner"); and colour combination 10 = (carvariations.ymt ruiner colour 11): <Item> <indices> <Item value="31" /> <Item value="0" /> <Item value="36" /> <Item value="156" /> </indices> <liveries/> </Item>