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
+}