diff --git a/Aircraft/c172p/Instruments/kr87-adf/kr87.xml b/Aircraft/c172p/Instruments/kr87-adf/kr87.xml
index d9a4311a6..811eb9229 100644
--- a/Aircraft/c172p/Instruments/kr87-adf/kr87.xml
+++ b/Aircraft/c172p/Instruments/kr87-adf/kr87.xml
@@ -11,8 +11,7 @@
select
indicator
- /instrumentation/adf[0]/serviceable
- /instrumentation/adf[0]/power-btn
+ /instrumentation/adf[0]/operable
diff --git a/Aircraft/c172p/Models/Pedals/pedals.xml b/Aircraft/c172p/Models/Pedals/pedals.xml
old mode 100755
new mode 100644
diff --git a/Aircraft/c172p/Models/Yoke/yoke.xml b/Aircraft/c172p/Models/Yoke/yoke.xml
old mode 100755
new mode 100644
diff --git a/Aircraft/c172p/Nasal/c172-electrical.nas b/Aircraft/c172p/Nasal/c172-electrical.nas
index 29c6c39ac..492773a1d 100644
--- a/Aircraft/c172p/Nasal/c172-electrical.nas
+++ b/Aircraft/c172p/Nasal/c172-electrical.nas
@@ -9,23 +9,22 @@
# Initialize internal values
#
-battery = nil;
-alternator = nil;
+var battery = nil;
+var alternator = nil;
-last_time = 0.0;
+var last_time = 0.0;
-vbus_volts = 0.0;
-ebus1_volts = 0.0;
-ebus2_volts = 0.0;
+var vbus_volts = 0.0;
+var ebus1_volts = 0.0;
+var ebus2_volts = 0.0;
-ammeter_ave = 0.0;
+var ammeter_ave = 0.0;
##
# Initialize the electrical system
#
init_electrical = func {
- print("Initializing Nasal Electrical System");
battery = BatteryClass.new();
alternator = AlternatorClass.new();
@@ -35,8 +34,9 @@ init_electrical = func {
setprop("/controls/switches/master-avionics", 1);
setprop("/systems/electrical/outputs/autopilot",0.0);
- # Request that the update fuction be called next frame
+ # Request that the update function be called next frame
settimer(update_electrical, 0);
+ print("Electrical system initialized");
}
@@ -47,12 +47,12 @@ init_electrical = func {
BatteryClass = {};
BatteryClass.new = func {
- obj = { parents : [BatteryClass],
- ideal_volts : 24.0,
- ideal_amps : 30.0,
- amp_hours : 12.75,
- charge_percent : 1.0,
- charge_amps : 7.0 };
+ var obj = { parents : [BatteryClass],
+ ideal_volts : 24.0,
+ ideal_amps : 30.0,
+ amp_hours : 12.75,
+ charge_percent : 1.0,
+ charge_amps : 7.0 };
return obj;
}
@@ -62,8 +62,8 @@ BatteryClass.new = func {
#
BatteryClass.apply_load = func( amps, dt ) {
- amphrs_used = amps * dt / 3600.0;
- percent_used = amphrs_used / me.amp_hours;
+ var amphrs_used = amps * dt / 3600.0;
+ var percent_used = amphrs_used / me.amp_hours;
me.charge_percent -= percent_used;
if ( me.charge_percent < 0.0 ) {
me.charge_percent = 0.0;
@@ -76,13 +76,13 @@ BatteryClass.apply_load = func( amps, dt ) {
##
# Return output volts based on percent charged. Currently based on a simple
-# polynomal percent charge vs. volts function.
+# polynomial percent charge vs. volts function.
#
BatteryClass.get_output_volts = func {
- x = 1.0 - me.charge_percent;
- tmp = -(3.0 * x - 1.0);
- factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
+ var x = 1.0 - me.charge_percent;
+ var tmp = -(3.0 * x - 1.0);
+ var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
return me.ideal_volts * factor;
}
@@ -95,9 +95,9 @@ BatteryClass.get_output_volts = func {
#
BatteryClass.get_output_amps = func {
- x = 1.0 - me.charge_percent;
- tmp = -(3.0 * x - 1.0);
- factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
+ var x = 1.0 - me.charge_percent;
+ var tmp = -(3.0 * x - 1.0);
+ var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
return me.ideal_amps * factor;
}
@@ -109,11 +109,11 @@ BatteryClass.get_output_amps = func {
AlternatorClass = {};
AlternatorClass.new = func {
- obj = { parents : [AlternatorClass],
- rpm_source : "/engines/engine[0]/rpm",
- rpm_threshold : 800.0,
- ideal_volts : 28.0,
- ideal_amps : 60.0 };
+ var obj = { parents : [AlternatorClass],
+ rpm_source : "/engines/engine[0]/rpm",
+ rpm_threshold : 800.0,
+ ideal_volts : 28.0,
+ ideal_amps : 60.0 };
setprop( obj.rpm_source, 0.0 );
return obj;
}
@@ -126,13 +126,13 @@ AlternatorClass.apply_load = func( amps, dt ) {
# Scale alternator output for rpms < 800. For rpms >= 800
# give full output. This is just a WAG, and probably not how
# it really works but I'm keeping things "simple" to start.
- rpm = getprop( me.rpm_source );
- factor = rpm / me.rpm_threshold;
+ var rpm = getprop( me.rpm_source );
+ var factor = rpm / me.rpm_threshold;
if ( factor > 1.0 ) {
factor = 1.0;
}
# print( "alternator amps = ", me.ideal_amps * factor );
- available_amps = me.ideal_amps * factor;
+ var available_amps = me.ideal_amps * factor;
return available_amps - amps;
}
@@ -144,8 +144,8 @@ AlternatorClass.get_output_volts = func {
# scale alternator output for rpms < 800. For rpms >= 800
# give full output. This is just a WAG, and probably not how
# it really works but I'm keeping things "simple" to start.
- rpm = getprop( me.rpm_source );
- factor = rpm / me.rpm_threshold;
+ var rpm = getprop( me.rpm_source );
+ var factor = rpm / me.rpm_threshold;
if ( factor > 1.0 ) {
factor = 1.0;
}
@@ -162,8 +162,8 @@ AlternatorClass.get_output_amps = func {
# scale alternator output for rpms < 800. For rpms >= 800
# give full output. This is just a WAG, and probably not how
# it really works but I'm keeping things "simple" to start.
- rpm = getprop( me.rpm_source );
- factor = rpm / me.rpm_threshold;
+ var rpm = getprop( me.rpm_source );
+ var factor = rpm / me.rpm_threshold;
if ( factor > 1.0 ) {
factor = 1.0;
}
@@ -177,13 +177,13 @@ AlternatorClass.get_output_amps = func {
#
update_electrical = func {
- time = getprop("/sim/time/elapsed-sec");
- dt = time - last_time;
+ var time = getprop("/sim/time/elapsed-sec");
+ var dt = time - last_time;
last_time = time;
update_virtual_bus( dt );
- # Request that the update fuction be called again next frame
+ # Request that the update function be called again next frame
settimer(update_electrical, 0);
}
@@ -194,24 +194,23 @@ update_electrical = func {
#
update_virtual_bus = func( dt ) {
- serviceable = getprop("/systems/electrical/serviceable");
+ var serviceable = getprop("/systems/electrical/serviceable");
+ var external_volts = 0.0;
+ var load = 0.0;
+ var battery_volts = 0.0;
+ var alternator_volts = 0.0;
if ( serviceable ) {
- battery_volts = battery.get_output_volts();
- alternator_volts = alternator.get_output_volts();
- } else {
- battery_volts = 0.0;
- alternator_volts = 0.0;
+ battery_volts = battery.get_output_volts();
+ alternator_volts = alternator.get_output_volts();
}
- external_volts = 0.0;
- load = 0.0;
# switch state
- master_bat = getprop("/controls/engines/engine[0]/master-bat");
- master_alt = getprop("/controls/engines/engine[0]/master-alt");
+ var master_bat = getprop("/controls/engines/engine[0]/master-bat");
+ var master_alt = getprop("/controls/engines/engine[0]/master-alt");
# determine power source
- bus_volts = 0.0;
- power_source = nil;
+ var bus_volts = 0.0;
+ var power_source = nil;
if ( master_bat ) {
bus_volts = battery_volts;
power_source = "battery";
@@ -235,10 +234,10 @@ update_virtual_bus = func( dt ) {
}
setprop("systems/electrical/outputs/starter[0]", starter_volts);
if (starter_volts > 1) {
- setprop("controls/engines/engine[0]/starter",1);
- setprop("controls/engines/engine[0]/magnetos",3);
+ setprop("controls/engines/engine[0]/starter",1);
+ setprop("controls/engines/engine[0]/magnetos",3);
} else {
- setprop("controls/engines/engine[0]/starter",0);
+ setprop("controls/engines/engine[0]/starter",0);
}
# bus network (1. these must be called in the right order, 2. the
@@ -250,7 +249,7 @@ update_virtual_bus = func( dt ) {
load += avionics_bus_2();
# system loads and ammeter gauge
- ammeter = 0.0;
+ var ammeter = 0.0;
if ( bus_volts > 1.0 ) {
# normal load
load += 15.0;
@@ -272,7 +271,7 @@ update_virtual_bus = func( dt ) {
}
# filter ammeter needle pos
- ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
+ var ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
# outputs
setprop("/systems/electrical/amps", ammeter_ave);
@@ -285,9 +284,9 @@ update_virtual_bus = func( dt ) {
electrical_bus_1 = func() {
# we are fed from the "virtual" bus
- bus_volts = vbus_volts;
- load = 0.0;
-
+ var bus_volts = vbus_volts;
+ var load = 0.0;
+
# Cabin Lights Power
if ( getprop("/controls/circuit-breakers/cabin-lights-pwr") ) {
setprop("/systems/electrical/outputs/cabin-lights", bus_volts);
@@ -333,8 +332,8 @@ electrical_bus_1 = func() {
electrical_bus_2 = func() {
# we are fed from the "virtual" bus
- bus_volts = vbus_volts;
- load = 0.0;
+ var bus_volts = vbus_volts;
+ var load = 0.0;
# Turn Coordinator Power
setprop("/systems/electrical/outputs/turn-coordinator", bus_volts);
@@ -381,13 +380,12 @@ electrical_bus_2 = func() {
cross_feed_bus = func() {
# we are fed from either of the electrical bus 1 or 2
+ var bus_volts = ebus2_volts;
if ( ebus1_volts > ebus2_volts ) {
bus_volts = ebus1_volts;
- } else {
- bus_volts = ebus2_volts;
}
- load = 0.0;
+ var load = 0.0;
setprop("/systems/electrical/outputs/annunciators", bus_volts);
@@ -397,20 +395,18 @@ cross_feed_bus = func() {
avionics_bus_1 = func() {
- master_av = getprop("/controls/switches/master-avionics");
+ var bus_volts = 0.0;
+ var load = 0.0;
# we are fed from the electrical bus 1
+ var master_av = getprop("/controls/switches/master-avionics");
if ( master_av ) {
bus_volts = ebus1_volts;
- } else {
- bus_volts = 0.0;
}
- load = 0.0;
-
# Avionics Fan Power
setprop("/systems/electrical/outputs/avionics-fan", bus_volts);
-
+
# GPS Power
setprop("/systems/electrical/outputs/gps", bus_volts);
@@ -435,15 +431,13 @@ avionics_bus_1 = func() {
avionics_bus_2 = func() {
- master_av = getprop("/controls/switches/master-avionics");
-
+ var master_av = getprop("/controls/switches/master-avionics");
# we are fed from the electrical bus 2
+ var bus_volts = 0.0;
if ( master_av ) {
bus_volts = ebus2_volts;
- } else {
- bus_volts = 0.0;
}
- load = 0.0;
+ var load = 0.0;
# NavCom 2 Power
setprop("/systems/electrical/outputs/nav[1]", bus_volts);
diff --git a/Aircraft/c172p/Nasal/kma20.nas b/Aircraft/c172p/Nasal/kma20.nas
new file mode 100644
index 000000000..e8770762e
--- /dev/null
+++ b/Aircraft/c172p/Nasal/kma20.nas
@@ -0,0 +1,41 @@
+##################################################################
+#
+# These are the helper functions for the kma20 audio panel
+# Maintainer: Thorsten Brehm (brehmt at gmail dot com)
+#
+# Usage:
+# just create one instance of kma20 class for each kma20 panel
+# you have in your aircraft:
+# kma20.new(0);
+#
+# KMA20 audio panel properties:
+# root: /instrumentation/kma20
+# knob: microphone/radio selector (com1/2)
+# auto: selects COM1/2 based on microphone selector
+# com1: enable/disable COM1 audio (e.g. for ATIS)
+# com2: enable/disable COM2 audio (e.g. for ATIS)
+# nav1: enable/disable NAV1 station identifier
+# nav2: enable/disable NAV2 station identifier
+# adf: enable/disable ADF station identifier
+# dme: enable/disable DME station identifier
+# mkr: enable/disable marker beacon audio
+# sens: beacon receiver sensitivity
+
+var kma20 = {};
+
+kma20.new = func(rootPath) {
+ var obj = {};
+ obj.parents = [kma20];
+
+ setlistener(rootPath ~ "/com1", func(v) {setprop("/instrumentation/comm/volume", 0.7*(v.getValue() != 0));}, 1);
+ setlistener(rootPath ~ "/com2", func(v) {setprop("/instrumentation/comm[1]/volume", 0.7*(v.getValue() != 0));}, 1);
+ setlistener(rootPath ~ "/nav1", func(v) {setprop("/instrumentation/nav/audio-btn", (v.getValue() != 0));}, 1);
+ setlistener(rootPath ~ "/nav2", func(v) {setprop("/instrumentation/nav[1]/audio-btn", (v.getValue() != 0));}, 1);
+ setlistener(rootPath ~ "/adf", func(v) {setprop("/instrumentation/adf/ident-audible", (v.getValue() != 0));}, 1);
+ setlistener(rootPath ~ "/dme", func(v) {setprop("/instrumentation/dme/ident", (v.getValue() != 0));}, 1);
+ setlistener(rootPath ~ "/mkr", func(v) {setprop("/instrumentation/marker-beacon/audio-btn",(v.getValue() != 0));}, 1);
+ print( "KMA20 audio panel initialized" );
+ return obj;
+};
+
+var kma20_0 = kma20.new( "/instrumentation/kma20" );
diff --git a/Aircraft/c172p/c172p-set.xml b/Aircraft/c172p/c172p-set.xml
index 491c7316b..f27dffcc8 100644
--- a/Aircraft/c172p/c172p-set.xml
+++ b/Aircraft/c172p/c172p-set.xml
@@ -25,7 +25,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
jsb
c172p
- true
+ true
Aircraft/c172p/Models/c172p.xml
@@ -51,7 +51,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
false
false
-
+ false
@@ -69,10 +69,10 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
true
- -0.21
- 0.235
- 0.36
- -12
+ -0.21
+ 0.235
+ 0.36
+ -12
@@ -135,12 +135,14 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
- 0.027
- 0.0
+ 0.027
+ 0.0
- 3
+ 3
+ true
+ true
@@ -150,6 +152,16 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
false
false
+
+ true
+ false
+
+
+
+ true
+ true
+
+
@@ -183,6 +195,16 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
true
+
+ false
+ 0.7
+
+
+
@@ -202,6 +224,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
Aircraft/c172p/Nasal/doors.nas
Aircraft/c172p/Nasal/light.nas
Aircraft/c172p/Nasal/tanks.nas
+ Aircraft/c172p/Nasal/kma20.nas
Aircraft/c172p/Nasal/ki266.nas
- Aircraft/c172p/Nasal/kr87.nas
-
+ Aircraft/c172p/Nasal/kr87.nas
+
diff --git a/Aircraft/ufo/Models/ufo.xml b/Aircraft/ufo/Models/ufo.xml
old mode 100755
new mode 100644
diff --git a/Effects/building.eff b/Effects/building.eff
index aa2175da5..65a599a42 100644
--- a/Effects/building.eff
+++ b/Effects/building.eff
@@ -66,7 +66,7 @@
1.0 1.0 1.0 1.0
0.0 0.0 0.0 1.0
0.02 0.02 0.02 1.0
- 0.0
+ 0.1
ambient-and-diffuse
ambient-and-diffuse
diff --git a/Shaders/runway-gbuffer.frag b/Shaders/runway-gbuffer.frag
index 7cfb15154..42def8f40 100644
--- a/Shaders/runway-gbuffer.frag
+++ b/Shaders/runway-gbuffer.frag
@@ -50,12 +50,14 @@ void main (void)
if (normalmap_dds > 0)
N = -N;
+ float nFactor = 1.0 - N.z;
float lightness = dot(texel.rgb, vec3( 0.3, 0.59, 0.11 ));
// calculate the specular light
float refl_correction = spec_adjust * 2.5 - 1.0;
- float shininess = max (0.35, refl_correction) * nmap.a;
+ float shininess = max (0.35, refl_correction) * nmap.a * nFactor;
- float specular = dot(vec3(1.0) * lightness , vec3( 0.3, 0.59, 0.11 ));
+
+ float specular = dot(vec3(1.0) * lightness , vec3( 0.3, 0.59, 0.11 )) * nFactor;
vec4 color = vec4(1.0);
@@ -65,7 +67,7 @@ void main (void)
vec3 viewVec = normalize(vViewVec);
// Map a rainbowish color
- float v = dot(viewVec, normalize(VNormal));
+ float v = abs(dot(viewVec, normalize(VNormal)));
vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0));
// Map a fresnel effect
@@ -83,7 +85,7 @@ void main (void)
MixFactor = 0.75 * smoothstep(0.0, 1.0, MixFactor);
- reflFactor = max(map.a * (texel.r + texel.g), 1.0 - MixFactor) * (1.0- N.z) + transparency_offset ;
+ reflFactor = max(map.a * (texel.r + texel.g), 1.0 - MixFactor) * nFactor + transparency_offset ;
reflFactor =0.75 * smoothstep(0.05, 1.0, reflFactor);
// set ambient adjustment to remove bluiness with user input
@@ -96,12 +98,12 @@ void main (void)
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
- vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0);
+ vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0) * nFactor;
vec4 mixedcolor = mix(texel, raincolor * (1.0 - refl_correction * (1.0 - lightness)), reflFactor);
// the final reflection
- vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction, color.a);
+ vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction * nFactor, color.a);
encode_gbuffer(N, fragColor.rgb, 1, specular, shininess, emission, gl_FragCoord.z);
}
\ No newline at end of file
diff --git a/Shaders/runway.frag b/Shaders/runway.frag
index d4bb31d05..fad9defd9 100644
--- a/Shaders/runway.frag
+++ b/Shaders/runway.frag
@@ -79,14 +79,15 @@ void main (void)
vec4 color = gl_Color + Diffuse * gl_FrontMaterial.diffuse;
//color += Specular * vec4(vec3(0.5*shininess), 1.0) * nmap.a;
- color += Specular * vec4(1.0) * nmap.a;
+ float nFactor = 1.0 - N.z;
+ color += Specular * vec4(1.0) * nmap.a * nFactor;
color.a = texel.a * alpha;
color = clamp(color, 0.0, 1.0);
vec3 viewVec = normalize(vViewVec);
// Map a rainbowish color
- float v = dot(viewVec, normalize(VNormal));
+ float v = abs(dot(viewVec, normalize(VNormal)));
vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0));
// Map a fresnel effect
@@ -115,18 +116,18 @@ void main (void)
// add fringing fresnel and rainbow effects and modulate by reflection
vec4 reflcolor = mix(reflection, rainbow, rainbowiness * v);
- reflcolor += Specular * nmap.a;
+ reflcolor += Specular * nmap.a * nFactor;
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0);
- raincolor += Specular * nmap.a;
+ raincolor += Specular * nmap.a * nFactor;
vec4 mixedcolor = mix(texel, raincolor * (1.0 - refl_correction * (1.0 - lightness)), reflFactor); //* (1.0 - 0.5 * transparency_offset )
// the final reflection
- vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction.rgb * (1.0 - refl_correction * (1.0 - 0.8 * lightness)), color.a);
- fragColor += Specular * nmap.a;
+ vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction.rgb * (1.0 - refl_correction * (1.0 - 0.8 * lightness)) * nFactor, color.a);
+ fragColor += Specular * nmap.a * nFactor;
fragColor.rgb = fog_Func(fragColor.rgb, fogType);
gl_FragColor = fragColor;
diff --git a/Shaders/ubershader-gbuffer.frag b/Shaders/ubershader-gbuffer.frag
index 60782195b..bfd2538f8 100644
--- a/Shaders/ubershader-gbuffer.frag
+++ b/Shaders/ubershader-gbuffer.frag
@@ -92,7 +92,7 @@ void main (void)
///END bump
vec4 reflection = textureCube(Environment, reflVec * N);
vec3 viewVec = normalize(vViewVec);
- float v = dot(viewVec, normalize(VNormal));// Map a rainbowish color
+ float v = abs(dot(viewVec, normalize(VNormal)));// Map a rainbowish color
vec4 fresnel = texture2D(ReflFresnelTex, vec2(v, 0.0));
vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0));
vec4 color = gl_Color * gl_FrontMaterial.diffuse;
diff --git a/Shaders/ubershader.frag b/Shaders/ubershader.frag
index 6e135e8aa..51df2d02a 100644
--- a/Shaders/ubershader.frag
+++ b/Shaders/ubershader.frag
@@ -85,7 +85,7 @@ void main (void)
///END bump
vec4 reflection = textureCube(Environment, reflVec * dot(N,VNormal));
vec3 viewVec = normalize(vViewVec);
- float v = dot(viewVec, normalize(VNormal));// Map a rainbowish color
+ float v = abs(dot(viewVec, normalize(VNormal)));// Map a rainbowish color
vec4 fresnel = texture2D(ReflFresnelTex, vec2(v, 0.0));
vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0));
diff --git a/Translations/es/menu.xml b/Translations/es/menu.xml
index e42cd2759..78ae5e48c 100644
--- a/Translations/es/menu.xml
+++ b/Translations/es/menu.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
Reiniciar autopiloto
Reiniciar conexión de red
-
+ Recargar modelo de la aeronave
Consola nasal
Teclas de desarrollo
Configurar extensiones de desarrollo
diff --git a/Translations/es/options.xml b/Translations/es/options.xml
index 7a6b47466..4332f8c30 100644
--- a/Translations/es/options.xml
+++ b/Translations/es/options.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
Desactiva splash screen
Activa splash screen
-
+ Restaurar todas las configuraciones a las iniciales (opciones de renderizado, etc)
No guardar las preferencias al salir del programa
Permitir guardar las preferencias al salir del programa
Desactiva la introducción musical
@@ -48,10 +48,10 @@
(p.ej. para tarjetas tipo Voodoo a pantalla completa)
Excluir objetos aleatorios de escenografía
Incluir objetos aleatorios de escenografía
-
-
-
-
+ Excluir objetos aleatorios de vegetación
+ Incluir objetos aleatorios de vegetación
+ Excluir edificios aleatorios
+ Incluir edificios aleatorios -->
Desactiva la recogida de meteo real basada en METAR
Activa la recogida de meteo real basada en METAR (esto requiere una conexión a Internet)
Pasar una METAR para establecer una meteo estática
diff --git a/Translations/pl/menu.xml b/Translations/pl/menu.xml
index 54857a4bc..1b8b02b2e 100644
--- a/Translations/pl/menu.xml
+++ b/Translations/pl/menu.xml
@@ -1,15 +1,15 @@
-
-
-
-
-
-
+
+
+
+
+
+
- false
- 1
-
-
true
true
diff --git a/version b/version
index 834f26295..c8e38b614 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.8.0
+2.9.0