Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [ParseCmdLine] command-line args: "C:\Program Files (x86)\Spring\spring.exe "C:\Users\pc\AppData\Roaming\springlobby\script.txt""
- Using configuration source: "C:\Users\pc\Documents\My Games\Spring\springsettings.cfg"
- Using additional configuration source: "C:\Users\pc\Documents\Spring\springsettings.cfg"
- Available log sections: KeyBindings, AutohostInterface, GameServer, Net, CSMFGroundTextures, RoamMeshDrawer, BumpWater, DynWater, SkyBox, DecalsDrawerGL4, FarTextureHandler, Model, Piece, ModelDrawer, OBJParser, WorldObjectModelRenderer, Shader, Texture, Font, CregSerializer, ArchiveScanner, VFS, Sound, LuaSocket, GroundMoveType, Path, UnitScript
- Enabled log sections: Sound(Notice)
- Enable or disable log sections using the LogSections configuration key
- or the SPRING_LOG_SECTIONS environment variable (both comma separated).
- Use "none" to disable the default log sections.
- LogOutput initialized.
- Spring 98.0
- Build Date & Time: Oct 7 2014 21:51:24
- Build Environment: boost-105500, GNU libstdc++ version 20130531
- Compiler Version: gcc-4.8.1
- Operating System: Microsoft Windows
- Microsoft Windows 7 Business Edition, 64-bit (build 7600)
- Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz; 3950MB RAM, 7898MB pagefile
- Word Size: 32-bit (emulated)
- CPU Clock: win32::TimeGetTime
- Physical CPU Cores: 2
- Logical CPU Cores: 4
- [CMyMath::Init] CPU SSE mask: 127, flags:
- SSE 1.0: 1, SSE 2.0: 1
- SSE 3.0: 1, SSSE 3.0: 1
- SSE 4.1: 1, SSE 4.2: 1
- SSE 4.0A: 0, SSE 5.0A: 0
- using streflop SSE FP-math mode, CPU supports SSE instructions
- Supported Video modes on Display 1 x:0 y:0 1920x1080:
- 640x480, 800x600, 1024x768, 1280x720, 1280x768, 1280x1024, 1600x900, 1680x1050, 1920x1080
- SDL version: linked 2.0.2; compiled 2.0.2
- GL version: 3.2.9756 Compatibility Profile Context
- GL vendor: ATI Technologies Inc.
- GL renderer: ATI Mobility Radeon HD 5650
- GLSL version: 1.50
- GLEW version: 1.5.8
- Video RAM: total 740MB, available 964MB
- SwapInterval: 0
- GL info:
- haveARB: 1, haveGLSL: 1, ATI hacks: 1
- FBO support: 1, NPOT-texture support: 1, 24bit Z-buffer support: 0
- maximum texture size: 16384, compress MIP-map textures: 1
- maximum SmoothPointSize: 63, maximum vec4 varying/attributes: 16/16
- maximum drawbuffers: 8, maximum recommended indices/vertices: 16777215/2147483647
- number of UniformBufferBindings: 75 (64kB)
- VSync disabled
- [InitOpenGL] video mode set to 1920x1080:24bit @60Hz (windowed)
- [WatchDog::Install] disabled
- [ThreadPool::SetThreadCount][1] #wanted=2 #current=1 #max=2
- [ThreadPool::SetThreadCount][2] #threads=1
- Using read-write data directory: C:\Users\pc\Documents\My Games\Spring\
- Using read-only data directory: C:\Users\pc\Documents\Spring\
- Using read-only data directory: C:\Program Files (x86)\Spring\
- Scanning: C:\Program Files (x86)\Spring\maps
- Scanning: C:\Program Files (x86)\Spring\base
- Scanning: C:\Program Files (x86)\Spring\games
- Scanning: C:\Users\pc\Documents\My Games\Spring\maps
- Scanning: C:\Users\pc\Documents\My Games\Spring\games
- Scanning: C:\Users\pc\Documents\My Games\Spring\packages
- [f=0000000] Joysticks found: 0
- [f=0000000] [ThreadPool::SetThreadCount][1] #wanted=2 #current=2 #max=2
- [f=0000000] [ThreadPool::SetThreadCount][2] #threads=1
- [f=0000000] [Threading] Main thread CPU affinity mask set: 14
- [f=0000000] [Startup] Loading StartScript from: C:\Users\pc\AppData\Roaming\springlobby\script.txt
- [f=0000000] Connecting to: 92.222.18.22:8451
- [f=0000000] Connecting to 92.222.18.22:8451 using name Bulkovsky
- [f=0000000] [Sound] OpenAL info:
- [f=0000000] [Sound] Available Devices:
- [f=0000000] [Sound] Głośniki (Urządzenie zgodne ze standardem High Definition Audio)
- [f=0000000] [Sound] Device: OpenAL Soft
- [f=0000000] [Sound] Vendor: OpenAL Community
- [f=0000000] [Sound] Version: 1.1 ALSOFT 1.15.1
- [f=0000000] [Sound] Renderer: OpenAL Soft
- [f=0000000] [Sound] AL Extensions: AL_EXT_ALAW AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_LOKI_quadriphonic AL_SOFT_buffer_samples AL_SOFT_buffer_sub_data AL_SOFTX_deferred_updates AL_SOFT_direct_channels AL_SOFT_loop_points AL_SOFT_source_latency
- [f=0000000] [Sound] ALC Extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_loopback
- [f=0000000] [Sound] EFX Enabled: yes
- [f=0000000] [Sound] Max Sounds: 32
- [f=0000000] [InitOpenGL] video mode set to 1920x1080:24bit @60Hz (windowed)
- [f=0000000] Using map: DeltaSiegeDry
- [f=0000000] Using game: Balanced Annihilation V8.06
- [f=0000000] Using game archive: 9b310220b3f30e158ccce7ce3f94dbdc.sdp
- [f=0000000] Recording demo to: C:\Users\pc\Documents\My Games\Spring\demos\20141225_190750_DeltaSiegeDry_98.sdf
- [f=0000000] PreGame::GameDataReceived: 99 ms
- [f=0000000] [PreGame::UpdateClientNet] user number 24 (team 0, allyteam 0)
- [f=0000000] [LuaIntro] Searching for new Widgets
- [f=0000000] [LuaIntro] Scanning: LuaIntro/Addons/
- [f=0000000] [LuaIntro] Scanning: LuaIntro/Widgets/
- [f=0000000] [LuaIntro] Scanning: LuaIntro/SystemAddons/
- [f=0000000] [LuaIntro] Scanning: LuaIntro/SystemWidgets/
- [f=0000000] [LuaIntro] Scanning: LuaIntro/chili/
- [f=0000000] [LuaIntro] Found new widget "SpringLogo"
- [f=0000000] [LuaIntro] Found new widget "LoadTexture"
- [f=0000000] [LuaIntro] Found new widget "LoadProgress"
- [f=0000000] [LuaIntro] Found new widget "Main"
- [f=0000000] [LuaIntro] Found new widget "Music"
- [f=0000000] [LuaIntro] Loading widgets <>=vfs **=raw ()=unknown
- [f=0000000] [LuaIntro] Loading widget: Engine Taskbar Stuff <engine_taskbar_control.lua>
- [f=0000000] [LuaIntro] Loading widget: LoadProgress <loadprogress.lua>
- [f=0000000] [LuaIntro] Loading widget: Main <main.lua>
- [f=0000000] [LuaIntro] Loading widget: Music <music.lua>
- [f=0000000] [LuaIntro] Loading widget: LoadTexture <bg_texture.lua>
- [f=0000000] [LuaIntro] LuaIntro v1.0 (Lua 5.1)
- [f=0000000] Parsing Map Information
- [f=0000000] Loading SMF
- [f=0000000] Loading Map (80 MB)
- [f=0000000] Loading Radar Icons
- [f=0000000] Loading GameData Definitions
- [f=0000000] Loading all definitions: 1.398000
- [f=0000000] Game::LoadDefs (GameData): 1591 ms
- [f=0000000] Loading Sound Definitions
- [f=0000000] [Sound] parsed 28 sounds from gamedata/sounds.lua
- [f=0000000] Game::LoadDefs (Sound): 10 ms
- [f=0000000] Creating Smooth Height Mesh
- [f=0000000] SmoothHeightMesh::MakeSmoothMesh: 257 ms
- [f=0000000] Creating QuadField & CEGs
- [f=0000000] [CDamageArrayHandler] number of ArmorDefs: 11
- [f=0000000] [RegisterAssimpModelFormats] supported Assimp model formats: *.3ds;*.blend;*.dae;*.lwo;
- [f=0000000] Creating Unit Textures
- [f=0000000] Creating Sky
- [f=0000000] Loading Weapon Definitions
- [f=0000000] Loading Unit Definitions
- [f=0000000] Loading Feature Definitions
- [f=0000000] [IPathManager::GetInstance] using DEFAULT path-manager
- [f=0000000] Initializing Map Features
- [f=0000000] Error: [LoadFeaturesFromMap] unknown map feature type ""
- [f=0000000] Creating ShadowHandler & DecalHandler
- [f=0000000] FBO::maxSamples: 8
- [f=0000000] Creating GroundDrawer
- [f=0000000] Loading Map Tiles
- [f=0000000] Loading Square Textures
- [f=0000000] CSMFGroundTextures::ConvolveHeightMap: 13 ms
- [f=0000000] Switching to ROAM Mesh Rendering
- [f=0000000] [Shader] Warning: [GLSL-SO::Compile] shader-object name: GLSL/SMFFragProg.glsl, compile-log:
- Fragment shader failed to compile with the following errors:
- ERROR: 6:205: error(#71) Syntax error incorrect preprocessor directive
- WARNING: 6:205: warning(#64) Unexpected tokens following the preprocessor directive - expected a newline(#if )
- ERROR: 6:206: error(#143) Undeclared identifier MAX_DYNAMIC_MAP_LIGHTS
- ERROR: 6:207: error(#143) Undeclared identifier BASE_DYNAMIC_MAP_LIGHT
- ERROR: 6:207: error(#166) Integer expression required []
- ERROR: 6:208: error(#166) Integer expression required []
- ERROR: 6:210: error(#166) Integer expression required []
- ERROR: 6:226: error(#166) Integer expression required []
- ERROR: 6:227: error(#166) Integer expression required []
- ERROR: 6:236: error(#166) Integer expression required []
- ERROR: 6:237: error(#166) Integer expression required []
- ERROR: 6:238: error(#166) Integer expression required []
- ERROR: 6:378: error(#71) Syntax error incorrect preprocessor directive
- WARNING: 6:378: warning(#64) Unexpected tokens following the preprocessor directive - expected a newline(#if )
- ERROR: error(#273) 12 compilation errors. No code generated
- [f=0000000] [Shader] Warning:
- // SHADER VERSION
- #version 120
- // SHADER FLAGS
- #define SMF_TEXSQUARE_SIZE 1024.000000
- #define SMF_INTENSITY_MULT 0.823529
- // SHADER SOURCE
- #line 1
- #ifdef NOSPRING
- #define SMF_INTENSITY_MULT (210.0 / 255.0)
- #define SMF_TEXSQUARE_SIZE 1024.0
- #define MAX_DYNAMIC_MAP_LIGHTS 4
- #define BASE_DYNAMIC_MAP_LIGHT 0
- #define GBUFFER_NORMTEX_IDX 0
- #define GBUFFER_DIFFTEX_IDX 1
- #define GBUFFER_SPECTEX_IDX 2
- #define GBUFFER_EMITTEX_IDX 3
- #define GBUFFER_MISCTEX_IDX 4
- #endif
- /***********************************************************************/
- // Consts
- const float SMF_SHALLOW_WATER_DEPTH = 10.0;
- const float SMF_SHALLOW_WATER_DEPTH_INV = 1.0 / SMF_SHALLOW_WATER_DEPTH;
- const float SMF_DETAILTEX_RES = 0.02;
- /***********************************************************************/
- // Uniforms + Varyings
- uniform sampler2D diffuseTex;
- uniform sampler2D normalsTex;
- uniform sampler2D detailTex;
- uniform vec2 normalTexGen; // either 1.0/mapSize (when NPOT are supported) or 1.0/mapSizePO2
- uniform vec2 specularTexGen; // 1.0/mapSize
- uniform vec3 groundAmbientColor;
- uniform vec3 groundDiffuseColor;
- uniform vec3 groundSpecularColor;
- uniform float groundShadowDensity;
- uniform vec2 mapHeights; // min & max height on the map
- uniform vec4 lightDir;
- uniform vec3 cameraPos;
- varying vec3 halfDir;
- varying float fogFactor;
- varying vec4 vertexWorldPos;
- varying vec2 diffuseTexCoords;
- #ifdef HAVE_INFOTEX
- uniform sampler2D infoTex;
- uniform float infoTexIntensityMul;
- uniform vec2 infoTexGen; // 1.0/(pwr2map{x,z} * SQUARE_SIZE)
- #endif
- #ifndef SMF_ARB_LIGHTING
- uniform sampler2D specularTex;
- #endif
- #ifdef HAVE_SHADOWS
- uniform sampler2DShadow shadowTex;
- uniform mat4 shadowMat;
- uniform vec4 shadowParams;
- #endif
- #ifdef SMF_WATER_ABSORPTION
- uniform vec3 waterMinColor;
- uniform vec3 waterBaseColor;
- uniform vec3 waterAbsorbColor;
- #endif
- #ifdef SMF_DETAIL_TEXTURE_SPLATTING
- uniform sampler2D splatDetailTex;
- uniform sampler2D splatDistrTex;
- uniform vec4 splatTexMults; // per-channel splat intensity multipliers
- uniform vec4 splatTexScales; // defaults to SMF_DETAILTEX_RES per channel
- #endif
- #ifdef SMF_SKY_REFLECTIONS
- uniform samplerCube skyReflectTex;
- uniform sampler2D skyReflectModTex;
- #endif
- #ifdef SMF_DETAIL_NORMALS
- uniform sampler2D detailNormalTex;
- #endif
- #ifdef SMF_LIGHT_EMISSION
- uniform sampler2D lightEmissionTex;
- #endif
- #ifdef SMF_PARALLAX_MAPPING
- uniform sampler2D parallaxHeightTex;
- #endif
- /***********************************************************************/
- // Helper functions
- #ifdef SMF_PARALLAX_MAPPING
- vec2 GetParallaxUVOffset(vec2 uv, vec3 dir) {
- vec4 texel = texture2D(parallaxHeightTex, uv);
- // RG: height in [ 0.0, 1.0] (256^2 strata)
- // B: scale in [ 0.0, 1.0] (256 strata), eg. 0.04 (~10.0/256.0)
- // A: bias in [-0.5, 0.5] (256 strata), eg. -0.02 (~75.0/256.0)
- //
- const float RMUL = 255.0 * 256.0;
- const float GMUL = 256.0;
- const float HDIV = 65536.0;
- float heightValue = dot(texel.rg, vec2(RMUL, GMUL)) / HDIV;
- float heightScale = texel.b;
- float heightBias = texel.a - 0.5;
- float heightOffset = heightValue * heightScale + heightBias;
- return ((dir.xy / dir.z) * heightOffset);
- }
- #endif
- vec3 GetFragmentNormal(vec2 uv) {
- vec3 normal;
- #ifdef SSMF_UNCOMPRESSED_NORMALS
- normal = normalize(texture2D(normalsTex, uv).xyz);
- #else
- normal.xz = texture2D(normalsTex, uv).ra;
- normal.y = sqrt(1.0 - dot(normal.xz, normal.xz));
- #endif
- return normal;
- }
- vec4 GetDetailTextureColor(vec2 uv) {
- #ifndef SMF_DETAIL_TEXTURE_SPLATTING
- vec2 detailTexCoord = vertexWorldPos.xz * vec2(SMF_DETAILTEX_RES);
- vec4 detailCol = (texture2D(detailTex, detailTexCoord) * 2.0) - 1.0;
- #else
- vec4 splatTexCoord0 = vertexWorldPos.xzxz * splatTexScales.rrgg;
- vec4 splatTexCoord1 = vertexWorldPos.xzxz * splatTexScales.bbaa;
- vec4 splatDetails;
- splatDetails.r = texture2D(splatDetailTex, splatTexCoord0.st).r;
- splatDetails.g = texture2D(splatDetailTex, splatTexCoord0.pq).g;
- splatDetails.b = texture2D(splatDetailTex, splatTexCoord1.st).b;
- splatDetails.a = texture2D(splatDetailTex, splatTexCoord1.pq).a;
- splatDetails = (splatDetails * 2.0) - 1.0;
- vec4 splatCofac = texture2D(splatDistrTex, uv) * splatTexMults;
- vec4 detailCol = vec4(dot(splatDetails, splatCofac));
- #endif
- return detailCol;
- }
- vec4 GetShadeInt(float groundLightInt, float groundShadowCoeff, float groundDiffuseAlpha) {
- vec4 groundShadeInt = vec4(0.0, 0.0, 0.0, 1.0);
- groundShadeInt.rgb = groundAmbientColor + groundDiffuseColor * (groundLightInt * groundShadowCoeff);
- groundShadeInt.rgb *= vec3(SMF_INTENSITY_MULT);
- #ifdef SMF_VOID_WATER
- // cut out all underwater fragments indiscriminately
- groundShadeInt.a = float(vertexWorldPos.y >= 0.0);
- #endif
- #ifdef SMF_VOID_GROUND
- // assume the map(per)'s diffuse texture provides sensible alphas
- // note that voidground overrides voidwater if *both* are enabled
- // (limiting it to just above-water fragments would be arbitrary)
- groundShadeInt.a = groundDiffuseAlpha;
- #endif
- #ifdef SMF_WATER_ABSORPTION
- // use alpha of groundShadeInt cause:
- // allow voidground maps to create holes in the seabed
- // (SMF_WATER_ABSORPTION == 1 implies voidwater is not
- // enabled but says nothing about the voidground state)
- vec4 waterShadeInt = vec4(waterBaseColor.rgb, groundShadeInt.a);
- if (mapHeights.x <= 0.0) {
- float waterShadeAlpha = abs(vertexWorldPos.y) * SMF_SHALLOW_WATER_DEPTH_INV;
- float waterShadeDecay = 0.2 + (waterShadeAlpha * 0.1);
- float vertexStepHeight = min(1023.0, -vertexWorldPos.y);
- float waterLightInt = min(groundLightInt * 2.0 + 0.4, 1.0);
- // vertex below shallow water depth --> alpha=1
- // vertex above shallow water depth --> alpha=waterShadeAlpha
- waterShadeAlpha = min(1.0, waterShadeAlpha + float(vertexWorldPos.y <= -SMF_SHALLOW_WATER_DEPTH));
- waterShadeInt.rgb -= (waterAbsorbColor.rgb * vertexStepHeight);
- waterShadeInt.rgb = max(waterMinColor.rgb, waterShadeInt.rgb);
- waterShadeInt.rgb *= vec3(SMF_INTENSITY_MULT * waterLightInt);
- // make shadowed areas darker over deeper water
- waterShadeInt.rgb *= (1.0 - waterShadeDecay * (1.0 - groundShadowCoeff));
- // if depth is greater than _SHALLOW_ depth, select waterShadeInt
- // otherwise interpolate between groundShadeInt and waterShadeInt
- // (both are already cosine-weighted)
- waterShadeInt.rgb = mix(groundShadeInt.rgb, waterShadeInt.rgb, waterShadeAlpha);
- }
- return mix(groundShadeInt, waterShadeInt, float(vertexWorldPos.y < 0.0));
- #else
- return groundShadeInt;
- #endif
- }
- vec3 DynamicLighting(vec3 normal, vec3 diffuseCol, vec3 specularCol, float specularExp) {
- vec3 light = vec3(0.0);
- #if !defined(DEFERRED_MODE) && (MAX_DYNAMIC_MAP_LIGHTS > 0)
- for (int i = 0; i < MAX_DYNAMIC_MAP_LIGHTS; i++) {
- vec3 lightVec = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].position.xyz - vertexWorldPos.xyz;
- vec3 halfVec = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].halfVector.xyz;
- float lightRadius = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].constantAttenuation;
- float lightDistance = length(lightVec);
- float lightScale = float(lightDistance <= lightRadius);
- float lightCosAngDiff = clamp(dot(normal, lightVec / lightDistance), 0.0, 1.0);
- float lightCosAngSpec = clamp(dot(normal, normalize(halfVec)), 0.0, 1.0);
- #ifdef OGL_SPEC_ATTENUATION
- float lightAttenuation =
- (gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].constantAttenuation) +
- (gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].linearAttenuation * lightDistance) +
- (gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].quadraticAttenuation * lightDistance * lightDistance);
- lightAttenuation = 1.0 / max(lightAttenuation, 1.0);
- #else
- float lightAttenuation = 1.0 - min(1.0, ((lightDistance * lightDistance) / (lightRadius * lightRadius)));
- #endif
- float vectorDot = -dot((lightVec / lightDistance), gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].spotDirection);
- float cutoffDot = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].spotCosCutoff;
- float lightSpecularPow = 0.0;
- #ifndef SMF_ARB_LIGHTING
- lightSpecularPow = max(0.0, pow(lightCosAngSpec, specularExp));
- #endif
- lightScale *= float(vectorDot >= cutoffDot);
- light += (lightScale * gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].ambient.rgb);
- light += (lightScale * lightAttenuation * (diffuseCol.rgb * gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].diffuse.rgb * lightCosAngDiff));
- light += (lightScale * lightAttenuation * (specularCol.rgb * gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].specular.rgb * lightSpecularPow));
- }
- #endif
- return light;
- }
- /***********************************************************************/
- // main()
- void main() {
- vec2 diffTexCoords = diffuseTexCoords;
- vec2 specTexCoords = vertexWorldPos.xz * specularTexGen;
- vec2 normTexCoords = vertexWorldPos.xz * normalTexGen;
- // not calculated in the vertex shader to save varying components (OpenGL2.0 allows just 32)
- vec3 cameraDir = vertexWorldPos.xyz - cameraPos;
- vec3 normal = GetFragmentNormal(normTexCoords);
- #if defined(SMF_DETAIL_NORMALS) || defined(SMF_PARALLAX_MAPPING)
- // detail-normals are (assumed to be) defined within STN space
- // (for a regular vertex normal equal to <0, 1, 0>, the S- and
- // T-tangents are aligned with Spring's +x and +z (!) axes)
- vec3 tTangent = normalize(cross(normal, vec3(-1.0, 0.0, 0.0)));
- vec3 sTangent = cross(normal, tTangent);
- mat3 stnMatrix = mat3(sTangent, tTangent, normal);
- #endif
- #ifdef SMF_PARALLAX_MAPPING
- {
- // use specular-texture coordinates to index parallaxHeightTex
- // (ie. specularTex and parallaxHeightTex must have equal size)
- // cameraDir does not need to be normalized, x/z and y/z ratios
- // do not change
- vec2 uvOffset = GetParallaxUVOffset(specTexCoords, transpose(stnMatrix) * cameraDir);
- // scale the parallax offset since it is in spectex-space
- diffTexCoords += (uvOffset / (SMF_TEXSQUARE_SIZE * specularTexGen));
- normTexCoords += (uvOffset * (normalTexGen / specularTexGen));
- specTexCoords += (uvOffset);
- normal = GetFragmentNormal(normTexCoords);
- }
- #endif
- #ifdef SMF_DETAIL_NORMALS
- {
- vec4 dtSample = texture2D(detailNormalTex, normTexCoords);
- vec3 dtNormal = (dtSample.xyz * 2.0) - 1.0;
- // convert dtNormal from TS to WS before mixing
- normal = normalize(mix(normal, stnMatrix * dtNormal, dtSample.a));
- }
- #endif
- #ifndef DEFERRED_MODE
- float cosAngleDiffuse = clamp(dot(lightDir.xyz, normal), 0.0, 1.0);
- float cosAngleSpecular = clamp(dot(normalize(halfDir), normal), 0.0, 1.0);
- #endif
- vec4 diffuseCol = texture2D(diffuseTex, diffTexCoords);
- vec4 detailCol = GetDetailTextureColor(specTexCoords);
- // non-zero default specularity on non-SSMF maps (for DL)
- vec4 specularCol = vec4(0.5, 0.5, 0.5, 1.0);
- vec4 emissionCol = vec4(0.0, 0.0, 0.0, 0.0);
- #if !defined(DEFERRED_MODE) && defined(SMF_SKY_REFLECTIONS)
- {
- // cameraDir does not need to be normalized for reflect()
- vec3 reflectDir = reflect(cameraDir, normal);
- vec3 reflectCol = textureCube(skyReflectTex, gl_NormalMatrix * reflectDir).rgb;
- vec3 reflectMod = texture2D(skyReflectModTex, specTexCoords).rgb;
- diffuseCol.rgb = mix(diffuseCol.rgb, reflectCol, reflectMod);
- }
- #endif
- #if !defined(DEFERRED_MODE) && defined(HAVE_INFOTEX)
- {
- // increase contrast and brightness for the overlays
- // TODO: make the multiplier configurable by users?
- vec2 infoTexCoords = vertexWorldPos.xz * infoTexGen;
- diffuseCol.rgb += (texture2D(infoTex, infoTexCoords).rgb * infoTexIntensityMul);
- diffuseCol.rgb -= (vec3(0.5, 0.5, 0.5) * float(infoTexIntensityMul == 1.0));
- }
- #endif
- float shadowCoeff = 1.0;
- #if !defined(DEFERRED_MODE) && defined(HAVE_SHADOWS)
- {
- vec2 p17 = shadowParams.zz;
- vec2 p18 = shadowParams.ww;
- vec4 vertexShadowPos = shadowMat * vertexWorldPos;
- vertexShadowPos.st *= (inversesqrt(abs(vertexShadowPos.st) + p17) + p18);
- vertexShadowPos.st += shadowParams.xy;
- // same as ARB shader: shadowCoeff = 1 - (1 - shadowCoeff) * groundShadowDensity
- shadowCoeff = shadow2DProj(shadowTex, vertexShadowPos).r;
- shadowCoeff = mix(1.0, shadowCoeff, groundShadowDensity);
- }
- #endif
- #ifndef DEFERRED_MODE
- {
- // GroundMaterialAmbientDiffuseColor * LightAmbientDiffuseColor
- vec4 shadeInt = GetShadeInt(cosAngleDiffuse, shadowCoeff, diffuseCol.a);
- gl_FragColor.rgb = (diffuseCol.rgb + detailCol.rgb) * shadeInt.rgb;
- gl_FragColor.a = shadeInt.a;
- }
- #endif
- #ifdef SMF_LIGHT_EMISSION
- {
- // apply self-illumination aka. glow, not masked by shadows
- emissionCol = texture2D(lightEmissionTex, specTexCoords);
- #ifndef DEFERRED_MODE
- gl_FragColor.rgb = gl_FragColor.rgb * (1.0 - emissionCol.a) + emissionCol.rgb;
- #endif
- }
- #endif
- #ifndef SMF_ARB_LIGHTING
- specularCol = texture2D(specularTex, specTexCoords);
- #ifndef DEFERRED_MODE
- // sun specular lighting contribution
- float specularExp = specularCol.a * 16.0;
- float specularPow = pow(cosAngleSpecular, specularExp);
- vec3 specularInt = specularCol.rgb * specularPow;
- specularInt *= shadowCoeff;
- // no need to multiply by groundSpecularColor anymore
- gl_FragColor.rgb += specularInt;
- #if (MAX_DYNAMIC_MAP_LIGHTS > 0)
- gl_FragColor.rgb += DynamicLighting(normal, diffuseCol.rgb, specularCol.rgb, specularExp);
- #endif
- #endif
- #endif
- #ifdef DEFERRED_MODE
- gl_FragData[GBUFFER_NORMTEX_IDX] = vec4((normal + vec3(1.0, 1.0, 1.0)) * 0.5, 1.0);
- gl_FragData[GBUFFER_DIFFTEX_IDX] = diffuseCol + detailCol;
- gl_FragData[GBUFFER_SPECTEX_IDX] = specularCol;
- gl_FragData[GBUFFER_EMITTEX_IDX] = emissionCol;
- gl_FragData[GBUFFER_MISCTEX_IDX] = vec4(0.0);
- // linearly transform the eye-space depths, might be more useful?
- // gl_FragDepth = gl_FragCoord.z / gl_FragCoord.w;
- #else
- gl_FragColor.rgb = mix(gl_Fog.color.rgb, gl_FragColor.rgb, fogFactor);
- #endif
- }
- [f=0000000] [Shader] Warning: [GLSL-SO::Compile] shader-object name: GLSL/SMFFragProg.glsl, compile-log:
- Fragment shader failed to compile with the following errors:
- ERROR: 6:205: error(#71) Syntax error incorrect preprocessor directive
- WARNING: 6:205: warning(#64) Unexpected tokens following the preprocessor directive - expected a newline(#if )
- ERROR: 6:206: error(#143) Undeclared identifier MAX_DYNAMIC_MAP_LIGHTS
- ERROR: 6:207: error(#143) Undeclared identifier BASE_DYNAMIC_MAP_LIGHT
- ERROR: 6:207: error(#166) Integer expression required []
- ERROR: 6:208: error(#166) Integer expression required []
- ERROR: 6:210: error(#166) Integer expression required []
- ERROR: 6:226: error(#166) Integer expression required []
- ERROR: 6:227: error(#166) Integer expression required []
- ERROR: 6:236: error(#166) Integer expression required []
- ERROR: 6:237: error(#166) Integer expression required []
- ERROR: 6:238: error(#166) Integer expression required []
- ERROR: 6:378: error(#71) Syntax error incorrect preprocessor directive
- WARNING: 6:378: warning(#64) Unexpected tokens following the preprocessor directive - expected a newline(#if )
- ERROR: error(#273) 12 compilation errors. No code generated
- [f=0000000] [Shader] Warning:
- // SHADER VERSION
- #version 120
- // SHADER FLAGS
- #define SMF_TEXSQUARE_SIZE 1024.000000
- #define SMF_INTENSITY_MULT 0.823529
- // SHADER SOURCE
- #line 1
- #ifdef NOSPRING
- #define SMF_INTENSITY_MULT (210.0 / 255.0)
- #define SMF_TEXSQUARE_SIZE 1024.0
- #define MAX_DYNAMIC_MAP_LIGHTS 4
- #define BASE_DYNAMIC_MAP_LIGHT 0
- #define GBUFFER_NORMTEX_IDX 0
- #define GBUFFER_DIFFTEX_IDX 1
- #define GBUFFER_SPECTEX_IDX 2
- #define GBUFFER_EMITTEX_IDX 3
- #define GBUFFER_MISCTEX_IDX 4
- #endif
- /***********************************************************************/
- // Consts
- const float SMF_SHALLOW_WATER_DEPTH = 10.0;
- const float SMF_SHALLOW_WATER_DEPTH_INV = 1.0 / SMF_SHALLOW_WATER_DEPTH;
- const float SMF_DETAILTEX_RES = 0.02;
- /***********************************************************************/
- // Uniforms + Varyings
- uniform sampler2D diffuseTex;
- uniform sampler2D normalsTex;
- uniform sampler2D detailTex;
- uniform vec2 normalTexGen; // either 1.0/mapSize (when NPOT are supported) or 1.0/mapSizePO2
- uniform vec2 specularTexGen; // 1.0/mapSize
- uniform vec3 groundAmbientColor;
- uniform vec3 groundDiffuseColor;
- uniform vec3 groundSpecularColor;
- uniform float groundShadowDensity;
- uniform vec2 mapHeights; // min & max height on the map
- uniform vec4 lightDir;
- uniform vec3 cameraPos;
- varying vec3 halfDir;
- varying float fogFactor;
- varying vec4 vertexWorldPos;
- varying vec2 diffuseTexCoords;
- #ifdef HAVE_INFOTEX
- uniform sampler2D infoTex;
- uniform float infoTexIntensityMul;
- uniform vec2 infoTexGen; // 1.0/(pwr2map{x,z} * SQUARE_SIZE)
- #endif
- #ifndef SMF_ARB_LIGHTING
- uniform sampler2D specularTex;
- #endif
- #ifdef HAVE_SHADOWS
- uniform sampler2DShadow shadowTex;
- uniform mat4 shadowMat;
- uniform vec4 shadowParams;
- #endif
- #ifdef SMF_WATER_ABSORPTION
- uniform vec3 waterMinColor;
- uniform vec3 waterBaseColor;
- uniform vec3 waterAbsorbColor;
- #endif
- #ifdef SMF_DETAIL_TEXTURE_SPLATTING
- uniform sampler2D splatDetailTex;
- uniform sampler2D splatDistrTex;
- uniform vec4 splatTexMults; // per-channel splat intensity multipliers
- uniform vec4 splatTexScales; // defaults to SMF_DETAILTEX_RES per channel
- #endif
- #ifdef SMF_SKY_REFLECTIONS
- uniform samplerCube skyReflectTex;
- uniform sampler2D skyReflectModTex;
- #endif
- #ifdef SMF_DETAIL_NORMALS
- uniform sampler2D detailNormalTex;
- #endif
- #ifdef SMF_LIGHT_EMISSION
- uniform sampler2D lightEmissionTex;
- #endif
- #ifdef SMF_PARALLAX_MAPPING
- uniform sampler2D parallaxHeightTex;
- #endif
- /***********************************************************************/
- // Helper functions
- #ifdef SMF_PARALLAX_MAPPING
- vec2 GetParallaxUVOffset(vec2 uv, vec3 dir) {
- vec4 texel = texture2D(parallaxHeightTex, uv);
- // RG: height in [ 0.0, 1.0] (256^2 strata)
- // B: scale in [ 0.0, 1.0] (256 strata), eg. 0.04 (~10.0/256.0)
- // A: bias in [-0.5, 0.5] (256 strata), eg. -0.02 (~75.0/256.0)
- //
- const float RMUL = 255.0 * 256.0;
- const float GMUL = 256.0;
- const float HDIV = 65536.0;
- float heightValue = dot(texel.rg, vec2(RMUL, GMUL)) / HDIV;
- float heightScale = texel.b;
- float heightBias = texel.a - 0.5;
- float heightOffset = heightValue * heightScale + heightBias;
- return ((dir.xy / dir.z) * heightOffset);
- }
- #endif
- vec3 GetFragmentNormal(vec2 uv) {
- vec3 normal;
- #ifdef SSMF_UNCOMPRESSED_NORMALS
- normal = normalize(texture2D(normalsTex, uv).xyz);
- #else
- normal.xz = texture2D(normalsTex, uv).ra;
- normal.y = sqrt(1.0 - dot(normal.xz, normal.xz));
- #endif
- return normal;
- }
- vec4 GetDetailTextureColor(vec2 uv) {
- #ifndef SMF_DETAIL_TEXTURE_SPLATTING
- vec2 detailTexCoord = vertexWorldPos.xz * vec2(SMF_DETAILTEX_RES);
- vec4 detailCol = (texture2D(detailTex, detailTexCoord) * 2.0) - 1.0;
- #else
- vec4 splatTexCoord0 = vertexWorldPos.xzxz * splatTexScales.rrgg;
- vec4 splatTexCoord1 = vertexWorldPos.xzxz * splatTexScales.bbaa;
- vec4 splatDetails;
- splatDetails.r = texture2D(splatDetailTex, splatTexCoord0.st).r;
- splatDetails.g = texture2D(splatDetailTex, splatTexCoord0.pq).g;
- splatDetails.b = texture2D(splatDetailTex, splatTexCoord1.st).b;
- splatDetails.a = texture2D(splatDetailTex, splatTexCoord1.pq).a;
- splatDetails = (splatDetails * 2.0) - 1.0;
- vec4 splatCofac = texture2D(splatDistrTex, uv) * splatTexMults;
- vec4 detailCol = vec4(dot(splatDetails, splatCofac));
- #endif
- return detailCol;
- }
- vec4 GetShadeInt(float groundLightInt, float groundShadowCoeff, float groundDiffuseAlpha) {
- vec4 groundShadeInt = vec4(0.0, 0.0, 0.0, 1.0);
- groundShadeInt.rgb = groundAmbientColor + groundDiffuseColor * (groundLightInt * groundShadowCoeff);
- groundShadeInt.rgb *= vec3(SMF_INTENSITY_MULT);
- #ifdef SMF_VOID_WATER
- // cut out all underwater fragments indiscriminately
- groundShadeInt.a = float(vertexWorldPos.y >= 0.0);
- #endif
- #ifdef SMF_VOID_GROUND
- // assume the map(per)'s diffuse texture provides sensible alphas
- // note that voidground overrides voidwater if *both* are enabled
- // (limiting it to just above-water fragments would be arbitrary)
- groundShadeInt.a = groundDiffuseAlpha;
- #endif
- #ifdef SMF_WATER_ABSORPTION
- // use alpha of groundShadeInt cause:
- // allow voidground maps to create holes in the seabed
- // (SMF_WATER_ABSORPTION == 1 implies voidwater is not
- // enabled but says nothing about the voidground state)
- vec4 waterShadeInt = vec4(waterBaseColor.rgb, groundShadeInt.a);
- if (mapHeights.x <= 0.0) {
- float waterShadeAlpha = abs(vertexWorldPos.y) * SMF_SHALLOW_WATER_DEPTH_INV;
- float waterShadeDecay = 0.2 + (waterShadeAlpha * 0.1);
- float vertexStepHeight = min(1023.0, -vertexWorldPos.y);
- float waterLightInt = min(groundLightInt * 2.0 + 0.4, 1.0);
- // vertex below shallow water depth --> alpha=1
- // vertex above shallow water depth --> alpha=waterShadeAlpha
- waterShadeAlpha = min(1.0, waterShadeAlpha + float(vertexWorldPos.y <= -SMF_SHALLOW_WATER_DEPTH));
- waterShadeInt.rgb -= (waterAbsorbColor.rgb * vertexStepHeight);
- waterShadeInt.rgb = max(waterMinColor.rgb, waterShadeInt.rgb);
- waterShadeInt.rgb *= vec3(SMF_INTENSITY_MULT * waterLightInt);
- // make shadowed areas darker over deeper water
- waterShadeInt.rgb *= (1.0 - waterShadeDecay * (1.0 - groundShadowCoeff));
- // if depth is greater than _SHALLOW_ depth, select waterShadeInt
- // otherwise interpolate between groundShadeInt and waterShadeInt
- // (both are already cosine-weighted)
- waterShadeInt.rgb = mix(groundShadeInt.rgb, waterShadeInt.rgb, waterShadeAlpha);
- }
- return mix(groundShadeInt, waterShadeInt, float(vertexWorldPos.y < 0.0));
- #else
- return groundShadeInt;
- #endif
- }
- vec3 DynamicLighting(vec3 normal, vec3 diffuseCol, vec3 specularCol, float specularExp) {
- vec3 light = vec3(0.0);
- #if !defined(DEFERRED_MODE) && (MAX_DYNAMIC_MAP_LIGHTS > 0)
- for (int i = 0; i < MAX_DYNAMIC_MAP_LIGHTS; i++) {
- vec3 lightVec = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].position.xyz - vertexWorldPos.xyz;
- vec3 halfVec = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].halfVector.xyz;
- float lightRadius = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].constantAttenuation;
- float lightDistance = length(lightVec);
- float lightScale = float(lightDistance <= lightRadius);
- float lightCosAngDiff = clamp(dot(normal, lightVec / lightDistance), 0.0, 1.0);
- float lightCosAngSpec = clamp(dot(normal, normalize(halfVec)), 0.0, 1.0);
- #ifdef OGL_SPEC_ATTENUATION
- float lightAttenuation =
- (gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].constantAttenuation) +
- (gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].linearAttenuation * lightDistance) +
- (gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].quadraticAttenuation * lightDistance * lightDistance);
- lightAttenuation = 1.0 / max(lightAttenuation, 1.0);
- #else
- float lightAttenuation = 1.0 - min(1.0, ((lightDistance * lightDistance) / (lightRadius * lightRadius)));
- #endif
- float vectorDot = -dot((lightVec / lightDistance), gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].spotDirection);
- float cutoffDot = gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].spotCosCutoff;
- float lightSpecularPow = 0.0;
- #ifndef SMF_ARB_LIGHTING
- lightSpecularPow = max(0.0, pow(lightCosAngSpec, specularExp));
- #endif
- lightScale *= float(vectorDot >= cutoffDot);
- light += (lightScale * gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].ambient.rgb);
- light += (lightScale * lightAttenuation * (diffuseCol.rgb * gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].diffuse.rgb * lightCosAngDiff));
- light += (lightScale * lightAttenuation * (specularCol.rgb * gl_LightSource[BASE_DYNAMIC_MAP_LIGHT + i].specular.rgb * lightSpecularPow));
- }
- #endif
- return light;
- }
- /***********************************************************************/
- // main()
- void main() {
- vec2 diffTexCoords = diffuseTexCoords;
- vec2 specTexCoords = vertexWorldPos.xz * specularTexGen;
- vec2 normTexCoords = vertexWorldPos.xz * normalTexGen;
- // not calculated in the vertex shader to save varying components (OpenGL2.0 allows just 32)
- vec3 cameraDir = vertexWorldPos.xyz - cameraPos;
- vec3 normal = GetFragmentNormal(normTexCoords);
- #if defined(SMF_DETAIL_NORMALS) || defined(SMF_PARALLAX_MAPPING)
- // detail-normals are (assumed to be) defined within STN space
- // (for a regular vertex normal equal to <0, 1, 0>, the S- and
- // T-tangents are aligned with Spring's +x and +z (!) axes)
- vec3 tTangent = normalize(cross(normal, vec3(-1.0, 0.0, 0.0)));
- vec3 sTangent = cross(normal, tTangent);
- mat3 stnMatrix = mat3(sTangent, tTangent, normal);
- #endif
- #ifdef SMF_PARALLAX_MAPPING
- {
- // use specular-texture coordinates to index parallaxHeightTex
- // (ie. specularTex and parallaxHeightTex must have equal size)
- // cameraDir does not need to be normalized, x/z and y/z ratios
- // do not change
- vec2 uvOffset = GetParallaxUVOffset(specTexCoords, transpose(stnMatrix) * cameraDir);
- // scale the parallax offset since it is in spectex-space
- diffTexCoords += (uvOffset / (SMF_TEXSQUARE_SIZE * specularTexGen));
- normTexCoords += (uvOffset * (normalTexGen / specularTexGen));
- specTexCoords += (uvOffset);
- normal = GetFragmentNormal(normTexCoords);
- }
- #endif
- #ifdef SMF_DETAIL_NORMALS
- {
- vec4 dtSample = texture2D(detailNormalTex, normTexCoords);
- vec3 dtNormal = (dtSample.xyz * 2.0) - 1.0;
- // convert dtNormal from TS to WS before mixing
- normal = normalize(mix(normal, stnMatrix * dtNormal, dtSample.a));
- }
- #endif
- #ifndef DEFERRED_MODE
- float cosAngleDiffuse = clamp(dot(lightDir.xyz, normal), 0.0, 1.0);
- float cosAngleSpecular = clamp(dot(normalize(halfDir), normal), 0.0, 1.0);
- #endif
- vec4 diffuseCol = texture2D(diffuseTex, diffTexCoords);
- vec4 detailCol = GetDetailTextureColor(specTexCoords);
- // non-zero default specularity on non-SSMF maps (for DL)
- vec4 specularCol = vec4(0.5, 0.5, 0.5, 1.0);
- vec4 emissionCol = vec4(0.0, 0.0, 0.0, 0.0);
- #if !defined(DEFERRED_MODE) && defined(SMF_SKY_REFLECTIONS)
- {
- // cameraDir does not need to be normalized for reflect()
- vec3 reflectDir = reflect(cameraDir, normal);
- vec3 reflectCol = textureCube(skyReflectTex, gl_NormalMatrix * reflectDir).rgb;
- vec3 reflectMod = texture2D(skyReflectModTex, specTexCoords).rgb;
- diffuseCol.rgb = mix(diffuseCol.rgb, reflectCol, reflectMod);
- }
- #endif
- #if !defined(DEFERRED_MODE) && defined(HAVE_INFOTEX)
- {
- // increase contrast and brightness for the overlays
- // TODO: make the multiplier configurable by users?
- vec2 infoTexCoords = vertexWorldPos.xz * infoTexGen;
- diffuseCol.rgb += (texture2D(infoTex, infoTexCoords).rgb * infoTexIntensityMul);
- diffuseCol.rgb -= (vec3(0.5, 0.5, 0.5) * float(infoTexIntensityMul == 1.0));
- }
- #endif
- float shadowCoeff = 1.0;
- #if !defined(DEFERRED_MODE) && defined(HAVE_SHADOWS)
- {
- vec2 p17 = shadowParams.zz;
- vec2 p18 = shadowParams.ww;
- vec4 vertexShadowPos = shadowMat * vertexWorldPos;
- vertexShadowPos.st *= (inversesqrt(abs(vertexShadowPos.st) + p17) + p18);
- vertexShadowPos.st += shadowParams.xy;
- // same as ARB shader: shadowCoeff = 1 - (1 - shadowCoeff) * groundShadowDensity
- shadowCoeff = shadow2DProj(shadowTex, vertexShadowPos).r;
- shadowCoeff = mix(1.0, shadowCoeff, groundShadowDensity);
- }
- #endif
- #ifndef DEFERRED_MODE
- {
- // GroundMaterialAmbientDiffuseColor * LightAmbientDiffuseColor
- vec4 shadeInt = GetShadeInt(cosAngleDiffuse, shadowCoeff, diffuseCol.a);
- gl_FragColor.rgb = (diffuseCol.rgb + detailCol.rgb) * shadeInt.rgb;
- gl_FragColor.a = shadeInt.a;
- }
- #endif
- #ifdef SMF_LIGHT_EMISSION
- {
- // apply self-illumination aka. glow, not masked by shadows
- emissionCol = texture2D(lightEmissionTex, specTexCoords);
- #ifndef DEFERRED_MODE
- gl_FragColor.rgb = gl_FragColor.rgb * (1.0 - emissionCol.a) + emissionCol.rgb;
- #endif
- }
- #endif
- #ifndef SMF_ARB_LIGHTING
- specularCol = texture2D(specularTex, specTexCoords);
- #ifndef DEFERRED_MODE
- // sun specular lighting contribution
- float specularExp = specularCol.a * 16.0;
- float specularPow = pow(cosAngleSpecular, specularExp);
- vec3 specularInt = specularCol.rgb * specularPow;
- specularInt *= shadowCoeff;
- // no need to multiply by groundSpecularColor anymore
- gl_FragColor.rgb += specularInt;
- #if (MAX_DYNAMIC_MAP_LIGHTS > 0)
- gl_FragColor.rgb += DynamicLighting(normal, diffuseCol.rgb, specularCol.rgb, specularExp);
- #endif
- #endif
- #endif
- #ifdef DEFERRED_MODE
- gl_FragData[GBUFFER_NORMTEX_IDX] = vec4((normal + vec3(1.0, 1.0, 1.0)) * 0.5, 1.0);
- gl_FragData[GBUFFER_DIFFTEX_IDX] = diffuseCol + detailCol;
- gl_FragData[GBUFFER_SPECTEX_IDX] = specularCol;
- gl_FragData[GBUFFER_EMITTEX_IDX] = emissionCol;
- gl_FragData[GBUFFER_MISCTEX_IDX] = vec4(0.0);
- // linearly transform the eye-space depths, might be more useful?
- // gl_FragDepth = gl_FragCoord.z / gl_FragCoord.w;
- #else
- gl_FragColor.rgb = mix(gl_Fog.color.rgb, gl_FragColor.rgb, fogFactor);
- #endif
- }
- [f=0000000] Creating TreeDrawer
- [f=0000000] Creating ProjectileDrawer & UnitDrawer
- [f=0000000] Creating Projectile Textures
- [f=0000000] Creating Water
- [f=0000000] Game::LoadInterface (Camera&Mouse): 665 ms
- [f=0000000] Game::LoadInterface (Console): 67 ms
- [f=0000000] Loading LuaRules
- [f=0000000] Loaded synced gadget: Metalspot Finder Gadget <mex_spot_finder.lua>
- [f=0000000] Loaded synced gadget: Rez Exp <unit_rez_exp.lua>
- [f=0000000] Loaded synced gadget: ranks api <api_ranks.lua>
- [f=0000000] Loaded synced gadget: CameraBroadcast <camera_lockcamera.lua>
- [f=0000000] Loaded synced gadget: Awards <gui_awards.lua>
- [f=0000000] Loaded synced gadget: Air Release <unit_air_release_manager.lua>
- [f=0000000] Loaded synced gadget: AirPlantParents <unit_air_plants.lua>
- [f=0000000] Loaded synced gadget: Armageddon <mo_armageddon.lua>
- [f=0000000] Loaded synced gadget: Bomber Control <unit_bomber_control.lua>
- [f=0000000] Loaded synced gadget: Commander Blast <unit_commander_blast.lua>
- [f=0000000] Loaded synced gadget: Commando Watch <unit_commando_watch.lua>
- [f=0000000] Loaded synced gadget: Cursor Broadcast <cmd_mouse_pos_broadcast.lua>
- [f=0000000] Loaded synced gadget: DGun CmdType Fix <unit_dgun_cmdtype_fix.lua>
- [f=0000000] Loaded synced gadget: Death Messages <game_death_messages.lua>
- [f=0000000] Loaded synced gadget: Debris Damage <unit_debris_damage.lua>
- [f=0000000] Loaded synced gadget: Depthcharge splash <fx_depthcharge_splash.lua>
- [f=0000000] Loaded synced gadget: DirectControl <unit_direct_control.lua>
- [f=0000000] Loaded synced gadget: DragonsDisguise <unit_set_neutral.lua>
- [f=0000000] Loaded synced gadget: Dynamic collision volume & Hitsphere Scaledown <unit_dynamic_collision_volume.lua>
- [f=0000000] Loaded synced gadget: Energy Conversion <game_energy_conversion.lua>
- [f=0000000] Loaded synced gadget: FinishedBuilding <unit_finished_building.lua>
- [f=0000000] Loaded synced gadget: Game End <game_end.lua>
- [f=0000000] Loaded synced gadget: Initial Spawn <game_initial_spawn.lua>
- [f=0000000] Loaded synced gadget: Juno Damage <unit_juno_damage.lua>
- [f=0000000] Loaded synced gadget: Lightning Spash Damage <unit_lightning_splash_dmg.lua>
- [f=0000000] Loaded synced gadget: Limit Dgun Use (Charge) <unit_dgun_charge.lua>
- [f=0000000] Loaded synced gadget: Load Missiles <cmd_loadmissiles.lua>
- [f=0000000] Loaded synced gadget: Lua unit script framework <unit_script.lua>
- [f=0000000] Loaded synced gadget: Maverick Exp <unit_maverick_exp.lua>
- [f=0000000] Loaded synced gadget: Merc/Scr stockpile control <unit_mercscr_stockpile_limit.lua>
- [f=0000000] Loaded synced gadget: Napalm <lups_napalm.lua>
- [f=0000000] Loaded synced gadget: No Land Damage <unit_no_land_damage.lua>
- [f=0000000] Loaded synced gadget: No Self Pwn <unit_noselfpwn.lua>
- [f=0000000] Loaded synced gadget: No Self-D <unit_prevent_share_selfd.lua>
- [f=0000000] Loaded synced gadget: Nonblocking mines <unit_nonblocking_mines.lua>
- [f=0000000] Loaded synced gadget: Paralyse Multiplier <unit_paralyze_multiplier.lua>
- [f=0000000] Loaded synced gadget: Passive Builders v3 <unit_passive_builders.lua>
- [f=0000000] Loaded synced gadget: PopUpWaterStructures <unit_pop_up_water_structures.lua>
- [f=0000000] Loaded synced gadget: Prevent Excessive Share <game_prevent_excessive_share.lua>
- [f=0000000] Loaded synced gadget: Prevent Lab Hax <unit_prevent_lab_hax.lua>
- [f=0000000] Loaded synced gadget: Prevent Load Hax <unit_prevent_load_hax.lua>
- [f=0000000] Loaded synced gadget: Prevent Range Hax <unit_prevent_range_hax.lua>
- [f=0000000] Loaded synced gadget: Prevent Strange Orders <unit_prevent_strange_orders.lua>
- [f=0000000] Loaded synced gadget: Prevent Unload Hax <unit_prevent_unload_hax.lua>
- [f=0000000] Loaded synced gadget: Prevent outside-of-map hax <unit_prevent_aircraft_hax.lua>
- [f=0000000] Loaded synced gadget: Reclaim Fix <unit_reclaim_fix.lua>
- [f=0000000] Loaded synced gadget: Reclaim flash <gfx_reclaim_flash.lua>
- [f=0000000] Loaded synced gadget: Shockwaves <lups_shockwaves.lua>
- [f=0000000] Loaded synced gadget: Stealthy Passengers <unit_stealthy_passengers.lua>
- [f=0000000] Loaded synced gadget: Stun Control <unit_stun_control.lua>
- [f=0000000] Loaded synced gadget: Target on the move <unit_target_on_the_move.lua>
- [f=0000000] Loaded synced gadget: Team Resourcing <game_team_resources.lua>
- [f=0000000] Loaded synced gadget: Transportee Hider <unit_transportee_hider.lua>
- [f=0000000] Loaded synced gadget: Unit transportable nanos <unit_transportable_nanos.lua>
- [f=0000000] Loaded synced gadget: Watereffects <fx_watersplash.lua>
- [f=0000000] Loaded synced gadget: fx_reclaim_shards <fx_reclaim_shards.lua>
- [f=0000000] Loaded synced gadget: fx_wreck_shards <fx_wreck_shards.lua>
- [f=0000000] Loaded synced gadget: game_no_share_to_enemy <game_no_share_to_enemy.lua>
- [f=0000000] Loaded synced gadget: gfx_dynamic_lighting.lua <gfx_dynamic_lighting.lua>
- [f=0000000] Loaded synced gadget: lib_startpoint_guesser.lua <lib_startpoint_guesser.lua>
- [f=0000000] Loaded synced gadget: lups_wrapper.lua <lups_wrapper.lua>
- [f=0000000] Loaded synced gadget: mo_enemywrecks <mo_enemywrecks.lua>
- [f=0000000] Loaded synced gadget: mo_preventcombomb <mo_preventcombomb.lua>
- [f=0000000] Loaded synced gadget: subMissile splash <fx_submissile_splash.lua>
- [f=0000000] Loaded synced gadget: transportfix <unit_transportfix.lua>
- [f=0000000] Loaded synced gadget: unit_combomb_full_damage <unit_combomb_full_damage.lua>
- [f=0000000] Loaded synced gadget: Area Attack <unit_areaattack.lua>
- [f=0000000] Loaded synced gadget: CustomUnitShaders <gfx_customunitshaders.lua>
- [f=0000000] Loaded synced gadget: Substitution <game_replace_afk_players.lua>
- [f=0000000] Loaded synced gadget: Take Manager <cmd_idle_players.lua>
- [f=0000000] Loaded synced gadget: Team Com Ends <game_team_com_ends.lua>
- [f=0000000] Loaded synced gadget: LupsSyncedManager <lups_manager.lua>
- [f=0000000] Loaded synced gadget: Mex Upgrader Gadget <unit_mex_upgrader.lua>
- [f=0000000] Loaded synced gadget: Crashing Aircraft <unit_crashing_aircraft.lua>
- [f=0000000] <LockCamera>: Sorry for the camera switch spam, but this is the only reliable way to list camera states other than hardcoding them
- [f=0000000] Switching to Overview style camera
- [f=0000000] Switching to Smooth style camera
- [f=0000000] Switching to Overhead (TA) style camera
- [f=0000000] Switching to Free style camera
- [f=0000000] Switching to Total War style camera
- [f=0000000] Switching to Rotatable overhead camera
- [f=0000000] Switching to Orbit style camera
- [f=0000000] Switching to FPS style camera
- [f=0000000] Switching to Overhead (TA) style camera
- [f=0000000] Loaded unsynced gadget: Metalspot Finder Gadget <mex_spot_finder.lua>
- [f=0000000] Loaded unsynced gadget: ranks api <api_ranks.lua>
- [f=0000000] Loaded unsynced gadget: CustomIcons <unit_customicons.lua>
- [f=0000000] Loaded unsynced gadget: CameraBroadcast <camera_lockcamera.lua>
- [f=0000000] Loaded unsynced gadget: Awards <gui_awards.lua>
- [f=0000000] Loaded unsynced gadget: Newbie Info <gui_newbie_info.lua>
- [f=0000000] Loaded unsynced gadget: Air Release <unit_air_release_manager.lua>
- [f=0000000] Loaded unsynced gadget: AirPlantParents <unit_air_plants.lua>
- [f=0000000] Loaded unsynced gadget: Cursor Broadcast <cmd_mouse_pos_broadcast.lua>
- [f=0000000] Loaded unsynced gadget: Debris Damage <unit_debris_damage.lua>
- [f=0000000] Loaded unsynced gadget: DragonsDisguise <unit_set_neutral.lua>
- [f=0000000] Loaded unsynced gadget: Dynamic collision volume & Hitsphere Scaledown <unit_dynamic_collision_volume.lua>
- [f=0000000] Loaded unsynced gadget: FinishedBuilding <unit_finished_building.lua>
- [f=0000000] Loaded unsynced gadget: Initial Spawn <game_initial_spawn.lua>
- [f=0000000] Loaded unsynced gadget: Juno Damage <unit_juno_damage.lua>
- [f=0000000] Loaded unsynced gadget: Lightning Spash Damage <unit_lightning_splash_dmg.lua>
- [f=0000000] Loaded unsynced gadget: Limit Dgun Use (Charge) <unit_dgun_charge.lua>
- [f=0000000] Loaded unsynced gadget: Load Missiles <cmd_loadmissiles.lua>
- [f=0000000] Loaded unsynced gadget: Merc/Scr stockpile control <unit_mercscr_stockpile_limit.lua>
- [f=0000000] Loaded unsynced gadget: Napalm <lups_napalm.lua>
- [f=0000000] Loaded unsynced gadget: No Self-D <unit_prevent_share_selfd.lua>
- [f=0000000] Loaded unsynced gadget: Opacity control <api_opacity.lua>
- [f=0000000] Loaded unsynced gadget: PopUpWaterStructures <unit_pop_up_water_structures.lua>
- [f=0000000] Loaded unsynced gadget: Prevent Unload Hax <unit_prevent_unload_hax.lua>
- [f=0000000] Loaded unsynced gadget: Reclaim Fix <unit_reclaim_fix.lua>
- [f=0000000] Loaded unsynced gadget: Reclaim flash <gfx_reclaim_flash.lua>
- [f=0000000] Loaded unsynced gadget: Shockwaves <lups_shockwaves.lua>
- [f=0000000] Loaded unsynced gadget: Target on the move <unit_target_on_the_move.lua>
- [f=0000000] Loaded unsynced gadget: Transportee Hider <unit_transportee_hider.lua>
- [f=0000000] Loaded unsynced gadget: fx_reclaim_shards <fx_reclaim_shards.lua>
- [f=0000000] Loaded unsynced gadget: fx_wreck_shards <fx_wreck_shards.lua>
- [f=0000000] Loaded unsynced gadget: game_no_share_to_enemy <game_no_share_to_enemy.lua>
- [f=0000000] Loaded unsynced gadget: gfx_dynamic_lighting.lua <gfx_dynamic_lighting.lua>
- [f=0000000] Loaded unsynced gadget: lib_startpoint_guesser.lua <lib_startpoint_guesser.lua>
- [f=0000000] Loaded unsynced gadget: mo_enemywrecks <mo_enemywrecks.lua>
- [f=0000000] Loaded unsynced gadget: mo_noowner <mo_noowner.lua>
- [f=0000000] Loaded unsynced gadget: transportfix <unit_transportfix.lua>
- [f=0000000] Loaded unsynced gadget: Area Attack <unit_areaattack.lua>
- [f=0000000] Loaded unsynced gadget: CustomUnitShaders <gfx_customunitshaders.lua>
- [f=0000000] Loaded unsynced gadget: Substitution <game_replace_afk_players.lua>
- [f=0000000] Loaded unsynced gadget: Take Manager <cmd_idle_players.lua>
- [f=0000000] Loaded unsynced gadget: LupsSyncedManager <lups_manager.lua>
- [f=0000000] Loaded unsynced gadget: Mex Upgrader Gadget <unit_mex_upgrader.lua>
- [f=0000000] Loaded unsynced gadget: Crashing Aircraft <unit_crashing_aircraft.lua>
- [f=0000000] Loaded unsynced gadget: Lups <lups_wrapper.lua>
- [f=0000000] Loading LuaGaia
- [f=0000000] Loading LuaUI
- [f=0000000] LuaSocketEnabled: yes
- [f=0000000] This game has locked LuaUI access
- [f=0000000] This game has locked LuaUI access
- [f=0000000] Using LUAUI_DIRNAME = LuaUI/
- [f=0000000] Reloaded ctrlpanel from file: LuaUI/ctrlpanel.txt
- [f=0000000] LuaUI: bound F11 to the widget selector
- [f=0000000] LuaUI: bound CTRL+F11 to tweak mode
- [f=0000000] Loading widget from mod: Spy move/reclaim defaults <unit_default_spy_move_cloaked.lua> ...
- [f=0000000] Loading widget from mod: Defense Range <gui_defenserange.lua> ...
- [f=0000000] Loading widget from mod: Red_UI_Framework <red_ui_framework.lua> ...
- [f=0000000] Loading widget from mod: Metalspot Finder <api_metalspot_finder.lua> ...
- [f=0000000] Loading widget from mod: MexUpg Helper <cmd_mex_upgrade_helper.lua> ...
- [f=0000000] Loading widget from mod: Red Tooltip <gui_red_tooltip.lua> ...
- [f=0000000] Loading widget from mod: Faction Change <gui_faction_change.lua> ...
- [f=0000000] Loading widget from mod: HealthBars <gui_healthbars.lua> ...
- [f=0000000] Loading widget from mod: LockCamera <camera_lockcamera.lua> ...
- [f=0000000] Loading widget from mod: Open Host List <gui_open_hosts.lua> ...
- [f=0000000] Loading widget from mod: AdvPlayersList <gui_advplayerslist.lua> ...
- [f=0000000] Loading widget from mod: BuildETA <gui_build_eta.lua> ...
- [f=0000000] Loading widget from mod: Projectile lights <gfx_projectile_lights.lua> ...
- [f=0000000] Loading widget from mod: Initial Queue <unit_initial_queue.lua> ...
- [f=0000000] Loading widget from mod: Anti Range <gui_anti_range.lua> ...
- [f=0000000] Loading widget from mod: Auto First Build Facing <unit_autofirstbuildfacing.lua> ...
- [f=0000000] Loading widget from mod: Autoquit <cmd_autoquit.lua> ...
- [f=0000000] Loading widget from mod: Auto group <unit_auto_group.lua> ...
- [f=0000000] Loading widget from mod: BA_AllyCursors <gui_ba_ally_cursors.lua> ...
- [f=0000000] Loading widget from mod: BuildBar <gui_buildbar.lua> ...
- [f=0000000] Loading widget from mod: Build Split <cmd_buildsplit.lua> ...
- [f=0000000] Loading widget from mod: CameraFlip <camera_flip.lua> ...
- [f=0000000] Loading widget from mod: Com Counter <gui_comcounter.lua> ...
- [f=0000000] Loading widget from mod: DontMove <unit_dontmove.lua> ...
- [f=0000000] Loading widget from mod: Group Label <gui_group_label.lua> ...
- [f=0000000] Loading widget from mod: Highlight Geos <gui_highlight_geos.lua> ...
- [f=0000000] Loading widget from mod: Easy Facing <gui_easyfacing.lua> ...
- [f=0000000] Loading widget from mod: Com DontBreakCloak <unit_com_dontbreakcloak.lua> ...
- [f=0000000] Loading widget from mod: Holdfire Fix <cmd_holdfire_fix.lua> ...
- [f=0000000] Loading widget from mod: Ghost Radar <unit_ghostradar.lua> ...
- [f=0000000] Loading widget from mod: Ignore List API <api_ignore.lua> ...
- [f=0000000] Loading widget from mod: Ghost Site <unit_ghostsite.lua> ...
- [f=0000000] Loading widget from mod: Load Own Moving <unit_load_own_moving.lua> ...
- [f=0000000] Loading widget from mod: Loop Select <unit_loop_select.lua> ...
- [f=0000000] Loading widget from mod: Mex Snap <cmd_mex_snap.lua> ...
- [f=0000000] Loading widget from mod: Energy Conversion Info <gui_energy_conversion.lua> ...
- [f=0000000] <Energy Conversion Info> Spectator mode. Widget removed.
- [f=0000000] Loading widget from mod: Pause Screen <gui_pausescreen.lua> ...
- [f=0000000] Loading widget from mod: Persistent Build Spacing <cmd_persistent_build_spacing.lua> ...
- [f=0000000] Loading widget from mod: Point Tracker <gui_point_tracker.lua> ...
- [f=0000000] Loading widget from mod: ReclaimInfo <gui_reclaiminfo.lua> ...
- [f=0000000] Loading widget from mod: Red Build/Order Menu <gui_red_buildordermenu.lua> ...
- [f=0000000] Loading widget from mod: Red Console <gui_red_console.lua> ...
- [f=0000000] Loading widget from mod: Red Resource Bars <gui_red_resourcebars.lua> ...
- [f=0000000] Loading widget from mod: Red_Drawing <red_ui_framework_drawing.lua> ...
- [f=0000000] Loading widget from mod: GameTypeInfo <gui_game_type_info.lua> ...
- [f=0000000] Loading widget from mod: RelativeMinimap <minimap_relative.lua> ...
- [f=0000000] Loading widget from mod: Share Tracker <unit_share_tracker.lua> ...
- [f=0000000] Loading widget from mod: NoDuplicateOrders <cmd_no_duplicate_orders.lua> ...
- [f=0000000] Loading widget from mod: SmoothCam <camera_smoothcam.lua> ...
- [f=0000000] Loading widget from mod: Spectate Selected <gui_spectate_selected.lua> ...
- [f=0000000] Loading widget from mod: State Reverse Toggle <cmd_state_reverse_toggle.lua> ...
- [f=0000000] Loading widget from mod: Take Proxy <cmd_take_proxy.lua> ...
- [f=0000000] Loading widget from mod: Unit Finished Sounds <snd_unit_finished.lua> ...
- [f=0000000] Loading widget from mod: Volume OSD <snd_volume_osd.lua> ...
- [f=0000000] Loading widget from mod: Armageddon Countdown <gui_armageddon_countdown.lua> ...
- [f=0000000] Loading widget from mod: Start Boxes <map_startbox.lua> ...
- [f=0000000] Loading widget from mod: ImmobileBuilder <unit_immobile_builder.lua> ...
- [f=0000000] Loading widget from mod: Specific Unit Reclaimer <unit_specific_unit_reclaimer.lua> ...
- [f=0000000] Loading widget from mod: Stockpiler (dynamic) <unit_stockpile_dynamic.lua> ...
- [f=0000000] Loading widget from mod: Attack AoE <gui_attack_aoe.lua> ...
- [f=0000000] Loading widget from mod: Building Hotkeys <cmd_building_hotkeys.lua> ...
- [f=0000000] Loading widget from mod: Context Build <cmd_context_build.lua> ...
- [f=0000000] Loading widget from mod: Prospector <gui_prospector.lua> ...
- [f=0000000] Loading widget from mod: Red Minimap <gui_red_minimap.lua> ...
- [f=0000000] Loading widget from mod: Set Target Hotkeys <cmd_target_on_the_move_hotkeys.lua> ...
- [f=0000000] Loading widget from mod: SmoothScroll <camera_smooth_move.lua> ...
- [f=0000000] Loading widget from mod: Attack and Move Notification <unit_attackmovenotification.lua> ...
- [f=0000000] Loading widget from mod: BA Waypoint Dragger <unit_waypoint_dragger_2.lua> ...
- [f=0000000] Loading widget from mod: Bomber control <unit_bomber_control.lua> ...
- [f=0000000] Loading widget from mod: CommandInsert <cmd_commandinsert.lua> ...
- [f=0000000] Loading widget from mod: Rank Icons <gui_xp.lua> ...
- [f=0000000] Loading widget from mod: Select n Center! <gui_center_n_select.lua> ...
- [f=0000000] Loading widget from mod: LupsManager <gfx_lups_manager.lua> ...
- [f=0000000] Loading widget from mod: Mouse Buildspacing <gui_buildspacing.lua> ...
- [f=0000000] Loading widget from mod: Lups <gfx_lups_wrapper.lua> ...
- [f=0000000] Loading widget from mod: CustomFormations2 <cmd_customformations2.lua> ...
- [f=0000000] LuaUI v0.3
- [f=0000000] [LoadFinalize] finalizing PFS
- [f=0000000] [Path] [PathEstimator::ReadFile] hash=2553438466
- [f=0000000] Reading Estimate PathCosts [8]
- [f=0000000] [Path] [PathEstimator::ReadFile] hash=2553438490
- [f=0000000] Reading Estimate PathCosts [32]
- [f=0000000] [LoadFinalize] finalized PFS (554ms, checksum bd3fdb97)
- [f=0000000] Loaded DecalsDrawer: Legacy
- [f=0000000] GameID: 77529c54d9d6f34ec254c9aaac94bf19
- [f=0000000] Connection attempt from mEIT09
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 4)
- [f=0000000] Connection attempt from YesThisIsDog
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 15)
- [f=0000000] Connection attempt from Insann
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 11)
- [f=0000000] Connection attempt from vandie
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 6)
- [f=0000000] Connection attempt from oXo
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 3)
- [f=0000000] Connection attempt from Szabi
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 1)
- [f=0000000] Connection attempt from DeGhosty
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 14)
- [f=0000000] Connection attempt from MasterPasseli
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 26)
- [f=0000000] Connection attempt from murtagon
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 25)
- [f=0000000] Connection attempt from Ilya
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 17)
- [f=0000000] Connection attempt from [FUEL]Afterburner
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 0)
- [f=0000000] Connection attempt from Krox
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 13)
- [f=0000000] Connection attempt from whitemage100
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 10)
- [f=0000000] Connection attempt from Amiga1200
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 21)
- [f=0000000] Connection attempt from aw87
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 22)
- [f=0000000] Connection attempt from tbw
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 5)
- [f=0000000] Connection attempt from Kros24
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 28)
- [f=0000000] Connection attempt from santtu
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 8)
- [f=0000000] Connection attempt from [DoR]Dartagnan
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 7)
- [f=0000000] Connection attempt from [TaG]Isaf
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 18)
- [f=0000000] Connection attempt from rethurno678
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 9)
- [f=0000000] > BlackHoleHost1 * Warning: in-game IP address does not match lobby IP address for user rethurno678 (spoof protection)
- [f=0000000] Connection attempt from [FUEL]Tekken
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 2)
- [f=0000000] Connection attempt from Bulkovsky
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 24)
- [f=0000000] Connection attempt from PataNegra
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 19)
- [f=0000000] Connection attempt from lvan_zzz
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 16)
- [f=0000000] Kros24 added point:
- [f=0000000] Kros24 added point:
- [f=0000000] Kros24 added point:
- [f=0000000] Spectator [TaG]Isaf left the game: normal quit
- [f=0000000] Spectator Amiga1200 left the game: normal quit
- [f=0000000] [Krox] poor burner XD
- [f=0000000] [lvan_zzz] Allies: why?
- [f=0000000] [lvan_zzz] Allies: his team is much better lol
- [f=0000000] [Krox] Spectators: lets seee
- [f=0000000] <Insann> RUP
- [f=0000000] <Insann> !ring
- [f=0000000] > BlackHoleHost1 * Ringing 12 unready players (by Insann)
- [f=0000000] <Insann> !forcestart
- [f=0000000] > BlackHoleHost1 * Insann called a vote for command "forcestart" [!vote y, !vote n, !vote b]
- [f=0000000] > BlackHoleHost1 * 11 users allowed to vote.
- [f=0000000] [lvan_zzz] Allies: they might lose because vander will tech and porc and they're too stupid to deal with porc
- [f=0000000] <santtu> !y
- [f=0000000] > BlackHoleHost1 * Vote in progress: "forcestart" [y:2/7, n:0/6] (40s remaining)
- [f=0000000] <whitemage100> !y
- [f=0000000] > BlackHoleHost1 * Vote in progress: "forcestart" [y:3/7, n:0/6] (38s remaining)
- [f=0000000] <[DoR]Dartagnan> !y
- [f=0000000] > BlackHoleHost1 * Vote in progress: "forcestart" [y:4/7, n:0/6] (37s remaining)
- [f=0000000] Player tbw left the game: normal quit
- [f=0000000] Connection attempt from tbw
- [f=0000000] -> Version: 98.0
- [f=0000000] -> Connection established (given id 5)
- [f=0000000] [Krox] Spectators: they will lose because dratagnan will tech
- [f=0000000] > BlackHoleHost1 * Vote for command "forcestart" passed (delay expired).
- [f=0000000] > BlackHoleHost1 * Forcing game start by Insann
- [f=0000000] <Insann> why did he left ?
- [f=0000107] lvan_zzz added point: he will build 3 nanos here first
- [f=0000130] Insann paused the game
- [f=0000130] <Insann> is he back ?
- [f=0000130] [FUEL]Afterburner unpaused the game
- [f=0000963] Spectator PataNegra left the game: normal quit
- [f=0003451] Connection attempt from mdjose
- [f=0003451] -> Version: 98.0
- [f=0003451] -> Connection established (given id 27)
- [f=0003577] lvan_zzz added point: interesting lab move queue
- [f=0005383] lvan_zzz added point: /jeenode
- [f=0006236] [Game::ClientReadNet] added new player existenz with number 29 to team 0
- [f=0006257] Connection attempt from existenz
- [f=0006257] -> Version: 98.0
- [f=0006257] -> Connection established (given id 29)
- [f=0008082] [mdjose] Is it a normal tactic to self-d your com to harvest res?
- [f=0009145] [lvan_zzz] yes
- [f=0011104] Insann added point: t2 coming
- [f=0011409] [DoR]Dartagnan added point: great !
- [f=0011882] whitemage100 added point: 1
- [f=0012607] <Insann> Allies: I gave 1 units to [DoR]Dartagnan.
- [f=0014494] <vandie> Allies: I gave 1 units to santtu.
- [f=0014691] vandie added point: tt2
- [f=0014816] vandie added point: tt2 santu
- [f=0014901] Szabi added point: s:can i buy cons?
- [f=0016078] Spectator murtagon left the game: normal quit
- [f=0016119] <Szabi> Allies: mistake
- [f=0016529] <mEIT09> Allies: I gave 1 units to Szabi.
- [f=0016951] <vandie> !gkick rethurno678
- [f=0016952] > BlackHoleHost1 * vandie called a vote for command "gKick rethurno678" [!vote y, !vote n, !vote b]
- [f=0016952] > BlackHoleHost1 * 28 users allowed to vote.
- [f=0016961] <Insann> Allies: I sent 5871 energy to santtu
- [f=0017011] <Insann> Allies: I sent 4503 energy to santtu
- [f=0017242] <whitemage100> Allies: I sent 1246 energy to santtu
- [f=0017512] [lvan_zzz] why should we kick him?
- [f=0018277] > BlackHoleHost1 * Vote for command "gKick rethurno678" failed (delay expired).
- [f=0019071] Spectator YesThisIsDog left the game: normal quit
- [f=0020273] [FUEL]Afterburner added point:
- [f=0020890] [FUEL]Tekken added point:
- [f=0021292] [Game::ClientReadNet] added new player ColdSuit with number 30 to team 0
- [f=0021349] Connection attempt from ColdSuit
- [f=0021349] -> Version: 98.0
- [f=0021349] -> Connection established (given id 30)
- [f=0024230] Spectator lvan_zzz left the game: normal quit
- [f=0024563] oXo added point: NEED HELP DUDE
- [f=0024776] > <[20cm]MerryChristmas> gg re
- [f=0025038] Szabi added point:
- [f=0025103] <Insann> Allies: I sent 1441 metal to whitemage100
- [f=0025214] whitemage100 added point:
- [f=0025337] Connection attempt from [20cm]MerryChristmas
- [f=0025337] -> Version: 98.0
- [f=0025337] -> Connection established (given id 12)
- [f=0025619] Player santtu left the game: normal quit
- [f=0025763] <rethurno678> Allies: I took --- .
- [f=0026193] Szabi added point:
- [f=0030643] [DoR]Dartagnan added point: scout techer
- [f=0030998] Insann added point: explain please
- [f=0031351] Szabi added point: nneed place
- [f=0031614] Insann added point: just scout ?
- [f=0031864] [FUEL]Afterburner added point: sorry
- [f=0032824] Szabi added point: o make anti
- [f=0034054] [Game::ClientReadNet] added new player Noitcelfer with number 31 to team 0
- [f=0034184] Con
Add Comment
Please, Sign In to add comment