diff --git a/base/maps/game/enpro.aas48.navmesh b/base/maps/game/enpro.aas48.navmesh new file mode 100644 index 00000000..c8cce68c Binary files /dev/null and b/base/maps/game/enpro.aas48.navmesh differ diff --git a/base/maps/game/enpro.aas96.navmesh b/base/maps/game/enpro.aas96.navmesh new file mode 100644 index 00000000..07f8898a Binary files /dev/null and b/base/maps/game/enpro.aas96.navmesh differ diff --git a/base/maps/game/enpro.aas_cyberdemon.navmesh b/base/maps/game/enpro.aas_cyberdemon.navmesh new file mode 100644 index 00000000..8f6d3944 Binary files /dev/null and b/base/maps/game/enpro.aas_cyberdemon.navmesh differ diff --git a/base/maps/game/enpro.aas_guardian.navmesh b/base/maps/game/enpro.aas_guardian.navmesh new file mode 100644 index 00000000..ba41e57e Binary files /dev/null and b/base/maps/game/enpro.aas_guardian.navmesh differ diff --git a/base/maps/game/enpro.aas_mancubus.navmesh b/base/maps/game/enpro.aas_mancubus.navmesh new file mode 100644 index 00000000..82b20d93 Binary files /dev/null and b/base/maps/game/enpro.aas_mancubus.navmesh differ diff --git a/base/maps/game/enpro.aas_sabaoth.navmesh b/base/maps/game/enpro.aas_sabaoth.navmesh new file mode 100644 index 00000000..bd2decb3 Binary files /dev/null and b/base/maps/game/enpro.aas_sabaoth.navmesh differ diff --git a/neo/doom3/game.vcxproj b/neo/doom3/game.vcxproj index 9cd44b21..9ece0abc 100644 --- a/neo/doom3/game.vcxproj +++ b/neo/doom3/game.vcxproj @@ -346,6 +346,7 @@ typeinfo.exe + @@ -461,6 +462,7 @@ typeinfo.exe + @@ -559,4 +561,4 @@ typeinfo.exe - \ No newline at end of file + diff --git a/neo/doom3/game.vcxproj.filters b/neo/doom3/game.vcxproj.filters index 0e91f307..f68d96e7 100644 --- a/neo/doom3/game.vcxproj.filters +++ b/neo/doom3/game.vcxproj.filters @@ -36,6 +36,9 @@ AI + + AI + AI @@ -287,6 +290,9 @@ AI + + AI + AI @@ -492,4 +498,4 @@ - \ No newline at end of file + diff --git a/neo/doom3/game/Game.h b/neo/doom3/game/Game.h index 80b32523..20da562c 100644 --- a/neo/doom3/game/Game.h +++ b/neo/doom3/game/Game.h @@ -320,7 +320,9 @@ extern idGameEdit * gameEdit; =============================================================================== */ -const int GAME_API_VERSION = 8; +class idRecastNavigationManager; + +const int GAME_API_VERSION = 9; typedef struct { @@ -337,6 +339,7 @@ typedef struct { idUserInterfaceManager * uiManager; // user interface manager idDeclManager * declManager; // declaration manager idAASFileManager * AASFileManager; // AAS file manager + idRecastNavigationManager * RecastNavigationManager; // Recast/Detour navigation manager idCollisionModelManager * collisionModelManager; // collision model manager } gameImport_t; diff --git a/neo/doom3/game/Game_local.cpp b/neo/doom3/game/Game_local.cpp index 1a75e1fa..42dc97e2 100644 --- a/neo/doom3/game/Game_local.cpp +++ b/neo/doom3/game/Game_local.cpp @@ -45,6 +45,7 @@ idRenderModelManager * renderModelManager = NULL; idUserInterfaceManager * uiManager = NULL; idDeclManager * declManager = NULL; idAASFileManager * AASFileManager = NULL; +idRecastNavigationManager * RecastNavigationManager = NULL; idCollisionModelManager * collisionModelManager = NULL; idCVar * idCVar::staticVars = NULL; @@ -100,6 +101,7 @@ extern "C" gameExport_t *GetGameAPI( gameImport_t *import ) { uiManager = import->uiManager; declManager = import->declManager; AASFileManager = import->AASFileManager; + RecastNavigationManager = import->RecastNavigationManager; collisionModelManager = import->collisionModelManager; } @@ -141,6 +143,7 @@ void TestGameAPI( void ) { testImport.uiManager = ::uiManager; testImport.declManager = ::declManager; testImport.AASFileManager = ::AASFileManager; + testImport.RecastNavigationManager = ::RecastNavigationManager; testImport.collisionModelManager = ::collisionModelManager; testExport = *GetGameAPI( &testImport ); diff --git a/neo/doom3/game/ai/AAS.cpp b/neo/doom3/game/ai/AAS.cpp index 579cc8f5..088a97e8 100644 --- a/neo/doom3/game/ai/AAS.cpp +++ b/neo/doom3/game/ai/AAS.cpp @@ -29,6 +29,7 @@ If you have questions concerning this license or the applicable additional terms #include "precompiled.h" #pragma hdrstop +#include "../Game_local.h" #include "AAS_local.h" /* @@ -72,6 +73,28 @@ idAASLocal::Init ============ */ bool idAASLocal::Init( const idStr &mapName, unsigned int mapFileCRC ) { + const idStr navName = idRecastNavMesh::NavFileNameForAASName( mapName ); + if ( recastNavMesh.IsLoaded() && mapName.Icmp( name ) == 0 ) { + common->Printf( "Keeping %s\n", navName.c_str() ); + recastNavMesh.RemoveAllObstacles(); + return true; + } + + if ( recastNavMesh.Load( mapName, navName, mapFileCRC ) ) { + if ( file ) { + for ( int i = 0; i < obstacleList.Num(); i++ ) { + delete obstacleList[i]; + } + obstacleList.Clear(); + ShutdownRouting(); + AASFileManager->FreeAAS( file ); + file = NULL; + } + name = mapName; + common->Printf( "Loaded Recast navmesh: %s\n", navName.c_str() ); + return true; + } + if ( file && mapName.Icmp( file->GetName() ) == 0 && mapFileCRC == file->GetCRC() ) { common->Printf( "Keeping %s\n", file->GetName() ); RemoveAllObstacles(); @@ -95,6 +118,7 @@ idAASLocal::Shutdown ============ */ void idAASLocal::Shutdown( void ) { + recastNavMesh.Shutdown(); if ( file ) { ShutdownRouting(); RemoveAllObstacles(); @@ -109,6 +133,10 @@ idAASLocal::Stats ============ */ void idAASLocal::Stats( void ) const { + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.Stats(); + return; + } if ( !file ) { return; } @@ -123,6 +151,9 @@ idAASLocal::GetSettings ============ */ const idAASSettings *idAASLocal::GetSettings( void ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.GetSettings(); + } if ( !file ) { return NULL; } @@ -135,6 +166,9 @@ idAASLocal::PointAreaNum ============ */ int idAASLocal::PointAreaNum( const idVec3 &origin ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.PointAreaNum( origin ); + } if ( !file ) { return 0; } @@ -147,6 +181,9 @@ idAASLocal::PointReachableAreaNum ============ */ int idAASLocal::PointReachableAreaNum( const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.PointReachableAreaNum( origin, searchBounds, areaFlags ); + } if ( !file ) { return 0; } @@ -160,6 +197,9 @@ idAASLocal::BoundsReachableAreaNum ============ */ int idAASLocal::BoundsReachableAreaNum( const idBounds &bounds, const int areaFlags ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.BoundsReachableAreaNum( bounds, areaFlags ); + } if ( !file ) { return 0; } @@ -173,6 +213,10 @@ idAASLocal::PushPointIntoAreaNum ============ */ void idAASLocal::PushPointIntoAreaNum( int areaNum, idVec3 &origin ) const { + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.PushPointIntoAreaNum( areaNum, origin ); + return; + } if ( !file ) { return; } @@ -185,6 +229,9 @@ idAASLocal::AreaCenter ============ */ idVec3 idAASLocal::AreaCenter( int areaNum ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.AreaCenter( areaNum ); + } if ( !file ) { return vec3_origin; } @@ -197,6 +244,9 @@ idAASLocal::AreaFlags ============ */ int idAASLocal::AreaFlags( int areaNum ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.AreaFlags( areaNum ); + } if ( !file ) { return 0; } @@ -209,6 +259,9 @@ idAASLocal::AreaTravelFlags ============ */ int idAASLocal::AreaTravelFlags( int areaNum ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.AreaTravelFlags( areaNum ); + } if ( !file ) { return 0; } @@ -221,6 +274,9 @@ idAASLocal::Trace ============ */ bool idAASLocal::Trace( aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.Trace( trace, start, end ); + } if ( !file ) { trace.fraction = 0.0f; trace.lastAreaNum = 0; @@ -285,4 +341,4 @@ int idAASLocal::AdjustPositionAndGetArea(idVec3& origin) int area = PointReachableAreaNum(origin, DefaultSearchBounds(), AREA_REACHABLE_WALK); PushPointIntoAreaNum(area, origin); return area; -} \ No newline at end of file +} diff --git a/neo/doom3/game/ai/AAS_debug.cpp b/neo/doom3/game/ai/AAS_debug.cpp index ecc3362f..5a4c8b2b 100644 --- a/neo/doom3/game/ai/AAS_debug.cpp +++ b/neo/doom3/game/ai/AAS_debug.cpp @@ -175,6 +175,9 @@ idAASLocal::DefaultSearchBounds ============ */ const idBounds &idAASLocal::DefaultSearchBounds( void ) const { + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.GetSettings()->boundingBoxes[0]; + } return file->GetSettings().boundingBoxes[0]; } @@ -184,6 +187,10 @@ idAASLocal::ShowArea ============ */ void idAASLocal::ShowArea( const idVec3 &origin ) const { + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.ShowArea( origin ); + return; + } static int lastAreaNum; int areaNum; const aasArea_t *area; @@ -242,6 +249,10 @@ idAASLocal::ShowWalkPath ============ */ void idAASLocal::ShowWalkPath( const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin ) const { + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.ShowPath( origin, goalAreaNum, goalOrigin ); + return; + } int i, areaNum, curAreaNum, travelTime; idReachability *reach; idVec3 org, areaCenter; @@ -288,6 +299,10 @@ idAASLocal::ShowFlyPath ============ */ void idAASLocal::ShowFlyPath( const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin ) const { + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.ShowPath( origin, goalAreaNum, goalOrigin ); + return; + } int i, areaNum, curAreaNum, travelTime; idReachability *reach; idVec3 org, areaCenter; @@ -476,6 +491,22 @@ idAASLocal::Test */ void idAASLocal::Test( const idVec3 &origin ) { + if ( recastNavMesh.IsLoaded() ) { + if ( aas_showRecastNavMesh.GetInteger() > 0 ) { + recastNavMesh.DebugDraw( aas_showRecastNavMesh.GetInteger() ); + } + if ( aas_showAreas.GetBool() ) { + ShowArea( origin ); + } + if ( aas_showPath.GetInteger() > 0 ) { + ShowWalkPath( origin, aas_showPath.GetInteger(), AreaCenter( aas_showPath.GetInteger() ) ); + } + if ( aas_showFlyPath.GetInteger() > 0 ) { + ShowFlyPath( origin, aas_showFlyPath.GetInteger(), AreaCenter( aas_showFlyPath.GetInteger() ) ); + } + return; + } + if ( !file ) { return; } diff --git a/neo/doom3/game/ai/AAS_local.h b/neo/doom3/game/ai/AAS_local.h index 66c4187f..f58d138c 100644 --- a/neo/doom3/game/ai/AAS_local.h +++ b/neo/doom3/game/ai/AAS_local.h @@ -31,6 +31,7 @@ If you have questions concerning this license or the applicable additional terms #include "AAS.h" #include "../Pvs.h" +#include "RecastNavMesh.h" class idRoutingCache { @@ -125,6 +126,7 @@ public: private: idAASFile * file; idStr name; + idRecastNavMesh recastNavMesh; private: // routing data idRoutingCache *** areaCacheIndex; // for each area in each cluster the travel times to all other areas in the cluster diff --git a/neo/doom3/game/ai/AAS_pathing.cpp b/neo/doom3/game/ai/AAS_pathing.cpp index d236c38b..096c08c5 100644 --- a/neo/doom3/game/ai/AAS_pathing.cpp +++ b/neo/doom3/game/ai/AAS_pathing.cpp @@ -143,6 +143,10 @@ bool idAASLocal::WalkPathValid( int areaNum, const idVec3 &origin, int goalAreaN const aasArea_t *area; idVec3 p, dir; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.PathValid( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, endPos, endAreaNum ); + } + if ( file == NULL ) { endPos = goalOrigin; endAreaNum = 0; @@ -283,6 +287,10 @@ bool idAASLocal::WalkPathToGoal( aasPath_t &path, int areaNum, const idVec3 &ori idReachability *reach; idVec3 endPos; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.PathToGoal( path, areaNum, origin, goalAreaNum, goalOrigin, travelFlags ); + } + path.type = PATHTYPE_WALK; path.moveGoal = origin; path.moveAreaNum = areaNum; @@ -402,6 +410,10 @@ idAASLocal::FlyPathValid bool idAASLocal::FlyPathValid( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const { aasTrace_t trace; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.PathValid( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, endPos, endAreaNum ); + } + if ( file == NULL ) { endPos = goalOrigin; endAreaNum = 0; @@ -459,6 +471,10 @@ bool idAASLocal::FlyPathToGoal( aasPath_t &path, int areaNum, const idVec3 &orig idReachability *reach; idVec3 endPos; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.PathToGoal( path, areaNum, origin, goalAreaNum, goalOrigin, travelFlags ); + } + path.type = PATHTYPE_WALK; path.moveGoal = origin; path.moveAreaNum = areaNum; diff --git a/neo/doom3/game/ai/AAS_routing.cpp b/neo/doom3/game/ai/AAS_routing.cpp index 48183738..21dd0d3d 100644 --- a/neo/doom3/game/ai/AAS_routing.cpp +++ b/neo/doom3/game/ai/AAS_routing.cpp @@ -435,6 +435,10 @@ idAASLocal::SetAreaState bool idAASLocal::SetAreaState( const idBounds &bounds, const int areaContents, bool disabled ) { idBounds expBounds; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.SetAreaState( bounds, areaContents, disabled ); + } + if ( !file ) { return false; } @@ -537,6 +541,10 @@ idAASLocal::AddObstacle aasHandle_t idAASLocal::AddObstacle( const idBounds &bounds ) { idRoutingObstacle *obstacle; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.AddObstacle( bounds ); + } + if ( !file ) { return -1; } @@ -557,6 +565,10 @@ idAASLocal::RemoveObstacle ============ */ void idAASLocal::RemoveObstacle( const aasHandle_t handle ) { + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.RemoveObstacle( handle ); + return; + } if ( !file ) { return; } @@ -576,6 +588,11 @@ idAASLocal::RemoveAllObstacles void idAASLocal::RemoveAllObstacles( void ) { int i; + if ( recastNavMesh.IsLoaded() ) { + recastNavMesh.RemoveAllObstacles(); + return; + } + if ( !file ) { return; } @@ -1002,6 +1019,10 @@ bool idAASLocal::RouteToGoalArea( int areaNum, const idVec3 origin, int goalArea travelTime = 0; *reach = NULL; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.RouteToGoalArea( areaNum, origin, goalAreaNum, travelFlags, travelTime, reach ); + } + if ( !file ) { return false; } @@ -1151,6 +1172,10 @@ int idAASLocal::TravelTimeToGoalArea( int areaNum, const idVec3 &origin, int goa int travelTime; idReachability *reach; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.TravelTimeToGoalArea( areaNum, origin, goalAreaNum, travelFlags ); + } + if ( !file ) { return 0; } @@ -1175,6 +1200,10 @@ bool idAASLocal::FindNearestGoal( aasGoal_t &goal, int areaNum, const idVec3 ori idVec3 v1, v2, p; float targetDist, dist; + if ( recastNavMesh.IsLoaded() ) { + return recastNavMesh.FindNearestGoal( this, goal, areaNum, origin, target, travelFlags, obstacles, numObstacles, callback ); + } + if ( file == NULL || areaNum <= 0 ) { goal.areaNum = areaNum; goal.origin = origin; diff --git a/neo/doom3/game/gamesys/GameTypeInfo.h b/neo/doom3/game/gamesys/GameTypeInfo.h index 8791ee5f..717ebd3c 100644 --- a/neo/doom3/game/gamesys/GameTypeInfo.h +++ b/neo/doom3/game/gamesys/GameTypeInfo.h @@ -7,9 +7,9 @@ This file has been generated with the Type Info Generator v1.1 (c) 2004 id Software - 1186 constants + 1188 constants 133 enums - 581 classes/structs/unions + 583 classes/structs/unions 38 templates 7 max inheritance level for 'idAI_Vagary' @@ -643,6 +643,8 @@ static constantInfo_t constantInfo[] = { { "int", "CONTACT_EDGE", "1" }, { "int", "CONTACT_MODELVERTEX", "2" }, { "int", "CONTACT_TRMVERTEX", "3" }, + { "static const recastNavHandle_t", "RECAST_NAV_HANDLE_INVALID", "-1" }, + { "static const int", "MAX_RECAST_PATH_AREAS", "256" }, { "int", "ALLOW_YES", "0" }, { "int", "ALLOW_BADPASS", "1" }, { "int", "ALLOW_NOTYET", "2" }, @@ -655,7 +657,7 @@ static constantInfo_t constantInfo[] = { { "int", "TEST_PARTICLE_MUZZLE", "2" }, { "int", "TEST_PARTICLE_FLIGHT", "3" }, { "int", "TEST_PARTICLE_SELECTED", "4" }, - { "const int", "GAME_API_VERSION", "8" }, + { "const int", "GAME_API_VERSION", "9" }, { "static const int", "MAX_LOGGED_STATS", "60*120" }, { "int", "MSG_OK", "0" }, { "int", "MSG_ABORT", "1" }, @@ -4870,6 +4872,18 @@ static classVariableInfo_t idAASFileManager_typeInfo[] = { { NULL, 0 } }; +static classVariableInfo_t recastPath_t_typeInfo[] = { + { "idVec3", "moveGoal", (intptr_t)(&((recastPath_t *)0)->moveGoal), sizeof( ((recastPath_t *)0)->moveGoal ) }, + { "idVec3", "secondaryGoal", (intptr_t)(&((recastPath_t *)0)->secondaryGoal), sizeof( ((recastPath_t *)0)->secondaryGoal ) }, + { "int", "moveAreaNum", (intptr_t)(&((recastPath_t *)0)->moveAreaNum), sizeof( ((recastPath_t *)0)->moveAreaNum ) }, + { "int", "travelTime", (intptr_t)(&((recastPath_t *)0)->travelTime), sizeof( ((recastPath_t *)0)->travelTime ) }, + { NULL, 0 } +}; + +static classVariableInfo_t idRecastNavigationManager_typeInfo[] = { + { NULL, 0 } +}; + static classVariableInfo_t gameReturn_t_typeInfo[] = { { "char[1024]", "sessionCommand", (intptr_t)(&((gameReturn_t *)0)->sessionCommand), sizeof( ((gameReturn_t *)0)->sessionCommand ) }, { "int", "consistencyHash", (intptr_t)(&((gameReturn_t *)0)->consistencyHash), sizeof( ((gameReturn_t *)0)->consistencyHash ) }, @@ -4914,6 +4928,7 @@ static classVariableInfo_t gameImport_t_typeInfo[] = { { "idUserInterfaceManager *", "uiManager", (intptr_t)(&((gameImport_t *)0)->uiManager), sizeof( ((gameImport_t *)0)->uiManager ) }, { "idDeclManager *", "declManager", (intptr_t)(&((gameImport_t *)0)->declManager), sizeof( ((gameImport_t *)0)->declManager ) }, { "idAASFileManager *", "AASFileManager", (intptr_t)(&((gameImport_t *)0)->AASFileManager), sizeof( ((gameImport_t *)0)->AASFileManager ) }, + { "idRecastNavigationManager *", "RecastNavigationManager", (intptr_t)(&((gameImport_t *)0)->RecastNavigationManager), sizeof( ((gameImport_t *)0)->RecastNavigationManager ) }, { "idCollisionModelManager *", "collisionModelManager", (intptr_t)(&((gameImport_t *)0)->collisionModelManager), sizeof( ((gameImport_t *)0)->collisionModelManager ) }, { NULL, 0 } }; @@ -5201,11 +5216,11 @@ static classVariableInfo_t frameLookup_t_typeInfo[] = { { NULL, 0 } }; -static classVariableInfo_t class_285_class_285_typeInfo[] = { -// { "const idSoundShader *", "soundShader", (intptr_t)(&((class_285::class_285 *)0)->soundShader), sizeof( ((class_285::class_285 *)0)->soundShader ) }, -// { "const function_t *", "function", (intptr_t)(&((class_285::class_285 *)0)->function), sizeof( ((class_285::class_285 *)0)->function ) }, -// { "const idDeclSkin *", "skin", (intptr_t)(&((class_285::class_285 *)0)->skin), sizeof( ((class_285::class_285 *)0)->skin ) }, -// { "int", "index", (intptr_t)(&((class_285::class_285 *)0)->index), sizeof( ((class_285::class_285 *)0)->index ) }, +static classVariableInfo_t class_287_class_287_typeInfo[] = { +// { "const idSoundShader *", "soundShader", (intptr_t)(&((class_287::class_287 *)0)->soundShader), sizeof( ((class_287::class_287 *)0)->soundShader ) }, +// { "const function_t *", "function", (intptr_t)(&((class_287::class_287 *)0)->function), sizeof( ((class_287::class_287 *)0)->function ) }, +// { "const idDeclSkin *", "skin", (intptr_t)(&((class_287::class_287 *)0)->skin), sizeof( ((class_287::class_287 *)0)->skin ) }, +// { "int", "index", (intptr_t)(&((class_287::class_287 *)0)->index), sizeof( ((class_287::class_287 *)0)->index ) }, { NULL, 0 } }; @@ -8815,6 +8830,8 @@ static classTypeInfo_t classTypeInfo[] = { { "idAASSettings", "", sizeof(idAASSettings), idAASSettings_typeInfo }, { "idAASFile", "", sizeof(idAASFile), idAASFile_typeInfo }, { "idAASFileManager", "", sizeof(idAASFileManager), idAASFileManager_typeInfo }, + { "recastPath_t", "", sizeof(recastPath_t), recastPath_t_typeInfo }, + { "idRecastNavigationManager", "", sizeof(idRecastNavigationManager), idRecastNavigationManager_typeInfo }, { "gameReturn_t", "", sizeof(gameReturn_t), gameReturn_t_typeInfo }, { "idGame", "", sizeof(idGame), idGame_typeInfo }, { "refSound_t", "", sizeof(refSound_t), refSound_t_typeInfo }, @@ -8851,7 +8868,7 @@ static classTypeInfo_t classTypeInfo[] = { { "jointAnimInfo_t", "", sizeof(jointAnimInfo_t), jointAnimInfo_t_typeInfo }, { "jointMod_t", "", sizeof(jointMod_t), jointMod_t_typeInfo }, { "frameLookup_t", "", sizeof(frameLookup_t), frameLookup_t_typeInfo }, -// { "class_285::class_285", "", sizeof(class_285::class_285), class_285_class_285_typeInfo }, +// { "class_287::class_287", "", sizeof(class_287::class_287), class_287_class_287_typeInfo }, { "frameCommand_t", "", sizeof(frameCommand_t), frameCommand_t_typeInfo }, { "animFlags_t", "", sizeof(animFlags_t), animFlags_t_typeInfo }, { "idModelExport", "", sizeof(idModelExport), idModelExport_typeInfo }, diff --git a/neo/doom3/game/gamesys/SysCmds.cpp b/neo/doom3/game/gamesys/SysCmds.cpp index 1bcf001a..a2a6a215 100644 --- a/neo/doom3/game/gamesys/SysCmds.cpp +++ b/neo/doom3/game/gamesys/SysCmds.cpp @@ -30,6 +30,7 @@ If you have questions concerning this license or the applicable additional terms #pragma hdrstop #include "../Game_local.h" +#include "../ai/RecastNavMesh.h" #include "TypeInfo.h" @@ -1476,6 +1477,51 @@ static void Cmd_AASStats_f( const idCmdArgs &args ) { } } +/* +================== +Cmd_RecastNavBuild_f +================== +*/ +static void Cmd_RecastNavBuild_f( const idCmdArgs &args ) { + if ( !gameLocal.CheatsOk( false ) ) { + return; + } + + if ( args.Argc() < 2 || args.Argc() > 3 ) { + gameLocal.Printf( "usage: recastNavBuild [aasType|all]\n" ); + return; + } + + const idStr mapName = args.Argv( 1 ); + const idStr requestedType = args.Argc() > 2 ? args.Argv( 2 ) : "all"; + bool builtAny = false; + + if ( requestedType.Icmp( "all" ) != 0 ) { + common->SetRefreshOnPrint(true); + builtAny = idRecastNavMesh::BuildMapFile( mapName, requestedType ); + common->SetRefreshOnPrint(false); + } else { + const idDict *dict = gameLocal.FindEntityDefDict( "aas_types", false ); + if ( !dict ) { + gameLocal.Warning( "Unable to find entityDef for 'aas_types'" ); + return; + } + common->SetRefreshOnPrint(true); + for ( const idKeyValue *kv = dict->MatchPrefix( "type" ); kv != NULL; kv = dict->MatchPrefix( "type", kv ) ) { + if ( idRecastNavMesh::BuildMapFile( mapName, kv->GetValue() ) ) { + builtAny = true; + } + } + common->SetRefreshOnPrint(false); + } + + if ( builtAny ) { + gameLocal.Printf( "Recast navmesh build complete for %s\n", mapName.c_str() ); + } else { + gameLocal.Warning( "Recast navmesh build failed for %s", mapName.c_str() ); + } +} + /* ================== Cmd_TestDamage_f @@ -2366,6 +2412,7 @@ void idGameLocal::InitConsoleCommands( void ) { cmdSystem->AddCommand( "reloadanims", Cmd_ReloadAnims_f, CMD_FL_GAME|CMD_FL_CHEAT, "reloads animations" ); cmdSystem->AddCommand( "listAnims", Cmd_ListAnims_f, CMD_FL_GAME, "lists all animations" ); cmdSystem->AddCommand( "aasStats", Cmd_AASStats_f, CMD_FL_GAME, "shows AAS stats" ); + cmdSystem->AddCommand( "recastNavBuild", Cmd_RecastNavBuild_f, CMD_FL_GAME|CMD_FL_CHEAT, "builds Recast navmesh data for a map" ); cmdSystem->AddCommand( "testDamage", Cmd_TestDamage_f, CMD_FL_GAME|CMD_FL_CHEAT, "tests a damage def", idCmdSystem::ArgCompletion_Decl ); cmdSystem->AddCommand( "weaponSplat", Cmd_WeaponSplat_f, CMD_FL_GAME|CMD_FL_CHEAT, "projects a blood splat on the player weapon" ); cmdSystem->AddCommand( "saveSelected", Cmd_SaveSelected_f, CMD_FL_GAME|CMD_FL_CHEAT, "saves the selected entity to the .map file" ); diff --git a/neo/doom3/game/gamesys/SysCvar.cpp b/neo/doom3/game/gamesys/SysCvar.cpp index fac727e7..9d596e1a 100644 --- a/neo/doom3/game/gamesys/SysCvar.cpp +++ b/neo/doom3/game/gamesys/SysCvar.cpp @@ -296,6 +296,7 @@ idCVar g_flushSave( "g_flushSave", "0", CVAR_GAME | CVAR_BOOL, "1 = don idCVar aas_test( "aas_test", "0", CVAR_GAME | CVAR_INTEGER, "" ); idCVar aas_showAreas( "aas_showAreas", "0", CVAR_GAME | CVAR_BOOL, "" ); +idCVar aas_showRecastNavMesh( "aas_showRecastNavMesh", "0", CVAR_GAME | CVAR_INTEGER, "0 = off, 1 = draw Recast navmesh, 2 = also draw dynamic blockers" ); idCVar aas_showPath( "aas_showPath", "0", CVAR_GAME | CVAR_INTEGER, "" ); idCVar aas_showFlyPath( "aas_showFlyPath", "0", CVAR_GAME | CVAR_INTEGER, "" ); idCVar aas_showWallEdges( "aas_showWallEdges", "0", CVAR_GAME | CVAR_BOOL, "" ); diff --git a/neo/doom3/game/gamesys/SysCvar.h b/neo/doom3/game/gamesys/SysCvar.h index cc699ca2..6d53805f 100644 --- a/neo/doom3/game/gamesys/SysCvar.h +++ b/neo/doom3/game/gamesys/SysCvar.h @@ -224,6 +224,7 @@ extern idCVar g_flushSave; extern idCVar aas_test; extern idCVar aas_showAreas; +extern idCVar aas_showRecastNavMesh; extern idCVar aas_showPath; extern idCVar aas_showFlyPath; extern idCVar aas_showWallEdges; diff --git a/neo/engine/_DoomDLL.props b/neo/engine/_DoomDLL.props index ea341c24..6c7516c1 100644 --- a/neo/engine/_DoomDLL.props +++ b/neo/engine/_DoomDLL.props @@ -6,7 +6,7 @@ - sound/vorbis/include;%(AdditionalIncludeDirectories) + sound/vorbis/include;..\external\recastnavigation\Recast\Include;..\external\recastnavigation\Detour\Include;..\external\recastnavigation\DetourCrowd\Include;..\external\recastnavigation\DetourTileCache\Include;%(AdditionalIncludeDirectories) __DOOM__;__DOOM_DLL__;%(PreprocessorDefinitions) diff --git a/neo/engine/_Game.props b/neo/engine/_Game.props index c8a04027..19f56f77 100644 --- a/neo/engine/_Game.props +++ b/neo/engine/_Game.props @@ -19,4 +19,4 @@ ..\build\Win32\"$(Configuration)"\TypeInfo.exe - \ No newline at end of file + diff --git a/neo/engine/doomdll.vcxproj b/neo/engine/doomdll.vcxproj index 84ca1818..99526bde 100644 --- a/neo/engine/doomdll.vcxproj +++ b/neo/engine/doomdll.vcxproj @@ -711,6 +711,7 @@ + @@ -2144,6 +2145,79 @@ + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + + + NotUsing + diff --git a/neo/engine/doomdll.vcxproj.filters b/neo/engine/doomdll.vcxproj.filters index 1f227651..45cb73fb 100644 --- a/neo/engine/doomdll.vcxproj.filters +++ b/neo/engine/doomdll.vcxproj.filters @@ -67,6 +67,9 @@ {07d88fa0-f779-44b7-87b1-2c0d8214aa3f} + + {f756f167-a1f5-4057-a88b-acaa61d7d746} + {6984ce76-c3bf-4003-97cf-64b50f951fe8} @@ -118,6 +121,15 @@ {17e28816-27c1-473b-b124-b9c1bc9427aa} + + {c9064943-6813-48eb-b813-009fd9e43815} + + + {14f2f6c0-6253-4149-909f-107b4e69f1aa} + + + {bc492f36-f168-4265-8299-e710f177d9fe} + @@ -471,6 +483,9 @@ Tools\Compilers\AAS + + Tools\Compilers\Recast + Tools\Compilers\AAS @@ -1115,6 +1130,9 @@ Tools\Compilers\AAS + + Tools\Compilers\Recast + Tools\Compilers\AAS @@ -1718,6 +1736,78 @@ Tools\Radiant + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Recast + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + + + External\Detour + @@ -2441,4 +2531,4 @@ Sys\RC\res - + \ No newline at end of file diff --git a/neo/engine/doomdll.vcxproj.user b/neo/engine/doomdll.vcxproj.user index d353b370..895f131b 100644 --- a/neo/engine/doomdll.vcxproj.user +++ b/neo/engine/doomdll.vcxproj.user @@ -15,9 +15,9 @@ D:\projects\Doom3\Doom3.exe WindowsLocalDebugger - +set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 + +set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 D:\projects\Doom3 - +set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 +set fs_game e3|+set r_fullscreen 0 +set r_mode 11 +set sv_pure 0 +set fs_game e3|+set r_fullscreen 0 +set r_mode 11 +set sv_pure 0 +set fs_game e3|+set r_fullscreen 0 +set r_mode 11 +set sv_pure 0 |+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 | + +set r_fullscreen 0 +set r_mode 11 +set sv_pure 0 +set fs_game e3|+set r_fullscreen 0 +set r_mode 11 +set sv_pure 0 |+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 |+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 +set fs_game rage|+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0| D:\projects\Doom3\Quake4.exe diff --git a/neo/engine/framework/Common.cpp b/neo/engine/framework/Common.cpp index 04705d67..c15ca2d2 100644 --- a/neo/engine/framework/Common.cpp +++ b/neo/engine/framework/Common.cpp @@ -3566,6 +3566,7 @@ void idCommonLocal::LoadGameDLL( void ) { gameImport.uiManager = ::uiManager; gameImport.declManager = ::declManager; gameImport.AASFileManager = ::AASFileManager; + gameImport.RecastNavigationManager = ::RecastNavigationManager; gameImport.collisionModelManager = ::collisionModelManager; #ifdef QUAKE4 gameImport.session = ::session; diff --git a/neo/engine/idlib/precompiled.h b/neo/engine/idlib/precompiled.h index dd66ba79..4e738e72 100644 --- a/neo/engine/idlib/precompiled.h +++ b/neo/engine/idlib/precompiled.h @@ -197,6 +197,7 @@ const int MAX_EXPRESSION_REGISTERS = 4096; // AAS files and manager #include "../tools/compilers/aas/AASFile.h" #include "../tools/compilers/aas/AASFileManager.h" +#include "../tools/compilers/recast/RecastNavigation.h" #if defined(QUAKE4) #include "../../quake4/bse/BSEInterface.h" diff --git a/neo/engine/opengl/gl_d3d12raylight.cpp b/neo/engine/opengl/gl_d3d12raylight.cpp index 650f580a..4de3b730 100644 --- a/neo/engine/opengl/gl_d3d12raylight.cpp +++ b/neo/engine/opengl/gl_d3d12raylight.cpp @@ -5355,7 +5355,7 @@ void RayGen() } float outputAo = isSkeletal ? lerp(ao, 1.0, 0.55) : ao; - finalColor *= clamp(outputAo + 0.6, 0.0, 1.0); + finalColor *= clamp(outputAo + 0.3, 0.0, 1.0); // Volumetric light scattering is radiance in the camera ray, not surface // reflectance, so add it after surface albedo/specular composition. Because diff --git a/neo/engine/opengl/gl_d3d12shim.cpp b/neo/engine/opengl/gl_d3d12shim.cpp index ec8e761c..7f364650 100644 --- a/neo/engine/opengl/gl_d3d12shim.cpp +++ b/neo/engine/opengl/gl_d3d12shim.cpp @@ -1507,7 +1507,7 @@ struct GLState uint32_t frameGenerationMultiplier = 0; uint32_t pathTracingSamplesPerPixel = 1; uint32_t pathTracingFallbackSamplesPerPixel = 2; - uint32_t pathTracingMaxBounces = 2; + uint32_t pathTracingMaxBounces = 3; glScreenSpaceDecal_t screenSpaceDecals[QD3D12_MaxScreenSpaceDecals] = {}; uint32_t screenSpaceDecalCount = 0; ComPtr screenSpaceDecalBuffer; diff --git a/neo/engine/tools/compilers/recast/RecastNavigation.cpp b/neo/engine/tools/compilers/recast/RecastNavigation.cpp new file mode 100644 index 00000000..fac8bfb2 --- /dev/null +++ b/neo/engine/tools/compilers/recast/RecastNavigation.cpp @@ -0,0 +1,1331 @@ +/* +=========================================================================== + +IceTech GPL Source Code +Copyright (C) 2026 Justin Marshall + +=========================================================================== +*/ + +#include "precompiled.h" +#pragma hdrstop + +#include "RecastNavigation.h" + +#include "Recast.h" +#include "DetourAlloc.h" +#include "DetourCommon.h" +#include "DetourNavMesh.h" +#include "DetourNavMeshBuilder.h" +#include "DetourNavMeshQuery.h" +#include "DetourCrowd.h" + +static const int RECAST_NAVMESH_VERSION = 1; +static const int RECAST_NAVMESH_MAGIC = ( 'R' << 24 ) | ( 'N' << 16 ) | ( 'A' << 8 ) | 'V'; +static const unsigned short RECAST_POLYFLAGS_WALK = 0x01; +static const int MAX_RECAST_PATH_POLYS = 256; +static const float RECAST_AREA_BLOCKER_MATCH_EXPAND = 128.0f; +static const float RECAST_BUILD_CELL_SIZE = 4.0f; +static const float RECAST_BUILD_CELL_HEIGHT = 2.0f; + +struct recastBoundsBlocker_t { + idBounds bounds; + int areaContents; + bool active; +}; + +class idRecastNavMeshLocal { +public: + idRecastNavMeshLocal( void ); + ~idRecastNavMeshLocal( void ); + + void Shutdown( void ); + bool InitForAAS( const idStr &aasName, const idAASSettings &settings, unsigned int mapFileCRC ); + bool Load( const idStr &fileName, unsigned int mapFileCRC ); + bool BuildAndSave( const idMapFile *mapFile, const idStr &fileName, unsigned int mapFileCRC, const idAASSettings &settings ); + void DebugDraw( idRenderWorld *renderWorld, int drawMode, int lifetime ) const; + + bool IsLoaded( void ) const { return navMesh != NULL && navQuery != NULL; } + const idStr & GetName( void ) const { return name; } + int NumPolys( void ) const { return polyRefs.Num(); } + const idAASSettings * GetSettings( void ) const { return IsLoaded() ? &settings : NULL; } + void Stats( void ) const; + + int PointAreaNum( const idVec3 &origin ) const; + int PointReachableAreaNum( const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const; + int BoundsReachableAreaNum( const idBounds &bounds, const int areaFlags ) const; + void PushPointIntoAreaNum( int areaNum, idVec3 &origin ) const; + idVec3 AreaCenter( int areaNum ) const; + int AreaFlags( int areaNum ) const; + int AreaTravelFlags( int areaNum ) const; + bool Trace( aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const; + + bool SetAreaState( const idBounds &bounds, const int areaContents, bool disabled ); + recastObstacleHandle_t AddObstacle( const idBounds &bounds ); + void RemoveObstacle( const recastObstacleHandle_t handle ); + void RemoveAllObstacles( void ); + + int TravelTimeToGoalArea( int areaNum, const idVec3 &origin, int goalAreaNum, int travelFlags ) const; + bool RouteToGoalArea( int areaNum, const idVec3 origin, int goalAreaNum, int travelFlags, recastPath_t &route ) const; + bool PathToGoal( recastPath_t &path, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags ) const; + bool PathValid( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const; + bool PathAreaList( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, int *areas, int &numAreas, int maxAreas ) const; + + static bool BuildMapFile( const idStr &mapName, const idStr &aasType ); + static idStr NavFileNameForAASName( const idStr &aasName ); + +private: + static void ToDetour( const idVec3 &in, float out[3] ); + static idVec3 FromDetour( const float in[3] ); + bool FindNearestPoly( const idVec3 &origin, const idBounds &searchBounds, dtPolyRef &ref, idVec3 *nearest ) const; + int AreaForRef( dtPolyRef ref ) const; + dtPolyRef RefForArea( int areaNum ) const; + bool FindPathRefs( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, dtPolyRef *pathRefs, int &numPathRefs, const int maxPathRefs ) const; + bool LineHitsBlocker( const idVec3 &start, const idVec3 &end ) const; + bool PointInsideBlocker( const idVec3 &origin ) const; + +private: + idStr name; + unsigned int crc; + idAASSettings settings; + dtNavMesh * navMesh; + dtNavMeshQuery * navQuery; + dtCrowd * crowd; + mutable idList polyRefs; + idList obstacles; + idList areaBlockers; +}; + +class idDoomRecastContext : public rcContext { +public: + idDoomRecastContext( void ) : rcContext( true ) {} + +protected: + virtual void doLog( const rcLogCategory category, const char *msg, const int len ) { + idStr text( msg ); + if ( len >= 0 && len < text.Length() ) { + text.CapLength( len ); + } + if ( category == RC_LOG_ERROR ) { + common->Warning( "Recast: %s", text.c_str() ); + } else if ( category == RC_LOG_WARNING ) { + common->DWarning( "Recast: %s", text.c_str() ); + } else { + common->Printf( "Recast: %s\n", text.c_str() ); + } + } +}; + +struct recastBuildGeometry_t { + idList verts; + idList tris; + idBounds bounds; + + void Clear( void ) { + verts.Clear(); + tris.Clear(); + bounds.Clear(); + } +}; + +static bool RecastMaterialIsSolid( const char *materialName ) { + const idMaterial *mat = declManager->FindMaterial( materialName ); + if ( !mat ) { + return false; + } + const int contents = mat->GetContentFlags(); + return ( contents & ( CONTENTS_SOLID | CONTENTS_AAS_SOLID | CONTENTS_MONSTERCLIP ) ) != 0; +} + +static bool RecastEntityIsBakeGeometry( const idMapEntity *mapEnt, int entityNum ) { + const char *classname = mapEnt->epairs.GetString( "classname" ); + + if ( entityNum == 0 ) { + return true; + } + + if ( idStr::Icmp( classname, "func_static" ) == 0 || + idStr::Icmp( classname, "func_clipmodel" ) == 0 ) { + return true; + } + + return false; +} + +static void RecastAppendVertex( recastBuildGeometry_t &geom, const idVec3 &v ) { + geom.verts.Append( v.x ); + geom.verts.Append( v.z ); + geom.verts.Append( v.y ); + geom.bounds.AddPoint( v ); +} + +static void RecastAppendTriangle( recastBuildGeometry_t &geom, const idVec3 &a, const idVec3 &b, const idVec3 &c ) { + if ( idWinding::TriangleArea( a, b, c ) < 0.1f ) { + return; + } + const int base = geom.verts.Num() / 3; + RecastAppendVertex( geom, a ); + RecastAppendVertex( geom, b ); + RecastAppendVertex( geom, c ); + geom.tris.Append( base + 0 ); + geom.tris.Append( base + 1 ); + geom.tris.Append( base + 2 ); +} + +static void RecastAddWinding( recastBuildGeometry_t &geom, const idWinding &winding, const idVec3 &origin, const idMat3 &axis ) { + const int numPoints = winding.GetNumPoints(); + if ( numPoints < 3 ) { + return; + } + + const idVec3 v0 = winding[0].ToVec3() * axis + origin; + for ( int i = 1; i < numPoints - 1; i++ ) { + const idVec3 v1 = winding[i].ToVec3() * axis + origin; + const idVec3 v2 = winding[i + 1].ToVec3() * axis + origin; + RecastAppendTriangle( geom, v0, v1, v2 ); + } +} + +static void RecastAddBrushGeometry( recastBuildGeometry_t &geom, const idMapBrush *brush, const idVec3 &origin, const idMat3 &axis ) { + for ( int i = 0; i < brush->GetNumSides(); i++ ) { + const idMapBrushSide *side = brush->GetSide( i ); + if ( !RecastMaterialIsSolid( side->GetMaterial() ) ) { + continue; + } + + idFixedWinding winding( side->GetPlane() ); + bool clipped = true; + for ( int j = 0; j < brush->GetNumSides(); j++ ) { + if ( j == i ) { + continue; + } + if ( !winding.ClipInPlace( -brush->GetSide( j )->GetPlane(), ON_EPSILON, true ) ) { + clipped = false; + break; + } + } + if ( clipped && !winding.IsTiny() && !winding.IsHuge() ) { + RecastAddWinding( geom, winding, origin, axis ); + } + } +} + +static void RecastAddPatchGeometry( recastBuildGeometry_t &geom, const idMapPatch *patch, const idVec3 &origin, const idMat3 &axis, const idAASSettings &settings ) { + if ( !settings.usePatches || !RecastMaterialIsSolid( patch->GetMaterial() ) ) { + return; + } + + idSurface_Patch mesh( *patch ); + if ( patch->GetExplicitlySubdivided() ) { + mesh.SubdivideExplicit( patch->GetHorzSubdivisions(), patch->GetVertSubdivisions(), false, true ); + } else { + mesh.Subdivide( DEFAULT_CURVE_MAX_ERROR_CD, DEFAULT_CURVE_MAX_ERROR_CD, DEFAULT_CURVE_MAX_LENGTH_CD, false ); + } + + const idDrawVert *verts = mesh.GetVertices(); + const int *indexes = mesh.GetIndexes(); + for ( int i = 0; i + 2 < mesh.GetNumIndexes(); i += 3 ) { + RecastAppendTriangle( geom, + verts[indexes[i + 0]].xyz * axis + origin, + verts[indexes[i + 1]].xyz * axis + origin, + verts[indexes[i + 2]].xyz * axis + origin ); + } +} + +static void RecastAddMapEntityGeometry( recastBuildGeometry_t &geom, const idMapEntity *mapEnt, const idAASSettings &settings ) { + idVec3 origin; + idMat3 axis; + + mapEnt->epairs.GetVector( "origin", "0 0 0", origin ); + if ( !mapEnt->epairs.GetMatrix( "rotation", "1 0 0 0 1 0 0 0 1", axis ) ) { + const float angle = mapEnt->epairs.GetFloat( "angle" ); + if ( angle != 0.0f ) { + axis = idAngles( 0.0f, angle, 0.0f ).ToMat3(); + } else { + axis.Identity(); + } + } + + for ( int i = 0; i < mapEnt->GetNumPrimitives(); i++ ) { + idMapPrimitive *prim = mapEnt->GetPrimitive( i ); + if ( prim->GetType() == idMapPrimitive::TYPE_BRUSH ) { + RecastAddBrushGeometry( geom, static_cast( prim ), origin, axis ); + } else if ( prim->GetType() == idMapPrimitive::TYPE_PATCH ) { + RecastAddPatchGeometry( geom, static_cast( prim ), origin, axis, settings ); + } + } +} + +static bool RecastCollectMapGeometry( recastBuildGeometry_t &geom, const idMapFile *mapFile, const idAASSettings &settings ) { + geom.Clear(); + + int acceptedEntities = 0; + int skippedEntities = 0; + int skippedDynamicEntities = 0; + int brushPrimitives = 0; + int patchPrimitives = 0; + + common->Printf( "Recast: scanning %d map entities for build geometry\n", mapFile->GetNumEntities() ); + + for ( int i = 0; i < mapFile->GetNumEntities(); i++ ) { + const idMapEntity *mapEnt = mapFile->GetEntity( i ); + + if ( !RecastEntityIsBakeGeometry( mapEnt, i ) ) { + const char *classname = mapEnt->epairs.GetString( "classname" ); + if ( idStr::Icmp( classname, "func_aas_obstacle" ) == 0 || + idStr::Icmp( classname, "func_aas_portal" ) == 0 || + idStr::Icmp( classname, "func_door" ) == 0 || + idStr::Icmp( classname, "func_mover" ) == 0 ) { + skippedDynamicEntities++; + } + skippedEntities++; + continue; + } + + acceptedEntities++; + for ( int j = 0; j < mapEnt->GetNumPrimitives(); j++ ) { + idMapPrimitive *prim = mapEnt->GetPrimitive( j ); + if ( prim->GetType() == idMapPrimitive::TYPE_BRUSH ) { + brushPrimitives++; + } else if ( prim->GetType() == idMapPrimitive::TYPE_PATCH ) { + patchPrimitives++; + } + } + RecastAddMapEntityGeometry( geom, mapEnt, settings ); + } + + common->Printf( "Recast: accepted %d static entities, skipped %d entities (%d dynamic AAS/door/mover), saw %d brushes and %d patches\n", + acceptedEntities, skippedEntities, skippedDynamicEntities, brushPrimitives, patchPrimitives ); + common->Printf( "Recast: collected %d verts and %d tris, bounds mins (%g %g %g), maxs (%g %g %g)\n", + geom.verts.Num() / 3, geom.tris.Num() / 3, + geom.bounds[0].x, geom.bounds[0].y, geom.bounds[0].z, + geom.bounds[1].x, geom.bounds[1].y, geom.bounds[1].z ); + + return geom.verts.Num() >= 9 && geom.tris.Num() >= 3; +} + +idRecastNavMeshLocal::idRecastNavMeshLocal( void ) { + crc = 0; + navMesh = NULL; + navQuery = NULL; + crowd = NULL; +} + +idRecastNavMeshLocal::~idRecastNavMeshLocal( void ) { + Shutdown(); +} + +void idRecastNavMeshLocal::Shutdown( void ) { + if ( crowd ) { + dtFreeCrowd( crowd ); + crowd = NULL; + } + if ( navQuery ) { + dtFreeNavMeshQuery( navQuery ); + navQuery = NULL; + } + if ( navMesh ) { + dtFreeNavMesh( navMesh ); + navMesh = NULL; + } + name.Clear(); + crc = 0; + polyRefs.Clear(); + obstacles.Clear(); + areaBlockers.Clear(); +} + +bool idRecastNavMeshLocal::InitForAAS( const idStr &aasName, const idAASSettings &aasSettings, unsigned int mapFileCRC ) { + settings = aasSettings; + crc = mapFileCRC; + name = aasName; + return true; +} + +idStr idRecastNavMeshLocal::NavFileNameForAASName( const idStr &aasName ) { + idStr navName = aasName; + navName += ".navmesh"; + return navName; +} + +void idRecastNavMeshLocal::DebugDraw( idRenderWorld *renderWorld, int drawMode, int lifetime ) const { + if ( !renderWorld || !navMesh || drawMode <= 0 ) { + return; + } + + const idVec3 lift( 0.0f, 0.0f, 2.0f ); + + for ( int tileNum = 0; tileNum < navMesh->getMaxTiles(); tileNum++ ) { + const dtMeshTile *tile = navMesh->getTile( tileNum ); + if ( !tile || !tile->header ) { + continue; + } + + for ( int polyNum = 0; polyNum < tile->header->polyCount; polyNum++ ) { + const dtPoly *poly = &tile->polys[polyNum]; + if ( poly->getType() != DT_POLYTYPE_GROUND || poly->vertCount < 3 ) { + continue; + } + + for ( int edgeNum = 0; edgeNum < poly->vertCount; edgeNum++ ) { + const float *start = &tile->verts[poly->verts[edgeNum] * 3]; + const float *end = &tile->verts[poly->verts[( edgeNum + 1 ) % poly->vertCount] * 3]; + renderWorld->DebugLine( colorCyan, FromDetour( start ) + lift, FromDetour( end ) + lift, lifetime, false ); + } + } + } + + if ( drawMode < 2 ) { + return; + } + + for ( int i = 0; i < obstacles.Num(); i++ ) { + if ( obstacles[i].active ) { + renderWorld->DebugBounds( colorOrange, obstacles[i].bounds, vec3_origin, lifetime ); + } + } + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( areaBlockers[i].active ) { + renderWorld->DebugBounds( colorRed, areaBlockers[i].bounds, vec3_origin, lifetime ); + } + } +} + +bool idRecastNavMeshLocal::Load( const idStr &fileName, unsigned int mapFileCRC ) { + Shutdown(); + + idFile *file = fileSystem->OpenFileRead( fileName ); + if ( !file ) { + return false; + } + + int magic, version, dataSize; + unsigned int fileCRC; + file->ReadInt( magic ); + file->ReadInt( version ); + file->ReadUnsignedInt( fileCRC ); + file->ReadInt( dataSize ); + + if ( magic != RECAST_NAVMESH_MAGIC || version != RECAST_NAVMESH_VERSION || fileCRC != mapFileCRC || dataSize <= 0 ) { + fileSystem->CloseFile( file ); + return false; + } + + unsigned char *navData = (unsigned char *)dtAlloc( dataSize, DT_ALLOC_PERM ); + if ( !navData ) { + fileSystem->CloseFile( file ); + return false; + } + if ( file->Read( navData, dataSize ) != dataSize ) { + dtFree( navData ); + fileSystem->CloseFile( file ); + return false; + } + fileSystem->CloseFile( file ); + + navMesh = dtAllocNavMesh(); + if ( !navMesh ) { + dtFree( navData ); + return false; + } + if ( dtStatusFailed( navMesh->init( navData, dataSize, DT_TILE_FREE_DATA ) ) ) { + dtFree( navData ); + Shutdown(); + return false; + } + + navQuery = dtAllocNavMeshQuery(); + if ( !navQuery || dtStatusFailed( navQuery->init( navMesh, 4096 ) ) ) { + Shutdown(); + return false; + } + + crowd = dtAllocCrowd(); + if ( crowd ) { + const idBounds &bounds = settings.boundingBoxes[0]; + const float radius = max( idMath::Fabs( bounds[0].x ), idMath::Fabs( bounds[1].x ) ); + crowd->init( 128, radius, navMesh ); + } + + name = fileName; + crc = mapFileCRC; + return true; +} + +bool idRecastNavMeshLocal::BuildAndSave( const idMapFile *mapFile, const idStr &fileName, unsigned int mapFileCRC, const idAASSettings &aasSettings ) { + common->Printf( "Recast: building navmesh for %s -> %s\n", mapFile->GetName(), fileName.c_str() ); + common->Printf( "Recast: map geometry CRC %u\n", mapFileCRC ); + + recastBuildGeometry_t geom; + if ( !RecastCollectMapGeometry( geom, mapFile, aasSettings ) ) { + common->Warning( "Recast: no solid map geometry found for %s", mapFile->GetName() ); + return false; + } + + idDoomRecastContext ctx; + rcConfig cfg; + memset( &cfg, 0, sizeof( cfg ) ); + + const idBounds &agentBounds = aasSettings.boundingBoxes[0]; + const float agentRadius = max( idMath::Fabs( agentBounds[0].x ), idMath::Fabs( agentBounds[1].x ) ); + const float agentHeight = agentBounds[1].z - agentBounds[0].z; + + common->Printf( "Recast: agent bbox mins (%g %g %g), maxs (%g %g %g)\n", + agentBounds[0].x, agentBounds[0].y, agentBounds[0].z, + agentBounds[1].x, agentBounds[1].y, agentBounds[1].z ); + common->Printf( "Recast: agent radius %g, height %g, max step %g, min floor cos %g\n", + agentRadius, agentHeight, aasSettings.maxStepHeight, aasSettings.minFloorCos ); + + cfg.cs = RECAST_BUILD_CELL_SIZE; + cfg.ch = RECAST_BUILD_CELL_HEIGHT; + cfg.walkableSlopeAngle = RAD2DEG( idMath::ACos( aasSettings.minFloorCos ) ); + cfg.walkableHeight = (int)ceilf( agentHeight / cfg.ch ); + cfg.walkableClimb = Max( 1, (int)ceilf( aasSettings.maxStepHeight / cfg.ch ) ); + cfg.walkableRadius = (int)ceilf( agentRadius / cfg.cs ); + cfg.maxEdgeLen = (int)( 12.0f * 64.0f / cfg.cs ); + cfg.maxSimplificationError = 1.3f; + cfg.minRegionArea = rcSqr( 4 ); + cfg.mergeRegionArea = rcSqr( 12 ); + cfg.maxVertsPerPoly = 6; + cfg.detailSampleDist = cfg.cs * 6.0f; + cfg.detailSampleMaxError = cfg.ch; + + cfg.bmin[0] = geom.bounds[0].x; + cfg.bmin[1] = geom.bounds[0].z; + cfg.bmin[2] = geom.bounds[0].y; + cfg.bmax[0] = geom.bounds[1].x; + cfg.bmax[1] = geom.bounds[1].z; + cfg.bmax[2] = geom.bounds[1].y; + rcCalcGridSize( cfg.bmin, cfg.bmax, cfg.cs, &cfg.width, &cfg.height ); + + common->Printf( "Recast: config cellSize %g, cellHeight %g, grid %d x %d\n", cfg.cs, cfg.ch, cfg.width, cfg.height ); + common->Printf( "Recast: walkable height %d, climb %d, radius %d, slope %g degrees\n", + cfg.walkableHeight, cfg.walkableClimb, cfg.walkableRadius, cfg.walkableSlopeAngle ); + common->Printf( "Recast: region min %d, merge %d, max edge len %d, max verts/poly %d\n", + cfg.minRegionArea, cfg.mergeRegionArea, cfg.maxEdgeLen, cfg.maxVertsPerPoly ); + + rcHeightfield *heightfield = rcAllocHeightfield(); + rcCompactHeightfield *compactHeightfield = NULL; + rcContourSet *contourSet = NULL; + rcPolyMesh *polyMesh = NULL; + rcPolyMeshDetail *detailMesh = NULL; + unsigned char *triAreas = NULL; + unsigned char *navData = NULL; + int navDataSize = 0; + bool ok = false; + + const float *verts = geom.verts.Ptr(); + const int numVerts = geom.verts.Num() / 3; + const int *tris = geom.tris.Ptr(); + const int numTris = geom.tris.Num() / 3; + + common->Printf( "Recast: allocating heightfield\n" ); + if ( heightfield && + rcCreateHeightfield( &ctx, *heightfield, cfg.width, cfg.height, cfg.bmin, cfg.bmax, cfg.cs, cfg.ch ) ) { + common->Printf( "Recast: heightfield created\n" ); + triAreas = new unsigned char[numTris]; + memset( triAreas, 0, numTris * sizeof( unsigned char ) ); + common->Printf( "Recast: marking walkable triangles\n" ); + rcMarkWalkableTriangles( &ctx, cfg.walkableSlopeAngle, verts, numVerts, tris, numTris, triAreas ); + common->Printf( "Recast: rasterizing %d triangles\n", numTris ); + if ( rcRasterizeTriangles( &ctx, verts, numVerts, tris, triAreas, numTris, *heightfield, cfg.walkableClimb ) ) { + common->Printf( "Recast: filtering low-hanging obstacles, ledges, and low spans\n" ); + rcFilterLowHangingWalkableObstacles( &ctx, cfg.walkableClimb, *heightfield ); + rcFilterLedgeSpans( &ctx, cfg.walkableHeight, cfg.walkableClimb, *heightfield ); + rcFilterWalkableLowHeightSpans( &ctx, cfg.walkableHeight, *heightfield ); + + common->Printf( "Recast: building compact heightfield\n" ); + compactHeightfield = rcAllocCompactHeightfield(); + if ( compactHeightfield && + rcBuildCompactHeightfield( &ctx, cfg.walkableHeight, cfg.walkableClimb, *heightfield, *compactHeightfield ) && + rcErodeWalkableArea( &ctx, cfg.walkableRadius, *compactHeightfield ) && + rcBuildDistanceField( &ctx, *compactHeightfield ) && + rcBuildRegions( &ctx, *compactHeightfield, 0, cfg.minRegionArea, cfg.mergeRegionArea ) ) { + common->Printf( "Recast: compact heightfield built, walkable spans %d\n", compactHeightfield->spanCount ); + common->Printf( "Recast: building contours and poly mesh\n" ); + contourSet = rcAllocContourSet(); + polyMesh = rcAllocPolyMesh(); + detailMesh = rcAllocPolyMeshDetail(); + if ( contourSet && polyMesh && detailMesh && + rcBuildContours( &ctx, *compactHeightfield, cfg.maxSimplificationError, cfg.maxEdgeLen, *contourSet ) && + rcBuildPolyMesh( &ctx, *contourSet, cfg.maxVertsPerPoly, *polyMesh ) && + rcBuildPolyMeshDetail( &ctx, *polyMesh, *compactHeightfield, cfg.detailSampleDist, cfg.detailSampleMaxError, *detailMesh ) ) { + common->Printf( "Recast: contours %d, poly mesh %d verts / %d polys, detail %d verts / %d tris\n", + contourSet->nconts, polyMesh->nverts, polyMesh->npolys, detailMesh->nverts, detailMesh->ntris ); + for ( int i = 0; i < polyMesh->npolys; i++ ) { + if ( polyMesh->areas[i] == RC_WALKABLE_AREA ) { + polyMesh->areas[i] = 0; + } + polyMesh->flags[i] = RECAST_POLYFLAGS_WALK; + } + + dtNavMeshCreateParams params; + memset( ¶ms, 0, sizeof( params ) ); + params.verts = polyMesh->verts; + params.vertCount = polyMesh->nverts; + params.polys = polyMesh->polys; + params.polyAreas = polyMesh->areas; + params.polyFlags = polyMesh->flags; + params.polyCount = polyMesh->npolys; + params.nvp = polyMesh->nvp; + params.detailMeshes = detailMesh->meshes; + params.detailVerts = detailMesh->verts; + params.detailVertsCount = detailMesh->nverts; + params.detailTris = detailMesh->tris; + params.detailTriCount = detailMesh->ntris; + params.walkableHeight = agentHeight; + params.walkableRadius = agentRadius; + params.walkableClimb = aasSettings.maxStepHeight; + rcVcopy( params.bmin, polyMesh->bmin ); + rcVcopy( params.bmax, polyMesh->bmax ); + params.cs = cfg.cs; + params.ch = cfg.ch; + params.buildBvTree = true; + + common->Printf( "Recast: creating Detour navmesh data\n" ); + ok = dtCreateNavMeshData( ¶ms, &navData, &navDataSize ); + if ( ok ) { + common->Printf( "Recast: Detour navmesh data created, %d bytes\n", navDataSize ); + } else { + common->Warning( "Recast: dtCreateNavMeshData failed for %s", fileName.c_str() ); + } + } else { + common->Warning( "Recast: failed to build contours/poly mesh/detail mesh for %s", fileName.c_str() ); + } + } else { + common->Warning( "Recast: failed to build compact heightfield/regions for %s", fileName.c_str() ); + } + } else { + common->Warning( "Recast: failed to rasterize triangles for %s", fileName.c_str() ); + } + } else { + common->Warning( "Recast: failed to allocate/create heightfield for %s", fileName.c_str() ); + } + + if ( ok && navData && navDataSize > 0 ) { + common->Printf( "Recast: writing navmesh file %s\n", fileName.c_str() ); + idFile *out = fileSystem->OpenFileWrite( fileName, "fs_devpath" ); + if ( out ) { + out->WriteInt( RECAST_NAVMESH_MAGIC ); + out->WriteInt( RECAST_NAVMESH_VERSION ); + out->WriteUnsignedInt( mapFileCRC ); + out->WriteInt( navDataSize ); + out->Write( navData, navDataSize ); + fileSystem->CloseFile( out ); + common->Printf( "Wrote Recast navmesh %s (%d bytes, %d polys)\n", fileName.c_str(), navDataSize, polyMesh ? polyMesh->npolys : 0 ); + } else { + common->Warning( "Recast: could not open %s for writing", fileName.c_str() ); + ok = false; + } + } + + if ( navData ) { + dtFree( navData ); + } + delete[] triAreas; + if ( detailMesh ) { + rcFreePolyMeshDetail( detailMesh ); + } + if ( polyMesh ) { + rcFreePolyMesh( polyMesh ); + } + if ( contourSet ) { + rcFreeContourSet( contourSet ); + } + if ( compactHeightfield ) { + rcFreeCompactHeightfield( compactHeightfield ); + } + if ( heightfield ) { + rcFreeHeightField( heightfield ); + } + + return ok; +} + +bool idRecastNavMeshLocal::BuildMapFile( const idStr &mapName, const idStr &aasType ) { + common->Printf( "Recast: requested build map '%s' type '%s'\n", mapName.c_str(), aasType.c_str() ); + + idStr normalizedMapName = mapName; + normalizedMapName.BackSlashesToSlashes(); + if ( normalizedMapName.Icmpn( "maps/", 5 ) != 0 ) { + normalizedMapName = "maps/" + normalizedMapName; + } + normalizedMapName.SetFileExtension( ".map" ); + + common->Printf( "Recast: normalized map path %s\n", normalizedMapName.c_str() ); + common->Printf( "Recast: parsing map file\n" ); + + idMapFile mapFile; + if ( !mapFile.Parse( normalizedMapName ) ) { + common->Warning( "Recast: could not parse %s", normalizedMapName.c_str() ); + return false; + } + + common->Printf( "Recast: parsed %s with %d entities, geometry CRC %u\n", + mapFile.GetName(), mapFile.GetNumEntities(), mapFile.GetGeometryCRC() ); + + common->Printf( "Recast: loading AAS settings entityDef '%s'\n", aasType.c_str() ); + const idDeclEntityDef *settingsDecl = static_cast( declManager->FindType( DECL_ENTITYDEF, aasType, false ) ); + const idDict *settingsDict = settingsDecl ? &settingsDecl->dict : NULL; + if ( !settingsDict ) { + common->Warning( "Recast: unknown AAS/nav type '%s'", aasType.c_str() ); + return false; + } + + idAASSettings settings; + settings.FromDict( aasType, settingsDict ); + common->Printf( "Recast: settings loaded: extension %s, %d bbox(es), usePatches %s\n", + settings.fileExtension.c_str(), settings.numBoundingBoxes, settings.usePatches ? "true" : "false" ); + + idStr output = mapFile.GetName(); + output.SetFileExtension( aasType ); + output = NavFileNameForAASName( output ); + common->Printf( "Recast: output navmesh path %s\n", output.c_str() ); + + idRecastNavMeshLocal builder; + return builder.BuildAndSave( &mapFile, output, mapFile.GetGeometryCRC(), settings ); +} + +void idRecastNavMeshLocal::ToDetour( const idVec3 &in, float out[3] ) { + out[0] = in.x; + out[1] = in.z; + out[2] = in.y; +} + +idVec3 idRecastNavMeshLocal::FromDetour( const float in[3] ) { + return idVec3( in[0], in[2], in[1] ); +} + +bool idRecastNavMeshLocal::FindNearestPoly( const idVec3 &origin, const idBounds &searchBounds, dtPolyRef &ref, idVec3 *nearest ) const { + if ( !IsLoaded() || PointInsideBlocker( origin ) ) { + ref = 0; + return false; + } + + float center[3], extents[3], nearestPoint[3]; + ToDetour( origin, center ); + extents[0] = max( idMath::Fabs( searchBounds[0].x ), idMath::Fabs( searchBounds[1].x ) ); + extents[1] = max( idMath::Fabs( searchBounds[0].z ), idMath::Fabs( searchBounds[1].z ) ); + extents[2] = max( idMath::Fabs( searchBounds[0].y ), idMath::Fabs( searchBounds[1].y ) ); + if ( extents[0] <= 0.0f ) { + extents[0] = 64.0f; + } + if ( extents[1] <= 0.0f ) { + extents[1] = 96.0f; + } + if ( extents[2] <= 0.0f ) { + extents[2] = 64.0f; + } + + dtQueryFilter filter; + filter.setIncludeFlags( RECAST_POLYFLAGS_WALK ); + filter.setExcludeFlags( 0 ); + + if ( dtStatusFailed( navQuery->findNearestPoly( center, extents, &filter, &ref, nearestPoint ) ) || ref == 0 ) { + return false; + } + + if ( nearest ) { + *nearest = FromDetour( nearestPoint ); + } + return true; +} + +int idRecastNavMeshLocal::AreaForRef( dtPolyRef ref ) const { + if ( ref == 0 ) { + return 0; + } + for ( int i = 0; i < polyRefs.Num(); i++ ) { + if ( polyRefs[i] == ref ) { + return i + 1; + } + } + return polyRefs.Append( ref ) + 1; +} + +dtPolyRef idRecastNavMeshLocal::RefForArea( int areaNum ) const { + if ( areaNum <= 0 || areaNum > polyRefs.Num() ) { + return 0; + } + return polyRefs[areaNum - 1]; +} + +int idRecastNavMeshLocal::PointAreaNum( const idVec3 &origin ) const { + dtPolyRef ref; + if ( !FindNearestPoly( origin, settings.boundingBoxes[0], ref, NULL ) ) { + return 0; + } + return AreaForRef( ref ); +} + +int idRecastNavMeshLocal::PointReachableAreaNum( const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const { + dtPolyRef ref; + if ( !FindNearestPoly( origin, searchBounds, ref, NULL ) ) { + return 0; + } + return AreaForRef( ref ); +} + +int idRecastNavMeshLocal::BoundsReachableAreaNum( const idBounds &bounds, const int areaFlags ) const { + const idVec3 center = bounds.GetCenter(); + idBounds searchBounds; + searchBounds[0] = bounds[0] - center; + searchBounds[1] = bounds[1] - center; + return PointReachableAreaNum( center, searchBounds, areaFlags ); +} + +void idRecastNavMeshLocal::PushPointIntoAreaNum( int areaNum, idVec3 &origin ) const { + const dtPolyRef ref = RefForArea( areaNum ); + if ( ref == 0 || !IsLoaded() ) { + return; + } + float pos[3], nearestPoint[3]; + ToDetour( origin, pos ); + if ( dtStatusSucceed( navQuery->closestPointOnPoly( ref, pos, nearestPoint, NULL ) ) ) { + origin = FromDetour( nearestPoint ); + } +} + +idVec3 idRecastNavMeshLocal::AreaCenter( int areaNum ) const { + const dtPolyRef ref = RefForArea( areaNum ); + if ( ref == 0 || !navMesh ) { + return vec3_origin; + } + + const dtMeshTile *tile = NULL; + const dtPoly *poly = NULL; + if ( dtStatusFailed( navMesh->getTileAndPolyByRef( ref, &tile, &poly ) ) || !tile || !poly ) { + return vec3_origin; + } + + float center[3] = { 0.0f, 0.0f, 0.0f }; + for ( int i = 0; i < poly->vertCount; i++ ) { + const float *v = &tile->verts[poly->verts[i] * 3]; + center[0] += v[0]; + center[1] += v[1]; + center[2] += v[2]; + } + const float inv = 1.0f / poly->vertCount; + center[0] *= inv; + center[1] *= inv; + center[2] *= inv; + return FromDetour( center ); +} + +int idRecastNavMeshLocal::AreaFlags( int areaNum ) const { + return AREA_REACHABLE_WALK; +} + +int idRecastNavMeshLocal::AreaTravelFlags( int areaNum ) const { + return TFL_WALK; +} + +bool idRecastNavMeshLocal::Trace( aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const { + idVec3 endPos; + int endAreaNum; + const int startArea = PointAreaNum( start ); + const bool valid = PathValid( startArea, start, 0, end, TFL_WALK, endPos, endAreaNum ); + trace.fraction = valid ? 1.0f : 0.0f; + trace.endpos = endPos; + trace.lastAreaNum = endAreaNum; + trace.numAreas = endAreaNum > 0 ? 1 : 0; + if ( trace.numAreas > 0 && trace.areas && trace.points && trace.maxAreas > 0 ) { + trace.areas[0] = endAreaNum; + trace.points[0] = endPos; + } + return !valid; +} + +bool idRecastNavMeshLocal::SetAreaState( const idBounds &bounds, const int areaContents, bool disabled ) { + if ( disabled ) { + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( areaBlockers[i].active && + ( areaBlockers[i].areaContents & areaContents ) != 0 && + areaBlockers[i].bounds.Expand( RECAST_AREA_BLOCKER_MATCH_EXPAND ).IntersectsBounds( bounds ) ) { + areaBlockers[i].bounds = bounds; + areaBlockers[i].areaContents = areaContents; + return true; + } + } + + recastBoundsBlocker_t blocker; + blocker.bounds = bounds; + blocker.areaContents = areaContents; + blocker.active = true; + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( !areaBlockers[i].active ) { + areaBlockers[i] = blocker; + return true; + } + } + areaBlockers.Append( blocker ); + } else { + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( areaBlockers[i].active && + ( areaBlockers[i].areaContents & areaContents ) != 0 && + areaBlockers[i].bounds.Expand( RECAST_AREA_BLOCKER_MATCH_EXPAND ).IntersectsBounds( bounds ) ) { + areaBlockers[i].active = false; + } + } + } + return true; +} + +recastObstacleHandle_t idRecastNavMeshLocal::AddObstacle( const idBounds &bounds ) { + recastBoundsBlocker_t blocker; + blocker.bounds = bounds; + blocker.areaContents = AREACONTENTS_OBSTACLE; + blocker.active = true; + + for ( int i = 0; i < obstacles.Num(); i++ ) { + if ( !obstacles[i].active ) { + obstacles[i] = blocker; + return i; + } + } + return obstacles.Append( blocker ); +} + +void idRecastNavMeshLocal::RemoveObstacle( const recastObstacleHandle_t handle ) { + if ( handle >= 0 && handle < obstacles.Num() ) { + obstacles[handle].active = false; + } +} + +void idRecastNavMeshLocal::RemoveAllObstacles( void ) { + obstacles.Clear(); + areaBlockers.Clear(); +} + +bool idRecastNavMeshLocal::LineHitsBlocker( const idVec3 &start, const idVec3 &end ) const { + for ( int i = 0; i < obstacles.Num(); i++ ) { + if ( obstacles[i].active && obstacles[i].bounds.LineIntersection( start, end ) ) { + return true; + } + } + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( areaBlockers[i].active && areaBlockers[i].bounds.LineIntersection( start, end ) ) { + return true; + } + } + return false; +} + +bool idRecastNavMeshLocal::PointInsideBlocker( const idVec3 &origin ) const { + for ( int i = 0; i < obstacles.Num(); i++ ) { + if ( obstacles[i].active && obstacles[i].bounds.ContainsPoint( origin ) ) { + return true; + } + } + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( areaBlockers[i].active && areaBlockers[i].bounds.ContainsPoint( origin ) ) { + return true; + } + } + return false; +} + +bool idRecastNavMeshLocal::FindPathRefs( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, dtPolyRef *pathRefs, int &numPathRefs, const int maxPathRefs ) const { + numPathRefs = 0; + if ( !IsLoaded() || PointInsideBlocker( origin ) || PointInsideBlocker( goalOrigin ) ) { + return false; + } + + dtPolyRef startRef = RefForArea( areaNum ); + dtPolyRef endRef = RefForArea( goalAreaNum ); + idVec3 nearest; + if ( startRef == 0 ) { + FindNearestPoly( origin, settings.boundingBoxes[0], startRef, &nearest ); + } + if ( endRef == 0 ) { + FindNearestPoly( goalOrigin, settings.boundingBoxes[0], endRef, &nearest ); + } + if ( startRef == 0 || endRef == 0 ) { + return false; + } + + float start[3], end[3]; + ToDetour( origin, start ); + ToDetour( goalOrigin, end ); + + dtQueryFilter filter; + filter.setIncludeFlags( RECAST_POLYFLAGS_WALK ); + filter.setExcludeFlags( 0 ); + return dtStatusSucceed( navQuery->findPath( startRef, endRef, start, end, &filter, pathRefs, &numPathRefs, maxPathRefs ) ) && numPathRefs > 0; +} + +int idRecastNavMeshLocal::TravelTimeToGoalArea( int areaNum, const idVec3 &origin, int goalAreaNum, int travelFlags ) const { + dtPolyRef pathRefs[MAX_RECAST_PATH_POLYS]; + int numPathRefs; + const idVec3 goalOrigin = AreaCenter( goalAreaNum ); + if ( !FindPathRefs( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, pathRefs, numPathRefs, MAX_RECAST_PATH_POLYS ) ) { + return 0; + } + const float dist = ( goalOrigin - origin ).Length(); + return idMath::Ftoi( dist * 100.0f / 300.0f ); +} + +bool idRecastNavMeshLocal::RouteToGoalArea( int areaNum, const idVec3 origin, int goalAreaNum, int travelFlags, recastPath_t &route ) const { + recastPath_t path; + const idVec3 goalOrigin = AreaCenter( goalAreaNum ); + if ( !PathToGoal( path, areaNum, origin, goalAreaNum, goalOrigin, travelFlags ) ) { + route.travelTime = 0; + route.moveAreaNum = 0; + route.moveGoal = origin; + route.secondaryGoal = origin; + return false; + } + route = path; + route.travelTime = idMath::Ftoi( ( path.moveGoal - origin ).Length() * 100.0f / 300.0f ); + return true; +} + +bool idRecastNavMeshLocal::PathToGoal( recastPath_t &path, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags ) const { + path.moveGoal = origin; + path.moveAreaNum = areaNum; + path.secondaryGoal = origin; + path.travelTime = 0; + + dtPolyRef pathRefs[MAX_RECAST_PATH_POLYS]; + int numPathRefs; + if ( !FindPathRefs( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, pathRefs, numPathRefs, MAX_RECAST_PATH_POLYS ) ) { + return false; + } + + float start[3], end[3], straightPath[MAX_RECAST_PATH_POLYS * 3]; + unsigned char straightFlags[MAX_RECAST_PATH_POLYS]; + dtPolyRef straightRefs[MAX_RECAST_PATH_POLYS]; + int numStraight = 0; + ToDetour( origin, start ); + ToDetour( goalOrigin, end ); + + dtQueryFilter filter; + filter.setIncludeFlags( RECAST_POLYFLAGS_WALK ); + filter.setExcludeFlags( 0 ); + + if ( dtStatusFailed( navQuery->findStraightPath( start, end, pathRefs, numPathRefs, straightPath, straightFlags, straightRefs, &numStraight, MAX_RECAST_PATH_POLYS ) ) || numStraight <= 0 ) { + return false; + } + + const int steerIndex = numStraight > 1 ? 1 : 0; + path.moveGoal = FromDetour( &straightPath[steerIndex * 3] ); + path.moveAreaNum = AreaForRef( straightRefs[steerIndex] ? straightRefs[steerIndex] : pathRefs[numPathRefs - 1] ); + path.secondaryGoal = goalOrigin; + path.travelTime = idMath::Ftoi( ( path.moveGoal - origin ).Length() * 100.0f / 300.0f ); + if ( LineHitsBlocker( origin, path.moveGoal ) ) { + return false; + } + return true; +} + +bool idRecastNavMeshLocal::PathValid( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const { + if ( LineHitsBlocker( origin, goalOrigin ) ) { + endPos = origin; + endAreaNum = areaNum; + return false; + } + + dtPolyRef startRef = RefForArea( areaNum ); + idVec3 nearest; + if ( startRef == 0 && !FindNearestPoly( origin, settings.boundingBoxes[0], startRef, &nearest ) ) { + endPos = origin; + endAreaNum = 0; + return false; + } + + float start[3], end[3], hitNormal[3]; + float t = 0.0f; + ToDetour( origin, start ); + ToDetour( goalOrigin, end ); + + dtQueryFilter filter; + filter.setIncludeFlags( RECAST_POLYFLAGS_WALK ); + filter.setExcludeFlags( 0 ); + + dtPolyRef visited[MAX_RECAST_PATH_POLYS]; + int numVisited = 0; + if ( dtStatusFailed( navQuery->raycast( startRef, start, end, &filter, &t, hitNormal, visited, &numVisited, MAX_RECAST_PATH_POLYS ) ) ) { + endPos = origin; + endAreaNum = areaNum; + return false; + } + + if ( t > 1.0f ) { + t = 1.0f; + } + endPos = origin + ( goalOrigin - origin ) * t; + endAreaNum = numVisited > 0 ? AreaForRef( visited[numVisited - 1] ) : areaNum; + return t >= 1.0f; +} + +bool idRecastNavMeshLocal::PathAreaList( int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, int *areas, int &numAreas, int maxAreas ) const { + numAreas = 0; + dtPolyRef pathRefs[MAX_RECAST_PATH_POLYS]; + int numPathRefs; + if ( maxAreas <= 0 || !areas || !FindPathRefs( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, pathRefs, numPathRefs, MAX_RECAST_PATH_POLYS ) ) { + return false; + } + + for ( int i = 0; i < numPathRefs && numAreas < maxAreas; i++ ) { + areas[numAreas++] = AreaForRef( pathRefs[i] ); + } + return numAreas > 0; +} + +void idRecastNavMeshLocal::Stats( void ) const { + int activeObstacles = 0; + int activeBlockers = 0; + + for ( int i = 0; i < obstacles.Num(); i++ ) { + if ( obstacles[i].active ) { + activeObstacles++; + } + } + for ( int i = 0; i < areaBlockers.Num(); i++ ) { + if ( areaBlockers[i].active ) { + activeBlockers++; + } + } + + common->Printf( "[%s]\n", name.c_str() ); + common->Printf( "Recast/Detour navmesh loaded: %d cached poly refs, %d active obstacles, %d active blockers\n", polyRefs.Num(), activeObstacles, activeBlockers ); + common->Printf( "DetourCrowd avoidance: %s\n", crowd ? "initialized" : "not available" ); +} + +class idRecastNavigationManagerLocal : public idRecastNavigationManager { +public: + virtual ~idRecastNavigationManagerLocal( void ); + + virtual recastNavHandle_t Alloc( void ); + virtual void Free( recastNavHandle_t handle ); + + virtual bool Load( recastNavHandle_t handle, const char *aasName, const char *fileName, unsigned int mapFileCRC ); + virtual bool BuildMapFile( const char *mapName, const char *aasType ); + virtual void Stats( recastNavHandle_t handle ) const; + virtual void DebugDraw( recastNavHandle_t handle, idRenderWorld *renderWorld, int drawMode, int lifetime ) const; + + virtual bool IsLoaded( recastNavHandle_t handle ) const; + virtual const char * GetName( recastNavHandle_t handle ) const; + virtual int NumPolys( recastNavHandle_t handle ) const; + virtual const idAASSettings *GetSettings( recastNavHandle_t handle ) const; + + virtual int PointAreaNum( recastNavHandle_t handle, const idVec3 &origin ) const; + virtual int PointReachableAreaNum( recastNavHandle_t handle, const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const; + virtual int BoundsReachableAreaNum( recastNavHandle_t handle, const idBounds &bounds, const int areaFlags ) const; + virtual void PushPointIntoAreaNum( recastNavHandle_t handle, int areaNum, idVec3 &origin ) const; + virtual idVec3 AreaCenter( recastNavHandle_t handle, int areaNum ) const; + virtual int AreaFlags( recastNavHandle_t handle, int areaNum ) const; + virtual int AreaTravelFlags( recastNavHandle_t handle, int areaNum ) const; + virtual bool Trace( recastNavHandle_t handle, aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const; + + virtual bool SetAreaState( recastNavHandle_t handle, const idBounds &bounds, const int areaContents, bool disabled ); + virtual recastObstacleHandle_t AddObstacle( recastNavHandle_t handle, const idBounds &bounds ); + virtual void RemoveObstacle( recastNavHandle_t handle, const recastObstacleHandle_t obstacleHandle ); + virtual void RemoveAllObstacles( recastNavHandle_t handle ); + + virtual int TravelTimeToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, int travelFlags ) const; + virtual bool RouteToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 origin, int goalAreaNum, int travelFlags, recastPath_t &route ) const; + virtual bool PathToGoal( recastNavHandle_t handle, recastPath_t &path, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags ) const; + virtual bool PathValid( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const; + virtual bool PathAreaList( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, int *areas, int &numAreas, int maxAreas ) const; + +private: + idRecastNavMeshLocal * Nav( recastNavHandle_t handle ) const; + + idList navMeshes; +}; + +idRecastNavigationManagerLocal RecastNavigationManagerLocal; +idRecastNavigationManager *RecastNavigationManager = &RecastNavigationManagerLocal; + +idRecastNavigationManagerLocal::~idRecastNavigationManagerLocal( void ) { + for ( int i = 0; i < navMeshes.Num(); i++ ) { + delete navMeshes[i]; + } + navMeshes.Clear(); +} + +idRecastNavMeshLocal *idRecastNavigationManagerLocal::Nav( recastNavHandle_t handle ) const { + if ( handle < 0 || handle >= navMeshes.Num() ) { + return NULL; + } + return navMeshes[handle]; +} + +recastNavHandle_t idRecastNavigationManagerLocal::Alloc( void ) { + for ( int i = 0; i < navMeshes.Num(); i++ ) { + if ( navMeshes[i] == NULL ) { + navMeshes[i] = new idRecastNavMeshLocal; + return i; + } + } + return navMeshes.Append( new idRecastNavMeshLocal ); +} + +void idRecastNavigationManagerLocal::Free( recastNavHandle_t handle ) { + idRecastNavMeshLocal *nav = Nav( handle ); + if ( !nav ) { + return; + } + delete nav; + navMeshes[handle] = NULL; +} + +bool idRecastNavigationManagerLocal::Load( recastNavHandle_t handle, const char *aasName, const char *fileName, unsigned int mapFileCRC ) { + idRecastNavMeshLocal *nav = Nav( handle ); + if ( !nav ) { + return false; + } + + idStr aasType; + idStr aasNameStr = aasName; + aasNameStr.ExtractFileExtension( aasType ); + if ( aasType.IsEmpty() ) { + return false; + } + + const idDeclEntityDef *settingsDecl = static_cast( declManager->FindType( DECL_ENTITYDEF, aasType, false ) ); + const idDict *settingsDict = settingsDecl ? &settingsDecl->dict : NULL; + if ( !settingsDict ) { + common->Warning( "Recast: unknown AAS/nav type '%s'", aasType.c_str() ); + return false; + } + + idAASSettings settings; + settings.FromDict( aasType, settingsDict ); + nav->InitForAAS( aasNameStr, settings, mapFileCRC ); + if ( !nav->Load( fileName, mapFileCRC ) ) { + nav->Shutdown(); + return false; + } + return true; +} + +bool idRecastNavigationManagerLocal::BuildMapFile( const char *mapName, const char *aasType ) { + return idRecastNavMeshLocal::BuildMapFile( mapName, aasType ); +} + +void idRecastNavigationManagerLocal::Stats( recastNavHandle_t handle ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + if ( nav ) { + nav->Stats(); + } +} + +void idRecastNavigationManagerLocal::DebugDraw( recastNavHandle_t handle, idRenderWorld *renderWorld, int drawMode, int lifetime ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + if ( nav ) { + nav->DebugDraw( renderWorld, drawMode, lifetime ); + } +} + +bool idRecastNavigationManagerLocal::IsLoaded( recastNavHandle_t handle ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav && nav->IsLoaded(); +} + +const char *idRecastNavigationManagerLocal::GetName( recastNavHandle_t handle ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->GetName().c_str() : ""; +} + +int idRecastNavigationManagerLocal::NumPolys( recastNavHandle_t handle ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->NumPolys() : 0; +} + +const idAASSettings *idRecastNavigationManagerLocal::GetSettings( recastNavHandle_t handle ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->GetSettings() : NULL; +} + +int idRecastNavigationManagerLocal::PointAreaNum( recastNavHandle_t handle, const idVec3 &origin ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->PointAreaNum( origin ) : 0; +} + +int idRecastNavigationManagerLocal::PointReachableAreaNum( recastNavHandle_t handle, const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->PointReachableAreaNum( origin, searchBounds, areaFlags ) : 0; +} + +int idRecastNavigationManagerLocal::BoundsReachableAreaNum( recastNavHandle_t handle, const idBounds &bounds, const int areaFlags ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->BoundsReachableAreaNum( bounds, areaFlags ) : 0; +} + +void idRecastNavigationManagerLocal::PushPointIntoAreaNum( recastNavHandle_t handle, int areaNum, idVec3 &origin ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + if ( nav ) { + nav->PushPointIntoAreaNum( areaNum, origin ); + } +} + +idVec3 idRecastNavigationManagerLocal::AreaCenter( recastNavHandle_t handle, int areaNum ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->AreaCenter( areaNum ) : vec3_origin; +} + +int idRecastNavigationManagerLocal::AreaFlags( recastNavHandle_t handle, int areaNum ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->AreaFlags( areaNum ) : 0; +} + +int idRecastNavigationManagerLocal::AreaTravelFlags( recastNavHandle_t handle, int areaNum ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->AreaTravelFlags( areaNum ) : TFL_INVALID; +} + +bool idRecastNavigationManagerLocal::Trace( recastNavHandle_t handle, aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->Trace( trace, start, end ) : false; +} + +bool idRecastNavigationManagerLocal::SetAreaState( recastNavHandle_t handle, const idBounds &bounds, const int areaContents, bool disabled ) { + idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->SetAreaState( bounds, areaContents, disabled ) : false; +} + +recastObstacleHandle_t idRecastNavigationManagerLocal::AddObstacle( recastNavHandle_t handle, const idBounds &bounds ) { + idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->AddObstacle( bounds ) : -1; +} + +void idRecastNavigationManagerLocal::RemoveObstacle( recastNavHandle_t handle, const recastObstacleHandle_t obstacleHandle ) { + idRecastNavMeshLocal *nav = Nav( handle ); + if ( nav ) { + nav->RemoveObstacle( obstacleHandle ); + } +} + +void idRecastNavigationManagerLocal::RemoveAllObstacles( recastNavHandle_t handle ) { + idRecastNavMeshLocal *nav = Nav( handle ); + if ( nav ) { + nav->RemoveAllObstacles(); + } +} + +int idRecastNavigationManagerLocal::TravelTimeToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, int travelFlags ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->TravelTimeToGoalArea( areaNum, origin, goalAreaNum, travelFlags ) : 0; +} + +bool idRecastNavigationManagerLocal::RouteToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 origin, int goalAreaNum, int travelFlags, recastPath_t &route ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->RouteToGoalArea( areaNum, origin, goalAreaNum, travelFlags, route ) : false; +} + +bool idRecastNavigationManagerLocal::PathToGoal( recastNavHandle_t handle, recastPath_t &path, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->PathToGoal( path, areaNum, origin, goalAreaNum, goalOrigin, travelFlags ) : false; +} + +bool idRecastNavigationManagerLocal::PathValid( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->PathValid( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, endPos, endAreaNum ) : false; +} + +bool idRecastNavigationManagerLocal::PathAreaList( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, int *areas, int &numAreas, int maxAreas ) const { + const idRecastNavMeshLocal *nav = Nav( handle ); + return nav ? nav->PathAreaList( areaNum, origin, goalAreaNum, goalOrigin, travelFlags, areas, numAreas, maxAreas ) : false; +} diff --git a/neo/engine/tools/compilers/recast/RecastNavigation.h b/neo/engine/tools/compilers/recast/RecastNavigation.h new file mode 100644 index 00000000..221f0c6e --- /dev/null +++ b/neo/engine/tools/compilers/recast/RecastNavigation.h @@ -0,0 +1,66 @@ +/* +=========================================================================== + +IceTech GPL Source Code +Copyright (C) 2026 Justin Marshall + +=========================================================================== +*/ + +#ifndef __RECAST_NAVIGATION_H__ +#define __RECAST_NAVIGATION_H__ + +typedef int recastNavHandle_t; +typedef int recastObstacleHandle_t; + +static const recastNavHandle_t RECAST_NAV_HANDLE_INVALID = -1; +static const int MAX_RECAST_PATH_AREAS = 256; + +typedef struct recastPath_s { + idVec3 moveGoal; + idVec3 secondaryGoal; + int moveAreaNum; + int travelTime; +} recastPath_t; + +class idRecastNavigationManager { +public: + virtual ~idRecastNavigationManager( void ) {} + + virtual recastNavHandle_t Alloc( void ) = 0; + virtual void Free( recastNavHandle_t handle ) = 0; + + virtual bool Load( recastNavHandle_t handle, const char *aasName, const char *fileName, unsigned int mapFileCRC ) = 0; + virtual bool BuildMapFile( const char *mapName, const char *aasType ) = 0; + virtual void Stats( recastNavHandle_t handle ) const = 0; + virtual void DebugDraw( recastNavHandle_t handle, idRenderWorld *renderWorld, int drawMode, int lifetime ) const = 0; + + virtual bool IsLoaded( recastNavHandle_t handle ) const = 0; + virtual const char * GetName( recastNavHandle_t handle ) const = 0; + virtual int NumPolys( recastNavHandle_t handle ) const = 0; + virtual const idAASSettings *GetSettings( recastNavHandle_t handle ) const = 0; + + virtual int PointAreaNum( recastNavHandle_t handle, const idVec3 &origin ) const = 0; + virtual int PointReachableAreaNum( recastNavHandle_t handle, const idVec3 &origin, const idBounds &searchBounds, const int areaFlags ) const = 0; + virtual int BoundsReachableAreaNum( recastNavHandle_t handle, const idBounds &bounds, const int areaFlags ) const = 0; + virtual void PushPointIntoAreaNum( recastNavHandle_t handle, int areaNum, idVec3 &origin ) const = 0; + virtual idVec3 AreaCenter( recastNavHandle_t handle, int areaNum ) const = 0; + virtual int AreaFlags( recastNavHandle_t handle, int areaNum ) const = 0; + virtual int AreaTravelFlags( recastNavHandle_t handle, int areaNum ) const = 0; + virtual bool Trace( recastNavHandle_t handle, aasTrace_t &trace, const idVec3 &start, const idVec3 &end ) const = 0; + + virtual bool SetAreaState( recastNavHandle_t handle, const idBounds &bounds, const int areaContents, bool disabled ) = 0; + virtual recastObstacleHandle_t AddObstacle( recastNavHandle_t handle, const idBounds &bounds ) = 0; + virtual void RemoveObstacle( recastNavHandle_t handle, const recastObstacleHandle_t obstacleHandle ) = 0; + virtual void RemoveAllObstacles( recastNavHandle_t handle ) = 0; + + virtual int TravelTimeToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, int travelFlags ) const = 0; + virtual bool RouteToGoalArea( recastNavHandle_t handle, int areaNum, const idVec3 origin, int goalAreaNum, int travelFlags, recastPath_t &route ) const = 0; + virtual bool PathToGoal( recastNavHandle_t handle, recastPath_t &path, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags ) const = 0; + virtual bool PathValid( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, idVec3 &endPos, int &endAreaNum ) const = 0; + virtual bool PathAreaList( recastNavHandle_t handle, int areaNum, const idVec3 &origin, int goalAreaNum, const idVec3 &goalOrigin, int travelFlags, int *areas, int &numAreas, int maxAreas ) const = 0; +}; + +extern idRecastNavigationManager *RecastNavigationManager; + +#endif /* !__RECAST_NAVIGATION_H__ */ diff --git a/rage/materials/generated_lit_materials.mtr b/rage/materials/generated_lit_materials.mtr new file mode 100644 index 00000000..ef0f22f9 --- /dev/null +++ b/rage/materials/generated_lit_materials.mtr @@ -0,0 +1,9444 @@ +// Auto-generated Doom 3 lit material definitions +// Generated from models/ and textures/ + +textures/bank/tiles_ceramic1c +{ + qer_editorimage textures/bank/tiles_ceramic1c + + diffusemap textures/bank/tiles_ceramic1c +} +textures/bank/tiles_metal1a_long +{ + qer_editorimage textures/bank/tiles_metal1a_long + + diffusemap textures/bank/tiles_metal1a_long + specularmap textures/bank/tiles_metal1a_long_s +} +textures/bank/tiles_metal1a_longest +{ + qer_editorimage textures/bank/tiles_metal1a_longest + + diffusemap textures/bank/tiles_metal1a_longest + specularmap textures/bank/tiles_metal1a_longest_s +} +textures/banners/polebanner +{ + qer_editorimage textures/banners/polebanner + + diffusemap textures/banners/polebanner + bumpmap textures/banners/polebanner_local + specularmap textures/banners/polebanner_s +} +textures/banners/polebanner2 +{ + qer_editorimage textures/banners/polebanner2 + + diffusemap textures/banners/polebanner2 +} +textures/banners/polebanner_xl +{ + qer_editorimage textures/banners/polebanner_xl + + diffusemap textures/banners/polebanner_xl + bumpmap textures/banners/polebanner_xl_local + specularmap textures/banners/polebanner_xl_s +} +textures/banners/vehiclevendor +{ + qer_editorimage textures/banners/vehiclevendor + + diffusemap textures/banners/vehiclevendor +} +textures/bunker/blade2 +{ + qer_editorimage textures/bunker/blade2 + + diffusemap textures/bunker/blade2 + bumpmap textures/bunker/blade2_local + specularmap textures/bunker/blade2_s +} +textures/bunker/bolts +{ + qer_editorimage textures/bunker/bolts + + diffusemap textures/bunker/bolts + bumpmap textures/bunker/bolts_local + specularmap textures/bunker/bolts_s +} +textures/bunker/bricks1_bmp +{ + qer_editorimage textures/bunker/bricks1_bmp + + diffusemap textures/bunker/bricks1_bmp +} +textures/bunker/bricks1c +{ + qer_editorimage textures/bunker/bricks1c + + diffusemap textures/bunker/bricks1c +} +textures/bunker/bricks4 +{ + qer_editorimage textures/bunker/bricks4 + + diffusemap textures/bunker/bricks4 + bumpmap textures/bunker/bricks4_local +} +textures/bunker/btrim1 +{ + qer_editorimage textures/bunker/btrim1 + + diffusemap textures/bunker/btrim1 + bumpmap textures/bunker/btrim1_local + specularmap textures/bunker/btrim1_s +} +textures/bunker/bunker_gratewall2 +{ + qer_editorimage textures/bunker/bunker_gratewall2 + + diffusemap textures/bunker/bunker_gratewall2 + bumpmap textures/bunker/bunker_gratewall2_local + specularmap textures/bunker/bunker_gratewall2_s +} +textures/bunker/bunkerlight1 +{ + qer_editorimage textures/bunker/bunkerlight1 + + diffusemap textures/bunker/bunkerlight1 + bumpmap textures/bunker/bunkerlight1_local +} +textures/bunker/bunkerlight1_add +{ + qer_editorimage textures/bunker/bunkerlight1_add + + diffusemap textures/bunker/bunkerlight1_add +} +textures/bunker/bwallsupport +{ + qer_editorimage textures/bunker/bwallsupport + + diffusemap textures/bunker/bwallsupport + bumpmap textures/bunker/bwallsupport_local + specularmap textures/bunker/bwallsupport_s +} +textures/bunker/bwallsupport2 +{ + qer_editorimage textures/bunker/bwallsupport2 + + diffusemap textures/bunker/bwallsupport2 +} +textures/bunker/bwallsupport3 +{ + qer_editorimage textures/bunker/bwallsupport3 + + diffusemap textures/bunker/bwallsupport3 +} +textures/bunker/bwallsupport4 +{ + qer_editorimage textures/bunker/bwallsupport4 + + diffusemap textures/bunker/bwallsupport4 + specularmap textures/bunker/bwallsupport4_s +} +textures/bunker/cabinet +{ + qer_editorimage textures/bunker/cabinet + + diffusemap textures/bunker/cabinet + bumpmap textures/bunker/cabinet_local + specularmap textures/bunker/cabinet_s +} +textures/bunker/cabinet2_drawers +{ + qer_editorimage textures/bunker/cabinet2_drawers + + diffusemap textures/bunker/cabinet2_drawers + bumpmap textures/bunker/cabinet2_drawers_local + specularmap textures/bunker/cabinet2_drawers_s +} +textures/bunker/cabinet2_front +{ + qer_editorimage textures/bunker/cabinet2_front + + diffusemap textures/bunker/cabinet2_front + bumpmap textures/bunker/cabinet2_front_local + specularmap textures/bunker/cabinet2_front_s +} +textures/bunker/cabinet_back +{ + qer_editorimage textures/bunker/cabinet_back + + diffusemap textures/bunker/cabinet_back + bumpmap textures/bunker/cabinet_back_local + specularmap textures/bunker/cabinet_back_s +} +textures/bunker/cabinet_backside +{ + qer_editorimage textures/bunker/cabinet_backside + + diffusemap textures/bunker/cabinet_backside + bumpmap textures/bunker/cabinet_backside_local + specularmap textures/bunker/cabinet_backside_s +} +textures/bunker/cabinet_side +{ + qer_editorimage textures/bunker/cabinet_side + + diffusemap textures/bunker/cabinet_side + bumpmap textures/bunker/cabinet_side_local + specularmap textures/bunker/cabinet_side_s +} +textures/bunker/chainrope2 +{ + qer_editorimage textures/bunker/chainrope2 + + diffusemap textures/bunker/chainrope2 + bumpmap textures/bunker/chainrope2_local + specularmap textures/bunker/chainrope2_s +} +textures/bunker/cloth2 +{ + qer_editorimage textures/bunker/cloth2 + + diffusemap textures/bunker/cloth2 + bumpmap textures/bunker/cloth2_local +} +textures/bunker/cloth2a +{ + qer_editorimage textures/bunker/cloth2a + + diffusemap textures/bunker/cloth2a +} +textures/bunker/cloth2b +{ + qer_editorimage textures/bunker/cloth2b + + diffusemap textures/bunker/cloth2b +} +textures/bunker/cloth_red1 +{ + qer_editorimage textures/bunker/cloth_red1 + + diffusemap textures/bunker/cloth_red1 +} +textures/bunker/cloth_red1_small +{ + qer_editorimage textures/bunker/cloth_red1_small + + diffusemap textures/bunker/cloth_red1_small +} +textures/bunker/cloth_red1a +{ + qer_editorimage textures/bunker/cloth_red1a + + diffusemap textures/bunker/cloth_red1a +} +textures/bunker/cloth_red1a2 +{ + qer_editorimage textures/bunker/cloth_red1a2 + + diffusemap textures/bunker/cloth_red1a2 +} +textures/bunker/cloth_red1a2_small +{ + qer_editorimage textures/bunker/cloth_red1a2_small + + diffusemap textures/bunker/cloth_red1a2_small +} +textures/bunker/cloth_red1a_small +{ + qer_editorimage textures/bunker/cloth_red1a_small + + diffusemap textures/bunker/cloth_red1a_small +} +textures/bunker/cloth_red1b +{ + qer_editorimage textures/bunker/cloth_red1b + + diffusemap textures/bunker/cloth_red1b +} +textures/bunker/cloth_red1b_small +{ + qer_editorimage textures/bunker/cloth_red1b_small + + diffusemap textures/bunker/cloth_red1b_small +} +textures/bunker/cloth_red1c +{ + qer_editorimage textures/bunker/cloth_red1c + + diffusemap textures/bunker/cloth_red1c +} +textures/bunker/cloth_red1c_small +{ + qer_editorimage textures/bunker/cloth_red1c_small + + diffusemap textures/bunker/cloth_red1c_small +} +textures/bunker/cloth_red1d +{ + qer_editorimage textures/bunker/cloth_red1d + + diffusemap textures/bunker/cloth_red1d +} +textures/bunker/cloth_red1d_small +{ + qer_editorimage textures/bunker/cloth_red1d_small + + diffusemap textures/bunker/cloth_red1d_small +} +textures/bunker/cloth_red1e +{ + qer_editorimage textures/bunker/cloth_red1e + + diffusemap textures/bunker/cloth_red1e +} +textures/bunker/cloth_red1e_small +{ + qer_editorimage textures/bunker/cloth_red1e_small + + diffusemap textures/bunker/cloth_red1e_small +} +textures/bunker/concrete1 +{ + qer_editorimage textures/bunker/concrete1 + + diffusemap textures/bunker/concrete1 + bumpmap textures/bunker/concrete1_local +} +textures/bunker/concrete1a +{ + qer_editorimage textures/bunker/concrete1a + + diffusemap textures/bunker/concrete1a +} +textures/bunker/concrete2 +{ + qer_editorimage textures/bunker/concrete2 + + diffusemap textures/bunker/concrete2 + bumpmap textures/bunker/concrete2_local +} +textures/bunker/concrete3 +{ + qer_editorimage textures/bunker/concrete3 + + diffusemap textures/bunker/concrete3 + bumpmap textures/bunker/concrete3_local +} +textures/bunker/concrete_ceiling1a +{ + qer_editorimage textures/bunker/concrete_ceiling1a + + diffusemap textures/bunker/concrete_ceiling1a +} +textures/bunker/concrete_shatter3a +{ + qer_editorimage textures/bunker/concrete_shatter3a + + diffusemap textures/bunker/concrete_shatter3a +} +textures/bunker/concretef1a +{ + qer_editorimage textures/bunker/concretef1a + + diffusemap textures/bunker/concretef1a +} +textures/bunker/concretef1b +{ + qer_editorimage textures/bunker/concretef1b + + diffusemap textures/bunker/concretef1b +} +textures/bunker/control1 +{ + qer_editorimage textures/bunker/control1 + + diffusemap textures/bunker/control1 + bumpmap textures/bunker/control1_local + specularmap textures/bunker/control1_s +} +textures/bunker/control1_back +{ + qer_editorimage textures/bunker/control1_back + + diffusemap textures/bunker/control1_back + bumpmap textures/bunker/control1_back_local + specularmap textures/bunker/control1_back_s +} +textures/bunker/control1_side +{ + qer_editorimage textures/bunker/control1_side + + diffusemap textures/bunker/control1_side + bumpmap textures/bunker/control1_side_local + specularmap textures/bunker/control1_side_s +} +textures/bunker/countertop1b_side +{ + qer_editorimage textures/bunker/countertop1b_side + + diffusemap textures/bunker/countertop1b_side +} +textures/bunker/countertop2 +{ + qer_editorimage textures/bunker/countertop2 + + diffusemap textures/bunker/countertop2 + bumpmap textures/bunker/countertop2_local + specularmap textures/bunker/countertop2_s +} +textures/bunker/countertop2_side +{ + qer_editorimage textures/bunker/countertop2_side + + diffusemap textures/bunker/countertop2_side + bumpmap textures/bunker/countertop2_side_local +} +textures/bunker/fence1 +{ + qer_editorimage textures/bunker/fence1 + + diffusemap textures/bunker/fence1 + bumpmap textures/bunker/fence1_local +} +textures/bunker/grate_ac +{ + qer_editorimage textures/bunker/grate_ac + + diffusemap textures/bunker/grate_ac + bumpmap textures/bunker/grate_ac_local + specularmap textures/bunker/grate_ac_s +} +textures/bunker/hazard +{ + qer_editorimage textures/bunker/hazard + + diffusemap textures/bunker/hazard + bumpmap textures/bunker/hazard_local + specularmap textures/bunker/hazard_s +} +textures/bunker/light_neon1 +{ + qer_editorimage textures/bunker/light_neon1 + + diffusemap textures/bunker/light_neon1 + bumpmap textures/bunker/light_neon1_local + specularmap textures/bunker/light_neon1_s +} +textures/bunker/light_neon1_add +{ + qer_editorimage textures/bunker/light_neon1_add + + diffusemap textures/bunker/light_neon1_add +} +textures/bunker/metal_ceiling1 +{ + qer_editorimage textures/bunker/metal_ceiling1 + + diffusemap textures/bunker/metal_ceiling1 + bumpmap textures/bunker/metal_ceiling1_local +} +textures/bunker/metal_ceiling1_bmp +{ + qer_editorimage textures/bunker/metal_ceiling1_bmp + + diffusemap textures/bunker/metal_ceiling1_bmp +} +textures/bunker/metal_column1 +{ + qer_editorimage textures/bunker/metal_column1 + + diffusemap textures/bunker/metal_column1 + bumpmap textures/bunker/metal_column1_local + specularmap textures/bunker/metal_column1_s +} +textures/bunker/metal_column1_side +{ + qer_editorimage textures/bunker/metal_column1_side + + diffusemap textures/bunker/metal_column1_side + bumpmap textures/bunker/metal_column1_side_local +} +textures/bunker/metal_column1a +{ + qer_editorimage textures/bunker/metal_column1a + + diffusemap textures/bunker/metal_column1a +} +textures/bunker/metal_column1b +{ + qer_editorimage textures/bunker/metal_column1b + + diffusemap textures/bunker/metal_column1b +} +textures/bunker/metal_column1b_side +{ + qer_editorimage textures/bunker/metal_column1b_side + + diffusemap textures/bunker/metal_column1b_side +} +textures/bunker/metal_column2 +{ + qer_editorimage textures/bunker/metal_column2 + + diffusemap textures/bunker/metal_column2 + bumpmap textures/bunker/metal_column2_local + specularmap textures/bunker/metal_column2_s +} +textures/bunker/metal_column2_thin +{ + qer_editorimage textures/bunker/metal_column2_thin + + diffusemap textures/bunker/metal_column2_thin + bumpmap textures/bunker/metal_column2_thin_local + specularmap textures/bunker/metal_column2_thin_s +} +textures/bunker/metal_column2_thin_tile +{ + qer_editorimage textures/bunker/metal_column2_thin_tile + + diffusemap textures/bunker/metal_column2_thin_tile + bumpmap textures/bunker/metal_column2_thin_tile_local + specularmap textures/bunker/metal_column2_thin_tile_s +} +textures/bunker/metal_column2a +{ + qer_editorimage textures/bunker/metal_column2a + + diffusemap textures/bunker/metal_column2a +} +textures/bunker/metal_grate1 +{ + qer_editorimage textures/bunker/metal_grate1 + + diffusemap textures/bunker/metal_grate1 + bumpmap textures/bunker/metal_grate1_local + specularmap textures/bunker/metal_grate1_s +} +textures/bunker/metal_panel1_bottom +{ + qer_editorimage textures/bunker/metal_panel1_bottom + + diffusemap textures/bunker/metal_panel1_bottom + bumpmap textures/bunker/metal_panel1_bottom_local + specularmap textures/bunker/metal_panel1_bottom_s +} +textures/bunker/metal_panel1_side +{ + qer_editorimage textures/bunker/metal_panel1_side + + diffusemap textures/bunker/metal_panel1_side + bumpmap textures/bunker/metal_panel1_side_local + specularmap textures/bunker/metal_panel1_side_s +} +textures/bunker/metal_panel1_top +{ + qer_editorimage textures/bunker/metal_panel1_top + + diffusemap textures/bunker/metal_panel1_top + bumpmap textures/bunker/metal_panel1_top_local + specularmap textures/bunker/metal_panel1_top_s +} +textures/bunker/metal_panel2 +{ + qer_editorimage textures/bunker/metal_panel2 + + diffusemap textures/bunker/metal_panel2 + bumpmap textures/bunker/metal_panel2_local + specularmap textures/bunker/metal_panel2_s +} +textures/bunker/metal_panel2a +{ + qer_editorimage textures/bunker/metal_panel2a + + diffusemap textures/bunker/metal_panel2a +} +textures/bunker/metal_panel4 +{ + qer_editorimage textures/bunker/metal_panel4 + + diffusemap textures/bunker/metal_panel4 + bumpmap textures/bunker/metal_panel4_local + specularmap textures/bunker/metal_panel4_s +} +textures/bunker/metal_panel5 +{ + qer_editorimage textures/bunker/metal_panel5 + + diffusemap textures/bunker/metal_panel5 + bumpmap textures/bunker/metal_panel5_local + specularmap textures/bunker/metal_panel5_s +} +textures/bunker/metal_panel5_floor +{ + qer_editorimage textures/bunker/metal_panel5_floor + + diffusemap textures/bunker/metal_panel5_floor + bumpmap textures/bunker/metal_panel5_floor_local + specularmap textures/bunker/metal_panel5_floor_s +} +textures/bunker/metal_panel6_a +{ + qer_editorimage textures/bunker/metal_panel6_a + + diffusemap textures/bunker/metal_panel6_a +} +textures/bunker/metal_panel6a +{ + qer_editorimage textures/bunker/metal_panel6a + + diffusemap textures/bunker/metal_panel6a + bumpmap textures/bunker/metal_panel6a_local + specularmap textures/bunker/metal_panel6a_s +} +textures/bunker/metal_panel6a_a +{ + qer_editorimage textures/bunker/metal_panel6a_a + + diffusemap textures/bunker/metal_panel6a_a +} +textures/bunker/metal_panel7 +{ + qer_editorimage textures/bunker/metal_panel7 + + diffusemap textures/bunker/metal_panel7 + bumpmap textures/bunker/metal_panel7_local + specularmap textures/bunker/metal_panel7_s +} +textures/bunker/metal_pole1 +{ + qer_editorimage textures/bunker/metal_pole1_d + + diffusemap textures/bunker/metal_pole1_d + bumpmap textures/bunker/metal_pole1_local +} +textures/bunker/metal_pole3_tile +{ + qer_editorimage textures/bunker/metal_pole3_tile_d + + diffusemap textures/bunker/metal_pole3_tile_d + bumpmap textures/bunker/metal_pole3_tile_local +} +textures/bunker/metal_pole5_tile +{ + qer_editorimage textures/bunker/metal_pole5_tile_d + + diffusemap textures/bunker/metal_pole5_tile_d + specularmap textures/bunker/metal_pole5_tile_s +} +textures/bunker/metal_redwall2 +{ + qer_editorimage textures/bunker/metal_redwall2 + + diffusemap textures/bunker/metal_redwall2 + bumpmap textures/bunker/metal_redwall2_local +} +textures/bunker/metal_redwall2a +{ + qer_editorimage textures/bunker/metal_redwall2a + + diffusemap textures/bunker/metal_redwall2a +} +textures/bunker/metal_redwall2b +{ + qer_editorimage textures/bunker/metal_redwall2b + + diffusemap textures/bunker/metal_redwall2b +} +textures/bunker/metal_redwall2c +{ + qer_editorimage textures/bunker/metal_redwall2c + + diffusemap textures/bunker/metal_redwall2c +} +textures/bunker/metal_redwall2d +{ + qer_editorimage textures/bunker/metal_redwall2d + + diffusemap textures/bunker/metal_redwall2d +} +textures/bunker/metal_roof1b +{ + qer_editorimage textures/bunker/metal_roof1b + + diffusemap textures/bunker/metal_roof1b +} +textures/bunker/metal_strip1a_side +{ + qer_editorimage textures/bunker/metal_strip1a_side + + diffusemap textures/bunker/metal_strip1a_side +} +textures/bunker/metal_strip1b +{ + qer_editorimage textures/bunker/metal_strip1b + + diffusemap textures/bunker/metal_strip1b +} +textures/bunker/metal_strip1b_side +{ + qer_editorimage textures/bunker/metal_strip1b_side + + diffusemap textures/bunker/metal_strip1b_side +} +textures/bunker/metal_strip2 +{ + qer_editorimage textures/bunker/metal_strip2 + + diffusemap textures/bunker/metal_strip2 + bumpmap textures/bunker/metal_strip2_local + specularmap textures/bunker/metal_strip2_s +} +textures/bunker/metal_strip2a +{ + qer_editorimage textures/bunker/metal_strip2a + + diffusemap textures/bunker/metal_strip2a +} +textures/bunker/metal_strip2b +{ + qer_editorimage textures/bunker/metal_strip2b + + diffusemap textures/bunker/metal_strip2b +} +textures/bunker/metal_strip2c +{ + qer_editorimage textures/bunker/metal_strip2c + + diffusemap textures/bunker/metal_strip2c +} +textures/bunker/metal_strip2d +{ + qer_editorimage textures/bunker/metal_strip2d + + diffusemap textures/bunker/metal_strip2d +} +textures/bunker/metal_strip4 +{ + qer_editorimage textures/bunker/metal_strip4 + + diffusemap textures/bunker/metal_strip4 + bumpmap textures/bunker/metal_strip4_local + specularmap textures/bunker/metal_strip4_s +} +textures/bunker/metal_strip_side2b +{ + qer_editorimage textures/bunker/metal_strip_side2b + + diffusemap textures/bunker/metal_strip_side2b +} +textures/bunker/metal_tall1 +{ + qer_editorimage textures/bunker/metal_tall1 + + diffusemap textures/bunker/metal_tall1 + bumpmap textures/bunker/metal_tall1_local + specularmap textures/bunker/metal_tall1_s +} +textures/bunker/metal_tank1 +{ + qer_editorimage textures/bunker/metal_tank1 + + diffusemap textures/bunker/metal_tank1 + bumpmap textures/bunker/metal_tank1_local + specularmap textures/bunker/metal_tank1_s +} +textures/bunker/metal_trim1 +{ + qer_editorimage textures/bunker/metal_trim1 + + diffusemap textures/bunker/metal_trim1 + bumpmap textures/bunker/metal_trim1_local +} +textures/bunker/metal_trim1_bmp +{ + qer_editorimage textures/bunker/metal_trim1_bmp + + diffusemap textures/bunker/metal_trim1_bmp +} +textures/bunker/metal_trim1a2 +{ + qer_editorimage textures/bunker/metal_trim1a2 + + diffusemap textures/bunker/metal_trim1a2 +} +textures/bunker/metal_trim2a +{ + qer_editorimage textures/bunker/metal_trim2a + + diffusemap textures/bunker/metal_trim2a +} +textures/bunker/metal_trim2a_long +{ + qer_editorimage textures/bunker/metal_trim2a_long + + diffusemap textures/bunker/metal_trim2a_long +} +textures/bunker/metal_trim2a_long_side +{ + qer_editorimage textures/bunker/metal_trim2a_long_side + + diffusemap textures/bunker/metal_trim2a_long_side +} +textures/bunker/metal_trim2a_side +{ + qer_editorimage textures/bunker/metal_trim2a_side + + diffusemap textures/bunker/metal_trim2a_side +} +textures/bunker/metal_trim3 +{ + qer_editorimage textures/bunker/metal_trim3 + + diffusemap textures/bunker/metal_trim3 + bumpmap textures/bunker/metal_trim3_local + specularmap textures/bunker/metal_trim3_s +} +textures/bunker/metal_trim4 +{ + qer_editorimage textures/bunker/metal_trim4 + + diffusemap textures/bunker/metal_trim4 + bumpmap textures/bunker/metal_trim4_local + specularmap textures/bunker/metal_trim4_s +} +textures/bunker/metal_trim5 +{ + qer_editorimage textures/bunker/metal_trim5 + + diffusemap textures/bunker/metal_trim5 + bumpmap textures/bunker/metal_trim5_local + specularmap textures/bunker/metal_trim5_s +} +textures/bunker/metal_trim5b +{ + qer_editorimage textures/bunker/metal_trim5b + + diffusemap textures/bunker/metal_trim5b +} +textures/bunker/metal_wall10 +{ + qer_editorimage textures/bunker/metal_wall10 + + diffusemap textures/bunker/metal_wall10 + bumpmap textures/bunker/metal_wall10_local + specularmap textures/bunker/metal_wall10_s +} +textures/bunker/metal_wall10a +{ + qer_editorimage textures/bunker/metal_wall10a + + diffusemap textures/bunker/metal_wall10a + bumpmap textures/bunker/metal_wall10a_local +} +textures/bunker/metal_wall11 +{ + qer_editorimage textures/bunker/metal_wall11 + + diffusemap textures/bunker/metal_wall11 + bumpmap textures/bunker/metal_wall11_local +} +textures/bunker/metal_wall12 +{ + qer_editorimage textures/bunker/metal_wall12 + + diffusemap textures/bunker/metal_wall12 + bumpmap textures/bunker/metal_wall12_local + specularmap textures/bunker/metal_wall12_s +} +textures/bunker/metal_wall13 +{ + qer_editorimage textures/bunker/metal_wall13 + + diffusemap textures/bunker/metal_wall13 + bumpmap textures/bunker/metal_wall13_local + specularmap textures/bunker/metal_wall13_s +} +textures/bunker/metal_wall13a +{ + qer_editorimage textures/bunker/metal_wall13a + + diffusemap textures/bunker/metal_wall13a +} +textures/bunker/metal_wall13b +{ + qer_editorimage textures/bunker/metal_wall13b + + diffusemap textures/bunker/metal_wall13b +} +textures/bunker/metal_wall1a +{ + qer_editorimage textures/bunker/metal_wall1a + + diffusemap textures/bunker/metal_wall1a +} +textures/bunker/metal_wall1c +{ + qer_editorimage textures/bunker/metal_wall1c + + diffusemap textures/bunker/metal_wall1c +} +textures/bunker/metal_wall1d +{ + qer_editorimage textures/bunker/metal_wall1d + + diffusemap textures/bunker/metal_wall1d +} +textures/bunker/metal_wall3 +{ + qer_editorimage textures/bunker/metal_wall3 + + diffusemap textures/bunker/metal_wall3 + bumpmap textures/bunker/metal_wall3_local +} +textures/bunker/metal_wall4c +{ + qer_editorimage textures/bunker/metal_wall4c + + diffusemap textures/bunker/metal_wall4c +} +textures/bunker/metal_wall5 +{ + qer_editorimage textures/bunker/metal_wall5 + + diffusemap textures/bunker/metal_wall5 + bumpmap textures/bunker/metal_wall5_local +} +textures/bunker/metal_wall7 +{ + qer_editorimage textures/bunker/metal_wall7 + + diffusemap textures/bunker/metal_wall7 + bumpmap textures/bunker/metal_wall7_local + specularmap textures/bunker/metal_wall7_s +} +textures/bunker/metal_wall9a +{ + qer_editorimage textures/bunker/metal_wall9a + + diffusemap textures/bunker/metal_wall9a +} +textures/bunker/pipe1 +{ + qer_editorimage textures/bunker/pipe1 + + diffusemap textures/bunker/pipe1 + bumpmap textures/bunker/pipe1_local + specularmap textures/bunker/pipe1_s +} +textures/bunker/pipe1_bmp +{ + qer_editorimage textures/bunker/pipe1_bmp + + diffusemap textures/bunker/pipe1_bmp +} +textures/bunker/pipe1_dark +{ + qer_editorimage textures/bunker/pipe1_dark + + diffusemap textures/bunker/pipe1_dark + bumpmap textures/bunker/pipe1_dark_local + specularmap textures/bunker/pipe1_dark_s +} +textures/bunker/pipe1_dark_long +{ + qer_editorimage textures/bunker/pipe1_dark_long + + diffusemap textures/bunker/pipe1_dark_long + bumpmap textures/bunker/pipe1_dark_long_local + specularmap textures/bunker/pipe1_dark_long_s +} +textures/bunker/pipe1a +{ + qer_editorimage textures/bunker/pipe1a + + diffusemap textures/bunker/pipe1a + specularmap textures/bunker/pipe1a_s +} +textures/bunker/pipe1a_bmp +{ + qer_editorimage textures/bunker/pipe1a_bmp + + diffusemap textures/bunker/pipe1a_bmp +} +textures/bunker/pipe1b +{ + qer_editorimage textures/bunker/pipe1b + + diffusemap textures/bunker/pipe1b + specularmap textures/bunker/pipe1b_s +} +textures/bunker/pipe1b_bmp +{ + qer_editorimage textures/bunker/pipe1b_bmp + + diffusemap textures/bunker/pipe1b_bmp +} +textures/bunker/pipe1c +{ + qer_editorimage textures/bunker/pipe1c + + diffusemap textures/bunker/pipe1c +} +textures/bunker/pipe1c2 +{ + qer_editorimage textures/bunker/pipe1c2 + + diffusemap textures/bunker/pipe1c2 +} +textures/bunker/pipe1d +{ + qer_editorimage textures/bunker/pipe1d + + diffusemap textures/bunker/pipe1d + bumpmap textures/bunker/pipe1d_local + specularmap textures/bunker/pipe1d_s +} +textures/bunker/pipe2 +{ + qer_editorimage textures/bunker/pipe2 + + diffusemap textures/bunker/pipe2 + bumpmap textures/bunker/pipe2_local + specularmap textures/bunker/pipe2_s +} +textures/bunker/pipe2_bmp +{ + qer_editorimage textures/bunker/pipe2_bmp + + diffusemap textures/bunker/pipe2_bmp +} +textures/bunker/pipe3a +{ + qer_editorimage textures/bunker/pipe3a + + diffusemap textures/bunker/pipe3a + bumpmap textures/bunker/pipe3a_local + specularmap textures/bunker/pipe3a_s +} +textures/bunker/pipe3a_stamp1 +{ + qer_editorimage textures/bunker/pipe3a_stamp1 + + diffusemap textures/bunker/pipe3a_stamp1 + bumpmap textures/bunker/pipe3a_stamp1_local + specularmap textures/bunker/pipe3a_stamp1_s +} +textures/bunker/pipe3a_stamp2 +{ + qer_editorimage textures/bunker/pipe3a_stamp2 + + diffusemap textures/bunker/pipe3a_stamp2 + bumpmap textures/bunker/pipe3a_stamp2_local + specularmap textures/bunker/pipe3a_stamp2_s +} +textures/bunker/pipe4 +{ + qer_editorimage textures/bunker/pipe4 + + diffusemap textures/bunker/pipe4 + bumpmap textures/bunker/pipe4_local + specularmap textures/bunker/pipe4_s +} +textures/bunker/pipe5 +{ + qer_editorimage textures/bunker/pipe5 + + diffusemap textures/bunker/pipe5 + bumpmap textures/bunker/pipe5_local + specularmap textures/bunker/pipe5_s +} +textures/bunker/pipe5e +{ + qer_editorimage textures/bunker/pipe5e + + diffusemap textures/bunker/pipe5e +} +textures/bunker/pipe5f +{ + qer_editorimage textures/bunker/pipe5f + + diffusemap textures/bunker/pipe5f + bumpmap textures/bunker/pipe5f_local + specularmap textures/bunker/pipe5f_s +} +textures/bunker/pipe_end +{ + qer_editorimage textures/bunker/pipe_end + + diffusemap textures/bunker/pipe_end + bumpmap textures/bunker/pipe_end_local + specularmap textures/bunker/pipe_end_s +} +textures/bunker/pipecap1a +{ + qer_editorimage textures/bunker/pipecap1a + + diffusemap textures/bunker/pipecap1a +} +textures/bunker/pipecap2 +{ + qer_editorimage textures/bunker/pipecap2 + + diffusemap textures/bunker/pipecap2 + bumpmap textures/bunker/pipecap2_local + specularmap textures/bunker/pipecap2_s +} +textures/bunker/pipecap2a +{ + qer_editorimage textures/bunker/pipecap2a + + diffusemap textures/bunker/pipecap2a + specularmap textures/bunker/pipecap2a_s +} +textures/bunker/pipecap3 +{ + qer_editorimage textures/bunker/pipecap3 + + diffusemap textures/bunker/pipecap3 + bumpmap textures/bunker/pipecap3_local + specularmap textures/bunker/pipecap3_s +} +textures/bunker/pipecap3a +{ + qer_editorimage textures/bunker/pipecap3a + + diffusemap textures/bunker/pipecap3a +} +textures/bunker/pipecap4a +{ + qer_editorimage textures/bunker/pipecap4a + + diffusemap textures/bunker/pipecap4a +} +textures/bunker/pipecap5 +{ + qer_editorimage textures/bunker/pipecap5 + + diffusemap textures/bunker/pipecap5 + bumpmap textures/bunker/pipecap5_local + specularmap textures/bunker/pipecap5_s +} +textures/bunker/pipecap5a +{ + qer_editorimage textures/bunker/pipecap5a + + diffusemap textures/bunker/pipecap5a +} +textures/bunker/rail +{ + qer_editorimage textures/bunker/rail + + diffusemap textures/bunker/rail + bumpmap textures/bunker/rail_local + specularmap textures/bunker/rail_s +} +textures/bunker/ribwall1 +{ + qer_editorimage textures/bunker/ribwall1 + + diffusemap textures/bunker/ribwall1 + bumpmap textures/bunker/ribwall1_local + specularmap textures/bunker/ribwall1_s +} +textures/bunker/ribwall3 +{ + qer_editorimage textures/bunker/ribwall3 + + diffusemap textures/bunker/ribwall3 + bumpmap textures/bunker/ribwall3_local + specularmap textures/bunker/ribwall3_s +} +textures/bunker/ribwall3a +{ + qer_editorimage textures/bunker/ribwall3a + + diffusemap textures/bunker/ribwall3a + bumpmap textures/bunker/ribwall3a_local + specularmap textures/bunker/ribwall3a_s +} +textures/bunker/roof1 +{ + qer_editorimage textures/bunker/roof1 + + diffusemap textures/bunker/roof1 + bumpmap textures/bunker/roof1_local +} +textures/bunker/shoptsui +{ + qer_editorimage textures/bunker/shoptsui + + diffusemap textures/bunker/shoptsui + bumpmap textures/bunker/shoptsui_local + specularmap textures/bunker/shoptsui_s +} +textures/bunker/squarecap2 +{ + qer_editorimage textures/bunker/squarecap2 + + diffusemap textures/bunker/squarecap2 + bumpmap textures/bunker/squarecap2_local + specularmap textures/bunker/squarecap2_s +} +textures/bunker/stairs +{ + qer_editorimage textures/bunker/stairs + + diffusemap textures/bunker/stairs + bumpmap textures/bunker/stairs_local + specularmap textures/bunker/stairs_s +} +textures/bunker/tubing1 +{ + qer_editorimage textures/bunker/tubing1 + + diffusemap textures/bunker/tubing1 + bumpmap textures/bunker/tubing1_local +} +textures/bunker/tubing1a +{ + qer_editorimage textures/bunker/tubing1a + + diffusemap textures/bunker/tubing1a +} +textures/bunker/tubing1b +{ + qer_editorimage textures/bunker/tubing1b + + diffusemap textures/bunker/tubing1b +} +textures/bunker/tubing1c +{ + qer_editorimage textures/bunker/tubing1c + + diffusemap textures/bunker/tubing1c +} +textures/bunker/tubing1d +{ + qer_editorimage textures/bunker/tubing1d + + diffusemap textures/bunker/tubing1d +} +textures/bunker/wireholder +{ + qer_editorimage textures/bunker/wireholder + + diffusemap textures/bunker/wireholder + bumpmap textures/bunker/wireholder_local + specularmap textures/bunker/wireholder_s +} +textures/bunker/wires1 +{ + qer_editorimage textures/bunker/wires1 + + diffusemap textures/bunker/wires1 + bumpmap textures/bunker/wires1_local +} +textures/bunker/wires1a +{ + qer_editorimage textures/bunker/wires1a + + diffusemap textures/bunker/wires1a + bumpmap textures/bunker/wires1a_local +} +textures/common/1024 +{ + qer_editorimage textures/common/1024 + + diffusemap textures/common/1024 + bumpmap textures/common/1024_local +} +textures/common/128 +{ + qer_editorimage textures/common/128 + + diffusemap textures/common/128 + bumpmap textures/common/128_local +} +textures/common/128x512 +{ + qer_editorimage textures/common/128x512 + + diffusemap textures/common/128x512 +} +textures/common/256 +{ + qer_editorimage textures/common/256 + + diffusemap textures/common/256 + bumpmap textures/common/256_local +} +textures/common/256_grey +{ + qer_editorimage textures/common/256_grey + + diffusemap textures/common/256_grey +} +textures/common/256x512 +{ + qer_editorimage textures/common/256x512 + + diffusemap textures/common/256x512 + bumpmap textures/common/256x512_local +} +textures/common/512 +{ + qer_editorimage textures/common/512 + + diffusemap textures/common/512 + bumpmap textures/common/512_local +} +textures/common/512x1024 +{ + qer_editorimage textures/common/512x1024 + + diffusemap textures/common/512x1024 + bumpmap textures/common/512x1024_local +} +textures/common/aasobstacle +{ + qer_editorimage textures/common/aasobstacle + + diffusemap textures/common/aasobstacle +} +textures/common/aasportal +{ + qer_editorimage textures/common/aasportal + + diffusemap textures/common/aasportal +} +textures/common/aassolid +{ + qer_editorimage textures/common/aassolid + + diffusemap textures/common/aassolid +} +textures/common/banding +{ + qer_editorimage textures/common/banding + + diffusemap textures/common/banding +} +textures/common/black +{ + qer_editorimage textures/common/black + + diffusemap textures/common/black +} +textures/common/black4x4 +{ + qer_editorimage textures/common/black4x4 + + diffusemap textures/common/black4x4 +} +textures/common/black_twoSided +{ + qer_editorimage textures/common/black_twoSided + + diffusemap textures/common/black_twoSided +} +textures/common/caulk +{ + qer_editorimage textures/common/caulk + + diffusemap textures/common/caulk +} +textures/common/checker +{ + qer_editorimage textures/common/checker + + diffusemap textures/common/checker +} +textures/common/clip +{ + qer_editorimage textures/common/clip + + diffusemap textures/common/clip +} +textures/common/clip_and_vehicle +{ + qer_editorimage textures/common/clip_and_vehicle + + diffusemap textures/common/clip_and_vehicle +} +textures/common/clip_noareas +{ + qer_editorimage textures/common/clip_noareas + + diffusemap textures/common/clip_noareas +} +textures/common/clipplus +{ + qer_editorimage textures/common/clipplus + + diffusemap textures/common/clipplus +} +textures/common/collision +{ + qer_editorimage textures/common/collision + + diffusemap textures/common/collision +} +textures/common/collision1 +{ + qer_editorimage textures/common/collision1 + + diffusemap textures/common/collision1 +} +textures/common/collision2 +{ + qer_editorimage textures/common/collision2 + + diffusemap textures/common/collision2 +} +textures/common/collision3 +{ + qer_editorimage textures/common/collision3 + + diffusemap textures/common/collision3 +} +textures/common/collision4 +{ + qer_editorimage textures/common/collision4 + + diffusemap textures/common/collision4 +} +textures/common/collision5 +{ + qer_editorimage textures/common/collision5 + + diffusemap textures/common/collision5 +} +textures/common/colorrange +{ + qer_editorimage textures/common/colorrange + + diffusemap textures/common/colorrange +} +textures/common/cover_clip +{ + qer_editorimage textures/common/cover_clip + + diffusemap textures/common/cover_clip +} +textures/common/cushion +{ + qer_editorimage textures/common/cushion + + diffusemap textures/common/cushion +} +textures/common/darkgrey +{ + qer_editorimage textures/common/darkgrey + + diffusemap textures/common/darkgrey +} +textures/common/entitygui +{ + qer_editorimage textures/common/entitygui + + diffusemap textures/common/entitygui +} +textures/common/export_clip +{ + qer_editorimage textures/common/export_clip + + diffusemap textures/common/export_clip +} +textures/common/full_clip +{ + qer_editorimage textures/common/full_clip + + diffusemap textures/common/full_clip +} +textures/common/full_sans_player_clip +{ + qer_editorimage textures/common/full_sans_player_clip + + diffusemap textures/common/full_sans_player_clip +} +textures/common/glow1 +{ + qer_editorimage textures/common/glow1 + + diffusemap textures/common/glow1 +} +textures/common/glow1_soft +{ + qer_editorimage textures/common/glow1_soft + + diffusemap textures/common/glow1_soft +} +textures/common/glow1blend +{ + qer_editorimage textures/common/glow1blend + + diffusemap textures/common/glow1blend +} +textures/common/glow2 +{ + qer_editorimage textures/common/glow2 + + diffusemap textures/common/glow2 +} +textures/common/glow3_autoRotate +{ + qer_editorimage textures/common/glow3_autoRotate + + diffusemap textures/common/glow3_autoRotate +} +textures/common/glow5 +{ + qer_editorimage textures/common/glow5 + + diffusemap textures/common/glow5 +} +textures/common/glow5_autorotate +{ + qer_editorimage textures/common/glow5_autorotate + + diffusemap textures/common/glow5_autorotate +} +textures/common/glow6_autorotate +{ + qer_editorimage textures/common/glow6_autorotate + + diffusemap textures/common/glow6_autorotate +} +textures/common/green +{ + qer_editorimage textures/common/green + + diffusemap textures/common/green +} +textures/common/gui +{ + qer_editorimage textures/common/gui + + diffusemap textures/common/gui +} +textures/common/ikclip +{ + qer_editorimage textures/common/ikclip + + diffusemap textures/common/ikclip +} +textures/common/ikshotclip +{ + qer_editorimage textures/common/ikshotclip + + diffusemap textures/common/ikshotclip +} +textures/common/ikshotclip_armor +{ + qer_editorimage textures/common/ikshotclip_armor + + diffusemap textures/common/ikshotclip_armor +} +textures/common/ikshotclip_asphalt +{ + qer_editorimage textures/common/ikshotclip_asphalt + + diffusemap textures/common/ikshotclip_asphalt +} +textures/common/ikshotclip_cardboard +{ + qer_editorimage textures/common/ikshotclip_cardboard + + diffusemap textures/common/ikshotclip_cardboard +} +textures/common/ikshotclip_concrete +{ + qer_editorimage textures/common/ikshotclip_concrete + + diffusemap textures/common/ikshotclip_concrete +} +textures/common/ikshotclip_dirt +{ + qer_editorimage textures/common/ikshotclip_dirt + + diffusemap textures/common/ikshotclip_dirt +} +textures/common/ikshotclip_dirt_opaque +{ + qer_editorimage textures/common/ikshotclip_dirt_opaque + + diffusemap textures/common/ikshotclip_dirt_opaque +} +textures/common/ikshotclip_fabric +{ + qer_editorimage textures/common/ikshotclip_fabric + + diffusemap textures/common/ikshotclip_fabric +} +textures/common/ikshotclip_flesh +{ + qer_editorimage textures/common/ikshotclip_flesh + + diffusemap textures/common/ikshotclip_flesh +} +textures/common/ikshotclip_foliage +{ + qer_editorimage textures/common/ikshotclip_foliage + + diffusemap textures/common/ikshotclip_foliage +} +textures/common/ikshotclip_glass +{ + qer_editorimage textures/common/ikshotclip_glass + + diffusemap textures/common/ikshotclip_glass +} +textures/common/ikshotclip_linoleum +{ + qer_editorimage textures/common/ikshotclip_linoleum + + diffusemap textures/common/ikshotclip_linoleum +} +textures/common/ikshotclip_liquid +{ + qer_editorimage textures/common/ikshotclip_liquid + + diffusemap textures/common/ikshotclip_liquid +} +textures/common/ikshotclip_metal +{ + qer_editorimage textures/common/ikshotclip_metal + + diffusemap textures/common/ikshotclip_metal +} +textures/common/ikshotclip_metal_opaque +{ + qer_editorimage textures/common/ikshotclip_metal_opaque + + diffusemap textures/common/ikshotclip_metal_opaque +} +textures/common/ikshotclip_plastic +{ + qer_editorimage textures/common/ikshotclip_plastic + + diffusemap textures/common/ikshotclip_plastic +} +textures/common/ikshotclip_rock +{ + qer_editorimage textures/common/ikshotclip_rock + + diffusemap textures/common/ikshotclip_rock +} +textures/common/ikshotclip_rock_opaque +{ + qer_editorimage textures/common/ikshotclip_rock_opaque + + diffusemap textures/common/ikshotclip_rock_opaque +} +textures/common/ikshotclip_rubber +{ + qer_editorimage textures/common/ikshotclip_rubber + + diffusemap textures/common/ikshotclip_rubber +} +textures/common/ikshotclip_sludge +{ + qer_editorimage textures/common/ikshotclip_sludge + + diffusemap textures/common/ikshotclip_sludge +} +textures/common/ikshotclip_steampipe +{ + qer_editorimage textures/common/ikshotclip_steampipe + + diffusemap textures/common/ikshotclip_steampipe +} +textures/common/ikshotclip_stone +{ + qer_editorimage textures/common/ikshotclip_stone + + diffusemap textures/common/ikshotclip_stone +} +textures/common/ikshotclip_waterpipe +{ + qer_editorimage textures/common/ikshotclip_waterpipe + + diffusemap textures/common/ikshotclip_waterpipe +} +textures/common/ikshotclip_wood +{ + qer_editorimage textures/common/ikshotclip_wood + + diffusemap textures/common/ikshotclip_wood +} +textures/common/ikshotclip_wood_opaque +{ + qer_editorimage textures/common/ikshotclip_wood_opaque + + diffusemap textures/common/ikshotclip_wood_opaque +} +textures/common/ikshotvehicleclip_concrete +{ + qer_editorimage textures/common/ikshotvehicleclip_concrete + + diffusemap textures/common/ikshotvehicleclip_concrete +} +textures/common/ikshotvehicleclip_dirt +{ + qer_editorimage textures/common/ikshotvehicleclip_dirt + + diffusemap textures/common/ikshotvehicleclip_dirt +} +textures/common/ikshotvehicleclip_wood +{ + qer_editorimage textures/common/ikshotvehicleclip_wood + + diffusemap textures/common/ikshotvehicleclip_wood +} +textures/common/ladder +{ + qer_editorimage textures/common/ladder + + diffusemap textures/common/ladder +} +textures/common/lightbg +{ + qer_editorimage textures/common/lightbg + + diffusemap textures/common/lightbg +} +textures/common/manifold_hint +{ + qer_editorimage textures/common/manifold_hint + + diffusemap textures/common/manifold_hint +} +textures/common/monster_clip +{ + qer_editorimage textures/common/monster_clip + + diffusemap textures/common/monster_clip +} +textures/common/monster_clip_noareas +{ + qer_editorimage textures/common/monster_clip_noareas + + diffusemap textures/common/monster_clip_noareas +} +textures/common/monster_cover_clip +{ + qer_editorimage textures/common/monster_cover_clip + + diffusemap textures/common/monster_cover_clip +} +textures/common/moveable_clip +{ + qer_editorimage textures/common/moveable_clip + + diffusemap textures/common/moveable_clip +} +textures/common/mp_trigger +{ + qer_editorimage textures/common/mp_trigger + + diffusemap textures/common/mp_trigger +} +textures/common/nocover +{ + qer_editorimage textures/common/nocover + + diffusemap textures/common/nocover +} +textures/common/nodamage +{ + qer_editorimage textures/common/nodamage + + diffusemap textures/common/nodamage +} +textures/common/nodraw +{ + qer_editorimage textures/common/nodraw + + diffusemap textures/common/nodraw +} +textures/common/nodrawsolid +{ + qer_editorimage textures/common/nodrawsolid + + diffusemap textures/common/nodrawsolid +} +textures/common/online_vehicle_clip +{ + qer_editorimage textures/common/online_vehicle_clip + + diffusemap textures/common/online_vehicle_clip +} +textures/common/online_vehicle_clip_no_friction +{ + qer_editorimage textures/common/online_vehicle_clip_no_friction + + diffusemap textures/common/online_vehicle_clip_no_friction +} +textures/common/opaque_clip +{ + qer_editorimage textures/common/opaque_clip + + diffusemap textures/common/opaque_clip +} +textures/common/opaque_clip_noareas +{ + qer_editorimage textures/common/opaque_clip_noareas + + diffusemap textures/common/opaque_clip_noareas +} +textures/common/orient +{ + qer_editorimage textures/common/orient + + diffusemap textures/common/orient +} +textures/common/orientation +{ + qer_editorimage textures/common/orientation + + diffusemap textures/common/orientation + bumpmap textures/common/orientation_local +} +textures/common/pink +{ + qer_editorimage textures/common/pink + + diffusemap textures/common/pink +} +textures/common/player_clip +{ + qer_editorimage textures/common/player_clip + + diffusemap textures/common/player_clip +} +textures/common/player_cover_clip +{ + qer_editorimage textures/common/player_cover_clip + + diffusemap textures/common/player_cover_clip +} +textures/common/player_focus +{ + qer_editorimage textures/common/player_focus + + diffusemap textures/common/player_focus +} +textures/common/pvs_clip +{ + qer_editorimage textures/common/pvs_clip + + diffusemap textures/common/pvs_clip +} +textures/common/radiosity_shadowhull +{ + qer_editorimage textures/common/radiosity_shadowhull + + diffusemap textures/common/radiosity_shadowhull +} +textures/common/region +{ + qer_editorimage textures/common/region + + diffusemap textures/common/region +} +textures/common/roundMask +{ + qer_editorimage textures/common/roundMask + + diffusemap textures/common/roundMask +} +textures/common/shadow +{ + qer_editorimage textures/common/shadow + + diffusemap textures/common/shadow +} +textures/common/shadow_caster +{ + qer_editorimage textures/common/shadow_caster + + diffusemap textures/common/shadow_caster + bumpmap textures/common/shadow_caster_local +} +textures/common/shotclip_concrete +{ + qer_editorimage textures/common/shotclip_concrete + + diffusemap textures/common/shotclip_concrete +} +textures/common/sky +{ + qer_editorimage textures/common/sky + + diffusemap textures/common/sky +} +textures/common/sound_clip +{ + qer_editorimage textures/common/sound_clip + + diffusemap textures/common/sound_clip +} +textures/common/sound_clip_trans +{ + qer_editorimage textures/common/sound_clip_trans + + diffusemap textures/common/sound_clip_trans +} +textures/common/sound_clip_trans_pvs +{ + qer_editorimage textures/common/sound_clip_trans_pvs + + diffusemap textures/common/sound_clip_trans_pvs +} +textures/common/sound_door +{ + qer_editorimage textures/common/sound_door + + diffusemap textures/common/sound_door +} +textures/common/sound_portal +{ + qer_editorimage textures/common/sound_portal + + diffusemap textures/common/sound_portal +} +textures/common/sound_trigger +{ + qer_editorimage textures/common/sound_trigger + + diffusemap textures/common/sound_trigger +} +textures/common/surf_asphalt +{ + qer_editorimage textures/common/surf_asphalt + + diffusemap textures/common/surf_asphalt +} +textures/common/surf_cardboard +{ + qer_editorimage textures/common/surf_cardboard + + diffusemap textures/common/surf_cardboard +} +textures/common/surf_concrete +{ + qer_editorimage textures/common/surf_concrete + + diffusemap textures/common/surf_concrete +} +textures/common/surf_dirt +{ + qer_editorimage textures/common/surf_dirt + + diffusemap textures/common/surf_dirt +} +textures/common/surf_fabric +{ + qer_editorimage textures/common/surf_fabric + + diffusemap textures/common/surf_fabric +} +textures/common/surf_flesh +{ + qer_editorimage textures/common/surf_flesh + + diffusemap textures/common/surf_flesh +} +textures/common/surf_foliage +{ + qer_editorimage textures/common/surf_foliage + + diffusemap textures/common/surf_foliage +} +textures/common/surf_glass +{ + qer_editorimage textures/common/surf_glass + + diffusemap textures/common/surf_glass +} +textures/common/surf_linoleum +{ + qer_editorimage textures/common/surf_linoleum + + diffusemap textures/common/surf_linoleum +} +textures/common/surf_liquid +{ + qer_editorimage textures/common/surf_liquid + + diffusemap textures/common/surf_liquid +} +textures/common/surf_metal +{ + qer_editorimage textures/common/surf_metal + + diffusemap textures/common/surf_metal +} +textures/common/surf_plastic +{ + qer_editorimage textures/common/surf_plastic + + diffusemap textures/common/surf_plastic +} +textures/common/surf_rock +{ + qer_editorimage textures/common/surf_rock + + diffusemap textures/common/surf_rock +} +textures/common/surf_rubber +{ + qer_editorimage textures/common/surf_rubber + + diffusemap textures/common/surf_rubber +} +textures/common/surf_sludge +{ + qer_editorimage textures/common/surf_sludge + + diffusemap textures/common/surf_sludge +} +textures/common/surf_steampipe +{ + qer_editorimage textures/common/surf_steampipe + + diffusemap textures/common/surf_steampipe +} +textures/common/surf_stone +{ + qer_editorimage textures/common/surf_stone + + diffusemap textures/common/surf_stone +} +textures/common/surf_waterpipe +{ + qer_editorimage textures/common/surf_waterpipe + + diffusemap textures/common/surf_waterpipe +} +textures/common/surf_wood +{ + qer_editorimage textures/common/surf_wood + + diffusemap textures/common/surf_wood +} +textures/common/trigger +{ + qer_editorimage textures/common/trigger + + diffusemap textures/common/trigger +} +textures/common/trigger_shoot +{ + qer_editorimage textures/common/trigger_shoot + + diffusemap textures/common/trigger_shoot +} +textures/common/vehicle_clip +{ + qer_editorimage textures/common/vehicle_clip + + diffusemap textures/common/vehicle_clip +} +textures/common/video1 +{ + qer_editorimage textures/common/video1 + + diffusemap textures/common/video1 +} +textures/common/video2 +{ + qer_editorimage textures/common/video2 + + diffusemap textures/common/video2 +} +textures/common/video3 +{ + qer_editorimage textures/common/video3 + + diffusemap textures/common/video3 +} +textures/common/video4 +{ + qer_editorimage textures/common/video4 + + diffusemap textures/common/video4 +} +textures/common/video_gui +{ + qer_editorimage textures/common/video_gui + + diffusemap textures/common/video_gui +} +textures/common/video_weapon +{ + qer_editorimage textures/common/video_weapon + + diffusemap textures/common/video_weapon +} +textures/common/vision_clip +{ + qer_editorimage textures/common/vision_clip + + diffusemap textures/common/vision_clip +} +textures/common/visportal +{ + qer_editorimage textures/common/visportal + + diffusemap textures/common/visportal +} +textures/common/vol_player_view_fx +{ + qer_editorimage textures/common/vol_player_view_fx + + diffusemap textures/common/vol_player_view_fx +} +textures/common/vol_screenPRT +{ + qer_editorimage textures/common/vol_screenPRT + + diffusemap textures/common/vol_screenPRT +} +textures/common/volume +{ + qer_editorimage textures/common/volume + + diffusemap textures/common/volume +} +textures/common/water +{ + qer_editorimage textures/common/water + + diffusemap textures/common/water +} +textures/common/weapon_clip +{ + qer_editorimage textures/common/weapon_clip + + diffusemap textures/common/weapon_clip +} +textures/common/white +{ + qer_editorimage textures/common/white + + diffusemap textures/common/white +} +textures/d_industrialcity/brickfloor1b +{ + qer_editorimage textures/d_industrialcity/brickfloor1b + + diffusemap textures/d_industrialcity/brickfloor1b +} +textures/d_industrialcity/bricks1d +{ + qer_editorimage textures/d_industrialcity/bricks1d + + diffusemap textures/d_industrialcity/bricks1d +} +textures/d_industrialcity/bricks1e +{ + qer_editorimage textures/d_industrialcity/bricks1e + + diffusemap textures/d_industrialcity/bricks1e +} +textures/d_industrialcity/brokenconcrete1_wet +{ + qer_editorimage textures/d_industrialcity/brokenconcrete1_wet + + diffusemap textures/d_industrialcity/brokenconcrete1_wet + bumpmap textures/d_industrialcity/brokenconcrete1_wet_local + specularmap textures/d_industrialcity/brokenconcrete1_wet_s +} +textures/d_industrialcity/brokenconcrete1c_wet +{ + qer_editorimage textures/d_industrialcity/brokenconcrete1c_wet + + diffusemap textures/d_industrialcity/brokenconcrete1c_wet +} +textures/d_industrialcity/brokenconcrete1d2 +{ + qer_editorimage textures/d_industrialcity/brokenconcrete1d2 + + diffusemap textures/d_industrialcity/brokenconcrete1d2 + specularmap textures/d_industrialcity/brokenconcrete1d2_s +} +textures/d_industrialcity/bustedconcrete1b_modularpieces +{ + qer_editorimage textures/d_industrialcity/bustedconcrete1b_modularpieces + + diffusemap textures/d_industrialcity/bustedconcrete1b_modularpieces +} +textures/d_industrialcity/bustedconcrete1c_modularpieces +{ + qer_editorimage textures/d_industrialcity/bustedconcrete1c_modularpieces + + diffusemap textures/d_industrialcity/bustedconcrete1c_modularpieces +} +textures/d_industrialcity/ceiling1b_wet +{ + qer_editorimage textures/d_industrialcity/ceiling1b_wet + + diffusemap textures/d_industrialcity/ceiling1b_wet + specularmap textures/d_industrialcity/ceiling1b_wet_s +} +textures/d_industrialcity/concrete3 +{ + qer_editorimage textures/d_industrialcity/concrete3 + + diffusemap textures/d_industrialcity/concrete3 + bumpmap textures/d_industrialcity/concrete3_local + specularmap textures/d_industrialcity/concrete3_s +} +textures/d_industrialcity/concrete3c +{ + qer_editorimage textures/d_industrialcity/concrete3c + + diffusemap textures/d_industrialcity/concrete3c +} +textures/d_industrialcity/concrete3f +{ + qer_editorimage textures/d_industrialcity/concrete3f + + diffusemap textures/d_industrialcity/concrete3f + bumpmap textures/d_industrialcity/concrete3f_local + specularmap textures/d_industrialcity/concrete3f_s +} +textures/d_industrialcity/concrete3h2 +{ + qer_editorimage textures/d_industrialcity/concrete3h2 + + diffusemap textures/d_industrialcity/concrete3h2 +} +textures/d_industrialcity/concrete3h_locall +{ + qer_editorimage textures/d_industrialcity/concrete3h_locall + + diffusemap textures/d_industrialcity/concrete3h_locall +} +textures/d_industrialcity/concrete6c_modularpieces2 +{ + qer_editorimage textures/d_industrialcity/concrete6c_modularpieces2 + + diffusemap textures/d_industrialcity/concrete6c_modularpieces2 + bumpmap textures/d_industrialcity/concrete6c_modularpieces2_local +} +textures/d_industrialcity/concrete_dam_dc +{ + qer_editorimage textures/d_industrialcity/concrete_dam_dc + + diffusemap textures/d_industrialcity/concrete_dam_dc + bumpmap textures/d_industrialcity/concrete_dam_dc_local +} +textures/d_industrialcity/concrete_floors1_wet +{ + qer_editorimage textures/d_industrialcity/concrete_floors1_wet + + diffusemap textures/d_industrialcity/concrete_floors1_wet + bumpmap textures/d_industrialcity/concrete_floors1_wet_local + specularmap textures/d_industrialcity/concrete_floors1_wet_s +} +textures/d_industrialcity/concrete_lowwalls1 +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls1_d + + diffusemap textures/d_industrialcity/concrete_lowwalls1_d +} +textures/d_industrialcity/concrete_lowwalls16_wet +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls16_wet + + diffusemap textures/d_industrialcity/concrete_lowwalls16_wet +} +textures/d_industrialcity/concrete_lowwalls16_wet_ends +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls16_wet_ends + + diffusemap textures/d_industrialcity/concrete_lowwalls16_wet_ends +} +textures/d_industrialcity/concrete_lowwalls17_wet +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls17_wet + + diffusemap textures/d_industrialcity/concrete_lowwalls17_wet +} +textures/d_industrialcity/concrete_lowwalls17_wet_ends +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls17_wet_ends + + diffusemap textures/d_industrialcity/concrete_lowwalls17_wet_ends +} +textures/d_industrialcity/concrete_lowwalls1_ends +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls1_ends + + diffusemap textures/d_industrialcity/concrete_lowwalls1_ends + bumpmap textures/d_industrialcity/concrete_lowwalls1_ends_local +} +textures/d_industrialcity/concrete_lowwalls1_trims +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls1_trims + + diffusemap textures/d_industrialcity/concrete_lowwalls1_trims + bumpmap textures/d_industrialcity/concrete_lowwalls1_trims_local +} +textures/d_industrialcity/concrete_lowwalls1_trimsends +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls1_trimsends + + diffusemap textures/d_industrialcity/concrete_lowwalls1_trimsends + bumpmap textures/d_industrialcity/concrete_lowwalls1_trimsends_local +} +textures/d_industrialcity/concrete_lowwalls4_trims +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls4_trims + + diffusemap textures/d_industrialcity/concrete_lowwalls4_trims + bumpmap textures/d_industrialcity/concrete_lowwalls4_trims_local +} +textures/d_industrialcity/concrete_lowwalls4_trimsends +{ + qer_editorimage textures/d_industrialcity/concrete_lowwalls4_trimsends + + diffusemap textures/d_industrialcity/concrete_lowwalls4_trimsends + bumpmap textures/d_industrialcity/concrete_lowwalls4_trimsends_local +} +textures/d_industrialcity/concrete_pillar1b +{ + qer_editorimage textures/d_industrialcity/concrete_pillar1b + + diffusemap textures/d_industrialcity/concrete_pillar1b +} +textures/d_industrialcity/concrete_pillar1c +{ + qer_editorimage textures/d_industrialcity/concrete_pillar1c + + diffusemap textures/d_industrialcity/concrete_pillar1c + bumpmap textures/d_industrialcity/concrete_pillar1c_local +} +textures/d_industrialcity/concretetiles1_dusty_bordersv +{ + qer_editorimage textures/d_industrialcity/concretetiles1_dusty_bordersv + + diffusemap textures/d_industrialcity/concretetiles1_dusty_bordersv + bumpmap textures/d_industrialcity/concretetiles1_dusty_bordersv_local +} +textures/d_industrialcity/concretetiles1d2 +{ + qer_editorimage textures/d_industrialcity/concretetiles1d2 + + diffusemap textures/d_industrialcity/concretetiles1d2 +} +textures/d_industrialcity/concretetileslarge1c3a +{ + qer_editorimage textures/d_industrialcity/concretetileslarge1c3a + + diffusemap textures/d_industrialcity/concretetileslarge1c3a +} +textures/d_industrialcity/concretetunnel1 +{ + qer_editorimage textures/d_industrialcity/concretetunnel1 + + diffusemap textures/d_industrialcity/concretetunnel1 + bumpmap textures/d_industrialcity/concretetunnel1_local + specularmap textures/d_industrialcity/concretetunnel1_s +} +textures/d_industrialcity/concretetunnel1d +{ + qer_editorimage textures/d_industrialcity/concretetunnel1d + + diffusemap textures/d_industrialcity/concretetunnel1d +} +textures/d_industrialcity/concretetunnel1f +{ + qer_editorimage textures/d_industrialcity/concretetunnel1f + + diffusemap textures/d_industrialcity/concretetunnel1f +} +textures/d_industrialcity/debris_mold3 +{ + qer_editorimage textures/d_industrialcity/debris_mold3 + + diffusemap textures/d_industrialcity/debris_mold3 + bumpmap textures/d_industrialcity/debris_mold3_local + specularmap textures/d_industrialcity/debris_mold3_s +} +textures/d_industrialcity/debris_wet +{ + qer_editorimage textures/d_industrialcity/debris_wet + + diffusemap textures/d_industrialcity/debris_wet + bumpmap textures/d_industrialcity/debris_wet_local + specularmap textures/d_industrialcity/debris_wet_s +} +textures/d_industrialcity/floors/brokenconcrete1d +{ + qer_editorimage textures/d_industrialcity/floors/brokenconcrete1d + + diffusemap textures/d_industrialcity/floors/brokenconcrete1d + bumpmap textures/d_industrialcity/floors/brokenconcrete1d_local +} +textures/d_industrialcity/gratefloor1 +{ + qer_editorimage textures/d_industrialcity/gratefloor1 + + diffusemap textures/d_industrialcity/gratefloor1 + bumpmap textures/d_industrialcity/gratefloor1_local +} +textures/d_industrialcity/gratefloor2 +{ + qer_editorimage textures/d_industrialcity/gratefloor2 + + diffusemap textures/d_industrialcity/gratefloor2 + bumpmap textures/d_industrialcity/gratefloor2_local +} +textures/d_industrialcity/interiordoor1 +{ + qer_editorimage textures/d_industrialcity/interiordoor1 + + diffusemap textures/d_industrialcity/interiordoor1 + bumpmap textures/d_industrialcity/interiordoor1_local +} +textures/d_industrialcity/interiorwall2 +{ + qer_editorimage textures/d_industrialcity/interiorwall2 + + diffusemap textures/d_industrialcity/interiorwall2 + bumpmap textures/d_industrialcity/interiorwall2_local +} +textures/d_industrialcity/interiorwall2c_corners +{ + qer_editorimage textures/d_industrialcity/interiorwall2c_corners + + diffusemap textures/d_industrialcity/interiorwall2c_corners + bumpmap textures/d_industrialcity/interiorwall2c_corners_local +} +textures/d_industrialcity/interiorwall_composite1 +{ + qer_editorimage textures/d_industrialcity/interiorwall_composite1 + + diffusemap textures/d_industrialcity/interiorwall_composite1 + bumpmap textures/d_industrialcity/interiorwall_composite1_local +} +textures/d_industrialcity/metal_2_dark +{ + qer_editorimage textures/d_industrialcity/metal_2_dark + + diffusemap textures/d_industrialcity/metal_2_dark +} +textures/d_industrialcity/metal_7b3_panels2c +{ + qer_editorimage textures/d_industrialcity/metal_7b3_panels2c + + diffusemap textures/d_industrialcity/metal_7b3_panels2c +} +textures/d_industrialcity/metal_dam1 +{ + qer_editorimage textures/d_industrialcity/metal_dam1 + + diffusemap textures/d_industrialcity/metal_dam1 + bumpmap textures/d_industrialcity/metal_dam1_local + specularmap textures/d_industrialcity/metal_dam1_s +} +textures/d_industrialcity/metal_floor1b +{ + qer_editorimage textures/d_industrialcity/metal_floor1b + + diffusemap textures/d_industrialcity/metal_floor1b +} +textures/d_industrialcity/metal_floor1c +{ + qer_editorimage textures/d_industrialcity/metal_floor1c + + diffusemap textures/d_industrialcity/metal_floor1c +} +textures/d_industrialcity/metal_floor1e +{ + qer_editorimage textures/d_industrialcity/metal_floor1e + + diffusemap textures/d_industrialcity/metal_floor1e +} +textures/d_industrialcity/metal_panels1f +{ + qer_editorimage textures/d_industrialcity/metal_panels1f + + diffusemap textures/d_industrialcity/metal_panels1f +} +textures/d_industrialcity/metal_panels2d +{ + qer_editorimage textures/d_industrialcity/metal_panels2d + + diffusemap textures/d_industrialcity/metal_panels2d +} +textures/d_industrialcity/metal_panels2f +{ + qer_editorimage textures/d_industrialcity/metal_panels2f + + diffusemap textures/d_industrialcity/metal_panels2f +} +textures/d_industrialcity/metal_panels2h +{ + qer_editorimage textures/d_industrialcity/metal_panels2h + + diffusemap textures/d_industrialcity/metal_panels2h +} +textures/d_industrialcity/metal_panels3 +{ + qer_editorimage textures/d_industrialcity/metal_panels3 + + diffusemap textures/d_industrialcity/metal_panels3 + bumpmap textures/d_industrialcity/metal_panels3_local +} +textures/d_industrialcity/metal_panels3g_brighter +{ + qer_editorimage textures/d_industrialcity/metal_panels3g_brighter + + diffusemap textures/d_industrialcity/metal_panels3g_brighter +} +textures/d_industrialcity/metal_panels4 +{ + qer_editorimage textures/d_industrialcity/metal_panels4 + + diffusemap textures/d_industrialcity/metal_panels4 + bumpmap textures/d_industrialcity/metal_panels4_local + specularmap textures/d_industrialcity/metal_panels4_s +} +textures/d_industrialcity/metal_pp +{ + qer_editorimage textures/d_industrialcity/metal_pp + + diffusemap textures/d_industrialcity/metal_pp + bumpmap textures/d_industrialcity/metal_pp_local + specularmap textures/d_industrialcity/metal_pp_s +} +textures/d_industrialcity/metal_pp_gv +{ + qer_editorimage textures/d_industrialcity/metal_pp_gv + + diffusemap textures/d_industrialcity/metal_pp_gv +} +textures/d_industrialcity/metal_sign +{ + qer_editorimage textures/d_industrialcity/metal_sign + + diffusemap textures/d_industrialcity/metal_sign + specularmap textures/d_industrialcity/metal_sign_s +} +textures/d_industrialcity/metal_tile1a +{ + qer_editorimage textures/d_industrialcity/metal_tile1a + + diffusemap textures/d_industrialcity/metal_tile1a + specularmap textures/d_industrialcity/metal_tile1a_s +} +textures/d_industrialcity/metal_tile1b2 +{ + qer_editorimage textures/d_industrialcity/metal_tile1b2 + + diffusemap textures/d_industrialcity/metal_tile1b2 +} +textures/d_industrialcity/metal_tile1c +{ + qer_editorimage textures/d_industrialcity/metal_tile1c + + diffusemap textures/d_industrialcity/metal_tile1c +} +textures/d_industrialcity/metal_tile1h +{ + qer_editorimage textures/d_industrialcity/metal_tile1h + + diffusemap textures/d_industrialcity/metal_tile1h +} +textures/d_industrialcity/metalbeams3 +{ + qer_editorimage textures/d_industrialcity/metalbeams3 + + diffusemap textures/d_industrialcity/metalbeams3 + bumpmap textures/d_industrialcity/metalbeams3_local +} +textures/d_industrialcity/metalbeams3b +{ + qer_editorimage textures/d_industrialcity/metalbeams3b + + diffusemap textures/d_industrialcity/metalbeams3b +} +textures/d_industrialcity/pipes1b +{ + qer_editorimage textures/d_industrialcity/pipes1b + + diffusemap textures/d_industrialcity/pipes1b + bumpmap textures/d_industrialcity/pipes1b_local +} +textures/d_industrialcity/pipes_2d +{ + qer_editorimage textures/d_industrialcity/pipes_2d_d + + diffusemap textures/d_industrialcity/pipes_2d_d +} +textures/d_industrialcity/pipes_2e +{ + qer_editorimage textures/d_industrialcity/pipes_2e_d + + diffusemap textures/d_industrialcity/pipes_2e_d +} +textures/d_industrialcity/plaster1c2 +{ + qer_editorimage textures/d_industrialcity/plaster1c2 + + diffusemap textures/d_industrialcity/plaster1c2 +} +textures/d_industrialcity/tunnelmud1 +{ + qer_editorimage textures/d_industrialcity/tunnelmud1 + + diffusemap textures/d_industrialcity/tunnelmud1 + bumpmap textures/d_industrialcity/tunnelmud1_local + specularmap textures/d_industrialcity/tunnelmud1_s +} +textures/deadcity/dc_hospital_wall_corners_w +{ + qer_editorimage textures/deadcity/dc_hospital_wall_corners_w + + diffusemap textures/deadcity/dc_hospital_wall_corners_w +} +textures/decals/arrows1 +{ + qer_editorimage textures/decals/arrows1 + + diffusemap textures/decals/arrows1 +} +textures/decals/image +{ + qer_editorimage textures/decals/image + + diffusemap textures/decals/image +} +textures/decals/image_map +{ + qer_editorimage textures/decals/image_map + + diffusemap textures/decals/image_map +} +textures/decals/map +{ + qer_editorimage textures/decals/map + + diffusemap textures/decals/map + bumpmap textures/decals/map_local +} +textures/decals/noteboard +{ + qer_editorimage textures/decals/noteboard + + diffusemap textures/decals/noteboard + bumpmap textures/decals/noteboard_local +} +textures/decals/noteboard_black +{ + qer_editorimage textures/decals/noteboard_black + + diffusemap textures/decals/noteboard_black +} +textures/decals/papers1 +{ + qer_editorimage textures/decals/papers1 + + diffusemap textures/decals/papers1 + bumpmap textures/decals/papers1_local +} +textures/decals/sheriff +{ + qer_editorimage textures/decals/sheriff + + diffusemap textures/decals/sheriff + specularmap textures/decals/sheriff_s +} +textures/decals/stickynotes +{ + qer_editorimage textures/decals/stickynotes + + diffusemap textures/decals/stickynotes + bumpmap textures/decals/stickynotes_local +} +textures/decals/tips +{ + qer_editorimage textures/decals/tips + + diffusemap textures/decals/tips +} +textures/editor/info_ambient +{ + qer_editorimage textures/editor/info_ambient + + diffusemap textures/editor/info_ambient +} +textures/editor/info_null +{ + qer_editorimage textures/editor/info_null + + diffusemap textures/editor/info_null +} +textures/editor/node_base/bottom_center +{ + qer_editorimage textures/editor/node_base/bottom_center + + diffusemap textures/editor/node_base/bottom_center +} +textures/editor/node_base/bottom_center_highlight +{ + qer_editorimage textures/editor/node_base/bottom_center_highlight + + diffusemap textures/editor/node_base/bottom_center_highlight +} +textures/editor/node_base/bottom_center_hover +{ + qer_editorimage textures/editor/node_base/bottom_center_hover + + diffusemap textures/editor/node_base/bottom_center_hover +} +textures/editor/node_base/bottom_center_selected +{ + qer_editorimage textures/editor/node_base/bottom_center_selected + + diffusemap textures/editor/node_base/bottom_center_selected +} +textures/editor/node_base/bottom_left +{ + qer_editorimage textures/editor/node_base/bottom_left + + diffusemap textures/editor/node_base/bottom_left +} +textures/editor/node_base/bottom_left_highlight +{ + qer_editorimage textures/editor/node_base/bottom_left_highlight + + diffusemap textures/editor/node_base/bottom_left_highlight +} +textures/editor/node_base/bottom_left_hover +{ + qer_editorimage textures/editor/node_base/bottom_left_hover + + diffusemap textures/editor/node_base/bottom_left_hover +} +textures/editor/node_base/bottom_left_selected +{ + qer_editorimage textures/editor/node_base/bottom_left_selected + + diffusemap textures/editor/node_base/bottom_left_selected +} +textures/editor/node_base/bottom_right +{ + qer_editorimage textures/editor/node_base/bottom_right + + diffusemap textures/editor/node_base/bottom_right +} +textures/editor/node_base/bottom_right_highlight +{ + qer_editorimage textures/editor/node_base/bottom_right_highlight + + diffusemap textures/editor/node_base/bottom_right_highlight +} +textures/editor/node_base/bottom_right_hover +{ + qer_editorimage textures/editor/node_base/bottom_right_hover + + diffusemap textures/editor/node_base/bottom_right_hover +} +textures/editor/node_base/bottom_right_selected +{ + qer_editorimage textures/editor/node_base/bottom_right_selected + + diffusemap textures/editor/node_base/bottom_right_selected +} +textures/editor/node_base/eyeball_hidden +{ + qer_editorimage textures/editor/node_base/eyeball_hidden + + diffusemap textures/editor/node_base/eyeball_hidden +} +textures/editor/node_base/eyeball_visible +{ + qer_editorimage textures/editor/node_base/eyeball_visible + + diffusemap textures/editor/node_base/eyeball_visible +} +textures/editor/node_base/middle_center +{ + qer_editorimage textures/editor/node_base/middle_center + + diffusemap textures/editor/node_base/middle_center +} +textures/editor/node_base/middle_center_highlight +{ + qer_editorimage textures/editor/node_base/middle_center_highlight + + diffusemap textures/editor/node_base/middle_center_highlight +} +textures/editor/node_base/middle_center_hover +{ + qer_editorimage textures/editor/node_base/middle_center_hover + + diffusemap textures/editor/node_base/middle_center_hover +} +textures/editor/node_base/middle_center_selected +{ + qer_editorimage textures/editor/node_base/middle_center_selected + + diffusemap textures/editor/node_base/middle_center_selected +} +textures/editor/node_base/middle_left +{ + qer_editorimage textures/editor/node_base/middle_left + + diffusemap textures/editor/node_base/middle_left +} +textures/editor/node_base/middle_left_highlight +{ + qer_editorimage textures/editor/node_base/middle_left_highlight + + diffusemap textures/editor/node_base/middle_left_highlight +} +textures/editor/node_base/middle_left_hover +{ + qer_editorimage textures/editor/node_base/middle_left_hover + + diffusemap textures/editor/node_base/middle_left_hover +} +textures/editor/node_base/middle_left_selected +{ + qer_editorimage textures/editor/node_base/middle_left_selected + + diffusemap textures/editor/node_base/middle_left_selected +} +textures/editor/node_base/middle_right +{ + qer_editorimage textures/editor/node_base/middle_right + + diffusemap textures/editor/node_base/middle_right +} +textures/editor/node_base/middle_right_highlight +{ + qer_editorimage textures/editor/node_base/middle_right_highlight + + diffusemap textures/editor/node_base/middle_right_highlight +} +textures/editor/node_base/middle_right_hover +{ + qer_editorimage textures/editor/node_base/middle_right_hover + + diffusemap textures/editor/node_base/middle_right_hover +} +textures/editor/node_base/middle_right_selected +{ + qer_editorimage textures/editor/node_base/middle_right_selected + + diffusemap textures/editor/node_base/middle_right_selected +} +textures/editor/node_base/top_center +{ + qer_editorimage textures/editor/node_base/top_center + + diffusemap textures/editor/node_base/top_center +} +textures/editor/node_base/top_center_highlight +{ + qer_editorimage textures/editor/node_base/top_center_highlight + + diffusemap textures/editor/node_base/top_center_highlight +} +textures/editor/node_base/top_center_hover +{ + qer_editorimage textures/editor/node_base/top_center_hover + + diffusemap textures/editor/node_base/top_center_hover +} +textures/editor/node_base/top_center_selected +{ + qer_editorimage textures/editor/node_base/top_center_selected + + diffusemap textures/editor/node_base/top_center_selected +} +textures/editor/node_base/top_left +{ + qer_editorimage textures/editor/node_base/top_left + + diffusemap textures/editor/node_base/top_left +} +textures/editor/node_base/top_left_highlight +{ + qer_editorimage textures/editor/node_base/top_left_highlight + + diffusemap textures/editor/node_base/top_left_highlight +} +textures/editor/node_base/top_left_hover +{ + qer_editorimage textures/editor/node_base/top_left_hover + + diffusemap textures/editor/node_base/top_left_hover +} +textures/editor/node_base/top_left_selected +{ + qer_editorimage textures/editor/node_base/top_left_selected + + diffusemap textures/editor/node_base/top_left_selected +} +textures/editor/node_base/top_right +{ + qer_editorimage textures/editor/node_base/top_right + + diffusemap textures/editor/node_base/top_right +} +textures/editor/node_base/top_right_highlight +{ + qer_editorimage textures/editor/node_base/top_right_highlight + + diffusemap textures/editor/node_base/top_right_highlight +} +textures/editor/node_base/top_right_hover +{ + qer_editorimage textures/editor/node_base/top_right_hover + + diffusemap textures/editor/node_base/top_right_hover +} +textures/editor/node_base/top_right_selected +{ + qer_editorimage textures/editor/node_base/top_right_selected + + diffusemap textures/editor/node_base/top_right_selected +} +textures/editor/particle/properties/acceleration +{ + qer_editorimage textures/editor/particle/properties/acceleration + + diffusemap textures/editor/particle/properties/acceleration +} +textures/editor/particle/properties/animation +{ + qer_editorimage textures/editor/particle/properties/animation + + diffusemap textures/editor/particle/properties/animation +} +textures/editor/particle/properties/aspect +{ + qer_editorimage textures/editor/particle/properties/aspect + + diffusemap textures/editor/particle/properties/aspect +} +textures/editor/particle/properties/blank +{ + qer_editorimage textures/editor/particle/properties/blank + + diffusemap textures/editor/particle/properties/blank +} +textures/editor/particle/properties/colorattributes +{ + qer_editorimage textures/editor/particle/properties/colorattributes + + diffusemap textures/editor/particle/properties/colorattributes +} +textures/editor/particle/properties/custompath +{ + qer_editorimage textures/editor/particle/properties/custompath + + diffusemap textures/editor/particle/properties/custompath +} +textures/editor/particle/properties/direction +{ + qer_editorimage textures/editor/particle/properties/direction + + diffusemap textures/editor/particle/properties/direction +} +textures/editor/particle/properties/distribution +{ + qer_editorimage textures/editor/particle/properties/distribution + + diffusemap textures/editor/particle/properties/distribution +} +textures/editor/particle/properties/genericparm +{ + qer_editorimage textures/editor/particle/properties/genericparm + + diffusemap textures/editor/particle/properties/genericparm +} +textures/editor/particle/properties/gravity +{ + qer_editorimage textures/editor/particle/properties/gravity + + diffusemap textures/editor/particle/properties/gravity +} +textures/editor/particle/properties/initialRotation +{ + qer_editorimage textures/editor/particle/properties/initialRotation + + diffusemap textures/editor/particle/properties/initialRotation +} +textures/editor/particle/properties/orientation +{ + qer_editorimage textures/editor/particle/properties/orientation + + diffusemap textures/editor/particle/properties/orientation +} +textures/editor/particle/properties/pivot +{ + qer_editorimage textures/editor/particle/properties/pivot + + diffusemap textures/editor/particle/properties/pivot +} +textures/editor/particle/properties/rotation +{ + qer_editorimage textures/editor/particle/properties/rotation + + diffusemap textures/editor/particle/properties/rotation +} +textures/editor/particle/properties/size +{ + qer_editorimage textures/editor/particle/properties/size + + diffusemap textures/editor/particle/properties/size +} +textures/editor/particle/properties/spawnlocation +{ + qer_editorimage textures/editor/particle/properties/spawnlocation + + diffusemap textures/editor/particle/properties/spawnlocation +} +textures/editor/particle/properties/speed +{ + qer_editorimage textures/editor/particle/properties/speed + + diffusemap textures/editor/particle/properties/speed +} +textures/editor/particle/properties/systemproperties +{ + qer_editorimage textures/editor/particle/properties/systemproperties + + diffusemap textures/editor/particle/properties/systemproperties +} +textures/editor/particle/properties/texAnimation +{ + qer_editorimage textures/editor/particle/properties/texAnimation + + diffusemap textures/editor/particle/properties/texAnimation +} +textures/editor/speaker +{ + qer_editorimage textures/editor/speaker + + diffusemap textures/editor/speaker +} +textures/facility/beam1 +{ + qer_editorimage textures/facility/beam1_d + + diffusemap textures/facility/beam1_d + bumpmap textures/facility/beam1_local + specularmap textures/facility/beam1_s +} +textures/facility/beam_metal1 +{ + qer_editorimage textures/facility/beam_metal1 + + diffusemap textures/facility/beam_metal1 + bumpmap textures/facility/beam_metal1_local +} +textures/facility/bridgeTex5 +{ + qer_editorimage textures/facility/bridgeTex5 + + diffusemap textures/facility/bridgeTex5 + bumpmap textures/facility/bridgeTex5_h + specularmap textures/facility/bridgeTex5_s +} +textures/facility/bridgetex5 +{ + qer_editorimage textures/facility/bridgetex5 + + diffusemap textures/facility/bridgetex5 + bumpmap textures/facility/bridgetex5_local + specularmap textures/facility/bridgetex5_s +} +textures/facility/coal_pile1_add +{ + qer_editorimage textures/facility/coal_pile1_add + + diffusemap textures/facility/coal_pile1_add +} +textures/facility/coal_pile1_tile +{ + qer_editorimage textures/facility/coal_pile1_tile + + diffusemap textures/facility/coal_pile1_tile + bumpmap textures/facility/coal_pile1_tile_local + specularmap textures/facility/coal_pile1_tile_s +} +textures/facility/floor1 +{ + qer_editorimage textures/facility/floor1 + + diffusemap textures/facility/floor1 + bumpmap textures/facility/floor1_local +} +textures/facility/floor_concrete2 +{ + qer_editorimage textures/facility/floor_concrete2 + + diffusemap textures/facility/floor_concrete2 + bumpmap textures/facility/floor_concrete2_h + specularmap textures/facility/floor_concrete2_s +} +textures/facility/floor_metal1 +{ + qer_editorimage textures/facility/floor_metal1 + + diffusemap textures/facility/floor_metal1 + specularmap textures/facility/floor_metal1_s +} +textures/facility/floor_metal2 +{ + qer_editorimage textures/facility/floor_metal2 + + diffusemap textures/facility/floor_metal2 + bumpmap textures/facility/floor_metal2_h +} +textures/facility/floor_metal2a +{ + qer_editorimage textures/facility/floor_metal2a + + diffusemap textures/facility/floor_metal2a +} +textures/facility/floor_metal2b +{ + qer_editorimage textures/facility/floor_metal2b + + diffusemap textures/facility/floor_metal2b +} +textures/facility/floor_metal3 +{ + qer_editorimage textures/facility/floor_metal3 + + diffusemap textures/facility/floor_metal3 + bumpmap textures/facility/floor_metal3_local +} +textures/facility/glass1 +{ + qer_editorimage textures/facility/glass1 + + diffusemap textures/facility/glass1 + bumpmap textures/facility/glass1_local + specularmap textures/facility/glass1_s +} +textures/facility/glass1_add +{ + qer_editorimage textures/facility/glass1_add + + diffusemap textures/facility/glass1_add +} +textures/facility/glass1a +{ + qer_editorimage textures/facility/glass1a + + diffusemap textures/facility/glass1a +} +textures/facility/metal2a +{ + qer_editorimage textures/facility/metal2a + + diffusemap textures/facility/metal2a +} +textures/facility/metal2c +{ + qer_editorimage textures/facility/metal2c + + diffusemap textures/facility/metal2c +} +textures/facility/metal3a +{ + qer_editorimage textures/facility/metal3a + + diffusemap textures/facility/metal3a +} +textures/facility/pole1a +{ + qer_editorimage textures/facility/pole1a_d + + diffusemap textures/facility/pole1a_d +} +textures/facility/pole1b +{ + qer_editorimage textures/facility/pole1b_d + + diffusemap textures/facility/pole1b_d +} +textures/facility/pole1za +{ + qer_editorimage textures/facility/pole1za_d + + diffusemap textures/facility/pole1za_d +} +textures/facility/pole1ze +{ + qer_editorimage textures/facility/pole1ze_d + + diffusemap textures/facility/pole1ze_d +} +textures/foliage/agave128 +{ + qer_editorimage textures/foliage/agave128 + + diffusemap textures/foliage/agave128 +} +textures/foliage/bush1128 +{ + qer_editorimage textures/foliage/bush1128 + + diffusemap textures/foliage/bush1128 +} +textures/foliage/bush1256 +{ + qer_editorimage textures/foliage/bush1256 + + diffusemap textures/foliage/bush1256 +} +textures/foliage/bush2c256 +{ + qer_editorimage textures/foliage/bush2c256 + + diffusemap textures/foliage/bush2c256 +} +textures/foliage/cactus1256 +{ + qer_editorimage textures/foliage/cactus1256 + + diffusemap textures/foliage/cactus1256 +} +textures/foliage/grass1 +{ + qer_editorimage textures/foliage/grass1 + + diffusemap textures/foliage/grass1 +} +textures/foliage/grass2256 +{ + qer_editorimage textures/foliage/grass2256 + + diffusemap textures/foliage/grass2256 +} +textures/foliage/gv_bush_01 +{ + qer_editorimage textures/foliage/gv_bush_01 + + diffusemap textures/foliage/gv_bush_01 +} +textures/foliage/gv_long_grass_01 +{ + qer_editorimage textures/foliage/gv_long_grass_01 + + diffusemap textures/foliage/gv_long_grass_01 +} +textures/foliage/gv_plant_02 +{ + qer_editorimage textures/foliage/gv_plant_02 + + diffusemap textures/foliage/gv_plant_02 +} +textures/foliage/plant1b256 +{ + qer_editorimage textures/foliage/plant1b256 + + diffusemap textures/foliage/plant1b256 +} +textures/foliage/plant2256 +{ + qer_editorimage textures/foliage/plant2256 + + diffusemap textures/foliage/plant2256 +} +textures/foliage/plant4256 +{ + qer_editorimage textures/foliage/plant4256 + + diffusemap textures/foliage/plant4256 +} +textures/foliage/plant4b256 +{ + qer_editorimage textures/foliage/plant4b256 + + diffusemap textures/foliage/plant4b256 +} +textures/foliage/plant5128 +{ + qer_editorimage textures/foliage/plant5128 + + diffusemap textures/foliage/plant5128 +} +textures/foliage/plant6256 +{ + qer_editorimage textures/foliage/plant6256 + + diffusemap textures/foliage/plant6256 +} +textures/foliage/plant7b256 +{ + qer_editorimage textures/foliage/plant7b256 + + diffusemap textures/foliage/plant7b256 +} +textures/foliage/tree1 +{ + qer_editorimage textures/foliage/tree1 + + diffusemap textures/foliage/tree1 +} +textures/foliage/tree2 +{ + qer_editorimage textures/foliage/tree2 + + diffusemap textures/foliage/tree2 +} +textures/foliage/tree3 +{ + qer_editorimage textures/foliage/tree3 + + diffusemap textures/foliage/tree3 +} +textures/foliage/weed_single1 +{ + qer_editorimage textures/foliage/weed_single1 + + diffusemap textures/foliage/weed_single1 +} +textures/gasstation/ramp +{ + qer_editorimage textures/gasstation/ramp + + diffusemap textures/gasstation/ramp + bumpmap textures/gasstation/ramp_local + specularmap textures/gasstation/ramp_s +} +textures/generic/alumsiding3 +{ + qer_editorimage textures/generic/alumsiding3 + + diffusemap textures/generic/alumsiding3 + bumpmap textures/generic/alumsiding3_local + specularmap textures/generic/alumsiding3_s +} +textures/generic/alumsiding5 +{ + qer_editorimage textures/generic/alumsiding5 + + diffusemap textures/generic/alumsiding5 + bumpmap textures/generic/alumsiding5_local + specularmap textures/generic/alumsiding5_s +} +textures/generic/alumsiding6 +{ + qer_editorimage textures/generic/alumsiding6 + + diffusemap textures/generic/alumsiding6 + bumpmap textures/generic/alumsiding6_local + specularmap textures/generic/alumsiding6_s +} +textures/generic/barbedwire1 +{ + qer_editorimage textures/generic/barbedwire1_d + + diffusemap textures/generic/barbedwire1_d + bumpmap textures/generic/barbedwire1_local + specularmap textures/generic/barbedwire1_s +} +textures/generic/braidedhose1 +{ + qer_editorimage textures/generic/braidedhose1 + + diffusemap textures/generic/braidedhose1 + bumpmap textures/generic/braidedhose1_local + specularmap textures/generic/braidedhose1_s +} +textures/generic/diamondplate +{ + qer_editorimage textures/generic/diamondplate + + diffusemap textures/generic/diamondplate + bumpmap textures/generic/diamondplate_local + specularmap textures/generic/diamondplate_s +} +textures/generic/metalswatch2 +{ + qer_editorimage textures/generic/metalswatch2 + + diffusemap textures/generic/metalswatch2 + bumpmap textures/generic/metalswatch2_h + specularmap textures/generic/metalswatch2_s +} +textures/generic/weatherwood2 +{ + qer_editorimage textures/generic/weatherwood2 + + diffusemap textures/generic/weatherwood2 + bumpmap textures/generic/weatherwood2_h + specularmap textures/generic/weatherwood2_s +} +textures/guis/action/action_game +{ + qer_editorimage textures/guis/action/action_game + + diffusemap textures/guis/action/action_game +} +textures/guis/action/action_loot +{ + qer_editorimage textures/guis/action/action_loot + + diffusemap textures/guis/action/action_loot +} +textures/guis/action/action_pickup +{ + qer_editorimage textures/guis/action/action_pickup + + diffusemap textures/guis/action/action_pickup +} +textures/guis/cards/authority_00 +{ + qer_editorimage textures/guis/cards/authority_00 + + diffusemap textures/guis/cards/authority_00 +} +textures/guis/cards/authority_01 +{ + qer_editorimage textures/guis/cards/authority_01 + + diffusemap textures/guis/cards/authority_01 +} +textures/guis/cards/authority_02 +{ + qer_editorimage textures/guis/cards/authority_02 + + diffusemap textures/guis/cards/authority_02 +} +textures/guis/cards/authority_03 +{ + qer_editorimage textures/guis/cards/authority_03 + + diffusemap textures/guis/cards/authority_03 +} +textures/guis/cards/bandit_gearhead_00 +{ + qer_editorimage textures/guis/cards/bandit_gearhead_00 + + diffusemap textures/guis/cards/bandit_gearhead_00 +} +textures/guis/cards/bandit_gearhead_01 +{ + qer_editorimage textures/guis/cards/bandit_gearhead_01 + + diffusemap textures/guis/cards/bandit_gearhead_01 +} +textures/guis/cards/bandit_gearhead_02 +{ + qer_editorimage textures/guis/cards/bandit_gearhead_02 + + diffusemap textures/guis/cards/bandit_gearhead_02 +} +textures/guis/cards/bandit_ghost_00 +{ + qer_editorimage textures/guis/cards/bandit_ghost_00 + + diffusemap textures/guis/cards/bandit_ghost_00 +} +textures/guis/cards/bandit_ghost_01 +{ + qer_editorimage textures/guis/cards/bandit_ghost_01 + + diffusemap textures/guis/cards/bandit_ghost_01 +} +textures/guis/cards/bandit_ghost_02 +{ + qer_editorimage textures/guis/cards/bandit_ghost_02 + + diffusemap textures/guis/cards/bandit_ghost_02 +} +textures/guis/cards/bandit_jackal_03 +{ + qer_editorimage textures/guis/cards/bandit_jackal_03 + + diffusemap textures/guis/cards/bandit_jackal_03 +} +textures/guis/cards/bandit_jackal_04 +{ + qer_editorimage textures/guis/cards/bandit_jackal_04 + + diffusemap textures/guis/cards/bandit_jackal_04 +} +textures/guis/cards/bandit_shrouded_01 +{ + qer_editorimage textures/guis/cards/bandit_shrouded_01 + + diffusemap textures/guis/cards/bandit_shrouded_01 +} +textures/guis/cards/bandit_shrouded_02 +{ + qer_editorimage textures/guis/cards/bandit_shrouded_02 + + diffusemap textures/guis/cards/bandit_shrouded_02 +} +textures/guis/cards/bandit_shrouded_03 +{ + qer_editorimage textures/guis/cards/bandit_shrouded_03 + + diffusemap textures/guis/cards/bandit_shrouded_03 +} +textures/guis/cards/bandit_wasted_01 +{ + qer_editorimage textures/guis/cards/bandit_wasted_01 + + diffusemap textures/guis/cards/bandit_wasted_01 +} +textures/guis/cards/bandit_wasted_02 +{ + qer_editorimage textures/guis/cards/bandit_wasted_02 + + diffusemap textures/guis/cards/bandit_wasted_02 +} +textures/guis/cards/bandit_wasted_03 +{ + qer_editorimage textures/guis/cards/bandit_wasted_03 + + diffusemap textures/guis/cards/bandit_wasted_03 +} +textures/guis/cards/item_00 +{ + qer_editorimage textures/guis/cards/item_00 + + diffusemap textures/guis/cards/item_00 +} +textures/guis/cards/item_01 +{ + qer_editorimage textures/guis/cards/item_01 + + diffusemap textures/guis/cards/item_01 +} +textures/guis/cards/item_02 +{ + qer_editorimage textures/guis/cards/item_02 + + diffusemap textures/guis/cards/item_02 +} +textures/guis/cards/item_03 +{ + qer_editorimage textures/guis/cards/item_03 + + diffusemap textures/guis/cards/item_03 +} +textures/guis/cards/item_05 +{ + qer_editorimage textures/guis/cards/item_05 + + diffusemap textures/guis/cards/item_05 +} +textures/guis/cards/item_06 +{ + qer_editorimage textures/guis/cards/item_06 + + diffusemap textures/guis/cards/item_06 +} +textures/guis/cards/item_07 +{ + qer_editorimage textures/guis/cards/item_07 + + diffusemap textures/guis/cards/item_07 +} +textures/guis/cards/item_08 +{ + qer_editorimage textures/guis/cards/item_08 + + diffusemap textures/guis/cards/item_08 +} +textures/guis/cards/item_09 +{ + qer_editorimage textures/guis/cards/item_09 + + diffusemap textures/guis/cards/item_09 +} +textures/guis/cards/mut_club +{ + qer_editorimage textures/guis/cards/mut_club + + diffusemap textures/guis/cards/mut_club +} +textures/guis/cards/mut_dagger_thrower +{ + qer_editorimage textures/guis/cards/mut_dagger_thrower + + diffusemap textures/guis/cards/mut_dagger_thrower +} +textures/guis/cards/mut_dyno +{ + qer_editorimage textures/guis/cards/mut_dyno + + diffusemap textures/guis/cards/mut_dyno +} +textures/guis/cards/mut_giant +{ + qer_editorimage textures/guis/cards/mut_giant + + diffusemap textures/guis/cards/mut_giant +} +textures/guis/cards/mut_large +{ + qer_editorimage textures/guis/cards/mut_large + + diffusemap textures/guis/cards/mut_large +} +textures/guis/cards/mut_slime +{ + qer_editorimage textures/guis/cards/mut_slime + + diffusemap textures/guis/cards/mut_slime +} +textures/guis/cards/mut_tentacle +{ + qer_editorimage textures/guis/cards/mut_tentacle + + diffusemap textures/guis/cards/mut_tentacle +} +textures/guis/cards/mut_thrower +{ + qer_editorimage textures/guis/cards/mut_thrower + + diffusemap textures/guis/cards/mut_thrower +} +textures/guis/cards/settler_00 +{ + qer_editorimage textures/guis/cards/settler_00 + + diffusemap textures/guis/cards/settler_00 +} +textures/guis/cards/settler_01 +{ + qer_editorimage textures/guis/cards/settler_01 + + diffusemap textures/guis/cards/settler_01 +} +textures/guis/cards/settler_02 +{ + qer_editorimage textures/guis/cards/settler_02 + + diffusemap textures/guis/cards/settler_02 +} +textures/guis/cards/settler_03 +{ + qer_editorimage textures/guis/cards/settler_03 + + diffusemap textures/guis/cards/settler_03 +} +textures/guis/cards/settler_04 +{ + qer_editorimage textures/guis/cards/settler_04 + + diffusemap textures/guis/cards/settler_04 +} +textures/guis/cards/settler_05 +{ + qer_editorimage textures/guis/cards/settler_05 + + diffusemap textures/guis/cards/settler_05 +} +textures/guis/cards/settler_06 +{ + qer_editorimage textures/guis/cards/settler_06 + + diffusemap textures/guis/cards/settler_06 +} +textures/guis/cards/settler_07 +{ + qer_editorimage textures/guis/cards/settler_07 + + diffusemap textures/guis/cards/settler_07 +} +textures/guis/cards/settler_08 +{ + qer_editorimage textures/guis/cards/settler_08 + + diffusemap textures/guis/cards/settler_08 +} +textures/guis/cards/settler_09 +{ + qer_editorimage textures/guis/cards/settler_09 + + diffusemap textures/guis/cards/settler_09 +} +textures/guis/cards/settler_10 +{ + qer_editorimage textures/guis/cards/settler_10 + + diffusemap textures/guis/cards/settler_10 +} +textures/guis/cards/settler_11 +{ + qer_editorimage textures/guis/cards/settler_11 + + diffusemap textures/guis/cards/settler_11 +} +textures/guis/cards/settler_12 +{ + qer_editorimage textures/guis/cards/settler_12 + + diffusemap textures/guis/cards/settler_12 +} +textures/guis/cards/settler_13 +{ + qer_editorimage textures/guis/cards/settler_13 + + diffusemap textures/guis/cards/settler_13 +} +textures/guis/cards/vehicle_00 +{ + qer_editorimage textures/guis/cards/vehicle_00 + + diffusemap textures/guis/cards/vehicle_00 +} +textures/guis/cards/vehicle_01 +{ + qer_editorimage textures/guis/cards/vehicle_01 + + diffusemap textures/guis/cards/vehicle_01 +} +textures/guis/cards/vehicle_02 +{ + qer_editorimage textures/guis/cards/vehicle_02 + + diffusemap textures/guis/cards/vehicle_02 +} +textures/guis/cards/vehicle_03 +{ + qer_editorimage textures/guis/cards/vehicle_03 + + diffusemap textures/guis/cards/vehicle_03 +} +textures/guis/cards/vehicle_04 +{ + qer_editorimage textures/guis/cards/vehicle_04 + + diffusemap textures/guis/cards/vehicle_04 +} +textures/guis/cert_black_icon +{ + qer_editorimage textures/guis/cert_black_icon + + diffusemap textures/guis/cert_black_icon +} +textures/guis/cert_icon +{ + qer_editorimage textures/guis/cert_icon + + diffusemap textures/guis/cert_icon +} +textures/guis/clothing/arksuit_1 +{ + qer_editorimage textures/guis/clothing/arksuit_1 + + diffusemap textures/guis/clothing/arksuit_1 +} +textures/guis/clothing/arksuit_2 +{ + qer_editorimage textures/guis/clothing/arksuit_2 + + diffusemap textures/guis/clothing/arksuit_2 +} +textures/guis/clothing/crimson_1 +{ + qer_editorimage textures/guis/clothing/crimson_1 + + diffusemap textures/guis/clothing/crimson_1 +} +textures/guis/clothing/crimson_2 +{ + qer_editorimage textures/guis/clothing/crimson_2 + + diffusemap textures/guis/clothing/crimson_2 +} +textures/guis/clothing/crimson_3 +{ + qer_editorimage textures/guis/clothing/crimson_3 + + diffusemap textures/guis/clothing/crimson_3 +} +textures/guis/clothing/crimson_4 +{ + qer_editorimage textures/guis/clothing/crimson_4 + + diffusemap textures/guis/clothing/crimson_4 +} +textures/guis/clothing/fab_1 +{ + qer_editorimage textures/guis/clothing/fab_1 + + diffusemap textures/guis/clothing/fab_1 +} +textures/guis/clothing/fab_2 +{ + qer_editorimage textures/guis/clothing/fab_2 + + diffusemap textures/guis/clothing/fab_2 +} +textures/guis/clothing/fab_3 +{ + qer_editorimage textures/guis/clothing/fab_3 + + diffusemap textures/guis/clothing/fab_3 +} +textures/guis/clothing/fab_4 +{ + qer_editorimage textures/guis/clothing/fab_4 + + diffusemap textures/guis/clothing/fab_4 +} +textures/guis/clothing/rough_1 +{ + qer_editorimage textures/guis/clothing/rough_1 + + diffusemap textures/guis/clothing/rough_1 +} +textures/guis/clothing/rough_2 +{ + qer_editorimage textures/guis/clothing/rough_2 + + diffusemap textures/guis/clothing/rough_2 +} +textures/guis/clothing/rough_3 +{ + qer_editorimage textures/guis/clothing/rough_3 + + diffusemap textures/guis/clothing/rough_3 +} +textures/guis/clothing/rough_4 +{ + qer_editorimage textures/guis/clothing/rough_4 + + diffusemap textures/guis/clothing/rough_4 +} +textures/guis/clothing/waste_1 +{ + qer_editorimage textures/guis/clothing/waste_1 + + diffusemap textures/guis/clothing/waste_1 +} +textures/guis/clothing/waste_2 +{ + qer_editorimage textures/guis/clothing/waste_2 + + diffusemap textures/guis/clothing/waste_2 +} +textures/guis/clothing/waste_3 +{ + qer_editorimage textures/guis/clothing/waste_3 + + diffusemap textures/guis/clothing/waste_3 +} +textures/guis/clothing/waste_4 +{ + qer_editorimage textures/guis/clothing/waste_4 + + diffusemap textures/guis/clothing/waste_4 +} +textures/guis/controller/ps3/nanotrite_ps3_LS +{ + qer_editorimage textures/guis/controller/ps3/nanotrite_ps3_LS + + diffusemap textures/guis/controller/ps3/nanotrite_ps3_LS +} +textures/guis/controller/ps3/nanotrite_ps3_RS +{ + qer_editorimage textures/guis/controller/ps3/nanotrite_ps3_RS + + diffusemap textures/guis/controller/ps3/nanotrite_ps3_RS +} +textures/guis/controller/ps3/nanotrite_ps3_l3 +{ + qer_editorimage textures/guis/controller/ps3/nanotrite_ps3_l3 + + diffusemap textures/guis/controller/ps3/nanotrite_ps3_l3 +} +textures/guis/controller/ps3/nanotrite_ps3_r3 +{ + qer_editorimage textures/guis/controller/ps3/nanotrite_ps3_r3 + + diffusemap textures/guis/controller/ps3/nanotrite_ps3_r3 +} +textures/guis/controller/ps3/ps3_circle +{ + qer_editorimage textures/guis/controller/ps3/ps3_circle + + diffusemap textures/guis/controller/ps3/ps3_circle +} +textures/guis/controller/ps3/ps3_dpad +{ + qer_editorimage textures/guis/controller/ps3/ps3_dpad + + diffusemap textures/guis/controller/ps3/ps3_dpad +} +textures/guis/controller/ps3/ps3_dpad_down +{ + qer_editorimage textures/guis/controller/ps3/ps3_dpad_down + + diffusemap textures/guis/controller/ps3/ps3_dpad_down +} +textures/guis/controller/ps3/ps3_dpad_left +{ + qer_editorimage textures/guis/controller/ps3/ps3_dpad_left + + diffusemap textures/guis/controller/ps3/ps3_dpad_left +} +textures/guis/controller/ps3/ps3_dpad_right +{ + qer_editorimage textures/guis/controller/ps3/ps3_dpad_right + + diffusemap textures/guis/controller/ps3/ps3_dpad_right +} +textures/guis/controller/ps3/ps3_dpad_up +{ + qer_editorimage textures/guis/controller/ps3/ps3_dpad_up + + diffusemap textures/guis/controller/ps3/ps3_dpad_up +} +textures/guis/controller/ps3/ps3_l1 +{ + qer_editorimage textures/guis/controller/ps3/ps3_l1 + + diffusemap textures/guis/controller/ps3/ps3_l1 +} +textures/guis/controller/ps3/ps3_l2 +{ + qer_editorimage textures/guis/controller/ps3/ps3_l2 + + diffusemap textures/guis/controller/ps3/ps3_l2 +} +textures/guis/controller/ps3/ps3_ls +{ + qer_editorimage textures/guis/controller/ps3/ps3_ls + + diffusemap textures/guis/controller/ps3/ps3_ls +} +textures/guis/controller/ps3/ps3_r1 +{ + qer_editorimage textures/guis/controller/ps3/ps3_r1 + + diffusemap textures/guis/controller/ps3/ps3_r1 +} +textures/guis/controller/ps3/ps3_r2 +{ + qer_editorimage textures/guis/controller/ps3/ps3_r2 + + diffusemap textures/guis/controller/ps3/ps3_r2 +} +textures/guis/controller/ps3/ps3_rs +{ + qer_editorimage textures/guis/controller/ps3/ps3_rs + + diffusemap textures/guis/controller/ps3/ps3_rs +} +textures/guis/controller/ps3/ps3_select +{ + qer_editorimage textures/guis/controller/ps3/ps3_select + + diffusemap textures/guis/controller/ps3/ps3_select +} +textures/guis/controller/ps3/ps3_square +{ + qer_editorimage textures/guis/controller/ps3/ps3_square + + diffusemap textures/guis/controller/ps3/ps3_square +} +textures/guis/controller/ps3/ps3_start +{ + qer_editorimage textures/guis/controller/ps3/ps3_start + + diffusemap textures/guis/controller/ps3/ps3_start +} +textures/guis/controller/ps3/ps3_triangle +{ + qer_editorimage textures/guis/controller/ps3/ps3_triangle + + diffusemap textures/guis/controller/ps3/ps3_triangle +} +textures/guis/controller/ps3/ps3_x +{ + qer_editorimage textures/guis/controller/ps3/ps3_x + + diffusemap textures/guis/controller/ps3/ps3_x +} +textures/guis/controller/ps3/ps3_x_alt +{ + qer_editorimage textures/guis/controller/ps3/ps3_x_alt + + diffusemap textures/guis/controller/ps3/ps3_x_alt +} +textures/guis/controller/xb360/360_a +{ + qer_editorimage textures/guis/controller/xb360/360_a + + diffusemap textures/guis/controller/xb360/360_a +} +textures/guis/controller/xb360/360_a_alt +{ + qer_editorimage textures/guis/controller/xb360/360_a_alt + + diffusemap textures/guis/controller/xb360/360_a_alt +} +textures/guis/controller/xb360/360_b +{ + qer_editorimage textures/guis/controller/xb360/360_b + + diffusemap textures/guis/controller/xb360/360_b +} +textures/guis/controller/xb360/360_b_alt +{ + qer_editorimage textures/guis/controller/xb360/360_b_alt + + diffusemap textures/guis/controller/xb360/360_b_alt +} +textures/guis/controller/xb360/360_back +{ + qer_editorimage textures/guis/controller/xb360/360_back + + diffusemap textures/guis/controller/xb360/360_back +} +textures/guis/controller/xb360/360_dpad +{ + qer_editorimage textures/guis/controller/xb360/360_dpad + + diffusemap textures/guis/controller/xb360/360_dpad +} +textures/guis/controller/xb360/360_dpad_down +{ + qer_editorimage textures/guis/controller/xb360/360_dpad_down + + diffusemap textures/guis/controller/xb360/360_dpad_down +} +textures/guis/controller/xb360/360_dpad_left +{ + qer_editorimage textures/guis/controller/xb360/360_dpad_left + + diffusemap textures/guis/controller/xb360/360_dpad_left +} +textures/guis/controller/xb360/360_dpad_right +{ + qer_editorimage textures/guis/controller/xb360/360_dpad_right + + diffusemap textures/guis/controller/xb360/360_dpad_right +} +textures/guis/controller/xb360/360_dpad_up +{ + qer_editorimage textures/guis/controller/xb360/360_dpad_up + + diffusemap textures/guis/controller/xb360/360_dpad_up +} +textures/guis/controller/xb360/360_lb +{ + qer_editorimage textures/guis/controller/xb360/360_lb + + diffusemap textures/guis/controller/xb360/360_lb +} +textures/guis/controller/xb360/360_ls +{ + qer_editorimage textures/guis/controller/xb360/360_ls + + diffusemap textures/guis/controller/xb360/360_ls +} +textures/guis/controller/xb360/360_lt +{ + qer_editorimage textures/guis/controller/xb360/360_lt + + diffusemap textures/guis/controller/xb360/360_lt +} +textures/guis/controller/xb360/360_rb +{ + qer_editorimage textures/guis/controller/xb360/360_rb + + diffusemap textures/guis/controller/xb360/360_rb +} +textures/guis/controller/xb360/360_rs +{ + qer_editorimage textures/guis/controller/xb360/360_rs + + diffusemap textures/guis/controller/xb360/360_rs +} +textures/guis/controller/xb360/360_rt +{ + qer_editorimage textures/guis/controller/xb360/360_rt + + diffusemap textures/guis/controller/xb360/360_rt +} +textures/guis/controller/xb360/360_start +{ + qer_editorimage textures/guis/controller/xb360/360_start + + diffusemap textures/guis/controller/xb360/360_start +} +textures/guis/controller/xb360/360_x +{ + qer_editorimage textures/guis/controller/xb360/360_x + + diffusemap textures/guis/controller/xb360/360_x +} +textures/guis/controller/xb360/360_x_alt +{ + qer_editorimage textures/guis/controller/xb360/360_x_alt + + diffusemap textures/guis/controller/xb360/360_x_alt +} +textures/guis/controller/xb360/360_y +{ + qer_editorimage textures/guis/controller/xb360/360_y + + diffusemap textures/guis/controller/xb360/360_y +} +textures/guis/controller/xb360/360_y_alt +{ + qer_editorimage textures/guis/controller/xb360/360_y_alt + + diffusemap textures/guis/controller/xb360/360_y_alt +} +textures/guis/controller/xb360/nanotrite_xbox_l3 +{ + qer_editorimage textures/guis/controller/xb360/nanotrite_xbox_l3 + + diffusemap textures/guis/controller/xb360/nanotrite_xbox_l3 +} +textures/guis/controller/xb360/nanotrite_xbox_rs +{ + qer_editorimage textures/guis/controller/xb360/nanotrite_xbox_rs + + diffusemap textures/guis/controller/xb360/nanotrite_xbox_rs +} +textures/guis/controller/xb360/tutorial_bomb_car +{ + qer_editorimage textures/guis/controller/xb360/tutorial_bomb_car + + diffusemap textures/guis/controller/xb360/tutorial_bomb_car +} +textures/guis/damage_feedback/border_overlay_quarter +{ + qer_editorimage textures/guis/damage_feedback/border_overlay_quarter + + diffusemap textures/guis/damage_feedback/border_overlay_quarter +} +textures/guis/damage_feedback/ring_ramp +{ + qer_editorimage textures/guis/damage_feedback/ring_ramp + + diffusemap textures/guis/damage_feedback/ring_ramp +} +textures/guis/damage_feedback/ring_tech +{ + qer_editorimage textures/guis/damage_feedback/ring_tech + + diffusemap textures/guis/damage_feedback/ring_tech +} +textures/guis/default/guicursor_arrow +{ + qer_editorimage textures/guis/default/guicursor_arrow + + diffusemap textures/guis/default/guicursor_arrow +} +textures/guis/default/guicursor_hand +{ + qer_editorimage textures/guis/default/guicursor_hand + + diffusemap textures/guis/default/guicursor_hand +} +textures/guis/hud/damage_icons/damage_meteor +{ + qer_editorimage textures/guis/hud/damage_icons/damage_meteor + + diffusemap textures/guis/hud/damage_icons/damage_meteor +} +textures/guis/hud/damage_icons/damage_vehicle +{ + qer_editorimage textures/guis/hud/damage_icons/damage_vehicle + + diffusemap textures/guis/hud/damage_icons/damage_vehicle +} +textures/guis/hud/damage_icons/damage_world +{ + qer_editorimage textures/guis/hud/damage_icons/damage_world + + diffusemap textures/guis/hud/damage_icons/damage_world +} +textures/guis/hud/emblem_icons/a_true_legend +{ + qer_editorimage textures/guis/hud/emblem_icons/a_true_legend + + diffusemap textures/guis/hud/emblem_icons/a_true_legend +} +textures/guis/hud/emblem_icons/afterlife_kill +{ + qer_editorimage textures/guis/hud/emblem_icons/afterlife_kill + + diffusemap textures/guis/hud/emblem_icons/afterlife_kill +} +textures/guis/hud/emblem_icons/air_mail_kill +{ + qer_editorimage textures/guis/hud/emblem_icons/air_mail_kill + + diffusemap textures/guis/hud/emblem_icons/air_mail_kill +} +textures/guis/hud/emblem_icons/anthology +{ + qer_editorimage textures/guis/hud/emblem_icons/anthology + + diffusemap textures/guis/hud/emblem_icons/anthology +} +textures/guis/hud/emblem_icons/chain_breakers_10 +{ + qer_editorimage textures/guis/hud/emblem_icons/chain_breakers_10 + + diffusemap textures/guis/hud/emblem_icons/chain_breakers_10 +} +textures/guis/hud/emblem_icons/chain_breakers_100 +{ + qer_editorimage textures/guis/hud/emblem_icons/chain_breakers_100 + + diffusemap textures/guis/hud/emblem_icons/chain_breakers_100 +} +textures/guis/hud/emblem_icons/chain_breakers_25 +{ + qer_editorimage textures/guis/hud/emblem_icons/chain_breakers_25 + + diffusemap textures/guis/hud/emblem_icons/chain_breakers_25 +} +textures/guis/hud/emblem_icons/chain_breakers_50 +{ + qer_editorimage textures/guis/hud/emblem_icons/chain_breakers_50 + + diffusemap textures/guis/hud/emblem_icons/chain_breakers_50 +} +textures/guis/hud/emblem_icons/clan_gearhead +{ + qer_editorimage textures/guis/hud/emblem_icons/clan_gearhead + + diffusemap textures/guis/hud/emblem_icons/clan_gearhead +} +textures/guis/hud/emblem_icons/collect_100_meteors +{ + qer_editorimage textures/guis/hud/emblem_icons/collect_100_meteors + + diffusemap textures/guis/hud/emblem_icons/collect_100_meteors +} +textures/guis/hud/emblem_icons/collect_10_meteors +{ + qer_editorimage textures/guis/hud/emblem_icons/collect_10_meteors + + diffusemap textures/guis/hud/emblem_icons/collect_10_meteors +} +textures/guis/hud/emblem_icons/collect_25_meteors +{ + qer_editorimage textures/guis/hud/emblem_icons/collect_25_meteors + + diffusemap textures/guis/hud/emblem_icons/collect_25_meteors +} +textures/guis/hud/emblem_icons/collect_50_meteors +{ + qer_editorimage textures/guis/hud/emblem_icons/collect_50_meteors + + diffusemap textures/guis/hud/emblem_icons/collect_50_meteors +} +textures/guis/hud/emblem_icons/fewest_deaths +{ + qer_editorimage textures/guis/hud/emblem_icons/fewest_deaths + + diffusemap textures/guis/hud/emblem_icons/fewest_deaths +} +textures/guis/hud/emblem_icons/fresh_meat +{ + qer_editorimage textures/guis/hud/emblem_icons/fresh_meat + + diffusemap textures/guis/hud/emblem_icons/fresh_meat +} +textures/guis/hud/emblem_icons/headshots_10 +{ + qer_editorimage textures/guis/hud/emblem_icons/headshots_10 + + diffusemap textures/guis/hud/emblem_icons/headshots_10 +} +textures/guis/hud/emblem_icons/headshots_100 +{ + qer_editorimage textures/guis/hud/emblem_icons/headshots_100 + + diffusemap textures/guis/hud/emblem_icons/headshots_100 +} +textures/guis/hud/emblem_icons/headshots_25 +{ + qer_editorimage textures/guis/hud/emblem_icons/headshots_25 + + diffusemap textures/guis/hud/emblem_icons/headshots_25 +} +textures/guis/hud/emblem_icons/headshots_50 +{ + qer_editorimage textures/guis/hud/emblem_icons/headshots_50 + + diffusemap textures/guis/hud/emblem_icons/headshots_50 +} +textures/guis/hud/emblem_icons/kills_100_roadrage +{ + qer_editorimage textures/guis/hud/emblem_icons/kills_100_roadrage + + diffusemap textures/guis/hud/emblem_icons/kills_100_roadrage +} +textures/guis/hud/emblem_icons/kills_10_roadrage +{ + qer_editorimage textures/guis/hud/emblem_icons/kills_10_roadrage + + diffusemap textures/guis/hud/emblem_icons/kills_10_roadrage +} +textures/guis/hud/emblem_icons/kills_25_roadrage +{ + qer_editorimage textures/guis/hud/emblem_icons/kills_25_roadrage + + diffusemap textures/guis/hud/emblem_icons/kills_25_roadrage +} +textures/guis/hud/emblem_icons/kills_50_roadrage +{ + qer_editorimage textures/guis/hud/emblem_icons/kills_50_roadrage + + diffusemap textures/guis/hud/emblem_icons/kills_50_roadrage +} +textures/guis/hud/emblem_icons/legend_10_combo +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_10_combo + + diffusemap textures/guis/hud/emblem_icons/legend_10_combo +} +textures/guis/hud/emblem_icons/legend_10_defend +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_10_defend + + diffusemap textures/guis/hud/emblem_icons/legend_10_defend +} +textures/guis/hud/emblem_icons/legend_10_revenge +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_10_revenge + + diffusemap textures/guis/hud/emblem_icons/legend_10_revenge +} +textures/guis/hud/emblem_icons/legend_15_covert +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_15_covert + + diffusemap textures/guis/hud/emblem_icons/legend_15_covert +} +textures/guis/hud/emblem_icons/legend_20_assists +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_20_assists + + diffusemap textures/guis/hud/emblem_icons/legend_20_assists +} +textures/guis/hud/emblem_icons/legend_3_enemies_1_rc_car +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_3_enemies_1_rc_car + + diffusemap textures/guis/hud/emblem_icons/legend_3_enemies_1_rc_car +} +textures/guis/hud/emblem_icons/legend_complete_a_new_toy +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_a_new_toy + + diffusemap textures/guis/hud/emblem_icons/legend_complete_a_new_toy +} +textures/guis/hud/emblem_icons/legend_complete_a_new_toy_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_a_new_toy_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_a_new_toy_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_extermination +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_extermination + + diffusemap textures/guis/hud/emblem_icons/legend_complete_extermination +} +textures/guis/hud/emblem_icons/legend_complete_extermination_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_extermination_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_extermination_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_grab_and_go +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_grab_and_go + + diffusemap textures/guis/hud/emblem_icons/legend_complete_grab_and_go +} +textures/guis/hud/emblem_icons/legend_complete_grab_and_go_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_grab_and_go_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_grab_and_go_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_life_in_prison +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_life_in_prison + + diffusemap textures/guis/hud/emblem_icons/legend_complete_life_in_prison +} +textures/guis/hud/emblem_icons/legend_complete_life_in_prison_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_life_in_prison_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_life_in_prison_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_no_defib +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_no_defib + + diffusemap textures/guis/hud/emblem_icons/legend_complete_no_defib +} +textures/guis/hud/emblem_icons/legend_complete_no_defib_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_no_defib_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_no_defib_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_rustys_resupply +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_rustys_resupply + + diffusemap textures/guis/hud/emblem_icons/legend_complete_rustys_resupply +} +textures/guis/hud/emblem_icons/legend_complete_rustys_resupply_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_rustys_resupply_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_rustys_resupply_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_season_1 +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_season_1 + + diffusemap textures/guis/hud/emblem_icons/legend_complete_season_1 +} +textures/guis/hud/emblem_icons/legend_complete_season_1_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_season_1_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_season_1_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_trophy_hunting +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_trophy_hunting + + diffusemap textures/guis/hud/emblem_icons/legend_complete_trophy_hunting +} +textures/guis/hud/emblem_icons/legend_complete_trophy_hunting_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_trophy_hunting_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_trophy_hunting_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_unwanted_guests +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_unwanted_guests + + diffusemap textures/guis/hud/emblem_icons/legend_complete_unwanted_guests +} +textures/guis/hud/emblem_icons/legend_complete_unwanted_guests_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_unwanted_guests_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_unwanted_guests_nightmare +} +textures/guis/hud/emblem_icons/legend_complete_water_service +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_water_service + + diffusemap textures/guis/hud/emblem_icons/legend_complete_water_service +} +textures/guis/hud/emblem_icons/legend_complete_water_service_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_complete_water_service_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_complete_water_service_nightmare +} +textures/guis/hud/emblem_icons/legend_find_all_collectibles +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_find_all_collectibles + + diffusemap textures/guis/hud/emblem_icons/legend_find_all_collectibles +} +textures/guis/hud/emblem_icons/legend_highest_rating +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_highest_rating + + diffusemap textures/guis/hud/emblem_icons/legend_highest_rating +} +textures/guis/hud/emblem_icons/legend_highest_rating_nightmare +{ + qer_editorimage textures/guis/hud/emblem_icons/legend_highest_rating_nightmare + + diffusemap textures/guis/hud/emblem_icons/legend_highest_rating_nightmare +} +textures/guis/hud/emblem_icons/level_10 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_10 + + diffusemap textures/guis/hud/emblem_icons/level_10 +} +textures/guis/hud/emblem_icons/level_11 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_11 + + diffusemap textures/guis/hud/emblem_icons/level_11 +} +textures/guis/hud/emblem_icons/level_12 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_12 + + diffusemap textures/guis/hud/emblem_icons/level_12 +} +textures/guis/hud/emblem_icons/level_13 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_13 + + diffusemap textures/guis/hud/emblem_icons/level_13 +} +textures/guis/hud/emblem_icons/level_14 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_14 + + diffusemap textures/guis/hud/emblem_icons/level_14 +} +textures/guis/hud/emblem_icons/level_15 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_15 + + diffusemap textures/guis/hud/emblem_icons/level_15 +} +textures/guis/hud/emblem_icons/level_16 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_16 + + diffusemap textures/guis/hud/emblem_icons/level_16 +} +textures/guis/hud/emblem_icons/level_17 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_17 + + diffusemap textures/guis/hud/emblem_icons/level_17 +} +textures/guis/hud/emblem_icons/level_18 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_18 + + diffusemap textures/guis/hud/emblem_icons/level_18 +} +textures/guis/hud/emblem_icons/level_19 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_19 + + diffusemap textures/guis/hud/emblem_icons/level_19 +} +textures/guis/hud/emblem_icons/level_2 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_2 + + diffusemap textures/guis/hud/emblem_icons/level_2 +} +textures/guis/hud/emblem_icons/level_20 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_20 + + diffusemap textures/guis/hud/emblem_icons/level_20 +} +textures/guis/hud/emblem_icons/level_3 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_3 + + diffusemap textures/guis/hud/emblem_icons/level_3 +} +textures/guis/hud/emblem_icons/level_4 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_4 + + diffusemap textures/guis/hud/emblem_icons/level_4 +} +textures/guis/hud/emblem_icons/level_5 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_5 + + diffusemap textures/guis/hud/emblem_icons/level_5 +} +textures/guis/hud/emblem_icons/level_6 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_6 + + diffusemap textures/guis/hud/emblem_icons/level_6 +} +textures/guis/hud/emblem_icons/level_7 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_7 + + diffusemap textures/guis/hud/emblem_icons/level_7 +} +textures/guis/hud/emblem_icons/level_8 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_8 + + diffusemap textures/guis/hud/emblem_icons/level_8 +} +textures/guis/hud/emblem_icons/level_9 +{ + qer_editorimage textures/guis/hud/emblem_icons/level_9 + + diffusemap textures/guis/hud/emblem_icons/level_9 +} +textures/guis/hud/emblem_icons/longest_chain +{ + qer_editorimage textures/guis/hud/emblem_icons/longest_chain + + diffusemap textures/guis/hud/emblem_icons/longest_chain +} +textures/guis/hud/emblem_icons/longest_killstreak +{ + qer_editorimage textures/guis/hud/emblem_icons/longest_killstreak + + diffusemap textures/guis/hud/emblem_icons/longest_killstreak +} +textures/guis/hud/emblem_icons/longest_life +{ + qer_editorimage textures/guis/hud/emblem_icons/longest_life + + diffusemap textures/guis/hud/emblem_icons/longest_life +} +textures/guis/hud/emblem_icons/max_chain_10 +{ + qer_editorimage textures/guis/hud/emblem_icons/max_chain_10 + + diffusemap textures/guis/hud/emblem_icons/max_chain_10 +} +textures/guis/hud/emblem_icons/max_chain_100 +{ + qer_editorimage textures/guis/hud/emblem_icons/max_chain_100 + + diffusemap textures/guis/hud/emblem_icons/max_chain_100 +} +textures/guis/hud/emblem_icons/max_chain_25 +{ + qer_editorimage textures/guis/hud/emblem_icons/max_chain_25 + + diffusemap textures/guis/hud/emblem_icons/max_chain_25 +} +textures/guis/hud/emblem_icons/max_chain_50 +{ + qer_editorimage textures/guis/hud/emblem_icons/max_chain_50 + + diffusemap textures/guis/hud/emblem_icons/max_chain_50 +} +textures/guis/hud/emblem_icons/most_chain_breakers +{ + qer_editorimage textures/guis/hud/emblem_icons/most_chain_breakers + + diffusemap textures/guis/hud/emblem_icons/most_chain_breakers +} +textures/guis/hud/emblem_icons/most_incomplete_triads +{ + qer_editorimage textures/guis/hud/emblem_icons/most_incomplete_triads + + diffusemap textures/guis/hud/emblem_icons/most_incomplete_triads +} +textures/guis/hud/emblem_icons/most_kills +{ + qer_editorimage textures/guis/hud/emblem_icons/most_kills + + diffusemap textures/guis/hud/emblem_icons/most_kills +} +textures/guis/hud/emblem_icons/most_meteors_captured +{ + qer_editorimage textures/guis/hud/emblem_icons/most_meteors_captured + + diffusemap textures/guis/hud/emblem_icons/most_meteors_captured +} +textures/guis/hud/emblem_icons/most_meteors_dropped +{ + qer_editorimage textures/guis/hud/emblem_icons/most_meteors_dropped + + diffusemap textures/guis/hud/emblem_icons/most_meteors_dropped +} +textures/guis/hud/emblem_icons/most_miles_driven +{ + qer_editorimage textures/guis/hud/emblem_icons/most_miles_driven + + diffusemap textures/guis/hud/emblem_icons/most_miles_driven +} +textures/guis/hud/emblem_icons/most_rally_captures +{ + qer_editorimage textures/guis/hud/emblem_icons/most_rally_captures + + diffusemap textures/guis/hud/emblem_icons/most_rally_captures +} +textures/guis/hud/emblem_icons/most_restore_items +{ + qer_editorimage textures/guis/hud/emblem_icons/most_restore_items + + diffusemap textures/guis/hud/emblem_icons/most_restore_items +} +textures/guis/hud/emblem_icons/most_special_kills +{ + qer_editorimage textures/guis/hud/emblem_icons/most_special_kills + + diffusemap textures/guis/hud/emblem_icons/most_special_kills +} +textures/guis/hud/emblem_icons/most_triad_breakers +{ + qer_editorimage textures/guis/hud/emblem_icons/most_triad_breakers + + diffusemap textures/guis/hud/emblem_icons/most_triad_breakers +} +textures/guis/hud/emblem_icons/mvp +{ + qer_editorimage textures/guis/hud/emblem_icons/mvp + + diffusemap textures/guis/hud/emblem_icons/mvp +} +textures/guis/hud/emblem_icons/no_room_for_sidekicks +{ + qer_editorimage textures/guis/hud/emblem_icons/no_room_for_sidekicks + + diffusemap textures/guis/hud/emblem_icons/no_room_for_sidekicks +} +textures/guis/hud/emblem_icons/pull_kill +{ + qer_editorimage textures/guis/hud/emblem_icons/pull_kill + + diffusemap textures/guis/hud/emblem_icons/pull_kill +} +textures/guis/hud/emblem_icons/rage_a +{ + qer_editorimage textures/guis/hud/emblem_icons/rage_a + + diffusemap textures/guis/hud/emblem_icons/rage_a +} +textures/guis/hud/emblem_icons/revenge_kills_10_rr +{ + qer_editorimage textures/guis/hud/emblem_icons/revenge_kills_10_rr + + diffusemap textures/guis/hud/emblem_icons/revenge_kills_10_rr +} +textures/guis/hud/emblem_icons/the_legend_begins +{ + qer_editorimage textures/guis/hud/emblem_icons/the_legend_begins + + diffusemap textures/guis/hud/emblem_icons/the_legend_begins +} +textures/guis/hud/emblem_icons/triad_breakers_10 +{ + qer_editorimage textures/guis/hud/emblem_icons/triad_breakers_10 + + diffusemap textures/guis/hud/emblem_icons/triad_breakers_10 +} +textures/guis/hud/emblem_icons/triad_breakers_100 +{ + qer_editorimage textures/guis/hud/emblem_icons/triad_breakers_100 + + diffusemap textures/guis/hud/emblem_icons/triad_breakers_100 +} +textures/guis/hud/emblem_icons/triad_breakers_25 +{ + qer_editorimage textures/guis/hud/emblem_icons/triad_breakers_25 + + diffusemap textures/guis/hud/emblem_icons/triad_breakers_25 +} +textures/guis/hud/emblem_icons/triad_breakers_50 +{ + qer_editorimage textures/guis/hud/emblem_icons/triad_breakers_50 + + diffusemap textures/guis/hud/emblem_icons/triad_breakers_50 +} +textures/guis/hud/emblem_icons/triads_10 +{ + qer_editorimage textures/guis/hud/emblem_icons/triads_10 + + diffusemap textures/guis/hud/emblem_icons/triads_10 +} +textures/guis/hud/emblem_icons/triads_100 +{ + qer_editorimage textures/guis/hud/emblem_icons/triads_100 + + diffusemap textures/guis/hud/emblem_icons/triads_100 +} +textures/guis/hud/emblem_icons/triads_25 +{ + qer_editorimage textures/guis/hud/emblem_icons/triads_25 + + diffusemap textures/guis/hud/emblem_icons/triads_25 +} +textures/guis/hud/emblem_icons/triads_50 +{ + qer_editorimage textures/guis/hud/emblem_icons/triads_50 + + diffusemap textures/guis/hud/emblem_icons/triads_50 +} +textures/guis/hud/fpshud/crosshair_dot_big +{ + qer_editorimage textures/guis/hud/fpshud/crosshair_dot_big + + diffusemap textures/guis/hud/fpshud/crosshair_dot_big +} +textures/guis/hud/fpshud/loot_pickup +{ + qer_editorimage textures/guis/hud/fpshud/loot_pickup + + diffusemap textures/guis/hud/fpshud/loot_pickup +} +textures/guis/hud/fpshud/manipulate +{ + qer_editorimage textures/guis/hud/fpshud/manipulate + + diffusemap textures/guis/hud/fpshud/manipulate +} +textures/guis/hud/fpshud/speech +{ + qer_editorimage textures/guis/hud/fpshud/speech + + diffusemap textures/guis/hud/fpshud/speech +} +textures/guis/hud/fpshud_holo/select_box +{ + qer_editorimage textures/guis/hud/fpshud_holo/select_box + + diffusemap textures/guis/hud/fpshud_holo/select_box +} +textures/guis/hud/garage_exits/wellspring_exit +{ + qer_editorimage textures/guis/hud/garage_exits/wellspring_exit + + diffusemap textures/guis/hud/garage_exits/wellspring_exit +} +textures/guis/hud/garage_icons/cuprino +{ + qer_editorimage textures/guis/hud/garage_icons/cuprino + + diffusemap textures/guis/hud/garage_icons/cuprino +} +textures/guis/hud/garage_icons/dune_buster +{ + qer_editorimage textures/guis/hud/garage_icons/dune_buster + + diffusemap textures/guis/hud/garage_icons/dune_buster +} +textures/guis/hud/garage_icons/icon_exhaust_upgrade +{ + qer_editorimage textures/guis/hud/garage_icons/icon_exhaust_upgrade + + diffusemap textures/guis/hud/garage_icons/icon_exhaust_upgrade +} +textures/guis/hud/garage_icons/jetter +{ + qer_editorimage textures/guis/hud/garage_icons/jetter + + diffusemap textures/guis/hud/garage_icons/jetter +} +textures/guis/hud/garage_icons/monarch +{ + qer_editorimage textures/guis/hud/garage_icons/monarch + + diffusemap textures/guis/hud/garage_icons/monarch +} +textures/guis/hud/interior_damage/d_grenade +{ + qer_editorimage textures/guis/hud/interior_damage/d_grenade + + diffusemap textures/guis/hud/interior_damage/d_grenade +} +textures/guis/hud/interior_damage/d_rcbombcar +{ + qer_editorimage textures/guis/hud/interior_damage/d_rcbombcar + + diffusemap textures/guis/hud/interior_damage/d_rcbombcar +} +textures/guis/hud/inventory_cars/temp_inv_car +{ + qer_editorimage textures/guis/hud/inventory_cars/temp_inv_car + + diffusemap textures/guis/hud/inventory_cars/temp_inv_car +} +textures/guis/hud/inventory_icons/buggy_keys +{ + qer_editorimage textures/guis/hud/inventory_icons/buggy_keys + + diffusemap textures/guis/hud/inventory_icons/buggy_keys +} +textures/guis/hud/inventory_icons/clothes_rogue +{ + qer_editorimage textures/guis/hud/inventory_icons/clothes_rogue + + diffusemap textures/guis/hud/inventory_icons/clothes_rogue +} +textures/guis/hud/inventory_icons/clothes_roughneck +{ + qer_editorimage textures/guis/hud/inventory_icons/clothes_roughneck + + diffusemap textures/guis/hud/inventory_icons/clothes_roughneck +} +textures/guis/hud/inventory_icons/clothes_wasteland +{ + qer_editorimage textures/guis/hud/inventory_icons/clothes_wasteland + + diffusemap textures/guis/hud/inventory_icons/clothes_wasteland +} +textures/guis/hud/inventory_icons/cluster +{ + qer_editorimage textures/guis/hud/inventory_icons/cluster + + diffusemap textures/guis/hud/inventory_icons/cluster +} +textures/guis/hud/inventory_icons/deployable_turret_2 +{ + qer_editorimage textures/guis/hud/inventory_icons/deployable_turret_2 + + diffusemap textures/guis/hud/inventory_icons/deployable_turret_2 +} +textures/guis/hud/inventory_icons/mya_package +{ + qer_editorimage textures/guis/hud/inventory_icons/mya_package + + diffusemap textures/guis/hud/inventory_icons/mya_package +} +textures/guis/hud/inventory_icons/rcbomb +{ + qer_editorimage textures/guis/hud/inventory_icons/rcbomb + + diffusemap textures/guis/hud/inventory_icons/rcbomb +} +textures/guis/hud/inventory_icons/settler_clothes +{ + qer_editorimage textures/guis/hud/inventory_icons/settler_clothes + + diffusemap textures/guis/hud/inventory_icons/settler_clothes +} +textures/guis/hud/inventory_icons/small_battery_pack +{ + qer_editorimage textures/guis/hud/inventory_icons/small_battery_pack + + diffusemap textures/guis/hud/inventory_icons/small_battery_pack +} +textures/guis/hud/inventory_icons/small_gears +{ + qer_editorimage textures/guis/hud/inventory_icons/small_gears + + diffusemap textures/guis/hud/inventory_icons/small_gears +} +textures/guis/hud/inventory_icons/upgrade_rof_authority_mgun +{ + qer_editorimage textures/guis/hud/inventory_icons/upgrade_rof_authority_mgun + + diffusemap textures/guis/hud/inventory_icons/upgrade_rof_authority_mgun +} +textures/guis/hud/inventory_icons/upgrade_scope_rifle +{ + qer_editorimage textures/guis/hud/inventory_icons/upgrade_scope_rifle + + diffusemap textures/guis/hud/inventory_icons/upgrade_scope_rifle +} +textures/guis/hud/inventory_icons/vehicle_emp +{ + qer_editorimage textures/guis/hud/inventory_icons/vehicle_emp + + diffusemap textures/guis/hud/inventory_icons/vehicle_emp +} +textures/guis/hud/inventory_icons/vehicle_jump +{ + qer_editorimage textures/guis/hud/inventory_icons/vehicle_jump + + diffusemap textures/guis/hud/inventory_icons/vehicle_jump +} +textures/guis/hud/inventory_icons/wellspring_keys +{ + qer_editorimage textures/guis/hud/inventory_icons/wellspring_keys + + diffusemap textures/guis/hud/inventory_icons/wellspring_keys +} +textures/guis/hud/loadout_icons/quickuse/quickuse_boostextender +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_boostextender + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_boostextender +} +textures/guis/hud/loadout_icons/quickuse/quickuse_emp +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_emp + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_emp +} +textures/guis/hud/loadout_icons/quickuse/quickuse_health +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_health + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_health +} +textures/guis/hud/loadout_icons/quickuse/quickuse_hoverturret +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_hoverturret + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_hoverturret +} +textures/guis/hud/loadout_icons/quickuse/quickuse_jump +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_jump + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_jump +} +textures/guis/hud/loadout_icons/quickuse/quickuse_mine +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_mine + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_mine +} +textures/guis/hud/loadout_icons/quickuse/quickuse_roverbomb +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_roverbomb + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_roverbomb +} +textures/guis/hud/loadout_icons/quickuse/quickuse_shield +{ + qer_editorimage textures/guis/hud/loadout_icons/quickuse/quickuse_shield + + diffusemap textures/guis/hud/loadout_icons/quickuse/quickuse_shield +} +textures/guis/hud/loadout_icons/weapon/weapon_cluster_bomb +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_cluster_bomb + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_cluster_bomb +} +textures/guis/hud/loadout_icons/weapon/weapon_heavy_machine_gun +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_heavy_machine_gun + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_heavy_machine_gun +} +textures/guis/hud/loadout_icons/weapon/weapon_homing_missile +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_homing_missile + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_homing_missile +} +textures/guis/hud/loadout_icons/weapon/weapon_machine_gun +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_machine_gun + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_machine_gun +} +textures/guis/hud/loadout_icons/weapon/weapon_nail_spreader +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_nail_spreader + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_nail_spreader +} +textures/guis/hud/loadout_icons/weapon/weapon_pulse_cannon +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_pulse_cannon + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_pulse_cannon +} +textures/guis/hud/loadout_icons/weapon/weapon_rocket +{ + qer_editorimage textures/guis/hud/loadout_icons/weapon/weapon_rocket + + diffusemap textures/guis/hud/loadout_icons/weapon/weapon_rocket +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_boostextender +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_boostextender + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_boostextender +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_emp +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_emp + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_emp +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_health +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_health + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_health +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_hoverturret +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_hoverturret + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_hoverturret +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_jump +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_jump + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_jump +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_mine +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_mine + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_mine +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_roverbomb +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_roverbomb + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_roverbomb +} +textures/guis/hud/loadout_icons_big/quickuse/quickuse_shield +{ + qer_editorimage textures/guis/hud/loadout_icons_big/quickuse/quickuse_shield + + diffusemap textures/guis/hud/loadout_icons_big/quickuse/quickuse_shield +} +textures/guis/hud/loadout_icons_big/vehicle/vehicle_buggy_ghost +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle/vehicle_buggy_ghost + + diffusemap textures/guis/hud/loadout_icons_big/vehicle/vehicle_buggy_ghost +} +textures/guis/hud/loadout_icons_big/vehicle/vehicle_buggy_id +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle/vehicle_buggy_id + + diffusemap textures/guis/hud/loadout_icons_big/vehicle/vehicle_buggy_id +} +textures/guis/hud/loadout_icons_big/vehicle/vehicle_cuprino_colt +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle/vehicle_cuprino_colt + + diffusemap textures/guis/hud/loadout_icons_big/vehicle/vehicle_cuprino_colt +} +textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_reaver +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_reaver + + diffusemap textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_reaver +} +textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_starky +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_starky + + diffusemap textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_starky +} +textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_tank +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_tank + + diffusemap textures/guis/hud/loadout_icons_big/vehicle/vehicle_monarch_tank +} +textures/guis/hud/loadout_icons_big/vehicle_class/buggy +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle_class/buggy + + diffusemap textures/guis/hud/loadout_icons_big/vehicle_class/buggy +} +textures/guis/hud/loadout_icons_big/vehicle_class/cuprino +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle_class/cuprino + + diffusemap textures/guis/hud/loadout_icons_big/vehicle_class/cuprino +} +textures/guis/hud/loadout_icons_big/vehicle_class/monarch +{ + qer_editorimage textures/guis/hud/loadout_icons_big/vehicle_class/monarch + + diffusemap textures/guis/hud/loadout_icons_big/vehicle_class/monarch +} +textures/guis/hud/loadout_icons_big/weapon/weapon_cluster_bomb +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_cluster_bomb + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_cluster_bomb +} +textures/guis/hud/loadout_icons_big/weapon/weapon_heavy_machine_gun +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_heavy_machine_gun + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_heavy_machine_gun +} +textures/guis/hud/loadout_icons_big/weapon/weapon_homing_missile +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_homing_missile + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_homing_missile +} +textures/guis/hud/loadout_icons_big/weapon/weapon_machine_gun +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_machine_gun + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_machine_gun +} +textures/guis/hud/loadout_icons_big/weapon/weapon_nail_spreader +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_nail_spreader + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_nail_spreader +} +textures/guis/hud/loadout_icons_big/weapon/weapon_pulse_cannon +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_pulse_cannon + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_pulse_cannon +} +textures/guis/hud/loadout_icons_big/weapon/weapon_rocket +{ + qer_editorimage textures/guis/hud/loadout_icons_big/weapon/weapon_rocket + + diffusemap textures/guis/hud/loadout_icons_big/weapon/weapon_rocket +} +textures/guis/hud/minimap/you +{ + qer_editorimage textures/guis/hud/minimap/you + + diffusemap textures/guis/hud/minimap/you +} +textures/guis/hud/online/poi_arrow_green +{ + qer_editorimage textures/guis/hud/online/poi_arrow_green + + diffusemap textures/guis/hud/online/poi_arrow_green +} +textures/guis/hud/online/poi_icons/bully_vehicle +{ + qer_editorimage textures/guis/hud/online/poi_icons/bully_vehicle + + diffusemap textures/guis/hud/online/poi_icons/bully_vehicle +} +textures/guis/hud/online/poi_icons/poi_capture_green +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_capture_green + + diffusemap textures/guis/hud/online/poi_icons/poi_capture_green +} +textures/guis/hud/online/poi_icons/poi_capture_red +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_capture_red + + diffusemap textures/guis/hud/online/poi_icons/poi_capture_red +} +textures/guis/hud/online/poi_icons/poi_contested_green +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_contested_green + + diffusemap textures/guis/hud/online/poi_icons/poi_contested_green +} +textures/guis/hud/online/poi_icons/poi_contested_red +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_contested_red + + diffusemap textures/guis/hud/online/poi_icons/poi_contested_red +} +textures/guis/hud/online/poi_icons/poi_domination_green +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_domination_green + + diffusemap textures/guis/hud/online/poi_icons/poi_domination_green +} +textures/guis/hud/online/poi_icons/poi_domination_red +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_domination_red + + diffusemap textures/guis/hud/online/poi_icons/poi_domination_red +} +textures/guis/hud/online/poi_icons/poi_flag_green +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_flag_green + + diffusemap textures/guis/hud/online/poi_icons/poi_flag_green +} +textures/guis/hud/online/poi_icons/poi_flag_red +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_flag_red + + diffusemap textures/guis/hud/online/poi_icons/poi_flag_red +} +textures/guis/hud/online/poi_icons/poi_goal_green +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_goal_green + + diffusemap textures/guis/hud/online/poi_icons/poi_goal_green +} +textures/guis/hud/online/poi_icons/poi_goal_red +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_goal_red + + diffusemap textures/guis/hud/online/poi_icons/poi_goal_red +} +textures/guis/hud/online/poi_icons/poi_leader_red +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_leader_red + + diffusemap textures/guis/hud/online/poi_icons/poi_leader_red +} +textures/guis/hud/online/poi_icons/poi_meteor_capture +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_meteor_capture + + diffusemap textures/guis/hud/online/poi_icons/poi_meteor_capture +} +textures/guis/hud/online/poi_icons/poi_offscreenarrow +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_offscreenarrow + + diffusemap textures/guis/hud/online/poi_icons/poi_offscreenarrow +} +textures/guis/hud/online/poi_icons/poi_target +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_target + + diffusemap textures/guis/hud/online/poi_icons/poi_target +} +textures/guis/hud/online/poi_icons/poi_team_mate +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_team_mate + + diffusemap textures/guis/hud/online/poi_icons/poi_team_mate +} +textures/guis/hud/online/poi_icons/poi_team_mate_afk +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_team_mate_afk + + diffusemap textures/guis/hud/online/poi_icons/poi_team_mate_afk +} +textures/guis/hud/online/poi_icons/poi_team_mate_defib +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_team_mate_defib + + diffusemap textures/guis/hud/online/poi_icons/poi_team_mate_defib +} +textures/guis/hud/online/poi_icons/poi_team_mate_down +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_team_mate_down + + diffusemap textures/guis/hud/online/poi_icons/poi_team_mate_down +} +textures/guis/hud/online/poi_icons/poi_team_mate_offscreen +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_team_mate_offscreen + + diffusemap textures/guis/hud/online/poi_icons/poi_team_mate_offscreen +} +textures/guis/hud/online/poi_icons/poi_triad_point +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_triad_point + + diffusemap textures/guis/hud/online/poi_icons/poi_triad_point +} +textures/guis/hud/online/poi_icons/poi_use +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_use + + diffusemap textures/guis/hud/online/poi_icons/poi_use +} +textures/guis/hud/online/poi_icons/poi_waypoint +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_waypoint + + diffusemap textures/guis/hud/online/poi_icons/poi_waypoint +} +textures/guis/hud/online/poi_icons/poi_waypointboth +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_waypointboth + + diffusemap textures/guis/hud/online/poi_icons/poi_waypointboth +} +textures/guis/hud/online/poi_icons/poi_waypointwait +{ + qer_editorimage textures/guis/hud/online/poi_icons/poi_waypointwait + + diffusemap textures/guis/hud/online/poi_icons/poi_waypointwait +} +textures/guis/hud/online/vehicle_weapons/shockwave +{ + qer_editorimage textures/guis/hud/online/vehicle_weapons/shockwave + + diffusemap textures/guis/hud/online/vehicle_weapons/shockwave +} +textures/guis/hud/quickitems/icon_rcbomb +{ + qer_editorimage textures/guis/hud/quickitems/icon_rcbomb + + diffusemap textures/guis/hud/quickitems/icon_rcbomb +} +textures/guis/hud/race_icons/dusty8 +{ + qer_editorimage textures/guis/hud/race_icons/dusty8 + + diffusemap textures/guis/hud/race_icons/dusty8 +} +textures/guis/hud/race_icons/southern_hwy +{ + qer_editorimage textures/guis/hud/race_icons/southern_hwy + + diffusemap textures/guis/hud/race_icons/southern_hwy +} +textures/guis/hud/race_rewards/booster_race_reward +{ + qer_editorimage textures/guis/hud/race_rewards/booster_race_reward + + diffusemap textures/guis/hud/race_rewards/booster_race_reward +} +textures/guis/hud/race_rewards/cuprino_race_reward +{ + qer_editorimage textures/guis/hud/race_rewards/cuprino_race_reward + + diffusemap textures/guis/hud/race_rewards/cuprino_race_reward +} +textures/guis/hud/race_rewards/magnum_race_reward +{ + qer_editorimage textures/guis/hud/race_rewards/magnum_race_reward + + diffusemap textures/guis/hud/race_rewards/magnum_race_reward +} +textures/guis/hud/race_rewards/monarch_race_reward +{ + qer_editorimage textures/guis/hud/race_rewards/monarch_race_reward + + diffusemap textures/guis/hud/race_rewards/monarch_race_reward +} +textures/guis/hud/regime_shotgun/shtgn_spread +{ + qer_editorimage textures/guis/hud/regime_shotgun/shtgn_spread + + diffusemap textures/guis/hud/regime_shotgun/shtgn_spread +} +textures/guis/hud/vehicle/pickup +{ + qer_editorimage textures/guis/hud/vehicle/pickup + + diffusemap textures/guis/hud/vehicle/pickup +} +textures/guis/hud/vehicle_key_icons/paper_side_buggy +{ + qer_editorimage textures/guis/hud/vehicle_key_icons/paper_side_buggy + + diffusemap textures/guis/hud/vehicle_key_icons/paper_side_buggy +} +textures/guis/hud/vehicle_key_icons/paper_side_cuprino +{ + qer_editorimage textures/guis/hud/vehicle_key_icons/paper_side_cuprino + + diffusemap textures/guis/hud/vehicle_key_icons/paper_side_cuprino +} +textures/guis/hud/vehicle_key_icons/paper_side_monarch +{ + qer_editorimage textures/guis/hud/vehicle_key_icons/paper_side_monarch + + diffusemap textures/guis/hud/vehicle_key_icons/paper_side_monarch +} +textures/guis/hud/vehicle_key_icons/paper_side_rod +{ + qer_editorimage textures/guis/hud/vehicle_key_icons/paper_side_rod + + diffusemap textures/guis/hud/vehicle_key_icons/paper_side_rod +} +textures/guis/hud/weapon_icons/regime_shotgun +{ + qer_editorimage textures/guis/hud/weapon_icons/regime_shotgun + + diffusemap textures/guis/hud/weapon_icons/regime_shotgun +} +textures/guis/icons/ammo/am_bfg_round +{ + qer_editorimage textures/guis/icons/ammo/am_bfg_round + + diffusemap textures/guis/icons/ammo/am_bfg_round +} +textures/guis/icons/ammo/am_mg_felt +{ + qer_editorimage textures/guis/icons/ammo/am_mg_felt + + diffusemap textures/guis/icons/ammo/am_mg_felt +} +textures/guis/icons/ammo/am_mg_reg +{ + qer_editorimage textures/guis/icons/ammo/am_mg_reg + + diffusemap textures/guis/icons/ammo/am_mg_reg +} +textures/guis/icons/ammo/am_pstl_fat +{ + qer_editorimage textures/guis/icons/ammo/am_pstl_fat + + diffusemap textures/guis/icons/ammo/am_pstl_fat +} +textures/guis/icons/ammo/am_pstl_fatm +{ + qer_editorimage textures/guis/icons/ammo/am_pstl_fatm + + diffusemap textures/guis/icons/ammo/am_pstl_fatm +} +textures/guis/icons/ammo/am_pstl_kill +{ + qer_editorimage textures/guis/icons/ammo/am_pstl_kill + + diffusemap textures/guis/icons/ammo/am_pstl_kill +} +textures/guis/icons/ammo/am_pstl_reg +{ + qer_editorimage textures/guis/icons/ammo/am_pstl_reg + + diffusemap textures/guis/icons/ammo/am_pstl_reg +} +textures/guis/icons/ammo/am_pulse_round +{ + qer_editorimage textures/guis/icons/ammo/am_pulse_round + + diffusemap textures/guis/icons/ammo/am_pulse_round +} +textures/guis/icons/ammo/am_rail_impale +{ + qer_editorimage textures/guis/icons/ammo/am_rail_impale + + diffusemap textures/guis/icons/ammo/am_rail_impale +} +textures/guis/icons/ammo/am_rail_nail +{ + qer_editorimage textures/guis/icons/ammo/am_rail_nail + + diffusemap textures/guis/icons/ammo/am_rail_nail +} +textures/guis/icons/ammo/am_rail_rail +{ + qer_editorimage textures/guis/icons/ammo/am_rail_rail + + diffusemap textures/guis/icons/ammo/am_rail_rail +} +textures/guis/icons/ammo/am_regmg_av2 +{ + qer_editorimage textures/guis/icons/ammo/am_regmg_av2 + + diffusemap textures/guis/icons/ammo/am_regmg_av2 +} +textures/guis/icons/ammo/am_regmg_reg +{ + qer_editorimage textures/guis/icons/ammo/am_regmg_reg + + diffusemap textures/guis/icons/ammo/am_regmg_reg +} +textures/guis/icons/ammo/am_rrl_cluster +{ + qer_editorimage textures/guis/icons/ammo/am_rrl_cluster + + diffusemap textures/guis/icons/ammo/am_rrl_cluster +} +textures/guis/icons/ammo/am_rrl_reg +{ + qer_editorimage textures/guis/icons/ammo/am_rrl_reg + + diffusemap textures/guis/icons/ammo/am_rrl_reg +} +textures/guis/icons/ammo/am_rrl_stinger +{ + qer_editorimage textures/guis/icons/ammo/am_rrl_stinger + + diffusemap textures/guis/icons/ammo/am_rrl_stinger +} +textures/guis/icons/ammo/am_sht_buck +{ + qer_editorimage textures/guis/icons/ammo/am_sht_buck + + diffusemap textures/guis/icons/ammo/am_sht_buck +} +textures/guis/icons/ammo/am_sht_electroshot +{ + qer_editorimage textures/guis/icons/ammo/am_sht_electroshot + + diffusemap textures/guis/icons/ammo/am_sht_electroshot +} +textures/guis/icons/ammo/am_sht_poppers +{ + qer_editorimage textures/guis/icons/ammo/am_sht_poppers + + diffusemap textures/guis/icons/ammo/am_sht_poppers +} +textures/guis/icons/ammo/am_snp_reg +{ + qer_editorimage textures/guis/icons/ammo/am_snp_reg + + diffusemap textures/guis/icons/ammo/am_snp_reg +} +textures/guis/icons/ammo/am_tln_control +{ + qer_editorimage textures/guis/icons/ammo/am_tln_control + + diffusemap textures/guis/icons/ammo/am_tln_control +} +textures/guis/icons/ammo/am_tln_electro +{ + qer_editorimage textures/guis/icons/ammo/am_tln_electro + + diffusemap textures/guis/icons/ammo/am_tln_electro +} +textures/guis/icons/ammo/am_tln_explosive +{ + qer_editorimage textures/guis/icons/ammo/am_tln_explosive + + diffusemap textures/guis/icons/ammo/am_tln_explosive +} +textures/guis/icons/ammo/am_tln_reg +{ + qer_editorimage textures/guis/icons/ammo/am_tln_reg + + diffusemap textures/guis/icons/ammo/am_tln_reg +} +textures/guis/icons/dlc1/access_card +{ + qer_editorimage textures/guis/icons/dlc1/access_card + + diffusemap textures/guis/icons/dlc1/access_card +} +textures/guis/icons/dlc1/mb_ticket +{ + qer_editorimage textures/guis/icons/dlc1/mb_ticket + + diffusemap textures/guis/icons/dlc1/mb_ticket +} +textures/guis/icons/dlc1/scorcher_plans +{ + qer_editorimage textures/guis/icons/dlc1/scorcher_plans + + diffusemap textures/guis/icons/dlc1/scorcher_plans +} +textures/guis/icons/dossier/dbl_shotgun +{ + qer_editorimage textures/guis/icons/dossier/dbl_shotgun + + diffusemap textures/guis/icons/dossier/dbl_shotgun +} +textures/guis/icons/dossier/ess_authorityaug +{ + qer_editorimage textures/guis/icons/dossier/ess_authorityaug + + diffusemap textures/guis/icons/dossier/ess_authorityaug +} +textures/guis/icons/dossier/ess_bandages +{ + qer_editorimage textures/guis/icons/dossier/ess_bandages + + diffusemap textures/guis/icons/dossier/ess_bandages +} +textures/guis/icons/dossier/ess_cluster_grenade +{ + qer_editorimage textures/guis/icons/dossier/ess_cluster_grenade + + diffusemap textures/guis/icons/dossier/ess_cluster_grenade +} +textures/guis/icons/dossier/ess_cluster_rockets +{ + qer_editorimage textures/guis/icons/dossier/ess_cluster_rockets + + diffusemap textures/guis/icons/dossier/ess_cluster_rockets +} +textures/guis/icons/dossier/ess_damage_enh +{ + qer_editorimage textures/guis/icons/dossier/ess_damage_enh + + diffusemap textures/guis/icons/dossier/ess_damage_enh +} +textures/guis/icons/dossier/ess_dynamite +{ + qer_editorimage textures/guis/icons/dossier/ess_dynamite + + diffusemap textures/guis/icons/dossier/ess_dynamite +} +textures/guis/icons/dossier/ess_emp_grenade +{ + qer_editorimage textures/guis/icons/dossier/ess_emp_grenade + + diffusemap textures/guis/icons/dossier/ess_emp_grenade +} +textures/guis/icons/dossier/ess_fat_mammas +{ + qer_editorimage textures/guis/icons/dossier/ess_fat_mammas + + diffusemap textures/guis/icons/dossier/ess_fat_mammas +} +textures/guis/icons/dossier/ess_health_boost +{ + qer_editorimage textures/guis/icons/dossier/ess_health_boost + + diffusemap textures/guis/icons/dossier/ess_health_boost +} +textures/guis/icons/dossier/ess_lock_grinder +{ + qer_editorimage textures/guis/icons/dossier/ess_lock_grinder + + diffusemap textures/guis/icons/dossier/ess_lock_grinder +} +textures/guis/icons/dossier/ess_mindsnare +{ + qer_editorimage textures/guis/icons/dossier/ess_mindsnare + + diffusemap textures/guis/icons/dossier/ess_mindsnare +} +textures/guis/icons/dossier/ess_pacifier +{ + qer_editorimage textures/guis/icons/dossier/ess_pacifier + + diffusemap textures/guis/icons/dossier/ess_pacifier +} +textures/guis/icons/dossier/ess_pop_rockets +{ + qer_editorimage textures/guis/icons/dossier/ess_pop_rockets + + diffusemap textures/guis/icons/dossier/ess_pop_rockets +} +textures/guis/icons/dossier/ess_rcbomb +{ + qer_editorimage textures/guis/icons/dossier/ess_rcbomb + + diffusemap textures/guis/icons/dossier/ess_rcbomb +} +textures/guis/icons/dossier/ess_rcbomb_upgrade +{ + qer_editorimage textures/guis/icons/dossier/ess_rcbomb_upgrade + + diffusemap textures/guis/icons/dossier/ess_rcbomb_upgrade +} +textures/guis/icons/dossier/ess_regen_pack +{ + qer_editorimage textures/guis/icons/dossier/ess_regen_pack + + diffusemap textures/guis/icons/dossier/ess_regen_pack +} +textures/guis/icons/dossier/ess_sentry +{ + qer_editorimage textures/guis/icons/dossier/ess_sentry + + diffusemap textures/guis/icons/dossier/ess_sentry +} +textures/guis/icons/dossier/ess_sentry_upgrade +{ + qer_editorimage textures/guis/icons/dossier/ess_sentry_upgrade + + diffusemap textures/guis/icons/dossier/ess_sentry_upgrade +} +textures/guis/icons/dossier/ess_turret +{ + qer_editorimage textures/guis/icons/dossier/ess_turret + + diffusemap textures/guis/icons/dossier/ess_turret +} +textures/guis/icons/dossier/ess_turret_full +{ + qer_editorimage textures/guis/icons/dossier/ess_turret_full + + diffusemap textures/guis/icons/dossier/ess_turret_full +} +textures/guis/icons/dossier/ess_wingstick +{ + qer_editorimage textures/guis/icons/dossier/ess_wingstick + + diffusemap textures/guis/icons/dossier/ess_wingstick +} +textures/guis/icons/dossier/fist +{ + qer_editorimage textures/guis/icons/dossier/fist + + diffusemap textures/guis/icons/dossier/fist +} +textures/guis/icons/dossier/fistrage +{ + qer_editorimage textures/guis/icons/dossier/fistrage + + diffusemap textures/guis/icons/dossier/fistrage +} +textures/guis/icons/dossier/nailgun +{ + qer_editorimage textures/guis/icons/dossier/nailgun + + diffusemap textures/guis/icons/dossier/nailgun +} +textures/guis/icons/dossier/pistol +{ + qer_editorimage textures/guis/icons/dossier/pistol + + diffusemap textures/guis/icons/dossier/pistol +} +textures/guis/icons/dossier/pulse_canon +{ + qer_editorimage textures/guis/icons/dossier/pulse_canon + + diffusemap textures/guis/icons/dossier/pulse_canon +} +textures/guis/icons/dossier/regime_mgun +{ + qer_editorimage textures/guis/icons/dossier/regime_mgun + + diffusemap textures/guis/icons/dossier/regime_mgun +} +textures/guis/icons/dossier/regime_shotgun +{ + qer_editorimage textures/guis/icons/dossier/regime_shotgun + + diffusemap textures/guis/icons/dossier/regime_shotgun +} +textures/guis/icons/dossier/rifle +{ + qer_editorimage textures/guis/icons/dossier/rifle + + diffusemap textures/guis/icons/dossier/rifle +} +textures/guis/icons/dossier/rocket_launcher +{ + qer_editorimage textures/guis/icons/dossier/rocket_launcher + + diffusemap textures/guis/icons/dossier/rocket_launcher +} +textures/guis/icons/dossier/settler_mgun +{ + qer_editorimage textures/guis/icons/dossier/settler_mgun + + diffusemap textures/guis/icons/dossier/settler_mgun +} +textures/guis/icons/dossier/talon +{ + qer_editorimage textures/guis/icons/dossier/talon + + diffusemap textures/guis/icons/dossier/talon +} +textures/guis/icons/dossier/wss_crossbow +{ + qer_editorimage textures/guis/icons/dossier/wss_crossbow + + diffusemap textures/guis/icons/dossier/wss_crossbow +} +textures/guis/icons/dossier/wss_dbl_shotgun +{ + qer_editorimage textures/guis/icons/dossier/wss_dbl_shotgun + + diffusemap textures/guis/icons/dossier/wss_dbl_shotgun +} +textures/guis/icons/dossier/wss_fist +{ + qer_editorimage textures/guis/icons/dossier/wss_fist + + diffusemap textures/guis/icons/dossier/wss_fist +} +textures/guis/icons/dossier/wss_fistrage +{ + qer_editorimage textures/guis/icons/dossier/wss_fistrage + + diffusemap textures/guis/icons/dossier/wss_fistrage +} +textures/guis/icons/dossier/wss_nailgun +{ + qer_editorimage textures/guis/icons/dossier/wss_nailgun + + diffusemap textures/guis/icons/dossier/wss_nailgun +} +textures/guis/icons/dossier/wss_pistol +{ + qer_editorimage textures/guis/icons/dossier/wss_pistol + + diffusemap textures/guis/icons/dossier/wss_pistol +} +textures/guis/icons/dossier/wss_plasma +{ + qer_editorimage textures/guis/icons/dossier/wss_plasma + + diffusemap textures/guis/icons/dossier/wss_plasma +} +textures/guis/icons/dossier/wss_regime_mg +{ + qer_editorimage textures/guis/icons/dossier/wss_regime_mg + + diffusemap textures/guis/icons/dossier/wss_regime_mg +} +textures/guis/icons/dossier/wss_regime_rocket +{ + qer_editorimage textures/guis/icons/dossier/wss_regime_rocket + + diffusemap textures/guis/icons/dossier/wss_regime_rocket +} +textures/guis/icons/dossier/wss_settler_mg +{ + qer_editorimage textures/guis/icons/dossier/wss_settler_mg + + diffusemap textures/guis/icons/dossier/wss_settler_mg +} +textures/guis/icons/dossier/wss_shotgun +{ + qer_editorimage textures/guis/icons/dossier/wss_shotgun + + diffusemap textures/guis/icons/dossier/wss_shotgun +} +textures/guis/icons/dossier/wss_sniper +{ + qer_editorimage textures/guis/icons/dossier/wss_sniper + + diffusemap textures/guis/icons/dossier/wss_sniper +} +textures/guis/icons/engineering/antiseptic_formula +{ + qer_editorimage textures/guis/icons/engineering/antiseptic_formula + + diffusemap textures/guis/icons/engineering/antiseptic_formula +} +textures/guis/icons/engineering/eng_blueshine +{ + qer_editorimage textures/guis/icons/engineering/eng_blueshine + + diffusemap textures/guis/icons/engineering/eng_blueshine +} +textures/guis/icons/engineering/eng_c4 +{ + qer_editorimage textures/guis/icons/engineering/eng_c4 + + diffusemap textures/guis/icons/engineering/eng_c4 +} +textures/guis/icons/engineering/eng_cloth_rags +{ + qer_editorimage textures/guis/icons/engineering/eng_cloth_rags + + diffusemap textures/guis/icons/engineering/eng_cloth_rags +} +textures/guis/icons/engineering/eng_cometbloom +{ + qer_editorimage textures/guis/icons/engineering/eng_cometbloom + + diffusemap textures/guis/icons/engineering/eng_cometbloom +} +textures/guis/icons/engineering/eng_desertspore +{ + qer_editorimage textures/guis/icons/engineering/eng_desertspore + + diffusemap textures/guis/icons/engineering/eng_desertspore +} +textures/guis/icons/engineering/eng_feltrite_coupler +{ + qer_editorimage textures/guis/icons/engineering/eng_feltrite_coupler + + diffusemap textures/guis/icons/engineering/eng_feltrite_coupler +} +textures/guis/icons/engineering/eng_feltrite_power +{ + qer_editorimage textures/guis/icons/engineering/eng_feltrite_power + + diffusemap textures/guis/icons/engineering/eng_feltrite_power +} +textures/guis/icons/engineering/eng_mutant_pheromones +{ + qer_editorimage textures/guis/icons/engineering/eng_mutant_pheromones + + diffusemap textures/guis/icons/engineering/eng_mutant_pheromones +} +textures/guis/icons/engineering/eng_nanotrite_conduit +{ + qer_editorimage textures/guis/icons/engineering/eng_nanotrite_conduit + + diffusemap textures/guis/icons/engineering/eng_nanotrite_conduit +} +textures/guis/icons/engineering/eng_ordinance_pack +{ + qer_editorimage textures/guis/icons/engineering/eng_ordinance_pack + + diffusemap textures/guis/icons/engineering/eng_ordinance_pack +} +textures/guis/icons/engineering/eng_rc_car_kit +{ + qer_editorimage textures/guis/icons/engineering/eng_rc_car_kit + + diffusemap textures/guis/icons/engineering/eng_rc_car_kit +} +textures/guis/icons/engineering/eng_small_battery_pack +{ + qer_editorimage textures/guis/icons/engineering/eng_small_battery_pack + + diffusemap textures/guis/icons/engineering/eng_small_battery_pack +} +textures/guis/icons/engineering/eng_small_gears +{ + qer_editorimage textures/guis/icons/engineering/eng_small_gears + + diffusemap textures/guis/icons/engineering/eng_small_gears +} +textures/guis/icons/engineering/eng_steel_blades +{ + qer_editorimage textures/guis/icons/engineering/eng_steel_blades + + diffusemap textures/guis/icons/engineering/eng_steel_blades +} +textures/guis/icons/engineering/eng_turret_barrel +{ + qer_editorimage textures/guis/icons/engineering/eng_turret_barrel + + diffusemap textures/guis/icons/engineering/eng_turret_barrel +} +textures/guis/icons/engineering/eng_wire_kit +{ + qer_editorimage textures/guis/icons/engineering/eng_wire_kit + + diffusemap textures/guis/icons/engineering/eng_wire_kit +} +textures/guis/icons/engineering/hardware_packet +{ + qer_editorimage textures/guis/icons/engineering/hardware_packet + + diffusemap textures/guis/icons/engineering/hardware_packet +} +textures/guis/icons/job/alternator +{ + qer_editorimage textures/guis/icons/job/alternator + + diffusemap textures/guis/icons/job/alternator +} +textures/guis/icons/job/ark_equipment +{ + qer_editorimage textures/guis/icons/job/ark_equipment + + diffusemap textures/guis/icons/job/ark_equipment +} +textures/guis/icons/job/blueshine +{ + qer_editorimage textures/guis/icons/job/blueshine + + diffusemap textures/guis/icons/job/blueshine +} +textures/guis/icons/job/cypher +{ + qer_editorimage textures/guis/icons/job/cypher + + diffusemap textures/guis/icons/job/cypher +} +textures/guis/icons/job/data +{ + qer_editorimage textures/guis/icons/job/data + + diffusemap textures/guis/icons/job/data +} +textures/guis/icons/job/defib_upgrade +{ + qer_editorimage textures/guis/icons/job/defib_upgrade + + diffusemap textures/guis/icons/job/defib_upgrade +} +textures/guis/icons/job/distributor +{ + qer_editorimage textures/guis/icons/job/distributor + + diffusemap textures/guis/icons/job/distributor +} +textures/guis/icons/job/feltrite_sample +{ + qer_editorimage textures/guis/icons/job/feltrite_sample + + diffusemap textures/guis/icons/job/feltrite_sample +} +textures/guis/icons/job/fireworks +{ + qer_editorimage textures/guis/icons/job/fireworks + + diffusemap textures/guis/icons/job/fireworks +} +textures/guis/icons/job/flower +{ + qer_editorimage textures/guis/icons/job/flower + + diffusemap textures/guis/icons/job/flower +} +textures/guis/icons/job/id_drive +{ + qer_editorimage textures/guis/icons/job/id_drive + + diffusemap textures/guis/icons/job/id_drive +} +textures/guis/icons/job/juno_remains +{ + qer_editorimage textures/guis/icons/job/juno_remains + + diffusemap textures/guis/icons/job/juno_remains +} +textures/guis/icons/job/keycard +{ + qer_editorimage textures/guis/icons/job/keycard + + diffusemap textures/guis/icons/job/keycard +} +textures/guis/icons/job/letter_to +{ + qer_editorimage textures/guis/icons/job/letter_to + + diffusemap textures/guis/icons/job/letter_to +} +textures/guis/icons/job/management_office_keys +{ + qer_editorimage textures/guis/icons/job/management_office_keys + + diffusemap textures/guis/icons/job/management_office_keys +} +textures/guis/icons/job/mindcontrol +{ + qer_editorimage textures/guis/icons/job/mindcontrol + + diffusemap textures/guis/icons/job/mindcontrol +} +textures/guis/icons/job/piston +{ + qer_editorimage textures/guis/icons/job/piston + + diffusemap textures/guis/icons/job/piston +} +textures/guis/icons/job/plutonium_feltrite +{ + qer_editorimage textures/guis/icons/job/plutonium_feltrite + + diffusemap textures/guis/icons/job/plutonium_feltrite +} +textures/guis/icons/job/proof_of +{ + qer_editorimage textures/guis/icons/job/proof_of + + diffusemap textures/guis/icons/job/proof_of +} +textures/guis/icons/job/rc_prototype +{ + qer_editorimage textures/guis/icons/job/rc_prototype + + diffusemap textures/guis/icons/job/rc_prototype +} +textures/guis/icons/job/supplies +{ + qer_editorimage textures/guis/icons/job/supplies + + diffusemap textures/guis/icons/job/supplies +} +textures/guis/icons/job/well_toxin +{ + qer_editorimage textures/guis/icons/job/well_toxin + + diffusemap textures/guis/icons/job/well_toxin +} +textures/guis/icons/junk/blake +{ + qer_editorimage textures/guis/icons/junk/blake + + diffusemap textures/guis/icons/junk/blake +} +textures/guis/icons/junk/crayons +{ + qer_editorimage textures/guis/icons/junk/crayons + + diffusemap textures/guis/icons/junk/crayons +} +textures/guis/icons/junk/doggie +{ + qer_editorimage textures/guis/icons/junk/doggie + + diffusemap textures/guis/icons/junk/doggie +} +textures/guis/icons/junk/doommarine +{ + qer_editorimage textures/guis/icons/junk/doommarine + + diffusemap textures/guis/icons/junk/doommarine +} +textures/guis/icons/junk/feltrite +{ + qer_editorimage textures/guis/icons/junk/feltrite + + diffusemap textures/guis/icons/junk/feltrite +} +textures/guis/icons/junk/ju_book +{ + qer_editorimage textures/guis/icons/junk/ju_book + + diffusemap textures/guis/icons/junk/ju_book +} +textures/guis/icons/junk/ju_bottle +{ + qer_editorimage textures/guis/icons/junk/ju_bottle + + diffusemap textures/guis/icons/junk/ju_bottle +} +textures/guis/icons/junk/ju_cans +{ + qer_editorimage textures/guis/icons/junk/ju_cans + + diffusemap textures/guis/icons/junk/ju_cans +} +textures/guis/icons/junk/ju_gastank +{ + qer_editorimage textures/guis/icons/junk/ju_gastank + + diffusemap textures/guis/icons/junk/ju_gastank +} +textures/guis/icons/junk/ju_hardware +{ + qer_editorimage textures/guis/icons/junk/ju_hardware + + diffusemap textures/guis/icons/junk/ju_hardware +} +textures/guis/icons/junk/ju_oilcan +{ + qer_editorimage textures/guis/icons/junk/ju_oilcan + + diffusemap textures/guis/icons/junk/ju_oilcan +} +textures/guis/icons/junk/ju_smalljunk +{ + qer_editorimage textures/guis/icons/junk/ju_smalljunk + + diffusemap textures/guis/icons/junk/ju_smalljunk +} +textures/guis/icons/junk/pinkie +{ + qer_editorimage textures/guis/icons/junk/pinkie + + diffusemap textures/guis/icons/junk/pinkie +} +textures/guis/icons/junk/pipboy +{ + qer_editorimage textures/guis/icons/junk/pipboy + + diffusemap textures/guis/icons/junk/pipboy +} +textures/guis/icons/junk/wolfgoblet +{ + qer_editorimage textures/guis/icons/junk/wolfgoblet + + diffusemap textures/guis/icons/junk/wolfgoblet +} +textures/guis/icons/quickuse/authority_augmentor +{ + qer_editorimage textures/guis/icons/quickuse/authority_augmentor + + diffusemap textures/guis/icons/quickuse/authority_augmentor +} +textures/guis/icons/quickuse/defib_charge +{ + qer_editorimage textures/guis/icons/quickuse/defib_charge + + diffusemap textures/guis/icons/quickuse/defib_charge +} +textures/guis/icons/quickuse/deployable_turret_1 +{ + qer_editorimage textures/guis/icons/quickuse/deployable_turret_1 + + diffusemap textures/guis/icons/quickuse/deployable_turret_1 +} +textures/guis/icons/quickuse/deployable_turret_2 +{ + qer_editorimage textures/guis/icons/quickuse/deployable_turret_2 + + diffusemap textures/guis/icons/quickuse/deployable_turret_2 +} +textures/guis/icons/quickuse/emp_grenade +{ + qer_editorimage textures/guis/icons/quickuse/emp_grenade + + diffusemap textures/guis/icons/quickuse/emp_grenade +} +textures/guis/icons/quickuse/icon_big_health +{ + qer_editorimage textures/guis/icons/quickuse/icon_big_health + + diffusemap textures/guis/icons/quickuse/icon_big_health +} +textures/guis/icons/quickuse/icon_grenade +{ + qer_editorimage textures/guis/icons/quickuse/icon_grenade + + diffusemap textures/guis/icons/quickuse/icon_grenade +} +textures/guis/icons/quickuse/icon_sentry_bot +{ + qer_editorimage textures/guis/icons/quickuse/icon_sentry_bot + + diffusemap textures/guis/icons/quickuse/icon_sentry_bot +} +textures/guis/icons/quickuse/icon_sentry_upgrade +{ + qer_editorimage textures/guis/icons/quickuse/icon_sentry_upgrade + + diffusemap textures/guis/icons/quickuse/icon_sentry_upgrade +} +textures/guis/icons/quickuse/icon_sml_health +{ + qer_editorimage textures/guis/icons/quickuse/icon_sml_health + + diffusemap textures/guis/icons/quickuse/icon_sml_health +} +textures/guis/icons/quickuse/icon_wingstick +{ + qer_editorimage textures/guis/icons/quickuse/icon_wingstick + + diffusemap textures/guis/icons/quickuse/icon_wingstick +} +textures/guis/icons/quickuse/icon_wingstick_multi +{ + qer_editorimage textures/guis/icons/quickuse/icon_wingstick_multi + + diffusemap textures/guis/icons/quickuse/icon_wingstick_multi +} +textures/guis/icons/quickuse/large_bandage +{ + qer_editorimage textures/guis/icons/quickuse/large_bandage + + diffusemap textures/guis/icons/quickuse/large_bandage +} +textures/guis/icons/quickuse/lockgrinder +{ + qer_editorimage textures/guis/icons/quickuse/lockgrinder + + diffusemap textures/guis/icons/quickuse/lockgrinder +} +textures/guis/icons/quickuse/nitro_cell +{ + qer_editorimage textures/guis/icons/quickuse/nitro_cell + + diffusemap textures/guis/icons/quickuse/nitro_cell +} +textures/guis/icons/quickuse/sticky +{ + qer_editorimage textures/guis/icons/quickuse/sticky + + diffusemap textures/guis/icons/quickuse/sticky +} +textures/guis/icons/quickuse/vial_adrenialineboost +{ + qer_editorimage textures/guis/icons/quickuse/vial_adrenialineboost + + diffusemap textures/guis/icons/quickuse/vial_adrenialineboost +} +textures/guis/icons/quickuse/vial_healthbooster +{ + qer_editorimage textures/guis/icons/quickuse/vial_healthbooster + + diffusemap textures/guis/icons/quickuse/vial_healthbooster +} +textures/guis/icons/quickuse/vial_healthregen +{ + qer_editorimage textures/guis/icons/quickuse/vial_healthregen + + diffusemap textures/guis/icons/quickuse/vial_healthregen +} +textures/guis/icons/scenarios/abandoned_distillery +{ + qer_editorimage textures/guis/icons/scenarios/abandoned_distillery + + diffusemap textures/guis/icons/scenarios/abandoned_distillery +} +textures/guis/icons/scenarios/authority_prison +{ + qer_editorimage textures/guis/icons/scenarios/authority_prison + + diffusemap textures/guis/icons/scenarios/authority_prison +} +textures/guis/icons/scenarios/bash_canyon +{ + qer_editorimage textures/guis/icons/scenarios/bash_canyon + + diffusemap textures/guis/icons/scenarios/bash_canyon +} +textures/guis/icons/scenarios/blue_line_station +{ + qer_editorimage textures/guis/icons/scenarios/blue_line_station + + diffusemap textures/guis/icons/scenarios/blue_line_station +} +textures/guis/icons/scenarios/capital_prime +{ + qer_editorimage textures/guis/icons/scenarios/capital_prime + + diffusemap textures/guis/icons/scenarios/capital_prime +} +textures/guis/icons/scenarios/caves +{ + qer_editorimage textures/guis/icons/scenarios/caves + + diffusemap textures/guis/icons/scenarios/caves +} +textures/guis/icons/scenarios/dead_city_central +{ + qer_editorimage textures/guis/icons/scenarios/dead_city_central + + diffusemap textures/guis/icons/scenarios/dead_city_central +} +textures/guis/icons/scenarios/dead_city_streets +{ + qer_editorimage textures/guis/icons/scenarios/dead_city_streets + + diffusemap textures/guis/icons/scenarios/dead_city_streets +} +textures/guis/icons/scenarios/gearhead +{ + qer_editorimage textures/guis/icons/scenarios/gearhead_base + + diffusemap textures/guis/icons/scenarios/gearhead_base +} +textures/guis/icons/scenarios/gearhead_powerplant +{ + qer_editorimage textures/guis/icons/scenarios/gearhead_powerplant + + diffusemap textures/guis/icons/scenarios/gearhead_powerplant +} +textures/guis/icons/scenarios/ghost_hideout +{ + qer_editorimage textures/guis/icons/scenarios/ghost_hideout + + diffusemap textures/guis/icons/scenarios/ghost_hideout +} +textures/guis/icons/scenarios/jackal_canyon +{ + qer_editorimage textures/guis/icons/scenarios/jackal_canyon + + diffusemap textures/guis/icons/scenarios/jackal_canyon +} +textures/guis/icons/scenarios/loadout_assault +{ + qer_editorimage textures/guis/icons/scenarios/loadout_assault + + diffusemap textures/guis/icons/scenarios/loadout_assault +} +textures/guis/icons/scenarios/loadout_authority +{ + qer_editorimage textures/guis/icons/scenarios/loadout_authority + + diffusemap textures/guis/icons/scenarios/loadout_authority +} +textures/guis/icons/scenarios/loadout_demolitions +{ + qer_editorimage textures/guis/icons/scenarios/loadout_demolitions + + diffusemap textures/guis/icons/scenarios/loadout_demolitions +} +textures/guis/icons/scenarios/loadout_electric +{ + qer_editorimage textures/guis/icons/scenarios/loadout_electric + + diffusemap textures/guis/icons/scenarios/loadout_electric +} +textures/guis/icons/scenarios/loadout_item +{ + qer_editorimage textures/guis/icons/scenarios/loadout_item + + diffusemap textures/guis/icons/scenarios/loadout_item +} +textures/guis/icons/scenarios/loadout_settler +{ + qer_editorimage textures/guis/icons/scenarios/loadout_settler + + diffusemap textures/guis/icons/scenarios/loadout_settler +} +textures/guis/icons/scenarios/loadout_sniper +{ + qer_editorimage textures/guis/icons/scenarios/loadout_sniper + + diffusemap textures/guis/icons/scenarios/loadout_sniper +} +textures/guis/icons/scenarios/loadout_super_items +{ + qer_editorimage textures/guis/icons/scenarios/loadout_super_items + + diffusemap textures/guis/icons/scenarios/loadout_super_items +} +textures/guis/icons/scenarios/mutant_bash +{ + qer_editorimage textures/guis/icons/scenarios/mutant_bash + + diffusemap textures/guis/icons/scenarios/mutant_bash +} +textures/guis/icons/scenarios/refinery +{ + qer_editorimage textures/guis/icons/scenarios/refinery + + diffusemap textures/guis/icons/scenarios/refinery +} +textures/guis/icons/scenarios/scorcher +{ + qer_editorimage textures/guis/icons/scenarios/scorcher_base + + diffusemap textures/guis/icons/scenarios/scorcher_base +} +textures/guis/icons/scenarios/shrouded_clan_bunker +{ + qer_editorimage textures/guis/icons/scenarios/shrouded_clan_bunker + + diffusemap textures/guis/icons/scenarios/shrouded_clan_bunker +} +textures/guis/icons/scenarios/the_well +{ + qer_editorimage textures/guis/icons/scenarios/the_well + + diffusemap textures/guis/icons/scenarios/the_well +} +textures/guis/icons/scenarios/wasted_garage +{ + qer_editorimage textures/guis/icons/scenarios/wasted_garage + + diffusemap textures/guis/icons/scenarios/wasted_garage +} +textures/guis/icons/scenarios/wellspring_tunnels +{ + qer_editorimage textures/guis/icons/scenarios/wellspring_tunnels + + diffusemap textures/guis/icons/scenarios/wellspring_tunnels +} +textures/guis/icons/tutorials/tutorial_lockgrinder +{ + qer_editorimage textures/guis/icons/tutorials/tutorial_lockgrinder + + diffusemap textures/guis/icons/tutorials/tutorial_lockgrinder +} +textures/guis/icons/tutorials/tutorial_race_minigun +{ + qer_editorimage textures/guis/icons/tutorials/tutorial_race_minigun + + diffusemap textures/guis/icons/tutorials/tutorial_race_minigun +} +textures/guis/icons/tutorials/tutorial_race_nitro +{ + qer_editorimage textures/guis/icons/tutorials/tutorial_race_nitro + + diffusemap textures/guis/icons/tutorials/tutorial_race_nitro +} +textures/guis/icons/tutorials/tutorial_race_rocket +{ + qer_editorimage textures/guis/icons/tutorials/tutorial_race_rocket + + diffusemap textures/guis/icons/tutorials/tutorial_race_rocket +} +textures/guis/icons/unique/card_deck +{ + qer_editorimage textures/guis/icons/unique/card_deck + + diffusemap textures/guis/icons/unique/card_deck +} +textures/guis/icons/unique/card_full_deck +{ + qer_editorimage textures/guis/icons/unique/card_full_deck + + diffusemap textures/guis/icons/unique/card_full_deck +} +textures/guis/icons/unique/cash +{ + qer_editorimage textures/guis/icons/unique/cash + + diffusemap textures/guis/icons/unique/cash +} +textures/guis/icons/unique/dmg_boost +{ + qer_editorimage textures/guis/icons/unique/dmg_boost + + diffusemap textures/guis/icons/unique/dmg_boost +} +textures/guis/icons/unique/eng_towtruck_radio +{ + qer_editorimage textures/guis/icons/unique/eng_towtruck_radio + + diffusemap textures/guis/icons/unique/eng_towtruck_radio +} +textures/guis/icons/unique/mega_dmg +{ + qer_editorimage textures/guis/icons/unique/mega_dmg + + diffusemap textures/guis/icons/unique/mega_dmg +} +textures/guis/icons/unique/monocular +{ + qer_editorimage textures/guis/icons/unique/monocular + + diffusemap textures/guis/icons/unique/monocular +} +textures/guis/icons/unique/nanosuit +{ + qer_editorimage textures/guis/icons/unique/nanosuit + + diffusemap textures/guis/icons/unique/nanosuit +} +textures/guis/icons/unique/purifier +{ + qer_editorimage textures/guis/icons/unique/purifier + + diffusemap textures/guis/icons/unique/purifier +} +textures/guis/icons/unique/quad_dmg +{ + qer_editorimage textures/guis/icons/unique/quad_dmg + + diffusemap textures/guis/icons/unique/quad_dmg +} +textures/guis/icons/unique/race_certs +{ + qer_editorimage textures/guis/icons/unique/race_certs + + diffusemap textures/guis/icons/unique/race_certs +} +textures/guis/icons/unique/schematic +{ + qer_editorimage textures/guis/icons/unique/schematic + + diffusemap textures/guis/icons/unique/schematic +} +textures/guis/icons/upgrades/upgrade_amg_laser +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_amg_laser + + diffusemap textures/guis/icons/upgrades/upgrade_amg_laser +} +textures/guis/icons/upgrades/upgrade_armor_lvl1 +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_armor_lvl1 + + diffusemap textures/guis/icons/upgrades/upgrade_armor_lvl1 +} +textures/guis/icons/upgrades/upgrade_armor_lvl2 +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_armor_lvl2 + + diffusemap textures/guis/icons/upgrades/upgrade_armor_lvl2 +} +textures/guis/icons/upgrades/upgrade_armor_lvl3 +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_armor_lvl3 + + diffusemap textures/guis/icons/upgrades/upgrade_armor_lvl3 +} +textures/guis/icons/upgrades/upgrade_fistsrage +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_fistsrage + + diffusemap textures/guis/icons/upgrades/upgrade_fistsrage +} +textures/guis/icons/upgrades/upgrade_mg_cocnen +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_mg_cocnen + + diffusemap textures/guis/icons/upgrades/upgrade_mg_cocnen +} +textures/guis/icons/upgrades/upgrade_mg_stable +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_mg_stable + + diffusemap textures/guis/icons/upgrades/upgrade_mg_stable +} +textures/guis/icons/upgrades/upgrade_rifle_mag +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_rifle_mag + + diffusemap textures/guis/icons/upgrades/upgrade_rifle_mag +} +textures/guis/icons/upgrades/upgrade_sg_clip +{ + qer_editorimage textures/guis/icons/upgrades/upgrade_sg_clip + + diffusemap textures/guis/icons/upgrades/upgrade_sg_clip +} +textures/guis/icons/vehicle/ammo_chaingun +{ + qer_editorimage textures/guis/icons/vehicle/ammo_chaingun + + diffusemap textures/guis/icons/vehicle/ammo_chaingun +} +textures/guis/icons/vehicle/ammo_pulse +{ + qer_editorimage textures/guis/icons/vehicle/ammo_pulse + + diffusemap textures/guis/icons/vehicle/ammo_pulse +} +textures/guis/icons/vehicle/ammo_rocket +{ + qer_editorimage textures/guis/icons/vehicle/ammo_rocket + + diffusemap textures/guis/icons/vehicle/ammo_rocket +} +textures/guis/icons/vehicle/armor_level1 +{ + qer_editorimage textures/guis/icons/vehicle/armor_level1 + + diffusemap textures/guis/icons/vehicle/armor_level1 +} +textures/guis/icons/vehicle/armor_level2 +{ + qer_editorimage textures/guis/icons/vehicle/armor_level2 + + diffusemap textures/guis/icons/vehicle/armor_level2 +} +textures/guis/icons/vehicle/armor_level3 +{ + qer_editorimage textures/guis/icons/vehicle/armor_level3 + + diffusemap textures/guis/icons/vehicle/armor_level3 +} +textures/guis/icons/vehicle/booster_level1 +{ + qer_editorimage textures/guis/icons/vehicle/booster_level1 + + diffusemap textures/guis/icons/vehicle/booster_level1 +} +textures/guis/icons/vehicle/booster_level2 +{ + qer_editorimage textures/guis/icons/vehicle/booster_level2 + + diffusemap textures/guis/icons/vehicle/booster_level2 +} +textures/guis/icons/vehicle/booster_level3 +{ + qer_editorimage textures/guis/icons/vehicle/booster_level3 + + diffusemap textures/guis/icons/vehicle/booster_level3 +} +textures/guis/icons/vehicle/bumper_hammer +{ + qer_editorimage textures/guis/icons/vehicle/bumper_hammer + + diffusemap textures/guis/icons/vehicle/bumper_hammer +} +textures/guis/icons/vehicle/bumper_magnum +{ + qer_editorimage textures/guis/icons/vehicle/bumper_magnum + + diffusemap textures/guis/icons/vehicle/bumper_magnum +} +textures/guis/icons/vehicle/empty +{ + qer_editorimage textures/guis/icons/vehicle/empty + + diffusemap textures/guis/icons/vehicle/empty +} +textures/guis/icons/vehicle/engine_standard +{ + qer_editorimage textures/guis/icons/vehicle/engine_standard + + diffusemap textures/guis/icons/vehicle/engine_standard +} +textures/guis/icons/vehicle/engine_upgraded +{ + qer_editorimage textures/guis/icons/vehicle/engine_upgraded + + diffusemap textures/guis/icons/vehicle/engine_upgraded +} +textures/guis/icons/vehicle/machinegun +{ + qer_editorimage textures/guis/icons/vehicle/machinegun + + diffusemap textures/guis/icons/vehicle/machinegun +} +textures/guis/icons/vehicle/missiles +{ + qer_editorimage textures/guis/icons/vehicle/missiles + + diffusemap textures/guis/icons/vehicle/missiles +} +textures/guis/icons/vehicle/qu_aftershocker +{ + qer_editorimage textures/guis/icons/vehicle/qu_aftershocker + + diffusemap textures/guis/icons/vehicle/qu_aftershocker +} +textures/guis/icons/vehicle/qu_autoturret +{ + qer_editorimage textures/guis/icons/vehicle/qu_autoturret + + diffusemap textures/guis/icons/vehicle/qu_autoturret +} +textures/guis/icons/vehicle/qu_mutantbash +{ + qer_editorimage textures/guis/icons/vehicle/qu_mutantbash + + diffusemap textures/guis/icons/vehicle/qu_mutantbash +} +textures/guis/icons/vehicle/qu_repair +{ + qer_editorimage textures/guis/icons/vehicle/qu_repair + + diffusemap textures/guis/icons/vehicle/qu_repair +} +textures/guis/icons/vehicle/qu_rover +{ + qer_editorimage textures/guis/icons/vehicle/qu_rover + + diffusemap textures/guis/icons/vehicle/qu_rover +} +textures/guis/icons/vehicle/qu_shield +{ + qer_editorimage textures/guis/icons/vehicle/qu_shield + + diffusemap textures/guis/icons/vehicle/qu_shield +} +textures/guis/icons/vehicle/qu_spinjet +{ + qer_editorimage textures/guis/icons/vehicle/qu_spinjet + + diffusemap textures/guis/icons/vehicle/qu_spinjet +} +textures/guis/icons/vehicle/qu_stickybomb +{ + qer_editorimage textures/guis/icons/vehicle/qu_stickybomb + + diffusemap textures/guis/icons/vehicle/qu_stickybomb +} +textures/guis/icons/vehicle/suspension_standard +{ + qer_editorimage textures/guis/icons/vehicle/suspension_standard + + diffusemap textures/guis/icons/vehicle/suspension_standard +} +textures/guis/icons/vehicle/suspension_upgraded +{ + qer_editorimage textures/guis/icons/vehicle/suspension_upgraded + + diffusemap textures/guis/icons/vehicle/suspension_upgraded +} +textures/guis/icons/vehicle/theme_generic +{ + qer_editorimage textures/guis/icons/vehicle/theme_generic + + diffusemap textures/guis/icons/vehicle/theme_generic +} +textures/guis/icons/vehicle/theme_id +{ + qer_editorimage textures/guis/icons/vehicle/theme_id + + diffusemap textures/guis/icons/vehicle/theme_id +} +textures/guis/icons/vehicle/theme_orange +{ + qer_editorimage textures/guis/icons/vehicle/theme_orange + + diffusemap textures/guis/icons/vehicle/theme_orange +} +textures/guis/icons/vehicle/theme_patrol +{ + qer_editorimage textures/guis/icons/vehicle/theme_patrol + + diffusemap textures/guis/icons/vehicle/theme_patrol +} +textures/guis/icons/vehicle/theme_scorcher +{ + qer_editorimage textures/guis/icons/vehicle/theme_scorcher + + diffusemap textures/guis/icons/vehicle/theme_scorcher +} +textures/guis/icons/vehicle/theme_skull +{ + qer_editorimage textures/guis/icons/vehicle/theme_skull + + diffusemap textures/guis/icons/vehicle/theme_skull +} +textures/guis/icons/vehicle/tires_standard +{ + qer_editorimage textures/guis/icons/vehicle/tires_standard + + diffusemap textures/guis/icons/vehicle/tires_standard +} +textures/guis/icons/vehicle/tires_standard_spiked +{ + qer_editorimage textures/guis/icons/vehicle/tires_standard_spiked + + diffusemap textures/guis/icons/vehicle/tires_standard_spiked +} +textures/guis/icons/vehicle/tires_sticky +{ + qer_editorimage textures/guis/icons/vehicle/tires_sticky + + diffusemap textures/guis/icons/vehicle/tires_sticky +} +textures/guis/icons/vehicle/tires_sticky_spiked +{ + qer_editorimage textures/guis/icons/vehicle/tires_sticky_spiked + + diffusemap textures/guis/icons/vehicle/tires_sticky_spiked +} +textures/guis/icons/vendor/v_bfg +{ + qer_editorimage textures/guis/icons/vendor/v_bfg + + diffusemap textures/guis/icons/vendor/v_bfg +} +textures/guis/icons/vendor/v_crossbow +{ + qer_editorimage textures/guis/icons/vendor/v_crossbow + + diffusemap textures/guis/icons/vendor/v_crossbow +} +textures/guis/icons/vendor/v_nailgun +{ + qer_editorimage textures/guis/icons/vendor/v_nailgun + + diffusemap textures/guis/icons/vendor/v_nailgun +} +textures/guis/icons/vendor/v_pistol +{ + qer_editorimage textures/guis/icons/vendor/v_pistol + + diffusemap textures/guis/icons/vendor/v_pistol +} +textures/guis/icons/vendor/v_regime_mg +{ + qer_editorimage textures/guis/icons/vendor/v_regime_mg + + diffusemap textures/guis/icons/vendor/v_regime_mg +} +textures/guis/icons/vendor/v_regime_shotgun +{ + qer_editorimage textures/guis/icons/vendor/v_regime_shotgun + + diffusemap textures/guis/icons/vendor/v_regime_shotgun +} +textures/guis/icons/vendor/v_rocket_launcher +{ + qer_editorimage textures/guis/icons/vendor/v_rocket_launcher + + diffusemap textures/guis/icons/vendor/v_rocket_launcher +} +textures/guis/icons/vendor/v_settler_mg +{ + qer_editorimage textures/guis/icons/vendor/v_settler_mg + + diffusemap textures/guis/icons/vendor/v_settler_mg +} +textures/guis/icons/vendor/v_sniper +{ + qer_editorimage textures/guis/icons/vendor/v_sniper + + diffusemap textures/guis/icons/vendor/v_sniper +} +textures/guis/items/inventory/toaster +{ + qer_editorimage textures/guis/items/inventory/toaster + + diffusemap textures/guis/items/inventory/toaster +} +textures/guis/items/throwable/item_default +{ + qer_editorimage textures/guis/items/throwable/item_default + + diffusemap textures/guis/items/throwable/item_default +} +textures/guis/items/weapons/ak47 +{ + qer_editorimage textures/guis/items/weapons/ak47 + + diffusemap textures/guis/items/weapons/ak47 +} +textures/guis/job_note_complete +{ + qer_editorimage textures/guis/job_note_complete + + diffusemap textures/guis/job_note_complete +} +textures/guis/job_note_empty +{ + qer_editorimage textures/guis/job_note_empty + + diffusemap textures/guis/job_note_empty +} +textures/guis/minimap/d8_1_1 +{ + qer_editorimage textures/guis/minimap/d8_1_1 + + diffusemap textures/guis/minimap/d8_1_1 +} +textures/guis/minimap/d8_1_2 +{ + qer_editorimage textures/guis/minimap/d8_1_2 + + diffusemap textures/guis/minimap/d8_1_2 +} +textures/guis/minimap/d8_1_3 +{ + qer_editorimage textures/guis/minimap/d8_1_3 + + diffusemap textures/guis/minimap/d8_1_3 +} +textures/guis/minimap/d8_2_1 +{ + qer_editorimage textures/guis/minimap/d8_2_1 + + diffusemap textures/guis/minimap/d8_2_1 +} +textures/guis/minimap/d8_2_2 +{ + qer_editorimage textures/guis/minimap/d8_2_2 + + diffusemap textures/guis/minimap/d8_2_2 +} +textures/guis/minimap/d8_2_3 +{ + qer_editorimage textures/guis/minimap/d8_2_3 + + diffusemap textures/guis/minimap/d8_2_3 +} +textures/guis/minimap/d8_2_4 +{ + qer_editorimage textures/guis/minimap/d8_2_4 + + diffusemap textures/guis/minimap/d8_2_4 +} +textures/guis/minimap/d8_3_1 +{ + qer_editorimage textures/guis/minimap/d8_3_1 + + diffusemap textures/guis/minimap/d8_3_1 +} +textures/guis/minimap/d8_3_2 +{ + qer_editorimage textures/guis/minimap/d8_3_2 + + diffusemap textures/guis/minimap/d8_3_2 +} +textures/guis/minimap/d8_3_3 +{ + qer_editorimage textures/guis/minimap/d8_3_3 + + diffusemap textures/guis/minimap/d8_3_3 +} +textures/guis/minimap/d8_3_4 +{ + qer_editorimage textures/guis/minimap/d8_3_4 + + diffusemap textures/guis/minimap/d8_3_4 +} +textures/guis/minimap/d8_4_2 +{ + qer_editorimage textures/guis/minimap/d8_4_2 + + diffusemap textures/guis/minimap/d8_4_2 +} +textures/guis/minimap/d8_4_3 +{ + qer_editorimage textures/guis/minimap/d8_4_3 + + diffusemap textures/guis/minimap/d8_4_3 +} +textures/guis/minimap/d8_4_4 +{ + qer_editorimage textures/guis/minimap/d8_4_4 + + diffusemap textures/guis/minimap/d8_4_4 +} +textures/guis/portraits/gboss +{ + qer_editorimage textures/guis/portraits/gboss + + diffusemap textures/guis/portraits/gboss +} +textures/guis/portraits/giant +{ + qer_editorimage textures/guis/portraits/giant + + diffusemap textures/guis/portraits/giant +} +textures/guis/race_points +{ + qer_editorimage textures/guis/race_points + + diffusemap textures/guis/race_points +} +textures/guis/race_points_red +{ + qer_editorimage textures/guis/race_points_red + + diffusemap textures/guis/race_points_red +} +textures/guis/races/bandit +{ + qer_editorimage textures/guis/races/bandit + + diffusemap textures/guis/races/bandit +} +textures/guis/races/northern +{ + qer_editorimage textures/guis/races/northern + + diffusemap textures/guis/races/northern +} +textures/guis/races/raceticket_01 +{ + qer_editorimage textures/guis/races/raceticket_01 + + diffusemap textures/guis/races/raceticket_01 +} +textures/guis/races/raceticket_02 +{ + qer_editorimage textures/guis/races/raceticket_02 + + diffusemap textures/guis/races/raceticket_02 +} +textures/guis/races/raceticket_03 +{ + qer_editorimage textures/guis/races/raceticket_03 + + diffusemap textures/guis/races/raceticket_03 +} +textures/guis/races/raceticket_mb +{ + qer_editorimage textures/guis/races/raceticket_mb + + diffusemap textures/guis/races/raceticket_mb +} +textures/guis/races/settler +{ + qer_editorimage textures/guis/races/settler + + diffusemap textures/guis/races/settler +} +textures/guis/vehicles/buggy_side_b +{ + qer_editorimage textures/guis/vehicles/buggy_side_b + + diffusemap textures/guis/vehicles/buggy_side_b +} +textures/guis/vehicles/cuprino_side_b +{ + qer_editorimage textures/guis/vehicles/cuprino_side_b + + diffusemap textures/guis/vehicles/cuprino_side_b +} +textures/guis/vehicles/monarch_side_b +{ + qer_editorimage textures/guis/vehicles/monarch_side_b + + diffusemap textures/guis/vehicles/monarch_side_b +} +textures/guis/vehicles/rod_side_b +{ + qer_editorimage textures/guis/vehicles/rod_side_b + + diffusemap textures/guis/vehicles/rod_side_b +} +textures/guis/wingstick_icon +{ + qer_editorimage textures/guis/wingstick_icon + + diffusemap textures/guis/wingstick_icon +} +textures/house/baseboard1 +{ + qer_editorimage textures/house/baseboard1 + + diffusemap textures/house/baseboard1 + bumpmap textures/house/baseboard1_h + specularmap textures/house/baseboard1_s +} +textures/house/concrete01 +{ + qer_editorimage textures/house/concrete01 + + diffusemap textures/house/concrete01 +} +textures/house/hardwood4 +{ + qer_editorimage textures/house/hardwood4 + + diffusemap textures/house/hardwood4 + bumpmap textures/house/hardwood4_h +} +textures/house/linoleum1 +{ + qer_editorimage textures/house/linoleum1 + + diffusemap textures/house/linoleum1 + bumpmap textures/house/linoleum1_h + specularmap textures/house/linoleum1_s +} +textures/house/linoleum1_shiny +{ + qer_editorimage textures/house/linoleum1_shiny + + diffusemap textures/house/linoleum1_shiny + bumpmap textures/house/linoleum1_shiny_local + specularmap textures/house/linoleum1_shiny_s +} +textures/house/plaster2 +{ + qer_editorimage textures/house/plaster2 + + diffusemap textures/house/plaster2 + bumpmap textures/house/plaster2_local + specularmap textures/house/plaster2_s +} +textures/house/plaster4 +{ + qer_editorimage textures/house/plaster4 + + diffusemap textures/house/plaster4 + bumpmap textures/house/plaster4_local +} +textures/idstudio/idstudio_folder +{ + qer_editorimage textures/idstudio/idstudio_folder + + diffusemap textures/idstudio/idstudio_folder +} +textures/idstudio/idstudio_image +{ + qer_editorimage textures/idstudio/idstudio_image + + diffusemap textures/idstudio/idstudio_image +} +textures/idstudio/idstudio_model +{ + qer_editorimage textures/idstudio/idstudio_model + + diffusemap textures/idstudio/idstudio_model +} +textures/particles/barrelexpbase1 +{ + qer_editorimage textures/particles/barrelexpbase1 + + diffusemap textures/particles/barrelexpbase1 +} +textures/particles/barrelpoof +{ + qer_editorimage textures/particles/barrelpoof + + diffusemap textures/particles/barrelpoof +} +textures/particles/blastflare2 +{ + qer_editorimage textures/particles/blastflare2 + + diffusemap textures/particles/blastflare2 +} +textures/particles/blood/blood_droplets_liquid +{ + qer_editorimage textures/particles/blood/blood_droplets_liquid + + diffusemap textures/particles/blood/blood_droplets_liquid +} +textures/particles/blood/blood_glowyspray +{ + qer_editorimage textures/particles/blood/blood_glowyspray + + diffusemap textures/particles/blood/blood_glowyspray +} +textures/particles/blood/blood_spray/blood_spray01 +{ + qer_editorimage textures/particles/blood/blood_spray/blood_spray01_color + + diffusemap textures/particles/blood/blood_spray/blood_spray01_color +} +textures/particles/blood/blood_spray_liquid +{ + qer_editorimage textures/particles/blood/blood_spray_liquid + + diffusemap textures/particles/blood/blood_spray_liquid +} +textures/particles/blood/decals/bloodsplatter01_mod +{ + qer_editorimage textures/particles/blood/decals/bloodsplatter01_mod + + diffusemap textures/particles/blood/decals/bloodsplatter01_mod +} +textures/particles/blood/decals/bloodsplatter02_mod +{ + qer_editorimage textures/particles/blood/decals/bloodsplatter02_mod + + diffusemap textures/particles/blood/decals/bloodsplatter02_mod +} +textures/particles/blood/decals/bloodsplatter03_mod +{ + qer_editorimage textures/particles/blood/decals/bloodsplatter03_mod + + diffusemap textures/particles/blood/decals/bloodsplatter03_mod +} +textures/particles/blood/screen/screensplat01_page +{ + qer_editorimage textures/particles/blood/screen/screensplat01_page + + diffusemap textures/particles/blood/screen/screensplat01_page +} +textures/particles/bloop +{ + qer_editorimage textures/particles/bloop + + diffusemap textures/particles/bloop + bumpmap textures/particles/bloop_local +} +textures/particles/boomboom2 +{ + qer_editorimage textures/particles/boomboom2 + + diffusemap textures/particles/boomboom2 +} +textures/particles/circle_hard_add +{ + qer_editorimage textures/particles/circle_hard_add + + diffusemap textures/particles/circle_hard_add +} +textures/particles/circle_soft_add +{ + qer_editorimage textures/particles/circle_soft_add + + diffusemap textures/particles/circle_soft_add +} +textures/particles/clouds +{ + qer_editorimage textures/particles/clouds + + diffusemap textures/particles/clouds +} +textures/particles/debris/blowing_paper01 +{ + qer_editorimage textures/particles/debris/blowing_paper01 + + diffusemap textures/particles/debris/blowing_paper01 +} +textures/particles/debris/cardboard +{ + qer_editorimage textures/particles/debris/cardboard + + diffusemap textures/particles/debris/cardboard +} +textures/particles/debris/cloth_debris +{ + qer_editorimage textures/particles/debris/cloth_debris + + diffusemap textures/particles/debris/cloth_debris +} +textures/particles/debris/dirt01 +{ + qer_editorimage textures/particles/debris/dirt01 + + diffusemap textures/particles/debris/dirt01 +} +textures/particles/debris/dirt_alphatest02 +{ + qer_editorimage textures/particles/debris/dirt_alphatest02 + + diffusemap textures/particles/debris/dirt_alphatest02 +} +textures/particles/debris/dirt_chunks +{ + qer_editorimage textures/particles/debris/dirt_chunks + + diffusemap textures/particles/debris/dirt_chunks +} +textures/particles/debris/glass_debris01 +{ + qer_editorimage textures/particles/debris/glass_debris01 + + diffusemap textures/particles/debris/glass_debris01 +} +textures/particles/debris/glass_sheet +{ + qer_editorimage textures/particles/debris/glass_sheet + + diffusemap textures/particles/debris/glass_sheet +} +textures/particles/debris/rock_chunk01 +{ + qer_editorimage textures/particles/debris/rock_chunk01 + + diffusemap textures/particles/debris/rock_chunk01 +} +textures/particles/debris/rocks_combined +{ + qer_editorimage textures/particles/debris/rocks_combined + + diffusemap textures/particles/debris/rocks_combined +} +textures/particles/debris/wood_debris01 +{ + qer_editorimage textures/particles/debris/wood_debris01 + + diffusemap textures/particles/debris/wood_debris01 +} +textures/particles/decals/bullet_metal +{ + qer_editorimage textures/particles/decals/bullet_metal + + diffusemap textures/particles/decals/bullet_metal +} +textures/particles/decals/bullet_rock +{ + qer_editorimage textures/particles/decals/bullet_rock + + diffusemap textures/particles/decals/bullet_rock +} +textures/particles/decals/bullet_wood +{ + qer_editorimage textures/particles/decals/bullet_wood + + diffusemap textures/particles/decals/bullet_wood +} +textures/particles/decals/ember +{ + qer_editorimage textures/particles/decals/ember + + diffusemap textures/particles/decals/ember +} +textures/particles/decals/explosion_scorch_a +{ + qer_editorimage textures/particles/decals/explosion_scorch_a + + diffusemap textures/particles/decals/explosion_scorch_a +} +textures/particles/decals/explosion_scorch_dirt +{ + qer_editorimage textures/particles/decals/explosion_scorch_dirt + + diffusemap textures/particles/decals/explosion_scorch_dirt +} +textures/particles/decals/explosion_scorch_stone +{ + qer_editorimage textures/particles/decals/explosion_scorch_stone + + diffusemap textures/particles/decals/explosion_scorch_stone +} +textures/particles/decals/minigame_crater_temp_a +{ + qer_editorimage textures/particles/decals/minigame_crater_temp_a + + diffusemap textures/particles/decals/minigame_crater_temp_a +} +textures/particles/decals/mutant_goop_a +{ + qer_editorimage textures/particles/decals/mutant_goop_a + + diffusemap textures/particles/decals/mutant_goop_a +} +textures/particles/default +{ + qer_editorimage textures/particles/default + + diffusemap textures/particles/default +} +textures/particles/drip +{ + qer_editorimage textures/particles/drip + + diffusemap textures/particles/drip + bumpmap textures/particles/drip_local +} +textures/particles/drops +{ + qer_editorimage textures/particles/drops + + diffusemap textures/particles/drops + bumpmap textures/particles/drops_local +} +textures/particles/dust_cyclone01 +{ + qer_editorimage textures/particles/dust_cyclone01 + + diffusemap textures/particles/dust_cyclone01 +} +textures/particles/dust_floating01 +{ + qer_editorimage textures/particles/dust_floating01 + + diffusemap textures/particles/dust_floating01 +} +textures/particles/electricity/electric_bolts01 +{ + qer_editorimage textures/particles/electricity/electric_bolts01 + + diffusemap textures/particles/electricity/electric_bolts01 +} +textures/particles/electricity/electric_bolts04 +{ + qer_editorimage textures/particles/electricity/electric_bolts04 + + diffusemap textures/particles/electricity/electric_bolts04 +} +textures/particles/electricity/lightning01 +{ + qer_editorimage textures/particles/electricity/lightning01 + + diffusemap textures/particles/electricity/lightning01 +} +textures/particles/electricity/lightning_strip +{ + qer_editorimage textures/particles/electricity/lightning_strip + + diffusemap textures/particles/electricity/lightning_strip +} +textures/particles/electricity/ribbon_trail +{ + qer_editorimage textures/particles/electricity/ribbon_trail + + diffusemap textures/particles/electricity/ribbon_trail +} +textures/particles/ember +{ + qer_editorimage textures/particles/ember + + diffusemap textures/particles/ember +} +textures/particles/ember_blue +{ + qer_editorimage textures/particles/ember_blue + + diffusemap textures/particles/ember_blue +} +textures/particles/ember_blue_half +{ + qer_editorimage textures/particles/ember_blue_half + + diffusemap textures/particles/ember_blue_half +} +textures/particles/ember_gold +{ + qer_editorimage textures/particles/ember_gold + + diffusemap textures/particles/ember_gold +} +textures/particles/emp_trail +{ + qer_editorimage textures/particles/emp_trail + + diffusemap textures/particles/emp_trail +} +textures/particles/energy/plasma_flame +{ + qer_editorimage textures/particles/energy/plasma_flame + + diffusemap textures/particles/energy/plasma_flame +} +textures/particles/energy/plasmaring +{ + qer_editorimage textures/particles/energy/plasmaring + + diffusemap textures/particles/energy/plasmaring +} +textures/particles/explosion6 +{ + qer_editorimage textures/particles/explosion6 + + diffusemap textures/particles/explosion6 +} +textures/particles/fire/fire02 +{ + qer_editorimage textures/particles/fire/fire02 + + diffusemap textures/particles/fire/fire02 +} +textures/particles/fire/fire02_e +{ + qer_editorimage textures/particles/fire/fire02_e + + diffusemap textures/particles/fire/fire02_e +} +textures/particles/fire/flameelement01b +{ + qer_editorimage textures/particles/fire/flameelement01b + + diffusemap textures/particles/fire/flameelement01b +} +textures/particles/fire/flameelement01b_add +{ + qer_editorimage textures/particles/fire/flameelement01b_add + + diffusemap textures/particles/fire/flameelement01b_add +} +textures/particles/fire/fumeburst +{ + qer_editorimage textures/particles/fire/fumeburst + + diffusemap textures/particles/fire/fumeburst +} +textures/particles/flame3_strip +{ + qer_editorimage textures/particles/flame3_strip + + diffusemap textures/particles/flame3_strip +} +textures/particles/fly_animated +{ + qer_editorimage textures/particles/fly_animated + + diffusemap textures/particles/fly_animated +} +textures/particles/fly_animated_white +{ + qer_editorimage textures/particles/fly_animated_white + + diffusemap textures/particles/fly_animated_white +} +textures/particles/gravelpuff +{ + qer_editorimage textures/particles/gravelpuff + + diffusemap textures/particles/gravelpuff +} +textures/particles/gunsplash5 +{ + qer_editorimage textures/particles/gunsplash5 + + diffusemap textures/particles/gunsplash5 +} +textures/particles/headlight_beam01 +{ + qer_editorimage textures/particles/headlight_beam01 + + diffusemap textures/particles/headlight_beam01 +} +textures/particles/hotdot +{ + qer_editorimage textures/particles/hotdot + + diffusemap textures/particles/hotdot +} +textures/particles/hotsparks1_small +{ + qer_editorimage textures/particles/hotsparks1_small + + diffusemap textures/particles/hotsparks1_small +} +textures/particles/hoverturret_mp_trail +{ + qer_editorimage textures/particles/hoverturret_mp_trail + + diffusemap textures/particles/hoverturret_mp_trail +} +textures/particles/impacts/metalsparkpanel1 +{ + qer_editorimage textures/particles/impacts/metalsparkpanel1 + + diffusemap textures/particles/impacts/metalsparkpanel1 +} +textures/particles/impacts/metalsparkpanel2 +{ + qer_editorimage textures/particles/impacts/metalsparkpanel2 + + diffusemap textures/particles/impacts/metalsparkpanel2 +} +textures/particles/impacts/spark1 +{ + qer_editorimage textures/particles/impacts/spark1 + + diffusemap textures/particles/impacts/spark1 +} +textures/particles/impacts/spark3 +{ + qer_editorimage textures/particles/impacts/spark3 + + diffusemap textures/particles/impacts/spark3 +} +textures/particles/impacts/waterdropsplash +{ + qer_editorimage textures/particles/impacts/waterdropsplash + + diffusemap textures/particles/impacts/waterdropsplash +} +textures/particles/lighting_distort +{ + qer_editorimage textures/particles/lighting_distort + + diffusemap textures/particles/lighting_distort +} +textures/particles/models/plasma_strip +{ + qer_editorimage textures/particles/models/plasma_strip + + diffusemap textures/particles/models/plasma_strip +} +textures/particles/models/rock_small01 +{ + qer_editorimage textures/particles/models/rock_small01 + + diffusemap textures/particles/models/rock_small01 +} +textures/particles/multiplayer/armor_restore_grid +{ + qer_editorimage textures/particles/multiplayer/armor_restore_grid + + diffusemap textures/particles/multiplayer/armor_restore_grid +} +textures/particles/multiplayer/armor_restore_grid_distortion +{ + qer_editorimage textures/particles/multiplayer/armor_restore_grid_distortion + + diffusemap textures/particles/multiplayer/armor_restore_grid_distortion +} +textures/particles/muzzleflash/muzzle_new_roundfire +{ + qer_editorimage textures/particles/muzzleflash/muzzle_new_roundfire + + diffusemap textures/particles/muzzleflash/muzzle_new_roundfire +} +textures/particles/muzzleflash/muzzleflash_ar_page_blendtest +{ + qer_editorimage textures/particles/muzzleflash/muzzleflash_ar_page_blendtest + + diffusemap textures/particles/muzzleflash/muzzleflash_ar_page_blendtest +} +textures/particles/muzzleflash/muzzleflashassaultrifle0 +{ + qer_editorimage textures/particles/muzzleflash/muzzleflashassaultrifle0 + + diffusemap textures/particles/muzzleflash/muzzleflashassaultrifle0 +} +textures/particles/muzzleflash/muzzleflashassaultrifle2 +{ + qer_editorimage textures/particles/muzzleflash/muzzleflashassaultrifle2 + + diffusemap textures/particles/muzzleflash/muzzleflashassaultrifle2 +} +textures/particles/muzzleflash/muzzleflashpanelsmoke +{ + qer_editorimage textures/particles/muzzleflash/muzzleflashpanelsmoke + + diffusemap textures/particles/muzzleflash/muzzleflashpanelsmoke +} +textures/particles/needle +{ + qer_editorimage textures/particles/needle + + diffusemap textures/particles/needle +} +textures/particles/postglare +{ + qer_editorimage textures/particles/postglare + + diffusemap textures/particles/postglare +} +textures/particles/regime/exhaust01 +{ + qer_editorimage textures/particles/regime/exhaust01 + + diffusemap textures/particles/regime/exhaust01 +} +textures/particles/ring_distort +{ + qer_editorimage textures/particles/ring_distort + + diffusemap textures/particles/ring_distort +} +textures/particles/ring_distort_addlayer +{ + qer_editorimage textures/particles/ring_distort_addlayer + + diffusemap textures/particles/ring_distort_addlayer +} +textures/particles/ring_distort_wide +{ + qer_editorimage textures/particles/ring_distort_wide + + diffusemap textures/particles/ring_distort_wide +} +textures/particles/ring_gray +{ + qer_editorimage textures/particles/ring_gray + + diffusemap textures/particles/ring_gray +} +textures/particles/ring_gray_movelines +{ + qer_editorimage textures/particles/ring_gray_movelines + + diffusemap textures/particles/ring_gray_movelines +} +textures/particles/shelleject/chambersmoke3 +{ + qer_editorimage textures/particles/shelleject/chambersmoke3 + + diffusemap textures/particles/shelleject/chambersmoke3 +} +textures/particles/slime/screen_slime +{ + qer_editorimage textures/particles/slime/screen_slime + + diffusemap textures/particles/slime/screen_slime +} +textures/particles/smoke/dust_swirl02 +{ + qer_editorimage textures/particles/smoke/dust_swirl02 + + diffusemap textures/particles/smoke/dust_swirl02 +} +textures/particles/smoke/puff_static02 +{ + qer_editorimage textures/particles/smoke/puff_static02 + + diffusemap textures/particles/smoke/puff_static02 +} +textures/particles/smoke/smoke_plume +{ + qer_editorimage textures/particles/smoke/smoke_plume + + diffusemap textures/particles/smoke/smoke_plume +} +textures/particles/smoke/smokeball_density +{ + qer_editorimage textures/particles/smoke/smokeball_density + + diffusemap textures/particles/smoke/smokeball_density +} +textures/particles/smoke/smokeburst11 +{ + qer_editorimage textures/particles/smoke/smokeburst11 + + diffusemap textures/particles/smoke/smokeburst11 +} +textures/particles/smoke/smokepuff02 +{ + qer_editorimage textures/particles/smoke/smokepuff02 + + diffusemap textures/particles/smoke/smokepuff02 +} +textures/particles/smoke/tendrilsmoke01 +{ + qer_editorimage textures/particles/smoke/tendrilsmoke01 + + diffusemap textures/particles/smoke/tendrilsmoke01 +} +textures/particles/smoke/thicksmoke01_fire +{ + qer_editorimage textures/particles/smoke/thicksmoke01_fire + + diffusemap textures/particles/smoke/thicksmoke01_fire +} +textures/particles/smoke/thicksmoke02 +{ + qer_editorimage textures/particles/smoke/thicksmoke02 + + diffusemap textures/particles/smoke/thicksmoke02 +} +textures/particles/smoke_wispy_01 +{ + qer_editorimage textures/particles/smoke_wispy_01 + + diffusemap textures/particles/smoke_wispy_01 +} +textures/particles/smokepuff +{ + qer_editorimage textures/particles/smokepuff + + diffusemap textures/particles/smokepuff +} +textures/particles/spark1 +{ + qer_editorimage textures/particles/spark1 + + diffusemap textures/particles/spark1 +} +textures/particles/spark3 +{ + qer_editorimage textures/particles/spark3 + + diffusemap textures/particles/spark3 +} +textures/particles/spark4 +{ + qer_editorimage textures/particles/spark4 + + diffusemap textures/particles/spark4 +} +textures/particles/spark4_nowaste +{ + qer_editorimage textures/particles/spark4_nowaste + + diffusemap textures/particles/spark4_nowaste +} +textures/particles/spark7 +{ + qer_editorimage textures/particles/spark7 + + diffusemap textures/particles/spark7 +} +textures/particles/sparkline_glow_gray +{ + qer_editorimage textures/particles/sparkline_glow_gray + + diffusemap textures/particles/sparkline_glow_gray +} +textures/particles/sparks/spark_chunks_a +{ + qer_editorimage textures/particles/sparks/spark_chunks_a + + diffusemap textures/particles/sparks/spark_chunks_a +} +textures/particles/sparks/spark_chunks_page +{ + qer_editorimage textures/particles/sparks/spark_chunks_page + + diffusemap textures/particles/sparks/spark_chunks_page +} +textures/particles/sparks/trailer +{ + qer_editorimage textures/particles/sparks/trailer + + diffusemap textures/particles/sparks/trailer +} +textures/particles/thoom1 +{ + qer_editorimage textures/particles/thoom1 + + diffusemap textures/particles/thoom1 +} +textures/particles/thoom2 +{ + qer_editorimage textures/particles/thoom2 + + diffusemap textures/particles/thoom2 +} +textures/particles/thoom3 +{ + qer_editorimage textures/particles/thoom3 + + diffusemap textures/particles/thoom3 +} +textures/particles/thoomdrips +{ + qer_editorimage textures/particles/thoomdrips + + diffusemap textures/particles/thoomdrips +} +textures/particles/thoomember +{ + qer_editorimage textures/particles/thoomember + + diffusemap textures/particles/thoomember +} +textures/particles/tiretrack_add +{ + qer_editorimage textures/particles/tiretrack_add + + diffusemap textures/particles/tiretrack_add +} +textures/particles/tiretrack_asphalt +{ + qer_editorimage textures/particles/tiretrack_asphalt + + diffusemap textures/particles/tiretrack_asphalt +} +textures/particles/tiretrack_mul +{ + qer_editorimage textures/particles/tiretrack_mul + + diffusemap textures/particles/tiretrack_mul +} +textures/particles/tracer1 +{ + qer_editorimage textures/particles/tracer1 + + diffusemap textures/particles/tracer1 +} +textures/particles/vulture +{ + qer_editorimage textures/particles/vulture + + diffusemap textures/particles/vulture +} +textures/particles/water/droplet_page01 +{ + qer_editorimage textures/particles/water/droplet_page01 + + diffusemap textures/particles/water/droplet_page01 +} +textures/particles/water/foam_alphatest +{ + qer_editorimage textures/particles/water/foam_alphatest + + diffusemap textures/particles/water/foam_alphatest +} +textures/particles/water/foam_wave +{ + qer_editorimage textures/particles/water/foam_wave + + diffusemap textures/particles/water/foam_wave + bumpmap textures/particles/water/foam_wave_local +} +textures/particles/water/foam_wave_sq +{ + qer_editorimage textures/particles/water/foam_wave_sq + + diffusemap textures/particles/water/foam_wave_sq +} +textures/particles/water/nasty_water01 +{ + qer_editorimage textures/particles/water/nasty_water01 + + diffusemap textures/particles/water/nasty_water01 +} +textures/particles/water/splashup +{ + qer_editorimage textures/particles/water/splashup + + diffusemap textures/particles/water/splashup +} +textures/particles/water/wall_slimedrip01 +{ + qer_editorimage textures/particles/water/wall_slimedrip01 + + diffusemap textures/particles/water/wall_slimedrip01 +} +textures/particles/water/water_droplets +{ + qer_editorimage textures/particles/water/water_droplets + + diffusemap textures/particles/water/water_droplets +} +textures/particles/water/water_foam +{ + qer_editorimage textures/particles/water/water_foam + + diffusemap textures/particles/water/water_foam +} +textures/particles/water/water_screen_drips01 +{ + qer_editorimage textures/particles/water/water_screen_drips01 + + diffusemap textures/particles/water/water_screen_drips01 +} +textures/particles/water/water_strip +{ + qer_editorimage textures/particles/water/water_strip + + diffusemap textures/particles/water/water_strip +} +textures/powersurge/ps_dirt_worn_02 +{ + qer_editorimage textures/powersurge/ps_dirt_worn_02 + + diffusemap textures/powersurge/ps_dirt_worn_02 + bumpmap textures/powersurge/ps_dirt_worn_02_local +} +textures/prison/p_gauge_1 +{ + qer_editorimage textures/prison/p_gauge_1 + + diffusemap textures/prison/p_gauge_1 +} +textures/prison/p_gauge_13 +{ + qer_editorimage textures/prison/p_gauge_13 + + diffusemap textures/prison/p_gauge_13 +} +textures/prison/p_gauge_2 +{ + qer_editorimage textures/prison/p_gauge_2 + + diffusemap textures/prison/p_gauge_2 +} +textures/prison/p_gauge_4 +{ + qer_editorimage textures/prison/p_gauge_4 + + diffusemap textures/prison/p_gauge_4 +} +textures/prison/p_gauge_5 +{ + qer_editorimage textures/prison/p_gauge_5 + + diffusemap textures/prison/p_gauge_5 +} +textures/prison/p_gauges_1 +{ + qer_editorimage textures/prison/p_gauges_1 + + diffusemap textures/prison/p_gauges_1 +} +textures/prison/p_metal_2 +{ + qer_editorimage textures/prison/p_metal_2 + + diffusemap textures/prison/p_metal_2 + specularmap textures/prison/p_metal_2_s +} +textures/prison/p_metal_6 +{ + qer_editorimage textures/prison/p_metal_6 + + diffusemap textures/prison/p_metal_6 +} +textures/prison/p_pipe_1 +{ + qer_editorimage textures/prison/p_pipe_1 + + diffusemap textures/prison/p_pipe_1 +} +textures/prison/pipe4b +{ + qer_editorimage textures/prison/pipe4b + + diffusemap textures/prison/pipe4b + bumpmap textures/prison/pipe4b_local + specularmap textures/prison/pipe4b_s +} +textures/prison/pipe4c +{ + qer_editorimage textures/prison/pipe4c + + diffusemap textures/prison/pipe4c + bumpmap textures/prison/pipe4c_local + specularmap textures/prison/pipe4c_s +} +textures/prison/pipe5a +{ + qer_editorimage textures/prison/pipe5a + + diffusemap textures/prison/pipe5a +} +textures/prison/pipe6a +{ + qer_editorimage textures/prison/pipe6a + + diffusemap textures/prison/pipe6a + specularmap textures/prison/pipe6a_s +} +textures/prison/pipe7 +{ + qer_editorimage textures/prison/pipe7 + + diffusemap textures/prison/pipe7 + bumpmap textures/prison/pipe7_local + specularmap textures/prison/pipe7_s +} +textures/prison/pipe8a +{ + qer_editorimage textures/prison/pipe8a + + diffusemap textures/prison/pipe8a +} +textures/prison/pipeinsulation2a +{ + qer_editorimage textures/prison/pipeinsulation2a + + diffusemap textures/prison/pipeinsulation2a +} +textures/racetrack/arrow_orange_right +{ + qer_editorimage textures/racetrack/arrow_orange_right + + diffusemap textures/racetrack/arrow_orange_right + bumpmap textures/racetrack/arrow_orange_right_local + specularmap textures/racetrack/arrow_orange_right_s +} +textures/racetrack/checker_grey +{ + qer_editorimage textures/racetrack/checker_grey + + diffusemap textures/racetrack/checker_grey + bumpmap textures/racetrack/checker_grey_local +} +textures/racetrack/checker_grey_dark +{ + qer_editorimage textures/racetrack/checker_grey_dark + + diffusemap textures/racetrack/checker_grey_dark +} +textures/racetrack/grate2a +{ + qer_editorimage textures/racetrack/grate2a + + diffusemap textures/racetrack/grate2a +} +textures/racetrack/grate2a2 +{ + qer_editorimage textures/racetrack/grate2a2 + + diffusemap textures/racetrack/grate2a2 +} +textures/racetrack/grate2b +{ + qer_editorimage textures/racetrack/grate2b + + diffusemap textures/racetrack/grate2b +} +textures/racetrack/grate2b2 +{ + qer_editorimage textures/racetrack/grate2b2 + + diffusemap textures/racetrack/grate2b2 +} +textures/racetrack/grate2b_trim +{ + qer_editorimage textures/racetrack/grate2b_trim + + diffusemap textures/racetrack/grate2b_trim +} +textures/racetrack/grate2c +{ + qer_editorimage textures/racetrack/grate2c + + diffusemap textures/racetrack/grate2c +} +textures/racetrack/grate2c2 +{ + qer_editorimage textures/racetrack/grate2c2 + + diffusemap textures/racetrack/grate2c2 +} +textures/racetrack/grate2d +{ + qer_editorimage textures/racetrack/grate2d + + diffusemap textures/racetrack/grate2d +} +textures/racetrack/grate2e +{ + qer_editorimage textures/racetrack/grate2e + + diffusemap textures/racetrack/grate2e +} +textures/rcbombbase/elevatorgears +{ + qer_editorimage textures/rcbombbase/elevatorgears + + diffusemap textures/rcbombbase/elevatorgears + bumpmap textures/rcbombbase/elevatorgears_local + specularmap textures/rcbombbase/elevatorgears_s +} +textures/sawmill/concrete3 +{ + qer_editorimage textures/sawmill/concrete3 + + diffusemap textures/sawmill/concrete3 + bumpmap textures/sawmill/concrete3_h + specularmap textures/sawmill/concrete3_s +} +textures/sawmill/floor_grime2 +{ + qer_editorimage textures/sawmill/floor_grime2 + + diffusemap textures/sawmill/floor_grime2 + bumpmap textures/sawmill/floor_grime2_h +} +textures/sawmill/metal10 +{ + qer_editorimage textures/sawmill/metal10 + + diffusemap textures/sawmill/metal10 + bumpmap textures/sawmill/metal10_h + specularmap textures/sawmill/metal10_s +} +textures/sawmill/metal12 +{ + qer_editorimage textures/sawmill/metal12 + + diffusemap textures/sawmill/metal12 + bumpmap textures/sawmill/metal12_h +} +textures/sawmill/metal13a +{ + qer_editorimage textures/sawmill/metal13a + + diffusemap textures/sawmill/metal13a +} +textures/sawmill/metal14b +{ + qer_editorimage textures/sawmill/metal14b + + diffusemap textures/sawmill/metal14b +} +textures/sawmill/metal17 +{ + qer_editorimage textures/sawmill/metal17 + + diffusemap textures/sawmill/metal17 +} +textures/sawmill/metal4 +{ + qer_editorimage textures/sawmill/metal4 + + diffusemap textures/sawmill/metal4 +} +textures/sawmill/strap3 +{ + qer_editorimage textures/sawmill/strap3 + + diffusemap textures/sawmill/strap3 + bumpmap textures/sawmill/strap3_local +} +textures/sawmill/wood1 +{ + qer_editorimage textures/sawmill/wood1 + + diffusemap textures/sawmill/wood1 +} +textures/sawmill/wood4 +{ + qer_editorimage textures/sawmill/wood4 + + diffusemap textures/sawmill/wood4 +} +textures/sawmill/wood6 +{ + qer_editorimage textures/sawmill/wood6 + + diffusemap textures/sawmill/wood6 + bumpmap textures/sawmill/wood6_local + specularmap textures/sawmill/wood6_s +} +textures/sawmill/wood7 +{ + qer_editorimage textures/sawmill/wood7 + + diffusemap textures/sawmill/wood7 + bumpmap textures/sawmill/wood7_h + specularmap textures/sawmill/wood7_s +} +textures/sawmill/wood8 +{ + qer_editorimage textures/sawmill/wood8 + + diffusemap textures/sawmill/wood8 + bumpmap textures/sawmill/wood8_local + specularmap textures/sawmill/wood8_s +} +textures/sfx/bfg_chargering +{ + qer_editorimage textures/sfx/bfg_chargering + + diffusemap textures/sfx/bfg_chargering +} +textures/sfx/blinklight +{ + qer_editorimage textures/sfx/blinklight + + diffusemap textures/sfx/blinklight +} +textures/sfx/bubble +{ + qer_editorimage textures/sfx/bubble + + diffusemap textures/sfx/bubble +} +textures/sfx/bulleth01b +{ + qer_editorimage textures/sfx/bulleth01b_d + + diffusemap textures/sfx/bulleth01b_d +} +textures/sfx/ceilingfan_add +{ + qer_editorimage textures/sfx/ceilingfan_add + + diffusemap textures/sfx/ceilingfan_add +} +textures/sfx/drip_blood +{ + qer_editorimage textures/sfx/drip_blood + + diffusemap textures/sfx/drip_blood +} +textures/sfx/drone_scan_map +{ + qer_editorimage textures/sfx/drone_scan_map + + diffusemap textures/sfx/drone_scan_map +} +textures/sfx/drone_thrusters_test +{ + qer_editorimage textures/sfx/drone_thrusters_test + + diffusemap textures/sfx/drone_thrusters_test +} +textures/sfx/glass1b_filter2 +{ + qer_editorimage textures/sfx/glass1b_filter2 + + diffusemap textures/sfx/glass1b_filter2 +} +textures/sfx/glass1mask +{ + qer_editorimage textures/sfx/glass1mask + + diffusemap textures/sfx/glass1mask +} +textures/sfx/laserbeam_endpoint +{ + qer_editorimage textures/sfx/laserbeam_endpoint + + diffusemap textures/sfx/laserbeam_endpoint +} +textures/sfx/laserbeam_grey +{ + qer_editorimage textures/sfx/laserbeam_grey + + diffusemap textures/sfx/laserbeam_grey +} +textures/sfx/laserbeam_grey_fpv +{ + qer_editorimage textures/sfx/laserbeam_grey_fpv + + diffusemap textures/sfx/laserbeam_grey_fpv +} +textures/sfx/laserbeam_mutant +{ + qer_editorimage textures/sfx/laserbeam_mutant + + diffusemap textures/sfx/laserbeam_mutant +} +textures/sfx/laserbeam_noise +{ + qer_editorimage textures/sfx/laserbeam_noise + + diffusemap textures/sfx/laserbeam_noise +} +textures/sfx/laserbeam_noise_bright +{ + qer_editorimage textures/sfx/laserbeam_noise_bright + + diffusemap textures/sfx/laserbeam_noise_bright +} +textures/sfx/laserbeam_noise_fpv +{ + qer_editorimage textures/sfx/laserbeam_noise_fpv + + diffusemap textures/sfx/laserbeam_noise_fpv +} +textures/sfx/lensflare3 +{ + qer_editorimage textures/sfx/lensflare3 + + diffusemap textures/sfx/lensflare3 +} +textures/sfx/lensflare5 +{ + qer_editorimage textures/sfx/lensflare5 + + diffusemap textures/sfx/lensflare5 +} +textures/sfx/lensflare6a +{ + qer_editorimage textures/sfx/lensflare6a + + diffusemap textures/sfx/lensflare6a +} +textures/sfx/lensflare7a +{ + qer_editorimage textures/sfx/lensflare7a + + diffusemap textures/sfx/lensflare7a +} +textures/sfx/lensflare8 +{ + qer_editorimage textures/sfx/lensflare8 + + diffusemap textures/sfx/lensflare8 +} +textures/sfx/lensflare9 +{ + qer_editorimage textures/sfx/lensflare9 + + diffusemap textures/sfx/lensflare9 +} +textures/sfx/lensflares/anamorphic/base01 +{ + qer_editorimage textures/sfx/lensflares/anamorphic/base01 + + diffusemap textures/sfx/lensflares/anamorphic/base01 +} +textures/sfx/lensflares/anamorphic/bit01 +{ + qer_editorimage textures/sfx/lensflares/anamorphic/bit01 + + diffusemap textures/sfx/lensflares/anamorphic/bit01 +} +textures/sfx/lensflares/anamorphic/bit02 +{ + qer_editorimage textures/sfx/lensflares/anamorphic/bit02 + + diffusemap textures/sfx/lensflares/anamorphic/bit02 +} +textures/sfx/lensflares/anamorphic/speck01 +{ + qer_editorimage textures/sfx/lensflares/anamorphic/speck01 + + diffusemap textures/sfx/lensflares/anamorphic/speck01 +} +textures/sfx/lensflares/anamorphic/streakflare +{ + qer_editorimage textures/sfx/lensflares/anamorphic/streakflare + + diffusemap textures/sfx/lensflares/anamorphic/streakflare +} +textures/sfx/monitor_wellshot +{ + qer_editorimage textures/sfx/monitor_wellshot + + diffusemap textures/sfx/monitor_wellshot +} +textures/sfx/monsterbasher +{ + qer_editorimage textures/sfx/monsterbasher_base + + diffusemap textures/sfx/monsterbasher_base +} +textures/sfx/monsterbasher_closed +{ + qer_editorimage textures/sfx/monsterbasher_closed + + diffusemap textures/sfx/monsterbasher_closed +} +textures/sfx/monsterbasher_open +{ + qer_editorimage textures/sfx/monsterbasher_open + + diffusemap textures/sfx/monsterbasher_open +} +textures/sfx/neonline_add3 +{ + qer_editorimage textures/sfx/neonline_add3 + + diffusemap textures/sfx/neonline_add3 +} +textures/sfx/orangedot +{ + qer_editorimage textures/sfx/orangedot + + diffusemap textures/sfx/orangedot +} +textures/sfx/orangedot2 +{ + qer_editorimage textures/sfx/orangedot2 + + diffusemap textures/sfx/orangedot2 +} +textures/sfx/plasma_bolt01 +{ + qer_editorimage textures/sfx/plasma_bolt01 + + diffusemap textures/sfx/plasma_bolt01 +} +textures/sfx/regime_add +{ + qer_editorimage textures/sfx/regime_add + + diffusemap textures/sfx/regime_add +} +textures/sfx/regime_laserbeam_colorramp +{ + qer_editorimage textures/sfx/regime_laserbeam_colorramp + + diffusemap textures/sfx/regime_laserbeam_colorramp +} +textures/sfx/regime_laserbeam_colorramp_blue +{ + qer_editorimage textures/sfx/regime_laserbeam_colorramp_blue + + diffusemap textures/sfx/regime_laserbeam_colorramp_blue +} +textures/sfx/scrollglow2 +{ + qer_editorimage textures/sfx/scrollglow2 + + diffusemap textures/sfx/scrollglow2 +} +textures/sfx/shadowblend +{ + qer_editorimage textures/sfx/shadowblend + + diffusemap textures/sfx/shadowblend +} +textures/sfx/shaft_norotate +{ + qer_editorimage textures/sfx/shaft_norotate + + diffusemap textures/sfx/shaft_norotate +} +textures/sfx/smoke_wisptrail +{ + qer_editorimage textures/sfx/smoke_wisptrail + + diffusemap textures/sfx/smoke_wisptrail + bumpmap textures/sfx/smoke_wisptrail_local +} +textures/sfx/tv_static +{ + qer_editorimage textures/sfx/tv_static + + diffusemap textures/sfx/tv_static +} +textures/sfx/vehicle_shield +{ + qer_editorimage textures/sfx/vehicle_shield + + diffusemap textures/sfx/vehicle_shield +} +textures/sfx/vehiclecrosshair +{ + qer_editorimage textures/sfx/vehiclecrosshair + + diffusemap textures/sfx/vehiclecrosshair +} +textures/sfx/whiteglow_round +{ + qer_editorimage textures/sfx/whiteglow_round + + diffusemap textures/sfx/whiteglow_round +} +textures/sfx/wingstickadd +{ + qer_editorimage textures/sfx/wingstickadd + + diffusemap textures/sfx/wingstickadd +} +textures/signs/sign_outtolunch +{ + qer_editorimage textures/signs/sign_outtolunch + + diffusemap textures/signs/sign_outtolunch +} +textures/signs/ws_race_neon +{ + qer_editorimage textures/signs/ws_race_neon + + diffusemap textures/signs/ws_race_neon +} +textures/terrain/ground/sand1 +{ + qer_editorimage textures/terrain/ground/sand1 + + diffusemap textures/terrain/ground/sand1 + bumpmap textures/terrain/ground/sand1_local +} +textures/test/bloodsplat_sphere2 +{ + qer_editorimage textures/test/bloodsplat_sphere2 + + diffusemap textures/test/bloodsplat_sphere2 +} +textures/test/borderoverlay +{ + qer_editorimage textures/test/borderoverlay + + diffusemap textures/test/borderoverlay +} +textures/town/concrete9_shatter +{ + qer_editorimage textures/town/concrete9_shatter + + diffusemap textures/town/concrete9_shatter + bumpmap textures/town/concrete9_shatter_local +} +textures/town/metal_slide +{ + qer_editorimage textures/town/metal_slide + + diffusemap textures/town/metal_slide + specularmap textures/town/metal_slide_s +} +textures/town/phonepole1 +{ + qer_editorimage textures/town/phonepole1 + + diffusemap textures/town/phonepole1 + bumpmap textures/town/phonepole1_local + specularmap textures/town/phonepole1_s +} +textures/town/phonepole2 +{ + qer_editorimage textures/town/phonepole2 + + diffusemap textures/town/phonepole2 + bumpmap textures/town/phonepole2_local +} +textures/town/wood11_bmp +{ + qer_editorimage textures/town/wood11_bmp + + diffusemap textures/town/wood11_bmp +} +textures/town/wood11a +{ + qer_editorimage textures/town/wood11a + + diffusemap textures/town/wood11a +} +textures/town/wood13 +{ + qer_editorimage textures/town/wood13 + + diffusemap textures/town/wood13 + bumpmap textures/town/wood13_local +} +textures/town/wood14_cap +{ + qer_editorimage textures/town/wood14_cap + + diffusemap textures/town/wood14_cap + bumpmap textures/town/wood14_cap_local +} +textures/wastedgarage/firepipe1 +{ + qer_editorimage textures/wastedgarage/firepipe1 + + diffusemap textures/wastedgarage/firepipe1 + bumpmap textures/wastedgarage/firepipe1_local + specularmap textures/wastedgarage/firepipe1_s +} +textures/wastedgarage/firepipe2 +{ + qer_editorimage textures/wastedgarage/firepipe2 + + diffusemap textures/wastedgarage/firepipe2 +} +textures/wastedgarage/firepipejunction2 +{ + qer_editorimage textures/wastedgarage/firepipejunction2 + + diffusemap textures/wastedgarage/firepipejunction2 +} +textures/wastedgarage/glassgridsafety1_add +{ + qer_editorimage textures/wastedgarage/glassgridsafety1_add + + diffusemap textures/wastedgarage/glassgridsafety1_add +} +textures/wastedgarage/wga_baseboard1 +{ + qer_editorimage textures/wastedgarage/wga_baseboard1 + + diffusemap textures/wastedgarage/wga_baseboard1 + bumpmap textures/wastedgarage/wga_baseboard1_local + specularmap textures/wastedgarage/wga_baseboard1_s +} +textures/water/blood_soup_foam2 +{ + qer_editorimage textures/water/blood_soup_foam2 + + diffusemap textures/water/blood_soup_foam2 +} +textures/water/foam_stream +{ + qer_editorimage textures/water/foam_stream + + diffusemap textures/water/foam_stream +} +textures/water/foam_stream2x +{ + qer_editorimage textures/water/foam_stream2x + + diffusemap textures/water/foam_stream2x +} +textures/water/sewer_foam +{ + qer_editorimage textures/water/sewer_foam + + diffusemap textures/water/sewer_foam +} +textures/water/sewer_murk +{ + qer_editorimage textures/water/sewer_murk + + diffusemap textures/water/sewer_murk + bumpmap textures/water/sewer_murk_local +} +textures/water/sewer_sludge_foam +{ + qer_editorimage textures/water/sewer_sludge_foam + + diffusemap textures/water/sewer_sludge_foam +} +textures/water/well_churning_masking +{ + qer_editorimage textures/water/well_churning_masking + + diffusemap textures/water/well_churning_masking +} +textures/water/well_endroom01_masking +{ + qer_editorimage textures/water/well_endroom01_masking + + diffusemap textures/water/well_endroom01_masking +} +textures/water/well_endtunnel01 +{ + qer_editorimage textures/water/well_endtunnel01 + + diffusemap textures/water/well_endtunnel01 +} +textures/water/well_endtunnel02 +{ + qer_editorimage textures/water/well_endtunnel02 + + diffusemap textures/water/well_endtunnel02 +} +textures/water/well_front_masking +{ + qer_editorimage textures/water/well_front_masking + + diffusemap textures/water/well_front_masking +} +textures/water/well_gateroom_masking01 +{ + qer_editorimage textures/water/well_gateroom_masking01 + + diffusemap textures/water/well_gateroom_masking01 +} +textures/water/well_gateroom_masking02 +{ + qer_editorimage textures/water/well_gateroom_masking02 + + diffusemap textures/water/well_gateroom_masking02 +} +textures/water/well_secondroom02_masking +{ + qer_editorimage textures/water/well_secondroom02_masking + + diffusemap textures/water/well_secondroom02_masking +} +textures/water/well_secondroom_masking +{ + qer_editorimage textures/water/well_secondroom_masking + + diffusemap textures/water/well_secondroom_masking +} +textures/well/caverock1 +{ + qer_editorimage textures/well/caverock1 + + diffusemap textures/well/caverock1 + bumpmap textures/well/caverock1_local + specularmap textures/well/caverock1_s +} +textures/well/caverock1b +{ + qer_editorimage textures/well/caverock1b + + diffusemap textures/well/caverock1b +} +textures/well/caverock1c +{ + qer_editorimage textures/well/caverock1c + + diffusemap textures/well/caverock1c +} +textures/well/cavespillartop1 +{ + qer_editorimage textures/well/cavespillartop1 + + diffusemap textures/well/cavespillartop1 + bumpmap textures/well/cavespillartop1_local + specularmap textures/well/cavespillartop1_s +} +textures/well/cavesrocka +{ + qer_editorimage textures/well/cavesrocka + + diffusemap textures/well/cavesrocka + bumpmap textures/well/cavesrocka_local + specularmap textures/well/cavesrocka_s +} +textures/well/cavesrocke +{ + qer_editorimage textures/well/cavesrocke + + diffusemap textures/well/cavesrocke + bumpmap textures/well/cavesrocke_local + specularmap textures/well/cavesrocke_s +} +textures/well/cavesstalactites1 +{ + qer_editorimage textures/well/cavesstalactites1 + + diffusemap textures/well/cavesstalactites1 + bumpmap textures/well/cavesstalactites1_local + specularmap textures/well/cavesstalactites1_s +} +textures/well/cavesstalactites3 +{ + qer_editorimage textures/well/cavesstalactites3 + + diffusemap textures/well/cavesstalactites3 + bumpmap textures/well/cavesstalactites3_local + specularmap textures/well/cavesstalactites3_s +} +textures/well/concrete1 +{ + qer_editorimage textures/well/concrete1 + + diffusemap textures/well/concrete1 + bumpmap textures/well/concrete1_local + specularmap textures/well/concrete1_s +} +textures/well/concrete1dark +{ + qer_editorimage textures/well/concrete1dark + + diffusemap textures/well/concrete1dark +} +textures/well/concrete4 +{ + qer_editorimage textures/well/concrete4 + + diffusemap textures/well/concrete4 + bumpmap textures/well/concrete4_local + specularmap textures/well/concrete4_s +} +textures/well/concrete4c +{ + qer_editorimage textures/well/concrete4c + + diffusemap textures/well/concrete4c +} +textures/well/concretepillar1 +{ + qer_editorimage textures/well/concretepillar1 + + diffusemap textures/well/concretepillar1 + bumpmap textures/well/concretepillar1_local + specularmap textures/well/concretepillar1_s +} +textures/well/concretepillar1e +{ + qer_editorimage textures/well/concretepillar1e + + diffusemap textures/well/concretepillar1e +} +textures/well/concretepillar2 +{ + qer_editorimage textures/well/concretepillar2 + + diffusemap textures/well/concretepillar2 + bumpmap textures/well/concretepillar2_local + specularmap textures/well/concretepillar2_s +} +textures/well/concretetrim1 +{ + qer_editorimage textures/well/concretetrim1 + + diffusemap textures/well/concretetrim1 + bumpmap textures/well/concretetrim1_local + specularmap textures/well/concretetrim1_s +} +textures/well/concretetrim2b +{ + qer_editorimage textures/well/concretetrim2b + + diffusemap textures/well/concretetrim2b +} +textures/well/concretetrim4 +{ + qer_editorimage textures/well/concretetrim4 + + diffusemap textures/well/concretetrim4 + bumpmap textures/well/concretetrim4_local +} +textures/well/concretetrimtop1b +{ + qer_editorimage textures/well/concretetrimtop1b + + diffusemap textures/well/concretetrimtop1b +} +textures/well/concretewall3blong +{ + qer_editorimage textures/well/concretewall3blong + + diffusemap textures/well/concretewall3blong +} +textures/well/concretewall3blong2 +{ + qer_editorimage textures/well/concretewall3blong2 + + diffusemap textures/well/concretewall3blong2 + bumpmap textures/well/concretewall3blong2_local + specularmap textures/well/concretewall3blong2_s +} +textures/well/concretewall3dlong +{ + qer_editorimage textures/well/concretewall3dlong + + diffusemap textures/well/concretewall3dlong +} +textures/well/crumbledwall +{ + qer_editorimage textures/well/crumbledwall + + diffusemap textures/well/crumbledwall + bumpmap textures/well/crumbledwall_local + specularmap textures/well/crumbledwall_s +} +textures/well/glow5 +{ + qer_editorimage textures/well/glow5 + + diffusemap textures/well/glow5 +} +textures/well/mudpile1 +{ + qer_editorimage textures/well/mudpile1 + + diffusemap textures/well/mudpile1 + bumpmap textures/well/mudpile1_local + specularmap textures/well/mudpile1_s +} +textures/well/pipe2b +{ + qer_editorimage textures/well/pipe2b + + diffusemap textures/well/pipe2b +} +textures/well/pipe2c +{ + qer_editorimage textures/well/pipe2c + + diffusemap textures/well/pipe2c + specularmap textures/well/pipe2c_s +} +textures/well/pipe2c2 +{ + qer_editorimage textures/well/pipe2c2 + + diffusemap textures/well/pipe2c2 +} +textures/well/pipe2d +{ + qer_editorimage textures/well/pipe2d + + diffusemap textures/well/pipe2d +} +textures/well/pipe2e +{ + qer_editorimage textures/well/pipe2e + + diffusemap textures/well/pipe2e + bumpmap textures/well/pipe2e_local + specularmap textures/well/pipe2e_s +} +textures/well/pipe2f +{ + qer_editorimage textures/well/pipe2f + + diffusemap textures/well/pipe2f +} +textures/well/pipe2i +{ + qer_editorimage textures/well/pipe2i + + diffusemap textures/well/pipe2i + bumpmap textures/well/pipe2i_local + specularmap textures/well/pipe2i_s +} +textures/well/pipe3 +{ + qer_editorimage textures/well/pipe3 + + diffusemap textures/well/pipe3 +} +textures/well/pipecovering1b +{ + qer_editorimage textures/well/pipecovering1b + + diffusemap textures/well/pipecovering1b +} +textures/well/pump_platform +{ + qer_editorimage textures/well/pump_platform + + diffusemap textures/well/pump_platform + bumpmap textures/well/pump_platform_local + specularmap textures/well/pump_platform_s +} +textures/well/railing1 +{ + qer_editorimage textures/well/railing1 + + diffusemap textures/well/railing1 + bumpmap textures/well/railing1_local + specularmap textures/well/railing1_s +} +textures/well/tunneltexture1 +{ + qer_editorimage textures/well/tunneltexture1 + + diffusemap textures/well/tunneltexture1 + bumpmap textures/well/tunneltexture1_local + specularmap textures/well/tunneltexture1_s +} +textures/well/wire1c +{ + qer_editorimage textures/well/wire1c + + diffusemap textures/well/wire1c +} +textures/well/wire1d +{ + qer_editorimage textures/well/wire1d + + diffusemap textures/well/wire1d +} +textures/well/wire1e +{ + qer_editorimage textures/well/wire1e + + diffusemap textures/well/wire1e +} +textures/well/wire1f +{ + qer_editorimage textures/well/wire1f + + diffusemap textures/well/wire1f +} +textures/wellspring/airduct +{ + qer_editorimage textures/wellspring/airduct + + diffusemap textures/wellspring/airduct + bumpmap textures/wellspring/airduct_local + specularmap textures/wellspring/airduct_s +} +textures/wellspring/bricks1 +{ + qer_editorimage textures/wellspring/bricks1 + + diffusemap textures/wellspring/bricks1 + bumpmap textures/wellspring/bricks1_local +} +textures/wellspring/bricks1_stamp2 +{ + qer_editorimage textures/wellspring/bricks1_stamp2 + + diffusemap textures/wellspring/bricks1_stamp2 + bumpmap textures/wellspring/bricks1_stamp2_local +} +textures/wellspring/bricks1_stamp3 +{ + qer_editorimage textures/wellspring/bricks1_stamp3 + + diffusemap textures/wellspring/bricks1_stamp3 + bumpmap textures/wellspring/bricks1_stamp3_local +} +textures/wellspring/ceilingtiles +{ + qer_editorimage textures/wellspring/ceilingtiles + + diffusemap textures/wellspring/ceilingtiles + bumpmap textures/wellspring/ceilingtiles_local +} +textures/wellspring/concrete1 +{ + qer_editorimage textures/wellspring/concrete1 + + diffusemap textures/wellspring/concrete1 + bumpmap textures/wellspring/concrete1_local + specularmap textures/wellspring/concrete1_s +} +textures/wellspring/concrete1a +{ + qer_editorimage textures/wellspring/concrete1a + + diffusemap textures/wellspring/concrete1a +} +textures/wellspring/concrete1b +{ + qer_editorimage textures/wellspring/concrete1b + + diffusemap textures/wellspring/concrete1b + bumpmap textures/wellspring/concrete1b_local +} +textures/wellspring/concrete1c +{ + qer_editorimage textures/wellspring/concrete1c + + diffusemap textures/wellspring/concrete1c +} +textures/wellspring/concrete1d +{ + qer_editorimage textures/wellspring/concrete1d + + diffusemap textures/wellspring/concrete1d +} +textures/wellspring/concrete1e +{ + qer_editorimage textures/wellspring/concrete1e + + diffusemap textures/wellspring/concrete1e + bumpmap textures/wellspring/concrete1e_local + specularmap textures/wellspring/concrete1e_s +} +textures/wellspring/countertop +{ + qer_editorimage textures/wellspring/countertop + + diffusemap textures/wellspring/countertop + bumpmap textures/wellspring/countertop_local + specularmap textures/wellspring/countertop_s +} +textures/wellspring/diplomas +{ + qer_editorimage textures/wellspring/diplomas + + diffusemap textures/wellspring/diplomas + bumpmap textures/wellspring/diplomas_local + specularmap textures/wellspring/diplomas_s +} +textures/wellspring/diplomas_pm +{ + qer_editorimage textures/wellspring/diplomas_pm + + diffusemap textures/wellspring/diplomas_pm +} +textures/wellspring/doormat +{ + qer_editorimage textures/wellspring/doormat + + diffusemap textures/wellspring/doormat + bumpmap textures/wellspring/doormat_local +} +textures/wellspring/fanroof_addon +{ + qer_editorimage textures/wellspring/fanroof_addon + + diffusemap textures/wellspring/fanroof_addon + bumpmap textures/wellspring/fanroof_addon_local + specularmap textures/wellspring/fanroof_addon_s +} +textures/wellspring/floor_glue1 +{ + qer_editorimage textures/wellspring/floor_glue1 + + diffusemap textures/wellspring/floor_glue1 + bumpmap textures/wellspring/floor_glue1_local +} +textures/wellspring/floor_glue1_stamp1 +{ + qer_editorimage textures/wellspring/floor_glue1_stamp1 + + diffusemap textures/wellspring/floor_glue1_stamp1 + bumpmap textures/wellspring/floor_glue1_stamp1_local +} +textures/wellspring/floor_glue1_stamp2 +{ + qer_editorimage textures/wellspring/floor_glue1_stamp2 + + diffusemap textures/wellspring/floor_glue1_stamp2 + bumpmap textures/wellspring/floor_glue1_stamp2_local +} +textures/wellspring/floor_glue1_stamp3 +{ + qer_editorimage textures/wellspring/floor_glue1_stamp3 + + diffusemap textures/wellspring/floor_glue1_stamp3 + bumpmap textures/wellspring/floor_glue1_stamp3_local +} +textures/wellspring/floor_glue1_stamp4 +{ + qer_editorimage textures/wellspring/floor_glue1_stamp4 + + diffusemap textures/wellspring/floor_glue1_stamp4 + bumpmap textures/wellspring/floor_glue1_stamp4_local +} +textures/wellspring/floor_tile1a +{ + qer_editorimage textures/wellspring/floor_tile1a + + diffusemap textures/wellspring/floor_tile1a +} +textures/wellspring/gratefloor1 +{ + qer_editorimage textures/wellspring/gratefloor1 + + diffusemap textures/wellspring/gratefloor1 + bumpmap textures/wellspring/gratefloor1_local + specularmap textures/wellspring/gratefloor1_s +} +textures/wellspring/gratefloor1b +{ + qer_editorimage textures/wellspring/gratefloor1b + + diffusemap textures/wellspring/gratefloor1b + specularmap textures/wellspring/gratefloor1b_s +} +textures/wellspring/gratefloor1c +{ + qer_editorimage textures/wellspring/gratefloor1c + + diffusemap textures/wellspring/gratefloor1c +} +textures/wellspring/licenseplates +{ + qer_editorimage textures/wellspring/licenseplates + + diffusemap textures/wellspring/licenseplates + bumpmap textures/wellspring/licenseplates_local + specularmap textures/wellspring/licenseplates_s +} +textures/wellspring/licenseplates_back +{ + qer_editorimage textures/wellspring/licenseplates_back + + diffusemap textures/wellspring/licenseplates_back + bumpmap textures/wellspring/licenseplates_back_local + specularmap textures/wellspring/licenseplates_back_s +} +textures/wellspring/light1 +{ + qer_editorimage textures/wellspring/light1 + + diffusemap textures/wellspring/light1 + bumpmap textures/wellspring/light1_local + specularmap textures/wellspring/light1_s +} +textures/wellspring/light1_add +{ + qer_editorimage textures/wellspring/light1_add + + diffusemap textures/wellspring/light1_add +} +textures/wellspring/map_dirty +{ + qer_editorimage textures/wellspring/map_dirty + + diffusemap textures/wellspring/map_dirty +} +textures/wellspring/metal_diner1 +{ + qer_editorimage textures/wellspring/metal_diner1 + + diffusemap textures/wellspring/metal_diner1 + bumpmap textures/wellspring/metal_diner1_local + specularmap textures/wellspring/metal_diner1_s +} +textures/wellspring/metal_diner3 +{ + qer_editorimage textures/wellspring/metal_diner3 + + diffusemap textures/wellspring/metal_diner3 + bumpmap textures/wellspring/metal_diner3_local + specularmap textures/wellspring/metal_diner3_s +} +textures/wellspring/metaltrim1a +{ + qer_editorimage textures/wellspring/metaltrim1a + + diffusemap textures/wellspring/metaltrim1a +} +textures/wellspring/metaltrim1b +{ + qer_editorimage textures/wellspring/metaltrim1b + + diffusemap textures/wellspring/metaltrim1b +} +textures/wellspring/metaltrim1b_side +{ + qer_editorimage textures/wellspring/metaltrim1b_side + + diffusemap textures/wellspring/metaltrim1b_side +} +textures/wellspring/metaltrimbig1 +{ + qer_editorimage textures/wellspring/metaltrimbig1 + + diffusemap textures/wellspring/metaltrimbig1 + bumpmap textures/wellspring/metaltrimbig1_local + specularmap textures/wellspring/metaltrimbig1_s +} +textures/wellspring/painting1 +{ + qer_editorimage textures/wellspring/painting1 + + diffusemap textures/wellspring/painting1 + bumpmap textures/wellspring/painting1_local + specularmap textures/wellspring/painting1_s +} +textures/wellspring/painting1_pm +{ + qer_editorimage textures/wellspring/painting1_pm + + diffusemap textures/wellspring/painting1_pm +} +textures/wellspring/painting2 +{ + qer_editorimage textures/wellspring/painting2 + + diffusemap textures/wellspring/painting2 + bumpmap textures/wellspring/painting2_local + specularmap textures/wellspring/painting2_s +} +textures/wellspring/painting2_pm +{ + qer_editorimage textures/wellspring/painting2_pm + + diffusemap textures/wellspring/painting2_pm +} +textures/wellspring/rope +{ + qer_editorimage textures/wellspring/rope + + diffusemap textures/wellspring/rope + bumpmap textures/wellspring/rope_local +} +textures/wellspring/rug1 +{ + qer_editorimage textures/wellspring/rug1 + + diffusemap textures/wellspring/rug1 + bumpmap textures/wellspring/rug1_local +} +textures/wellspring/rug2 +{ + qer_editorimage textures/wellspring/rug2 + + diffusemap textures/wellspring/rug2 + bumpmap textures/wellspring/rug2_local +} +textures/wellspring/sign1 +{ + qer_editorimage textures/wellspring/sign1 + + diffusemap textures/wellspring/sign1 + bumpmap textures/wellspring/sign1_local + specularmap textures/wellspring/sign1_s +} +textures/wellspring/streamers +{ + qer_editorimage textures/wellspring/streamers + + diffusemap textures/wellspring/streamers + bumpmap textures/wellspring/streamers_local + specularmap textures/wellspring/streamers_s +} +textures/wellspring/tiles01 +{ + qer_editorimage textures/wellspring/tiles01 + + diffusemap textures/wellspring/tiles01 + bumpmap textures/wellspring/tiles01_local + specularmap textures/wellspring/tiles01_s +} +textures/wellspring/trophy +{ + qer_editorimage textures/wellspring/trophy + + diffusemap textures/wellspring/trophy + bumpmap textures/wellspring/trophy_local +} +textures/wellspring/utilitypanel1 +{ + qer_editorimage textures/wellspring/utilitypanel1 + + diffusemap textures/wellspring/utilitypanel1 + bumpmap textures/wellspring/utilitypanel1_local + specularmap textures/wellspring/utilitypanel1_s +} +textures/wellspring/ws_baseboard1 +{ + qer_editorimage textures/wellspring/ws_baseboard1 + + diffusemap textures/wellspring/ws_baseboard1 + bumpmap textures/wellspring/ws_baseboard1_local + specularmap textures/wellspring/ws_baseboard1_s +} +textures/wellspring/ws_plankbumper +{ + qer_editorimage textures/wellspring/ws_plankbumper + + diffusemap textures/wellspring/ws_plankbumper + bumpmap textures/wellspring/ws_plankbumper_local + specularmap textures/wellspring/ws_plankbumper_s +} +textures/wellspring/ws_platewall_a +{ + qer_editorimage textures/wellspring/ws_platewall_a + + diffusemap textures/wellspring/ws_platewall_a + bumpmap textures/wellspring/ws_platewall_a_local + specularmap textures/wellspring/ws_platewall_a_s +} +textures/wellspring/wsspeedway +{ + qer_editorimage textures/wellspring/wsspeedway + + diffusemap textures/wellspring/wsspeedway + bumpmap textures/wellspring/wsspeedway_local + specularmap textures/wellspring/wsspeedway_s +}