1
0
Fork 0
mirror of https://git.rip/DMCA_FUCKER/re3.git synced 2024-12-23 12:10:00 +00:00

first commit for LCS

This commit is contained in:
aap 2021-01-08 01:41:40 +01:00
parent bc363a74f5
commit ebdf08a514
35 changed files with 534 additions and 533 deletions

View file

@ -58,7 +58,7 @@ function getarch(a)
return a
end
workspace "reVC"
workspace "reLCS"
language "C++"
configurations { "Debug", "Release" }
location "build"
@ -225,9 +225,9 @@ local function addSrcFiles( prefix )
return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc"
end
project "reVC"
project "reLCS"
kind "WindowedApp"
targetname "reVC"
targetname "reLCS"
targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}"
defines { "MIAMI" }
@ -303,8 +303,8 @@ project "reVC"
defines { "AUDIO_OAL" }
filter {}
if(os.getenv("GTA_VC_RE_DIR")) then
setpaths("$(GTA_VC_RE_DIR)/", "%(cfg.buildtarget.name)", "")
if(os.getenv("GTA_LCS_RE_DIR")) then
setpaths("$(GTA_LCS_RE_DIR)/", "%(cfg.buildtarget.name)", "")
end
filter "platforms:win*"

View file

@ -633,8 +633,8 @@ CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
CStreaming::RemoveCurrentZonesModels();
CStreaming::SetModelIsDeletable(MI_MALE01);
CStreaming::SetModelTxdIsDeletable(MI_MALE01);
CStreaming::SetModelIsDeletable(MI_HMOCA);
CStreaming::SetModelTxdIsDeletable(MI_HMOCA);
CStreaming::SetModelIsDeletable(MI_TAXI_D);
CStreaming::SetModelTxdIsDeletable(MI_TAXI_D);
CStreaming::SetModelIsDeletable(MI_NIGHTSTICK);
CStreaming::SetModelTxdIsDeletable(MI_NIGHTSTICK);
CStreaming::SetModelIsDeletable(MI_MISSILE);

View file

@ -5296,6 +5296,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
case MI_MEDIC: return GetMedicTalkSfx(ped, sound);
case MI_FIREMAN: return GetFiremanTalkSfx(ped, sound);
case MI_MALE01: return GetDefaultTalkSfx(ped, sound);
/* LCS: removed for now
case MI_HFYST: return GetHFYSTTalkSfx(ped, sound);
case MI_HFOST: return GetHFOSTTalkSfx(ped, sound);
case MI_HMYST: return GetHMYSTTalkSfx(ped, sound);
@ -5384,6 +5385,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
case MI_BKB: return GetBKTalkSfx(ped, sound);
case MI_PGA:
case MI_PGB: return GetPGTalkSfx(ped, sound);
*/
case MI_VICE1:
case MI_VICE2:
case MI_VICE3:
@ -7567,7 +7569,8 @@ cAudioManager::GetSGTalkSfx(CPed *ped, int16 sound)
case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1064, 12); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
if(ped->GetModelIndex() == MI_SGB) sfx += 93;
// LCS removed for now
// if(ped->GetModelIndex() == MI_SGB) sfx += 93;
return sfx;
}

View file

@ -1295,7 +1295,7 @@ cMusicManager::UsesPoliceRadio(CVehicle *veh)
bool
cMusicManager::UsesTaxiRadio(CVehicle *veh)
{
if (veh->GetModelIndex() != MI_KAUFMAN) return false;
if (veh->GetModelIndex() != MI_CABBIE) return false;
return CTheScripts::bPlayerHasMetDebbieHarry;
}

View file

@ -546,8 +546,7 @@ cAudioManager::SetupSuspectLastSeenReport()
break;
case MI_TAXI:
case MI_CABBIE:
case MI_ZEBRA:
case MI_KAUFMAN:
case MI_BORGNINE:
sample = SFX_POLICE_RADIO_TAXI;
break;
case MI_BOBCAT:

View file

@ -420,7 +420,7 @@ CGameLogic::SetUpShortCut(CVector vStartPos, float fStartAngle, CVector vEndPos,
ShortCutStartOrientation = fStartAngle;
ShortCutDestination = vEndPos;
ShortCutDestinationOrientation = fEndAngle;
CStreaming::RequestModel(MI_KAUFMAN, 0);
CStreaming::RequestModel(MI_CABBIE, 0);
}
void
@ -452,11 +452,11 @@ CGameLogic::UpdateShortCut()
{
switch (ShortCutState) {
case SHORTCUT_INIT:
if (!CStreaming::HasModelLoaded(MI_KAUFMAN)) {
CStreaming::RequestModel(MI_KAUFMAN, 0);
if (!CStreaming::HasModelLoaded(MI_CABBIE)) {
CStreaming::RequestModel(MI_CABBIE, 0);
return;
}
pShortCutTaxi = new CAutomobile(MI_KAUFMAN, RANDOM_VEHICLE);
pShortCutTaxi = new CAutomobile(MI_CABBIE, RANDOM_VEHICLE);
if (!pShortCutTaxi)
return;
pShortCutTaxi->SetPosition(ShortCutStart);

View file

@ -2201,7 +2201,7 @@ int open_script()
#endif
switch (scriptToLoad) {
case 0: scriptfile = "main.scm"; break;
case 1: scriptfile = "freeroam_miami.scm"; break;
case 1: scriptfile = "freeroam_lcs.scm"; break;
case 2: scriptfile = "main_d.scm"; break;
}
return CFileMgr::OpenFile(scriptfile, "rb");

View file

@ -1817,6 +1817,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
continue;
if (CModelInfo::IsCarModel(model) || CModelInfo::IsBikeModel(model)) {
switch (model) {
// TODO(LCS): do it right
case MI_LANDSTAL:
case MI_LINERUN:
case MI_RIO:
@ -1842,13 +1843,13 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_ANGEL:
case MI_COACH:
case MI_RCBANDIT:
case MI_ROMERO:
case MI_PACKER:
case MI_SENTXS:
//case MI_ROMERO:
//case MI_PACKER:
//case MI_SENTXS:
case MI_SQUALO:
case MI_SEASPAR:
case MI_PIZZABOY:
case MI_GANGBUR:
//case MI_GANGBUR:
case MI_AIRTRAIN:
case MI_DEADDODO:
case MI_SPEEDER:
@ -1857,44 +1858,44 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_FLATBED:
case MI_YANKEE:
case MI_CADDY:
case MI_ZEBRA:
//case MI_ZEBRA:
case MI_TOPFUN:
case MI_SKIMMER:
case MI_RCBARON:
case MI_RCRAIDER:
case MI_SPARROW:
case MI_PATRIOT:
case MI_LOVEFIST:
//case MI_LOVEFIST:
case MI_COASTG:
case MI_DINGHY:
case MI_HERMES:
case MI_SABRETUR:
//case MI_HERMES:
//case MI_SABRETUR:
case MI_PHEONIX:
case MI_WALTON:
//case MI_WALTON:
case MI_COMET:
case MI_DELUXO:
case MI_BURRITO:
case MI_SPAND:
//case MI_DELUXO:
//case MI_BURRITO:
//case MI_SPAND:
case MI_MARQUIS:
case MI_BAGGAGE:
case MI_KAUFMAN:
//case MI_KAUFMAN:
case MI_MAVERICK:
case MI_VCNMAV:
case MI_RANCHER:
//case MI_RANCHER:
case MI_FBIRANCH:
case MI_JETMAX:
case MI_HOTRING:
//case MI_HOTRING:
case MI_SANDKING:
case MI_BLISTAC:
//case MI_BLISTAC:
case MI_POLMAV:
case MI_BOXVILLE:
case MI_BENSON:
case MI_MESA:
//case MI_BOXVILLE:
//case MI_BENSON:
//case MI_MESA:
case MI_RCGOBLIN:
case MI_HOTRINA:
case MI_HOTRINB:
case MI_BLOODRA:
case MI_BLOODRB:
//case MI_HOTRINA:
//case MI_HOTRINB:
//case MI_BLOODRA:
//case MI_BLOODRB:
case MI_VICECHEE:
model = -1;
break;
@ -1909,23 +1910,23 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_MOONBEAM:
case MI_ESPERANT:
case MI_TAXI:
case MI_WASHING:
//case MI_WASHING:
case MI_BOBCAT:
case MI_BANSHEE:
case MI_CABBIE:
case MI_STALLION:
case MI_RUMPO:
case MI_ADMIRAL:
//case MI_ADMIRAL:
case MI_PCJ600:
case MI_FAGGIO:
case MI_FREEWAY:
case MI_GLENDALE:
case MI_OCEANIC:
//case MI_GLENDALE:
//case MI_OCEANIC:
case MI_SANCHEZ:
case MI_SABRE:
case MI_REGINA:
case MI_VIRGO:
case MI_GREENWOO:
//case MI_SABRE:
//case MI_REGINA:
//case MI_VIRGO:
//case MI_GREENWOO:
break;
default:
printf("CREATE_RANDOM_CAR_FOR_CAR_PARK - Unknown car model %d\n", CStreaming::ms_vehiclesLoaded[index]);

View file

@ -846,14 +846,15 @@ CFileLoader::LoadVehicleObject(const char *line)
char type[8], handlingId[16], gamename[32], animFile[16], vehclass[12];
uint32 frequency, comprules;
int32 level, misc;
float wheelScale;
float wheelScale, normalSplay;
CVehicleModelInfo *mi;
char *p;
sscanf(line, "%d %s %s %s %s %s %s %s %d %d %x %d %f",
sscanf(line, "%d %s %s %s %s %s %s %s %d %d %x %d %f %f",
&id, model, txd,
type, handlingId, gamename, animFile, vehclass,
&frequency, &level, &comprules, &misc, &wheelScale);
&frequency, &level, &comprules, &misc, &wheelScale,
&normalSplay);
mi = CModelInfo::AddVehicleModel(id);
mi->SetName(model);
@ -873,6 +874,8 @@ CFileLoader::LoadVehicleObject(const char *line)
mi->m_vehicleType = VEHICLE_TYPE_BOAT;
}else if(strcmp(type, "train") == 0){
mi->m_vehicleType = VEHICLE_TYPE_TRAIN;
}else if(strcmp(type, "ferry") == 0){
mi->m_vehicleType = VEHICLE_TYPE_FERRY;
}else if(strcmp(type, "heli") == 0){
mi->m_vehicleType = VEHICLE_TYPE_HELI;
}else if(strcmp(type, "plane") == 0){

View file

@ -375,7 +375,7 @@ bool CGame::Initialise(const char* datFile)
#ifdef USE_TEXTURE_POOL
_TexturePoolsUnknown(false);
#endif
currLevel = LEVEL_BEACH;
currLevel = LEVEL_INDUSTRIAL;
currArea = AREA_MAIN_MAP;
PUSH_MEMID(MEMID_TEXTURES);
@ -441,7 +441,7 @@ bool CGame::Initialise(const char* datFile)
CdStreamAddImage("MODELS\\GTA3.IMG");
CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
// CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
CFileLoader::LoadLevel(datFile);
#ifdef EXTENDED_PIPELINES
// for generic fallback
@ -661,8 +661,9 @@ void CGame::ReInitGameObjectVariables(void)
CDraw::SetFOV(120.0f);
CDraw::ms_fLODDistance = 500.0f;
CStreaming::RequestBigBuildings(LEVEL_GENERIC);
CStreaming::RemoveIslandsNotUsed(LEVEL_BEACH);
CStreaming::RemoveIslandsNotUsed(LEVEL_MAINLAND);
CStreaming::RemoveIslandsNotUsed(LEVEL_INDUSTRIAL);
CStreaming::RemoveIslandsNotUsed(LEVEL_COMMERCIAL);
CStreaming::RemoveIslandsNotUsed(LEVEL_SUBURBAN);
CStreaming::LoadAllRequestedModels(false);
currArea = AREA_MAIN_MAP;
CPed::Initialise();

View file

@ -3,10 +3,11 @@
enum eLevelName {
LEVEL_IGNORE = -1, // beware, this is only used in CPhysical's m_nZoneLevel
LEVEL_GENERIC = 0,
LEVEL_BEACH,
LEVEL_MAINLAND,
LEVEL_INDUSTRIAL,
LEVEL_COMMERCIAL,
LEVEL_SUBURBAN,
NUM_LEVELS
NUM_LEVELS // LCS: should be 5 eventually...
};
enum eAreaName {

View file

@ -97,6 +97,7 @@ extern bool gbFastTime;
extern bool gGravityCheat;
#endif
/* LCS: removed
void SpecialCarCheats()
{
if ( !CVehicle::bCheat9 )
@ -145,6 +146,7 @@ void SpecialCarCheats()
CPad::bHasPlayerCheated = true;
}
}
*/
void PickUpChicksCheat()
{
@ -370,7 +372,7 @@ void ChangePlayerCheat()
do
{
do {
modelId = CGeneral::GetRandomNumberInRange(0, MI_PGA);
modelId = CGeneral::GetRandomNumberInRange(0, MI_GANG18);
anotherModelId = modelId+1;
} while (!CModelInfo::GetModelInfo(anotherModelId));
} while (anotherModelId >= MI_SPECIAL01 && anotherModelId <= MI_SPECIAL04 || modelId == MI_TAXI_D);
@ -589,16 +591,18 @@ void SuicideCheat(void) {
}
void DoChicksWithGunsCheat(void) {
/* // broken in LCS
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER));
CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER));
CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER));
CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER));
CStreaming::RemoveCurrentZonesModels();
CGangs::SetGangPedModels(GANG_PLAYER, MI_HFYBE, MI_WFYBE);
CGangs::SetGangPedModels(GANG_PLAYER, MI_CAS_WOM, MI_HOS_WOM);
CGangs::SetGangWeapons(GANG_PLAYER, WEAPONTYPE_M4, WEAPONTYPE_M4);
CStats::CheatedCount += 1000;
CPad::bHasPlayerCheated = true;
*/
}
//////////////////////////////////////////////////////////////////////////
@ -1420,6 +1424,8 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
BlackCarsCheat();
}
/*
// LCS: removed for now
// "TRAVELINSTYLE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HQ`U`iLSFaNZ[")) {
KeyBoardCheatString[0] = ' ';
@ -1515,6 +1521,7 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igdiaz");
}
*/
// DEEPFRIEDMARSBARS
else if (!Cheat_strncmp(KeyBoardCheatString, "VWHC`mDTEPVZMpRK")) {
KeyBoardCheatString[0] = ' ';
@ -1530,11 +1537,13 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' ';
BackToTheFuture();
}
/* LCS: removed
// LOADSOFLITTLETHINGS
else if (!Cheat_strncmp(KeyBoardCheatString, "VLUJUoHSU_VTMo`J]bV")) {
KeyBoardCheatString[0] = ' ';
SpecialCarCheats();
}
*/
// HOPINGIRL
else if (!Cheat_strncmp(KeyBoardCheatString, "OWPH[dSVI")) {
KeyBoardCheatString[0] = ' ';

View file

@ -78,10 +78,16 @@ size_t CStreaming::ms_memoryAvailable;
int32 desiredNumVehiclesLoaded = 12;
CEntity *pIslandLODmainlandEntity;
CEntity *pIslandLODbeachEntity;
int32 islandLODmainland;
int32 islandLODbeach;
CEntity *pIslandLODindustEntity;
CEntity *pIslandLODcomIndEntity;
CEntity *pIslandLODcomSubEntity;
CEntity *pIslandLODsubIndEntity;
CEntity *pIslandLODsubComEntity;
int32 islandLODindust;
int32 islandLODcomInd;
int32 islandLODcomSub;
int32 islandLODsubInd;
int32 islandLODsubCom;
#ifndef MASTER
bool gbPrintStats;
@ -240,12 +246,21 @@ CStreaming::Init2(void)
// find island LODs
pIslandLODmainlandEntity = nil;
pIslandLODbeachEntity = nil;
islandLODmainland = -1;
islandLODbeach = -1;
CModelInfo::GetModelInfo("IslandLODmainland", &islandLODmainland);
CModelInfo::GetModelInfo("IslandLODbeach", &islandLODbeach);
pIslandLODindustEntity = nil;
pIslandLODcomIndEntity = nil;
pIslandLODcomSubEntity = nil;
pIslandLODsubIndEntity = nil;
pIslandLODsubComEntity = nil;
islandLODindust = -1;
islandLODcomInd = -1;
islandLODcomSub = -1;
islandLODsubInd = -1;
islandLODsubCom = -1;
CModelInfo::GetModelInfo("IslandLODInd", &islandLODindust);
CModelInfo::GetModelInfo("IslandLODcomIND", &islandLODcomInd);
CModelInfo::GetModelInfo("IslandLODcomSUB", &islandLODcomSub);
CModelInfo::GetModelInfo("IslandLODsubIND", &islandLODsubInd);
CModelInfo::GetModelInfo("IslandLODsubCOM", &islandLODsubCom);
#ifndef MASTER
VarConsole.Add("Streaming Debug", &gbPrintStats, true);
@ -912,13 +927,17 @@ CStreaming::RequestIslands(eLevelName level)
{
ISLAND_LOADING_ISNT(HIGH)
switch(level){
case LEVEL_MAINLAND:
if(islandLODbeach != -1)
RequestModel(islandLODbeach, BIGBUILDINGFLAGS);
case LEVEL_INDUSTRIAL:
RequestModel(islandLODcomInd, BIGBUILDINGFLAGS);
RequestModel(islandLODsubInd, BIGBUILDINGFLAGS);
break;
case LEVEL_BEACH:
if(islandLODmainland != -1)
RequestModel(islandLODmainland, BIGBUILDINGFLAGS);
case LEVEL_COMMERCIAL:
RequestModel(islandLODindust, BIGBUILDINGFLAGS);
RequestModel(islandLODsubCom, BIGBUILDINGFLAGS);
break;
case LEVEL_SUBURBAN:
RequestModel(islandLODindust, BIGBUILDINGFLAGS);
RequestModel(islandLODcomSub, BIGBUILDINGFLAGS);
break;
default: break;
}
@ -1127,10 +1146,12 @@ CStreaming::RemoveModel(int32 id)
void
CStreaming::RemoveUnusedBuildings(eLevelName level)
{
if(level != LEVEL_BEACH)
RemoveBuildings(LEVEL_BEACH);
if(level != LEVEL_MAINLAND)
RemoveBuildings(LEVEL_MAINLAND);
if(level != LEVEL_INDUSTRIAL)
RemoveBuildings(LEVEL_INDUSTRIAL);
if(level != LEVEL_COMMERCIAL)
RemoveBuildings(LEVEL_COMMERCIAL);
if(level != LEVEL_SUBURBAN)
RemoveBuildings(LEVEL_SUBURBAN);
}
void
@ -1253,10 +1274,12 @@ CStreaming::RemoveUnusedBigBuildings(eLevelName level)
{
ISLAND_LOADING_IS(LOW)
{
if(level != LEVEL_BEACH)
RemoveBigBuildings(LEVEL_BEACH);
if(level != LEVEL_MAINLAND)
RemoveBigBuildings(LEVEL_MAINLAND);
if(level != LEVEL_INDUSTRIAL)
RemoveBigBuildings(LEVEL_INDUSTRIAL);
if(level != LEVEL_COMMERCIAL)
RemoveBigBuildings(LEVEL_COMMERCIAL);
if(level != LEVEL_SUBURBAN)
RemoveBigBuildings(LEVEL_SUBURBAN);
}
RemoveIslandsNotUsed(level);
}
@ -1278,15 +1301,21 @@ void
CStreaming::RemoveIslandsNotUsed(eLevelName level)
{
int i;
if(pIslandLODmainlandEntity == nil)
if(pIslandLODindustEntity == nil)
for(i = CPools::GetBuildingPool()->GetSize()-1; i >= 0; i--){
CBuilding *building = CPools::GetBuildingPool()->GetSlot(i);
if(building == nil)
continue;
if(building->GetModelIndex() == islandLODmainland)
pIslandLODmainlandEntity = building;
if(building->GetModelIndex() == islandLODbeach)
pIslandLODbeachEntity = building;
if(building->GetModelIndex() == islandLODindust)
pIslandLODindustEntity = building;
else if(building->GetModelIndex() == islandLODcomInd)
pIslandLODcomIndEntity = building;
else if(building->GetModelIndex() == islandLODcomSub)
pIslandLODcomSubEntity = building;
else if(building->GetModelIndex() == islandLODsubInd)
pIslandLODsubIndEntity = building;
else if(building->GetModelIndex() == islandLODsubCom)
pIslandLODsubComEntity = building;
}
#ifdef NO_ISLAND_LOADING
if(FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) {
@ -1295,12 +1324,27 @@ CStreaming::RemoveIslandsNotUsed(eLevelName level)
} else
#endif
switch(level){
case LEVEL_MAINLAND:
DeleteIsland(pIslandLODmainlandEntity);
case LEVEL_INDUSTRIAL:
DeleteIsland(pIslandLODindustEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubComEntity);
break;
case LEVEL_BEACH:
DeleteIsland(pIslandLODbeachEntity);
case LEVEL_COMMERCIAL:
DeleteIsland(pIslandLODcomIndEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubIndEntity);
break;
case LEVEL_SUBURBAN:
DeleteIsland(pIslandLODsubIndEntity);
DeleteIsland(pIslandLODsubComEntity);
DeleteIsland(pIslandLODcomIndEntity);
break;
default:
DeleteIsland(pIslandLODindustEntity);
DeleteIsland(pIslandLODcomIndEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubIndEntity);
DeleteIsland(pIslandLODsubComEntity);
break;
}
}
@ -1562,6 +1606,7 @@ CStreaming::IsObjectInCdImage(int32 id)
void
CStreaming::SetModelIsDeletable(int32 id)
{
assert(id >= 0); // guard against fake IDs
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_DONT_REMOVE;
if ((id >= STREAM_OFFSET_TXD && id < STREAM_OFFSET_COL || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
(ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED) == 0){
@ -1640,11 +1685,11 @@ CStreaming::StreamVehiclesAndPeds(void)
}
if(FindPlayerPed()->m_pWanted->AreFbiRequired()){
RequestModel(MI_FBIRANCH, STREAMFLAGS_DONT_REMOVE);
RequestModel(MI_FBICAR, STREAMFLAGS_DONT_REMOVE);
RequestModel(MI_FBI, STREAMFLAGS_DONT_REMOVE);
}else{
SetModelIsDeletable(MI_FBIRANCH);
if(!HasModelLoaded(MI_FBIRANCH))
SetModelIsDeletable(MI_FBICAR);
if(!HasModelLoaded(MI_FBICAR))
SetModelIsDeletable(MI_FBI);
}
@ -1664,6 +1709,7 @@ CStreaming::StreamVehiclesAndPeds(void)
else
SetModelIsDeletable(MI_CHOPPER);
/* LCS: removed
if (FindPlayerPed()->m_pWanted->AreMiamiViceRequired()) {
SetModelIsDeletable(MI_VICE1);
SetModelIsDeletable(MI_VICE2);
@ -1705,6 +1751,7 @@ CStreaming::StreamVehiclesAndPeds(void)
SetModelIsDeletable(MI_VICE7);
SetModelIsDeletable(MI_VICE8);
}
*/
if(timeBeforeNextLoad >= 0)
timeBeforeNextLoad--;

View file

@ -16,7 +16,7 @@
#define WORLD_SIZE_X (NUMSECTORS_X * SECTOR_SIZE_X)
#define WORLD_SIZE_Y (NUMSECTORS_Y * SECTOR_SIZE_Y)
#define WORLD_MIN_X (-2400.0f)
#define WORLD_MIN_X (-2000.0f)
#define WORLD_MIN_Y (-2000.0f)
#define WORLD_MAX_X (WORLD_MIN_X + WORLD_SIZE_X)

View file

@ -88,20 +88,20 @@ CTheZones::Init(void)
TotalNumberOfInfoZones = 1;
strcpy(InfoZoneArray[0].name, "CITYINF");
InfoZoneArray[0].minx = -2400.0f;
InfoZoneArray[0].minx = -2000.0f;
InfoZoneArray[0].miny = -2000.0f;
InfoZoneArray[0].minz = -500.0f;
InfoZoneArray[0].maxx = 1600.0f;
InfoZoneArray[0].maxx = 2000.0f;
InfoZoneArray[0].maxy = 2000.0f;
InfoZoneArray[0].maxz = 500.0f;
InfoZoneArray[0].level = LEVEL_GENERIC;
InfoZoneArray[0].type = ZONE_INFO;
strcpy(NavigationZoneArray[0].name, "VICE_C");
NavigationZoneArray[0].minx = -2400.0f;
NavigationZoneArray[0].minx = -2000.0f;
NavigationZoneArray[0].miny = -2000.0f;
NavigationZoneArray[0].minz = -500.0f;
NavigationZoneArray[0].maxx = 1600.0f;
NavigationZoneArray[0].maxx = 2000.0f;
NavigationZoneArray[0].maxy = 2000.0f;
NavigationZoneArray[0].maxz = 500.0f;
NavigationZoneArray[0].level = LEVEL_GENERIC;
@ -115,10 +115,10 @@ CTheZones::Init(void)
}
TotalNumberOfMapZones = 1;
strcpy(MapZoneArray[0].name, "THEMAP");
MapZoneArray[0].minx = -2400.0f;
MapZoneArray[0].minx = -2000.0f;
MapZoneArray[0].miny = -2000.0f;
MapZoneArray[0].minz = -500.0f;
MapZoneArray[0].maxx = 1600.0f;
MapZoneArray[0].maxx = 2000.0f;
MapZoneArray[0].maxy = 2000.0f;
MapZoneArray[0].maxz = 500.0f;
MapZoneArray[0].level = LEVEL_GENERIC;

View file

@ -7,15 +7,15 @@ enum Config {
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
MODELINFOSIZE = 6500, // 4900 on PS2
TXDSTORESIZE = 1385,
COLSTORESIZE = 31,
MODELINFOSIZE = 6500, // only 4900
TXDSTORESIZE = 1385, // only 1200
COLSTORESIZE = 31, // only 15
EXTRADIRSIZE = 256,
CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 3885,
TIMEMODELSIZE = 385,
CLUMPMODELSIZE = 5,
CLUMPMODELSIZE = 10,
WEAPONMODELSIZE = 37,
PEDMODELSIZE = 130,
VEHICLEMODELSIZE = 110,
@ -26,19 +26,19 @@ enum Config {
NUMOBJECTINFO = 210,
// Pool sizes
NUMPTRNODES = 50000,
NUMENTRYINFOS = 3200,
NUMPEDS = 140,
NUMVEHICLES = 110,
NUMBUILDINGS = 7000,
NUMTREADABLES = 1,
NUMOBJECTS = 460,
NUMDUMMIES = 2340,
NUMPTRNODES = 50000, // only 30100
NUMENTRYINFOS = 4000,
NUMPEDS = 140, // only 70
NUMVEHICLES = 110, // only 70
NUMBUILDINGS = 7000, // only 6757
NUMTREADABLES = 1300,
NUMOBJECTS = 475,
NUMDUMMIES = 3000,
NUMAUDIOSCRIPTOBJECTS = 192,
NUMCOLMODELS = 4400,
NUMCUTSCENEOBJECTS = 50, // not a pool in VC
NUMANIMBLOCKS = 35,
NUMANIMBLOCKS = 60,
NUMANIMATIONS = 450,
NUMTEMPOBJECTS = 40,
@ -58,13 +58,13 @@ enum Config {
NUMREFERENCES = 800,
// Zones
NUMAUDIOZONES = 14,
NUMAUDIOZONES = 36,
NUMINFOZONES = 169,
NUMMAPZONES = 39,
NUMNAVIGZONES = 20,
NUMMAPZONES = 110,
NUMNAVIGZONES = 70,
// Cull zones
NUMATTRIBZONES = 704,
NUMATTRIBZONES = 900,
NUMOCCLUSIONVOLUMES = 350,
NUMACTIVEOCCLUDERS = 48,
@ -208,7 +208,7 @@ enum Config {
# define RANDOMSPLASH // use random splash as on PS2
# define PS2_MATFX
# endif
# define PC_PLAYER_CONTROLS // mouse player/cam mode
//# define PC_PLAYER_CONTROLS // mouse player/cam mode
# define GTA_REPLAY
# define GTA_SCENE_EDIT
#elif defined GTA_XBOX
@ -256,7 +256,7 @@ enum Config {
#define USE_TXD_CDIMAGE // generate and load textures from txd.img
#define PS2_ALPHA_TEST // emulate ps2 alpha test
#define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number
#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
//#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
#define DISABLE_VSYNC_ON_TEXTURE_CONVERSION // make texture conversion work faster by disabling vsync
//#define USE_TEXTURE_POOL
#ifdef LIBRW
@ -310,7 +310,7 @@ enum Config {
# ifdef CUSTOM_FRONTEND_OPTIONS
# define GRAPHICS_MENU_OPTIONS // otherwise Display settings will be scrollable
# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
//# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
# define CUTSCENE_BORDERS_SWITCH
//# define MULTISAMPLING // adds MSAA option
# define INVERT_LOOK_FOR_PAD // enable the hidden option

View file

@ -157,7 +157,7 @@ void CheckAndSaveIniFloat(const char *cat, const char *key, float val, bool &cha
void LoadINISettings()
{
cfg.load_file("reVC.ini");
cfg.load_file("reLCS.ini");
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
// Written by assuming the codes below will run after _InputInitialiseJoys().
@ -260,7 +260,7 @@ void SaveINISettings()
CheckAndSaveIniInt("Rendering", "BackfaceCulling", gBackfaceCulling, changed);
if (changed)
cfg.write_file("reVC.ini");
cfg.write_file("reLCS.ini");
}
#endif
@ -290,7 +290,6 @@ void FastWeatherCheat();
void OnlyRenderWheelsCheat();
void ChittyChittyBangBangCheat();
void StrongGripCheat();
void SpecialCarCheats();
void PickUpChicksCheat();
DebugMenuEntry *carCol1;
@ -561,7 +560,6 @@ DebugMenuPopulate(void)
DebugMenuAddCmd("Cheats", "Only render wheels", OnlyRenderWheelsCheat);
DebugMenuAddCmd("Cheats", "Chitty chitty bang bang", ChittyChittyBangBangCheat);
DebugMenuAddCmd("Cheats", "Strong grip", StrongGripCheat);
DebugMenuAddCmd("Cheats", "Special car", SpecialCarCheats);
DebugMenuAddCmd("Cheats", "Pickup chicks", PickUpChicksCheat);
static int spawnCarId = MI_LANDSTAL;

View file

@ -157,96 +157,85 @@ enum
MI_FIREMAN,
MI_MALE01,
MI_HFYST = 9,
MI_HFOST,
MI_HMYST,
MI_HMOST,
MI_HFYRI,
MI_HFORI,
MI_HMYRI,
MI_HMORI,
MI_HFYBE,
MI_HFOBE,
MI_HMYBE,
MI_HMOBE,
MI_HFYBU,
MI_HFYMD,
MI_HFYCG,
MI_HFYPR,
MI_HFOTR,
MI_HMOTR,
MI_HMYAP,
MI_HMOCA,
MI_TAXI_D = MI_HMOCA,
MI_BMODK,
MI_BMYKR,
MI_BFYST,
MI_BFOST,
MI_BMYST,
MI_BMOST,
MI_BFYRI,
MI_BFORI,
MI_BMYRI,
MI_BFYBE,
MI_BMYBE,
MI_BFOBE,
MI_BMOBE,
MI_BMYBU,
MI_BFYPR,
MI_BFOTR,
MI_BMOTR,
MI_BMYPI,
MI_BMYBB,
MI_WMYCR,
MI_WFYST,
MI_WFOST,
MI_WMYST,
MI_WMOST,
MI_WFYRI,
MI_WFORI,
MI_WMYRI,
MI_WMORI,
MI_WFYBE,
MI_WMYBE,
MI_WFOBE,
MI_WMOBE,
MI_WMYCW,
MI_WMYGO,
MI_WFOGO,
MI_WMOGO,
MI_WFYLG,
MI_WMYLG,
MI_WFYBU,
MI_WMYBU,
MI_WMOBU,
MI_WFYPR,
MI_WFOTR,
MI_WMOTR,
MI_WMYPI,
MI_WMOCA,
MI_WFYJG,
MI_WMYJG,
MI_WFYSK,
MI_WMYSK,
MI_WFYSH,
MI_WFOSH,
MI_JFOTO,
MI_JMOTO,
MI_TAXI_D = 9,
MI_PIMP,
MI_CRIMINAL01,
MI_CRIMINAL02,
MI_MALE02,
MI_MALE03,
MI_FATMALE01,
MI_FATMALE02,
MI_FEMALE01,
MI_FEMALE02,
MI_FEMALE03,
MI_FATFEMALE01,
MI_FATFEMALE02,
MI_PROSTITUTE,
MI_PROSTITUTE2,
MI_P_MAN1,
MI_P_MAN2,
MI_P_WOM1,
MI_P_WOM2,
MI_CT_MAN1,
MI_CT_MAN2,
MI_CT_WOM1,
MI_CT_WOM2,
MI_LI_MAN1,
MI_LI_MAN2,
MI_LI_WOM1,
MI_LI_WOM2,
MI_DOCKER1,
MI_DOCKER2,
MI_SCUM_MAN,
MI_SCUM_WOM,
MI_WORKER1,
MI_WORKER2,
MI_B_MAN1,
MI_B_MAN2,
MI_B_MAN3,
MI_B_WOM1,
MI_B_WOM2,
MI_B_WOM3,
MI_MOD_MAN,
MI_MOD_WOM,
MI_ST_MAN,
MI_ST_WOM,
MI_FAN_MAN1,
MI_FAN_MAN2,
MI_FAN_WOM,
MI_HOS_MAN,
MI_HOS_WOM,
MI_CONST1,
MI_CONST2,
MI_SHOPPER1,
MI_SHOPPER2,
MI_SHOPPER3,
MI_STUD_MAN,
MI_STUD_WOM,
MI_CAS_MAN,
MI_CAS_WOM,
MI_CAMP_MAN,
MI_CAMP_WOM,
MI_HITMAN,
MI_CBA,// = 83,
MI_CBB,
MI_HNA,
MI_HNB,
MI_SGA,
MI_SGB,
MI_CLA,
MI_CLB,
MI_GDA,
MI_GDB,
MI_BKA,
MI_BKB,
MI_PGA,
MI_PGB,
MI_GANG01 = 79,
MI_GANG02,
MI_GANG03,
MI_GANG04,
MI_GANG05,
MI_GANG06,
MI_GANG07,
MI_GANG08,
MI_GANG09,
MI_GANG10,
MI_GANG11,
MI_GANG12,
MI_GANG13,
MI_GANG14,
MI_GANG15,
MI_GANG16,
MI_GANG17,
MI_GANG18,
MI_VICE1,
MI_VICE2,
MI_VICE3,
@ -283,19 +272,20 @@ enum
MI_LAST_PED = MI_SPECIAL21,
MI_FIRST_VEHICLE,
MI_LANDSTAL = MI_FIRST_VEHICLE,
MI_SPIDER = MI_FIRST_VEHICLE,
MI_LANDSTAL,
MI_IDAHO,
MI_STINGER,
MI_LINERUN,
MI_PEREN,
MI_SENTINEL,
MI_RIO,
MI_FIRETRUCK,
MI_PATRIOT,
MI_FIRETRUK,
MI_TRASH,
MI_STRETCH,
MI_MANANA,
MI_INFERNUS,
MI_VOODOO,
MI_BLISTA,
MI_PONY,
MI_MULE,
MI_CHEETAH,
@ -304,100 +294,121 @@ enum
MI_MOONBEAM,
MI_ESPERANT,
MI_TAXI,
MI_WASHING,
MI_KURUMA,
MI_BOBCAT,
MI_MRWHOOP,
MI_BFINJECT,
MI_HUNTER,
MI_HEARSE,
MI_POLICE,
MI_ENFORCER,
MI_SECURICA,
MI_BANSHEE,
MI_PREDATOR,
MI_BUS,
MI_RHINO,
MI_BARRACKS,
MI_CUBAN,
MI_CHOPPER,
MI_ANGEL,
MI_DODO,
MI_COACH,
MI_CABBIE,
MI_STALLION,
MI_RUMPO,
MI_RCBANDIT,
MI_ROMERO,
MI_PACKER,
MI_SENTXS,
MI_ADMIRAL,
MI_SQUALO,
MI_SEASPAR,
MI_PIZZABOY,
MI_GANGBUR,
MI_AIRTRAIN,
MI_DEADDODO,
MI_SPEEDER,
MI_REEFER,
MI_TROPIC,
MI_BELLYUP,
MI_MRWONGS,
MI_MAFIA,
MI_YARDIE,
MI_YAKUZA,
MI_DIABLOS,
MI_COLUMB,
MI_HOODS,
MI_PANLANT,
MI_FLATBED,
MI_YANKEE,
MI_CADDY,
MI_ZEBRA,
MI_TOPFUN,
MI_SKIMMER,
MI_BORGNINE,
MI_TOYZ,
MI_CAMPVAN,
MI_BALLOT,
MI_SHELBY,
MI_PONTIAC,
MI_ESPRIT,
MI_AMMOTRUK,
MI_HOTROD,
MI_SINDACCO_CAR,
MI_FORELLI_CAR,
MI_FERRY,
MI_GHOST,
MI_SPEEDER,
MI_REEFER,
MI_PREDATOR,
MI_TRAIN,
MI_ESCAPE,
MI_CHOPPER,
MI_AIRTRAIN,
MI_DEADDODO,
MI_ANGEL,
MI_PIZZABOY,
MI_NOODLEBOY,
MI_PCJ600,
MI_FAGGIO,
MI_FREEWAY,
MI_RCBARON,
MI_RCRAIDER,
MI_GLENDALE,
MI_OCEANIC,
MI_ANGEL2,
MI_SANCHEZ2,
MI_SANCHEZ,
MI_RCGOBLIN,
MI_RCRAIDER,
MI_HUNTER,
MI_MAVERICK,
MI_POLMAV,
MI_VCNMAV,
MI_LAST_VEHICLE = MI_VCNMAV,
// HACK HACK, hopefully temporary
MI_SEASPAR = -1000,
MI_SPARROW,
MI_PATRIOT,
MI_LOVEFIST,
MI_RCBARON,
MI_TOPFUN,
MI_CADDY,
MI_BAGGAGE,
MI_FBIRANCH,
MI_VICECHEE,
MI_FIRETRUCK,
MI_RIO,
MI_SQUALO,
MI_JETMAX,
MI_COASTG,
MI_DINGHY,
MI_HERMES,
MI_SABRE,
MI_SABRETUR,
MI_MARQUIS,
MI_SKIMMER,
MI_TROPIC,
MI_SANDKING,
MI_VOODOO,
MI_CUBAN,
MI_PHEONIX,
MI_WALTON,
MI_REGINA,
MI_COMET,
MI_SABRE,
MI_VIRGO,
MI_RANCHER,
MI_BLISTAC,
MI_WASHING,
MI_ADMIRAL,
MI_SABRETUR,
MI_DELUXO,
MI_HOTRING,
MI_REGINA,
MI_SENTXS,
MI_GLENDALE,
MI_OCEANIC,
MI_HERMES,
MI_GREENWOO,
MI_LOVEFIST,
MI_GANGBUR,
MI_BURRITO,
MI_SPAND,
MI_MARQUIS,
MI_BAGGAGE,
MI_KAUFMAN,
MI_MAVERICK,
MI_VCNMAV,
MI_RANCHER,
MI_FBIRANCH,
MI_VIRGO,
MI_GREENWOO,
MI_JETMAX,
MI_HOTRING,
MI_SANDKING,
MI_BLISTAC,
MI_POLMAV,
MI_BOXVILLE,
MI_BENSON,
MI_MESA,
MI_RCGOBLIN,
MI_HOTRINA,
MI_HOTRINB,
MI_BLOODRA,
MI_BLOODRB,
MI_VICECHEE,
MI_PACKER,
MI_WALTON,
MI_ROMERO,
// HACK
MI_TRAIN = -1,
MI_DODO = -2,
MI_LAST_VEHICLE = MI_VICECHEE,
MI_WHEEL_RIM,
MI_WHEEL_RIM = 237,
MI_WHEEL_OFFROAD,
MI_WHEEL_TRUCK,
@ -458,14 +469,18 @@ enum
MI_FINGERS,
MI_MINIGUN2,
MI_CUTOBJ01,// = 295,
MI_CUTOBJ01 = 120,
MI_CUTOBJ02,
MI_CUTOBJ03,
MI_CUTOBJ04,
MI_CUTOBJ05,
MI_CUTOBJ06,
MI_CUTOBJ07,
MI_CUTOBJ08,
MI_CUTOBJ09,
MI_CUTOBJ10,
NUM_DEFAULT_MODELS,// = 300
NUM_DEFAULT_MODELS = 300
};
enum{

View file

@ -175,7 +175,7 @@ CSimpleModelInfo::FindRelatedModel(int32 minID, int32 maxID)
}
}
#define NEAR_DRAW_DIST 0.0f // 100.0f in liberty city
#define NEAR_DRAW_DIST 100.0f // 0.0f in vice city
void
CSimpleModelInfo::SetupBigBuilding(int32 minID, int32 maxID)

View file

@ -31,6 +31,7 @@ enum eVehicleType {
VEHICLE_TYPE_HELI,
VEHICLE_TYPE_PLANE,
VEHICLE_TYPE_BIKE,
VEHICLE_TYPE_FERRY,
NUM_VEHICLE_TYPES
};

View file

@ -22,23 +22,24 @@ CGangInfo::CGangInfo() :
void CGangs::Initialise(void)
{
SetGangPedModels(GANG_CUBAN, MI_CBA, MI_CBB);
SetGangPedModels(GANG_HAITIAN, MI_HNA, MI_HNB);
SetGangPedModels(GANG_STREET, MI_SGA, MI_SGB);
SetGangPedModels(GANG_DIAZ, MI_CLA, MI_CLB);
SetGangPedModels(GANG_SECURITY, MI_GDA, MI_GDB);
SetGangPedModels(GANG_BIKER, MI_BKA, MI_BKB);
SetGangPedModels(GANG_PLAYER, MI_PGA, MI_PGB);
SetGangPedModels(GANG_GOLFER, MI_WFOGO, MI_WMOGO);
SetGangVehicleModel(GANG_CUBAN, MI_CUBAN);
SetGangVehicleModel(GANG_HAITIAN, MI_VOODOO);
SetGangVehicleModel(GANG_STREET, MI_GANGBUR);
SetGangVehicleModel(GANG_DIAZ, -1);
SetGangVehicleModel(GANG_SECURITY, -1);
SetGangVehicleModel(GANG_BIKER, MI_ANGEL);
SetGangVehicleModel(GANG_PLAYER, -1);
SetGangVehicleModel(GANG_GOLFER, MI_CADDY);
SetGangWeapons(GANG_GOLFER, WEAPONTYPE_GOLFCLUB, WEAPONTYPE_GOLFCLUB);
SetGangPedModels(GANG_MAFIA, MI_GANG01, MI_GANG02);
SetGangPedModels(GANG_TRIAD, MI_GANG03, MI_GANG04);
SetGangPedModels(GANG_DIABLOS, MI_GANG05, MI_GANG06);
SetGangPedModels(GANG_YAKUZA, MI_GANG07, MI_GANG08);
SetGangPedModels(GANG_YARDIE, MI_GANG09, MI_GANG10);
SetGangPedModels(GANG_COLUMB, MI_GANG11, MI_GANG12);
SetGangPedModels(GANG_HOODS, MI_GANG13, MI_GANG14);
SetGangPedModels(GANG_FORELLI, MI_GANG15, MI_GANG16);
SetGangPedModels(GANG_SINDACCO, MI_GANG17, MI_GANG18);
SetGangVehicleModel(GANG_MAFIA, MI_MAFIA);
SetGangVehicleModel(GANG_TRIAD, MI_BELLYUP);
SetGangVehicleModel(GANG_DIABLOS, MI_DIABLOS);
SetGangVehicleModel(GANG_YAKUZA, MI_YAKUZA);
SetGangVehicleModel(GANG_YARDIE, MI_YARDIE);
SetGangVehicleModel(GANG_COLUMB, MI_COLUMB);
SetGangVehicleModel(GANG_HOODS, MI_HOODS);
SetGangVehicleModel(GANG_FORELLI, MI_FORELLI_CAR);
SetGangVehicleModel(GANG_SINDACCO, MI_SINDACCO_CAR);
#ifdef FIX_BUGS
for (int i = 0; i < NUM_GANGS; i++)
SetGangPedModelOverride(i, -1);

View file

@ -17,15 +17,15 @@ struct CGangInfo
VALIDATE_SIZE(CGangInfo, 0x10);
enum {
GANG_CUBAN = 0,
GANG_HAITIAN,
GANG_STREET,
GANG_DIAZ,
GANG_SECURITY,
GANG_BIKER,
GANG_PLAYER,
GANG_GOLFER,
GANG_9,
GANG_MAFIA = 0,
GANG_TRIAD,
GANG_DIABLOS,
GANG_YAKUZA,
GANG_YARDIE,
GANG_COLUMB,
GANG_HOODS,
GANG_FORELLI,
GANG_SINDACCO,
NUM_GANGS
};

View file

@ -9433,7 +9433,7 @@ CPed::SetRadioStation(void)
if (IsPlayer() || !m_pMyVehicle || m_pMyVehicle->pDriver != this)
return;
if (GetModelIndex() != MI_PGA && GetModelIndex() != MI_PGB) {
if (GetModelIndex() != MI_GANG13 && GetModelIndex() != MI_GANG14) {
if (m_pMyVehicle->m_nRadioStation != modelInfo->radio1 && m_pMyVehicle->m_nRadioStation != modelInfo->radio2) {
if (CGeneral::GetRandomTrueFalse())
m_pMyVehicle->m_nRadioStation = modelInfo->radio1;

View file

@ -95,6 +95,9 @@ VALIDATE_SIZE(CPedType, 0x20);
enum ePedStats
{
PEDSTAT_COWARD,
PEDSTAT_SHOPPER,
PEDSTAT_OLDSHOPPER,
PEDSTAT_PLAYER,
PEDSTAT_COP,
PEDSTAT_MEDIC,
@ -106,6 +109,8 @@ enum ePedStats
PEDSTAT_GANG5,
PEDSTAT_GANG6,
PEDSTAT_GANG7,
PEDSTAT_GANG8,
PEDSTAT_GANG9,
PEDSTAT_STREET_GUY,
PEDSTAT_SUIT_GUY,
PEDSTAT_SENSIBLE_GUY,
@ -128,13 +133,10 @@ enum ePedStats
PEDSTAT_PSYCHO,
PEDSTAT_STEWARD,
PEDSTAT_SPORTSFAN,
PEDSTAT_SHOPPER,
PEDSTAT_OLDSHOPPER,
PEDSTAT_BEACH_GUY,
PEDSTAT_BEACH_GIRL,
PEDSTAT_SKATER,
PEDSTAT_STD_MISSION,
PEDSTAT_COWARD,
NUM_PEDSTATS
};

View file

@ -558,12 +558,9 @@ CPopulation::AddToPopulation(float minDist, float maxDist, float minDistOffScree
// Taxi side mission
if (CTheScripts::IsPlayerOnAMission()) {
CPed *player = FindPlayerPed();
if (player && player->InVehicle()) {
int32 model = player->m_pMyVehicle->GetModelIndex();
if (model == MI_TAXI || model == MI_CABBIE || model == MI_ZEBRA || model == MI_KAUFMAN)
if (player && player->InVehicle() && player->m_pMyVehicle->IsTaxi())
missionAndWeatherMult = 1.0f;
}
}
if (CDarkel::FrenzyOnGoing())
missionAndWeatherMult = 1.0f;
int selectedMaxPeds = CGame::IsInInterior() ? CPopulation::MaxNumberOfPedsInUseInterior : CPopulation::MaxNumberOfPedsInUse;
@ -843,7 +840,7 @@ CPopulation::AddPedInCar(CVehicle* car, bool isDriver)
pedType = PEDTYPE_COP;
break;
default:
if (car->GetModelIndex() == MI_TAXI || car->GetModelIndex() == MI_CABBIE || car->GetModelIndex() == MI_ZEBRA || car->GetModelIndex() == MI_KAUFMAN) {
if (car->IsTaxi()) {
if (isDriver) {
pedType = PEDTYPE_CIVMALE;
preferredModel = MI_TAXI_D;
@ -1210,10 +1207,11 @@ CPopulation::IsSkateable(CVector const& pos)
return foundCol.surfaceB == SURFACE_TARMAC || foundCol.surfaceB == SURFACE_PAVEMENT;
}
//--LCS: done
bool
CPopulation::CanJeerAtStripper(int32 model)
{
return model == MI_WMOBE || model == MI_WMYBE || model == MI_WMOST || model == MI_BMYBB;
return false;
}
void
@ -1245,46 +1243,38 @@ bool
CPopulation::IsMale(int32 model)
{
switch (model) {
case MI_HMYST:
case MI_HMOST:
case MI_HMYRI:
case MI_HMORI:
case MI_HMYBE:
case MI_HMOBE:
case MI_HMOTR:
case MI_HMYAP:
case MI_HMOCA:
case MI_BMODK:
case MI_BMYKR:
case MI_BMYST:
case MI_BMOST:
case MI_BMYRI:
case MI_BMYBE:
case MI_BMOBE:
case MI_BMYBU:
case MI_BMOTR:
case MI_BMYPI:
case MI_BMYBB:
case MI_WMYCR:
case MI_WMYST:
case MI_WMOST:
case MI_WMYRI:
case MI_WMORI:
case MI_WMYBE:
case MI_WMOBE:
case MI_WMYCW:
case MI_WMYGO:
case MI_WMOGO:
case MI_WMYLG:
case MI_WMYBU:
case MI_WMOBU:
case MI_WMOTR:
case MI_WMYPI:
case MI_WMOCA:
case MI_WMYJG:
case MI_WMYSK:
// BUG? Why no JMOTO?
// TODO(LCS): do this right
case MI_TAXI_D:
case MI_PIMP:
case MI_CRIMINAL01:
case MI_CRIMINAL02:
case MI_MALE02:
case MI_MALE03:
case MI_P_MAN1:
case MI_P_MAN2:
case MI_CT_MAN1:
case MI_CT_MAN2:
case MI_LI_MAN1:
case MI_LI_MAN2:
case MI_DOCKER1:
case MI_DOCKER2:
case MI_SCUM_MAN:
case MI_WORKER1:
case MI_WORKER2:
case MI_B_MAN1:
case MI_B_MAN2:
case MI_B_MAN3:
case MI_MOD_MAN:
case MI_ST_MAN:
case MI_FAN_MAN1:
case MI_FAN_MAN2:
case MI_HOS_MAN:
case MI_CONST1:
case MI_CONST2:
case MI_STUD_MAN:
case MI_CAS_MAN:
case MI_CAMP_MAN:
case MI_HITMAN:
return true;
default:
return false;
@ -1295,41 +1285,34 @@ bool
CPopulation::IsFemale(int32 model)
{
switch (model) {
case MI_HFYST:
case MI_HFOST:
case MI_HFYRI:
case MI_HFORI:
case MI_HFYBE:
case MI_HFOBE:
case MI_HFYBU:
case MI_HFYMD:
case MI_HFYCG:
case MI_HFYPR:
case MI_HFOTR:
case MI_BFYST:
case MI_BFOST:
case MI_BFYRI:
case MI_BFORI:
case MI_BFYBE:
case MI_BFOBE:
case MI_BFYPR:
case MI_BFOTR:
case MI_WFYST:
case MI_WFOST:
case MI_WFYRI:
case MI_WFORI:
case MI_WFYBE:
case MI_WFOBE:
case MI_WFOGO:
case MI_WFYLG:
case MI_WFYBU:
case MI_WFYPR:
case MI_WFOTR:
case MI_WFYJG:
case MI_WFYSK:
case MI_WFYSH:
case MI_WFOSH:
case MI_JFOTO:
// TODO(LCS): do this right
case MI_FEMALE01:
case MI_FEMALE02:
case MI_FEMALE03:
case MI_FATFEMALE01:
case MI_FATFEMALE02:
case MI_PROSTITUTE:
case MI_PROSTITUTE2:
case MI_P_WOM1:
case MI_P_WOM2:
case MI_CT_WOM1:
case MI_CT_WOM2:
case MI_LI_WOM1:
case MI_LI_WOM2:
case MI_SCUM_WOM:
case MI_B_WOM1:
case MI_B_WOM2:
case MI_B_WOM3:
case MI_MOD_WOM:
case MI_ST_WOM:
case MI_FAN_WOM:
case MI_HOS_WOM:
case MI_SHOPPER1:
case MI_SHOPPER2:
case MI_SHOPPER3:
case MI_STUD_WOM:
case MI_CAS_WOM:
case MI_CAMP_WOM:
return true;
default:
return false;
@ -1339,23 +1322,7 @@ CPopulation::IsFemale(int32 model)
bool
CPopulation::IsSunbather(int32 model)
{
switch (model) {
case MI_HFYBE:
case MI_HFOBE:
case MI_HMYBE:
case MI_HMOBE:
case MI_BFYBE:
case MI_BMYBE:
case MI_BFOBE:
case MI_BMOBE:
case MI_WFYBE:
case MI_WMYBE:
case MI_WFOBE:
case MI_WMOBE:
return true;
default:
return false;
}
}
int32
@ -1367,13 +1334,13 @@ CPopulation::ComputeRandomisedGangSize(void)
bool
CPopulation::CanSolicitPlayerInCar(int32 model)
{
return model == MI_HFYPR || model == MI_BFYPR || model == MI_WFYPR;
return model == MI_PROSTITUTE || model == MI_PROSTITUTE2;
}
bool
CPopulation::CanSolicitPlayerOnFoot(int32 model)
{
return model == MI_HFYMD || model == MI_HFYCG || model == MI_BFOTR || model == MI_BMOTR || model == MI_WFOTR || model == MI_WMOTR;
return model == MI_B_WOM3 || model == MI_FEMALE01 || model == MI_FEMALE02 || model == MI_FEMALE03;
}
bool

View file

@ -417,8 +417,9 @@ void CMovingThings::Init()
}
}
CEscalators::Init();
aScrollBars[0].Init(CVector(-1069.209f, 1320.126f, 18.848f), CVector(-1069.209f, 1342.299f, 22.612f), SCROLL_ARENA_STRING, 128, 255, 0, 0.3f);
// LCS: removed
// CEscalators::Init();
// aScrollBars[0].Init(CVector(-1069.209f, 1320.126f, 18.848f), CVector(-1069.209f, 1342.299f, 22.612f), SCROLL_ARENA_STRING, 128, 255, 0, 0.3f);
}
void CMovingThings::Shutdown()

View file

@ -1,6 +1,6 @@
#pragma once
#define WATER_X_OFFSET (400.0f)
#define WATER_X_OFFSET (0.0f)
#define WATER_Z_OFFSET (0.5f)

View file

@ -18,7 +18,7 @@ bool gPS2alphaTest = true;
#else
bool gPS2alphaTest = false;
#endif
bool gBackfaceCulling = true;
bool gBackfaceCulling = false; // can we ever enable this in LCS even?
#if !defined(FINAL) || defined(DEBUGMENU)
static bool charsetOpen;

View file

@ -632,8 +632,9 @@ CVisibilityPlugins::RenderVehicleTailRotorAlphaCB(RpAtomic *atomic)
RpAtomic*
CVisibilityPlugins::RenderPlayerCB(RpAtomic *atomic)
{
if(CWorld::Players[0].m_pSkinTexture)
RpGeometryForAllMaterials(RpAtomicGetGeometry(atomic), SetTextureCB, CWorld::Players[0].m_pSkinTexture);
// LCS: removed
// if(CWorld::Players[0].m_pSkinTexture)
// RpGeometryForAllMaterials(RpAtomicGetGeometry(atomic), SetTextureCB, CWorld::Players[0].m_pSkinTexture);
RENDERCALLBACK(atomic);
return atomic;
}

View file

@ -2193,8 +2193,7 @@ CAutomobile::PreRender(void)
case MI_TAXI:
case MI_CABBIE:
case MI_ZEBRA:
case MI_KAUFMAN:
case MI_BORGNINE:
if(bTaxiLight){
CVector pos = GetPosition() + GetUp()*0.95f;
CCoronas::RegisterCorona((uintptr)this + 21,

View file

@ -62,6 +62,7 @@ void CCranes::InitCranes(void)
}
}
}
/* // TODO(LCS)
for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_MAINLAND).first; pNode; pNode = pNode->next) {
CEntity* pEntity = (CEntity*)pNode->item;
if (MODELID_CRANE_1 == pEntity->GetModelIndex() ||
@ -72,6 +73,7 @@ void CCranes::InitCranes(void)
MODELID_CRANE_6 == pEntity->GetModelIndex())
AddThisOneCrane(pEntity);
}
*/
}
void CCranes::AddThisOneCrane(CEntity* pEntity)

View file

@ -44,6 +44,7 @@ const char VehicleNames[NUMHANDLINGS][14] = {
"RHINO",
"BARRACKS",
"TRAIN",
"FERRY",
"HELI",
"DODO",
"COACH",
@ -56,66 +57,40 @@ const char VehicleNames[NUMHANDLINGS][14] = {
"DEADDODO",
"FLATBED",
"YANKEE",
"GOLFCART",
"VOODOO",
"WASHING",
"CUBAN",
"ROMERO",
"PACKER",
"ADMIRAL",
"GANGBUR",
"ZEBRA",
"TOPFUN",
"GLENDALE",
"OCEANIC",
"HERMES",
"SABRE1",
"SABRETUR",
"PHEONIX",
"WALTON",
"REGINA",
"COMET",
"DELUXO",
"BURRITO",
"SPAND",
"BAGGAGE",
"KAUFMAN",
"RANCHER",
"FBIRANCH",
"VIRGO",
"GREENWOO",
"HOTRING",
"SANDKING",
"BLISTAC",
"BOXVILLE",
"BENSON",
"DESPERAD",
"LOVEFIST",
"BLOODRA",
"BLOODRB",
"BLISTA",
"BELLYUP",
"MRWONGS",
"YARDIE",
"YAKUZA",
"DIABLOS",
"COLUMB",
"HOODS",
"PANLANT",
"BORGNINE",
"CAMPVAN",
"BALLOT",
"SPIDER",
"SHELBY",
"PONTIAC",
"ESPRIT",
"MINI",
"HOTROD",
"SINDACCO",
"FORELLI",
"BIKE",
"MOPED",
"DIRTBIKE",
"ANGEL",
"DIRTBIK2",
"ANGE2",
"FREEWAY",
"PREDATOR",
"SPEEDER",
"REEFER",
"RIO",
"SQUALO",
"TROPIC",
"COASTGRD",
"DINGHY",
"MARQUIS",
"CUPBOAT",
"SEAPLANE",
"SPARROW",
"SEASPAR",
"MAVERICK",
"COASTMAV",
"POLMAV",
"HUNTER",
"RCBARON",
"RCGOBLIN",
"RCCOPTER"
};
@ -350,7 +325,7 @@ void
cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling)
{
// convert distance to m, time to 1/50s
float velocity, a, b, specificVolume;
float velocity, a, b;
handling->Transmission.fEngineAcceleration *= 1.0f/(50.0f*50.0f);
handling->Transmission.fMaxVelocity *= 1000.0f/(60.0f*60.0f * 50.0f);
@ -422,15 +397,15 @@ cHandlingDataMgr::GetHandlingId(const char *name)
tFlyingHandlingData*
cHandlingDataMgr::GetFlyingPointer(uint8 id)
{
if(id >= HANDLING_SEAPLANE && id <= HANDLING_RCCOPTER)
return &FlyingHandlingData[id-HANDLING_SEAPLANE];
if(id >= HANDLING_MAVERICK && id <= HANDLING_RCCOPTER)
return &FlyingHandlingData[id-HANDLING_MAVERICK];
return &FlyingHandlingData[0];
}
tBoatHandlingData*
cHandlingDataMgr::GetBoatPointer(uint8 id)
{
if(id >= HANDLING_PREDATOR && id <= HANDLING_SEAPLANE)
if(id >= HANDLING_PREDATOR && id <= HANDLING_MAVERICK)
return &BoatHandlingData[id-HANDLING_PREDATOR];
return &BoatHandlingData[0];
}

View file

@ -36,6 +36,7 @@ enum tVehicleType
HANDLING_RHINO,
HANDLING_BARRACKS,
HANDLING_TRAIN,
HANDLING_FERRY,
HANDLING_HELI,
HANDLING_DODO,
HANDLING_COACH,
@ -48,76 +49,51 @@ enum tVehicleType
HANDLING_DEADDODO,
HANDLING_FLATBED,
HANDLING_YANKEE,
HANDLING_GOLFCART,
HANDLING_VOODOO,
HANDLING_WASHING,
HANDLING_CUBAN,
HANDLING_ROMERO,
HANDLING_PACKER,
HANDLING_ADMIRAL,
HANDLING_GANGBUR,
HANDLING_ZEBRA,
HANDLING_TOPFUN,
HANDLING_GLENDALE,
HANDLING_OCEANIC,
HANDLING_HERMES,
HANDLING_SABRE1,
HANDLING_SABRETUR,
HANDLING_PHEONIX,
HANDLING_WALTON,
HANDLING_REGINA,
HANDLING_COMET,
HANDLING_DELUXO,
HANDLING_BURRITO,
HANDLING_SPAND,
HANDLING_BAGGAGE,
HANDLING_KAUFMAN,
HANDLING_RANCHER,
HANDLING_FBIRANCH,
HANDLING_VIRGO,
HANDLING_GREENWOO,
HANDLING_HOTRING,
HANDLING_SANDKING,
HANDLING_BLISTAC,
HANDLING_BOXVILLE,
HANDLING_BENSON,
HANDLING_DESPERAD,
HANDLING_LOVEFIST,
HANDLING_BLOODRA,
HANDLING_BLOODRB,
HANDLING_BLISTA,
HANDLING_BELLYUP,
HANDLING_MRWONGS,
HANDLING_YARDIE,
HANDLING_YAKUZA,
HANDLING_DIABLOS,
HANDLING_COLUMB,
HANDLING_HOODS,
HANDLING_PANLANT,
HANDLING_BORGNINE,
HANDLING_CAMPVAN,
HANDLING_BALLOT,
HANDLING_SPIDER,
HANDLING_SHELBY,
HANDLING_PONTIAC,
HANDLING_ESPRIT,
HANDLING_MINI,
HANDLING_HOTROD,
HANDLING_SINDACCO,
HANDLING_FORELLI,
HANDLING_BIKE,
HANDLING_MOPED,
HANDLING_DIRTBIKE,
HANDLING_ANGEL,
HANDLING_DIRTBIK2,
HANDLING_ANGE2,
HANDLING_FREEWAY,
HANDLING_PREDATOR,
HANDLING_SPEEDER,
HANDLING_REEFER,
HANDLING_RIO,
HANDLING_SQUALO,
HANDLING_TROPIC,
HANDLING_COASTGRD,
HANDLING_DINGHY,
HANDLING_MARQUIS,
HANDLING_CUPBOAT,
HANDLING_SEAPLANE, // both boat and plane!
HANDLING_SPARROW,
HANDLING_SEASPAR,
HANDLING_MAVERICK,
HANDLING_COASTMAV,
HANDLING_POLMAV,
HANDLING_HUNTER,
HANDLING_RCBARON,
HANDLING_RCGOBLIN,
HANDLING_RCCOPTER,
NUMHANDLINGS,
NUMBIKEHANDLINGS = HANDLING_FREEWAY+1 - HANDLING_BIKE,
NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_SEAPLANE,
NUMBOATHANDLINGS = HANDLING_SEAPLANE+1 - HANDLING_PREDATOR,
NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_MAVERICK,
NUMBOATHANDLINGS = HANDLING_COASTMAV+1 - HANDLING_PREDATOR,
};
enum tField // most likely a handling field enum, never used so :shrug:

View file

@ -1841,8 +1841,7 @@ CVehicle::SetDriver(CPed *driver)
case MI_TAXI:
case MI_CABBIE:
case MI_ZEBRA:
case MI_KAUFMAN:
case MI_BORGNINE:
CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 12;
break;

View file

@ -384,8 +384,8 @@ public:
bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1 && GetStatus() != STATUS_WRECKED; }
CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); }
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_ZEBRA || GetModelIndex() == MI_KAUFMAN; }
bool IsLimo(void) { return GetModelIndex() == MI_STRETCH || GetModelIndex() == MI_LOVEFIST; }
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; }
bool IsLimo(void) { return GetModelIndex() == MI_STRETCH; }
bool IsRealHeli(void) { return !!(pHandling->Flags & HANDLING_IS_HELI); }
bool IsRealPlane(void) { return !!(pHandling->Flags & HANDLING_IS_PLANE); }