summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/EventList.h1
-rw-r--r--src/core/Frontend.cpp1
-rw-r--r--src/core/Pad.cpp96
-rw-r--r--src/core/Stats.cpp24
-rw-r--r--src/core/Stats.h1
-rw-r--r--src/core/World.cpp13
-rw-r--r--src/core/World.h1
-rw-r--r--src/core/re3.cpp4
8 files changed, 102 insertions, 39 deletions
diff --git a/src/core/EventList.h b/src/core/EventList.h
index 0531aed7..dcca1270 100644
--- a/src/core/EventList.h
+++ b/src/core/EventList.h
@@ -24,6 +24,7 @@ enum eEventType
EVENT_CAR_SET_ON_FIRE,
EVENT_ASSAULT_NASTYWEAPON,
EVENT_ASSAULT_NASTYWEAPON_POLICE,
+ EVENT_UNK, // Not on SA it seems
EVENT_ICECREAM,
EVENT_ATM,
EVENT_SHOPSTALL,
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index 715e9061..cdecb8b4 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -5369,6 +5369,7 @@ CMenuManager::ConstructStatLine(int rowIdx)
STAT_LINE("FEST_CC", &CStats::CriminalsCaught, false, nil);
STAT_LINE("FEST_FE", &CStats::FiresExtinguished, false, nil);
STAT_LINE("DAYPLC", &(nTemp = CTimer::GetTimeInMilliseconds() + 100), false, nil);
+ //TODO(MIAMI): move this function to the CStats and add reading of Stat lines tied with "MEDIA" for the "CHASESTAT" cheatcode
return counter;
#undef STAT_LINE
diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp
index 42b26c63..193ca1c5 100644
--- a/src/core/Pad.cpp
+++ b/src/core/Pad.cpp
@@ -47,6 +47,7 @@
#include "platform.h"
#include "Stats.h"
#include "CarCtrl.h"
+#include "TrafficLights.h"
#ifdef GTA_PS2
#include "eetypes.h"
@@ -208,15 +209,20 @@ void HealthCheat()
}
}
-void VehicleCheat(bool something, int model)
+void VehicleCheat(int model)
{
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
- CStreaming::RequestModel(model, 0);
- CStreaming::LoadAllRequestedModels(something);
+ CStreaming::RequestModel(model, STREAMFLAGS_DONT_REMOVE);
+ CStreaming::LoadAllRequestedModels(false);
if (CStreaming::ms_aInfoForModel[model].m_loadState == STREAMSTATE_LOADED) {
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
- int32 node = ThePaths.FindNodeClosestToCoors(FindPlayerCoors(), PATH_CAR, 100.0f);
+ if (!(CStreaming::ms_aInfoForModel[model].m_loadState & STREAMFLAGS_DONT_REMOVE)) {
+ CStreaming::SetModelIsDeletable(model);
+ CStreaming::SetModelTxdIsDeletable(model);
+ }
+
+ int32 node = ThePaths.FindNodeClosestToCoors(FindPlayerCoors(), PATH_CAR, 100.0f);
if (node < 0) return;
#ifdef FIX_BUGS
@@ -362,16 +368,16 @@ void SunnyWeatherCheat()
CWeather::ForceWeatherNow(WEATHER_SUNNY);
}
-void CloudyWeatherCheat()
+void ExtraSunnyWeatherCheat()
{
CHud::SetHelpMessage(TheText.Get("CHEAT7"), true);
- CWeather::ForceWeatherNow(WEATHER_CLOUDY);
+ CWeather::ForceWeatherNow(WEATHER_EXTRA_SUNNY);
}
-void StormyWeatherCheat()
+void CloudyWeatherCheat()
{
CHud::SetHelpMessage(TheText.Get("CHEAT7"), true);
- CWeather::ForceWeatherNow(WEATHER_HURRICANE);
+ CWeather::ForceWeatherNow(WEATHER_CLOUDY);
}
void RainyWeatherCheat()
@@ -442,6 +448,12 @@ void PinkCarsCheat()
gbPinkCars = true;
}
+void TrafficLightsCheat()
+{
+ CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
+ CTrafficLights::bGreenLightsCheat = true;
+}
+
void MadCarsCheat()
{
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
@@ -548,6 +560,11 @@ void FlyingFishCheat(void)
CVehicle::bCheat8 = !CVehicle::bCheat8;
}
+void DoShowChaseStatCheat(void) {
+ CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
+ CStats::ShowChaseStatOnScreen = 1;
+}
+
bool
CControllerState::CheckForInput(void)
{
@@ -1030,7 +1047,7 @@ void CPad::AddToCheatString(char c)
// "CCCCCC321TCT" - CIRCLE CIRCLE CIRCLE CIRCLE CIRCLE CIRCLE R1 L2 L1 TRIANGLE CIRCLE TRIANGLE
else if ( !_CHEATCMP("TCT123CCCCCC") )
- VehicleCheat(true, MI_RHINO);
+ VehicleCheat(MI_RHINO);
// "CCCSSSSS1TCT" - CIRCLE CIRCLE CIRCLE SQUARE SQUARE SQUARE SQUARE SQUARE L1 TRIANGLE CIRCLE TRIANGLE
else if ( !_CHEATCMP("TCT1SSSSSCCC") )
@@ -1142,19 +1159,22 @@ void CPad::AddToPCCheatString(char c)
// "APLEASANTDAY"
else if (!Cheat_strncmp(KeyBoardCheatString, "\\FKU[\\VHFW]I")) {
KeyBoardCheatString[0] = ' ';
- CloudyWeatherCheat();
+ SunnyWeatherCheat();
}
// "ALOVELYDAY"
else if (!Cheat_strncmp(KeyBoardCheatString, "\\FKZY`YVML")) {
KeyBoardCheatString[0] = ' ';
- SunnyWeatherCheat();
+ ExtraSunnyWeatherCheat();
}
// "ABITDRIEG"
-
+ else if (!Cheat_strncmp(KeyBoardCheatString, "JJPSQoLIB")) {
+ KeyBoardCheatString[0] = ' ';
+ CloudyWeatherCheat();
+ }
// "CATSANDDOGS"
else if (!Cheat_strncmp(KeyBoardCheatString, "VLVEQiDZULP")) {
KeyBoardCheatString[0] = ' ';
- StormyWeatherCheat();
+ RainyWeatherCheat();
}
// "CANTSEEATHING"
else if (!Cheat_strncmp(KeyBoardCheatString, "JSPIa\\HLT_[IJ")) {
@@ -1164,10 +1184,13 @@ void CPad::AddToPCCheatString(char c)
// "PANZER"
else if (!Cheat_strncmp(KeyBoardCheatString, "UJaONk")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_RHINO);
+ VehicleCheat(MI_RHINO);
}
// "LIFEISPASSINGMEBY"
-
+ else if (!Cheat_strncmp(KeyBoardCheatString, "\\GLNTiLZTL][PeSOh")) {
+ KeyBoardCheatString[0] = ' ';
+ FastWeatherCheat();
+ }
// "BIGBANG"
else if (!Cheat_strncmp(KeyBoardCheatString, "JSHCTdE")) {
KeyBoardCheatString[0] = ' ';
@@ -1221,6 +1244,7 @@ void CPad::AddToPCCheatString(char c)
// "CHASESTAT"
else if (!Cheat_strncmp(KeyBoardCheatString, "WF[TRnDOD")) {
KeyBoardCheatString[0] = ' ';
+ DoShowChaseStatCheat();
}
// "CHICKSWITHGUNS"
else if (!Cheat_strncmp(KeyBoardCheatString, "VS\\HUoL^TVPQOc")) {
@@ -1235,6 +1259,7 @@ void CPad::AddToPCCheatString(char c)
// "GREENLIGHT"
else if (!Cheat_strncmp(KeyBoardCheatString, "WMNJYiHLSR")) {
KeyBoardCheatString[0] = ' ';
+ TrafficLightsCheat();
}
// "MIAMITRAFFIC"
else if (!Cheat_strncmp(KeyBoardCheatString, "FNMGNmWPNLVU")) {
@@ -1254,47 +1279,47 @@ void CPad::AddToPCCheatString(char c)
// "TRAVELINSTYLE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HQ`U`iLSFaNZ[")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_BLOODRA);
+ VehicleCheat(MI_BLOODRA);
}
// "THELASTRIDE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HIPSanDSFSa")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_ROMERO);
+ VehicleCheat(MI_ROMERO);
}
// "ROCKANDROLLCAR"
else if (!Cheat_strncmp(KeyBoardCheatString, "UFJMYjUKOLXKVr")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_LOVEFIST);
+ VehicleCheat(MI_LOVEFIST);
}
// "RUBBISHCAR"
else if (!Cheat_strncmp(KeyBoardCheatString, "UFJI`dEIV]")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_TRASH);
+ VehicleCheat(MI_TRASH);
}
// "GETTHEREQUICKLY"
else if (!Cheat_strncmp(KeyBoardCheatString, "\\QRDVpTLSPU\\[eT")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_BLOODRB);
+ VehicleCheat(MI_BLOODRB);
}
// "GETTHEREFAST"
else if (!Cheat_strncmp(KeyBoardCheatString, "WXHGRmHOU_RO")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_SABRETUR);
+ VehicleCheat(MI_SABRETUR);
}
// "BETTERTHANWALKING"
else if (!Cheat_strncmp(KeyBoardCheatString, "JSPLY\\ZUBSaZLtaK^")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_CADDY);
+ VehicleCheat(MI_CADDY);
}
// "GETTHEREFASTINDEED"
else if (!Cheat_strncmp(KeyBoardCheatString, "GJLE[dWZBQfZLvRXa[^WHL")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_HOTRINA);
+ VehicleCheat(MI_HOTRINA);
}
// "GETTHEREAMAZINGLYFAST"
else if (!Cheat_strncmp(KeyBoardCheatString, "WXHGfgJUJeNUHe_Kdg^HJ")) {
KeyBoardCheatString[0] = ' ';
- VehicleCheat(true, MI_HOTRINB);
+ VehicleCheat(MI_HOTRINB);
}
// LOOKLIKELANCE
else if (!Cheat_strncmp(KeyBoardCheatString, "HHUBY`NPMV\\WS")) {
@@ -1346,6 +1371,16 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igdiaz");
}
+ // DEEPFRIEDMARSBARS
+ else if (!Cheat_strncmp(KeyBoardCheatString, "VWHC`mDTEPVZMpRK")) {
+ KeyBoardCheatString[0] = ' ';
+ gfTommyFatness = 0.26f;
+ }
+ // PROGRAMMER
+ else if (!Cheat_strncmp(KeyBoardCheatString, "UJTNNmJVS[")) {
+ KeyBoardCheatString[0] = ' ';
+ gfTommyFatness = -0.3f;
+ }
// SEAWAYS
else if (!Cheat_strncmp(KeyBoardCheatString, "V^HXN`V")) {
KeyBoardCheatString[0] = ' ';
@@ -1366,17 +1401,6 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
FannyMagnetCheat();
}
- // "ILOVESCOTLAND"
- if (!_CHEATCMP("DNALTOCSEVOLI"))
- RainyWeatherCheat();
-
- // "MADWEATHER"
- if (!_CHEATCMP("REHTAEWDAM"))
- FastWeatherCheat();
-
- // "CHITTYCHITTYBB"
- if (!_CHEATCMP("BBYTTIHCYTTIHC"))
- ChittyChittyBangBangCheat();
// "NASTYLIMBSCHEAT"
if (!_CHEATCMP("TAEHCSBMILYTSAN"))
@@ -3117,6 +3141,8 @@ void CPad::ResetCheats(void)
gbBlackCars = false;
gbPinkCars = false;
CCarCtrl::bMadDriversCheat = false;
+ CTrafficLights::bGreenLightsCheat = false;
+ CStats::ShowChaseStatOnScreen = 0;
gbFastTime = false;
CTimer::SetTimeScale(1.0f);
}
diff --git a/src/core/Stats.cpp b/src/core/Stats.cpp
index 1efcee01..9c3ad084 100644
--- a/src/core/Stats.cpp
+++ b/src/core/Stats.cpp
@@ -341,6 +341,30 @@ wchar *CStats::FindCriminalRatingString()
return TheText.Get(CWorld::Players[CWorld::PlayerInFocus].m_nVisibleMoney > 10000000 ? "RATNG52" : "RATNG51");
}
+wchar *CStats::FindChaseString(float fMediaLevel) {
+ if (fMediaLevel < 20.0f) return TheText.Get("MEDIA1");
+ if (fMediaLevel < 50.0f) return TheText.Get("MEDIA2");
+ if (fMediaLevel < 75.0f) return TheText.Get("MEDIA3");
+ if (fMediaLevel < 100.0f) return TheText.Get("MEDIA4");
+ if (fMediaLevel < 150.0f) return TheText.Get("MEDIA5");
+ if (fMediaLevel < 200.0f) return TheText.Get("MEDIA6");
+ if (fMediaLevel < 250.0f) return TheText.Get("MEDIA7");
+ if (fMediaLevel < 300.0f) return TheText.Get("MEDIA8");
+ if (fMediaLevel < 350.0f) return TheText.Get("MEDIA9");
+ if (fMediaLevel < 400.0f) return TheText.Get("MEDIA10");
+ if (fMediaLevel < 500.0f) return TheText.Get("MEDIA11");
+ if (fMediaLevel < 600.0f) return TheText.Get("MEDIA12");
+ if (fMediaLevel < 700.0f) return TheText.Get("MEDIA13");
+ if (fMediaLevel < 800.0f) return TheText.Get("MEDIA14");
+ if (fMediaLevel < 900.0f) return TheText.Get("MEDIA15");
+ if (fMediaLevel < 1000.0f) return TheText.Get("MEDIA16");
+ if (fMediaLevel < 1200.0f) return TheText.Get("MEDIA17");
+ if (fMediaLevel < 1400.0f) return TheText.Get("MEDIA18");
+ if (fMediaLevel < 1600.0f) return TheText.Get("MEDIA19");
+ if (fMediaLevel < 1800.0f) return TheText.Get("MEDIA20");
+ return TheText.Get("MEDIA21");
+}
+
int32 CStats::FindCriminalRatingNumber()
{
int32 rating;
diff --git a/src/core/Stats.h b/src/core/Stats.h
index f9ad4174..ad6fe516 100644
--- a/src/core/Stats.h
+++ b/src/core/Stats.h
@@ -118,6 +118,7 @@ public:
static void RegisterLevelFireMission(int32);
static void AnotherFireExtinguished();
static wchar *FindCriminalRatingString();
+ static wchar *FindChaseString(float fMediaLevel);
static void AnotherKillFrenzyPassed();
static void SetTotalNumberKillFrenzies(int32);
static void SetTotalNumberMissions(int32);
diff --git a/src/core/World.cpp b/src/core/World.cpp
index fb2dbad3..6d5e8a81 100644
--- a/src/core/World.cpp
+++ b/src/core/World.cpp
@@ -49,6 +49,7 @@ bool CWorld::bProcessCutsceneOnly;
bool CWorld::bDoingCarCollisions;
bool CWorld::bIncludeCarTyres;
+bool CWorld::bIncludeBikers;
CColPoint CWorld::m_aTempColPts[MAX_COLLISION_POINTS];
@@ -63,6 +64,7 @@ CWorld::Initialise()
bIncludeDeadPeds = false;
bForceProcessControl = false;
bIncludeCarTyres = false;
+ bIncludeBikers = false;
}
void
@@ -272,7 +274,9 @@ CWorld::ProcessLineOfSightSector(CSector &sector, const CColLine &line, CColPoin
{
float mindist = dist;
bool deadPeds = !!bIncludeDeadPeds;
+ bool bikers = !!bIncludeBikers;
bIncludeDeadPeds = false;
+ bIncludeBikers = false;
if(checkBuildings) {
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_BUILDINGS], line, point, mindist, entity,
@@ -290,11 +294,13 @@ CWorld::ProcessLineOfSightSector(CSector &sector, const CColLine &line, CColPoin
if(checkPeds) {
if(deadPeds) bIncludeDeadPeds = true;
+ if(bikers) bIncludeBikers = true;
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_PEDS], line, point, mindist, entity,
ignoreSeeThrough, false, ignoreShootThrough);
ProcessLineOfSightSectorList(sector.m_lists[ENTITYLIST_PEDS_OVERLAP], line, point, mindist, entity,
ignoreSeeThrough, false, ignoreShootThrough);
bIncludeDeadPeds = false;
+ bIncludeBikers = false;
}
if(checkObjects) {
@@ -312,6 +318,7 @@ CWorld::ProcessLineOfSightSector(CSector &sector, const CColLine &line, CColPoin
}
bIncludeDeadPeds = deadPeds;
+ bIncludeBikers = bikers;
if(mindist < dist) {
dist = mindist;
@@ -325,22 +332,24 @@ CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColP
CEntity *&entity, bool ignoreSeeThrough, bool ignoreSomeObjects, bool ignoreShootThrough)
{
bool deadPeds = false;
+ bool bikers = false;
float mindist = dist;
CPtrNode *node;
CEntity *e;
CColModel *colmodel;
if(list.first && bIncludeDeadPeds && ((CEntity *)list.first->item)->IsPed()) deadPeds = true;
+ if(list.first && bIncludeBikers && ((CEntity *)list.first->item)->IsPed()) bikers = true;
for(node = list.first; node; node = node->next) {
e = (CEntity *)node->item;
- if(e->m_scanCode != GetCurrentScanCode() && e != pIgnoreEntity && (e->bUsesCollision || deadPeds) &&
+ if(e->m_scanCode != GetCurrentScanCode() && e != pIgnoreEntity && (e->bUsesCollision || deadPeds || bikers) &&
!(ignoreSomeObjects && CameraToIgnoreThisObject(e))) {
colmodel = nil;
e->m_scanCode = GetCurrentScanCode();
if(e->IsPed()) {
- if(e->bUsesCollision || deadPeds && ((CPed *)e)->m_nPedState == PED_DEAD) {
+ if(e->bUsesCollision || deadPeds && ((CPed *)e)->m_nPedState == PED_DEAD || bikers) {
colmodel = ((CPedModelInfo *)CModelInfo::GetModelInfo(e->GetModelIndex()))->AnimatePedColModelSkinned(e->GetClump());
} else
colmodel = nil;
diff --git a/src/core/World.h b/src/core/World.h
index 8d539061..606a3466 100644
--- a/src/core/World.h
+++ b/src/core/World.h
@@ -71,6 +71,7 @@ public:
static bool bProcessCutsceneOnly;
static bool bDoingCarCollisions;
static bool bIncludeCarTyres;
+ static bool bIncludeBikers;
static CColPoint m_aTempColPts[MAX_COLLISION_POINTS];
static void Remove(CEntity *entity);
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index 0b80862e..1393314c 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -80,7 +80,7 @@ void WeaponCheat1();
void WeaponCheat2();
void WeaponCheat3();
void HealthCheat();
-void VehicleCheat(bool something, int model);
+void VehicleCheat(int model);
void BlowUpCarsCheat();
void ChangePlayerCheat();
void MayhemCheat();
@@ -353,7 +353,7 @@ DebugMenuPopulate(void)
DebugMenuAddCmd("Cheats", "Health", HealthCheat);
DebugMenuAddCmd("Cheats", "Wanted level up", WantedLevelUpCheat);
DebugMenuAddCmd("Cheats", "Wanted level down", WantedLevelDownCheat);
- DebugMenuAddCmd("Cheats", "Tank", []() { VehicleCheat(true, MI_TAXI); });
+ DebugMenuAddCmd("Cheats", "Tank", []() { VehicleCheat(MI_TAXI); });
DebugMenuAddCmd("Cheats", "Blow up cars", BlowUpCarsCheat);
DebugMenuAddCmd("Cheats", "Change player", ChangePlayerCheat);
DebugMenuAddCmd("Cheats", "Mayhem", MayhemCheat);