КОД Ил-2

Сообщение Pegas-G1 » 02 дек 2011, 11:26

Karabas-Barabas писал(а):... например ни у одного самолета в иле площади рулей не соответствуют реальным, при чем очень часто в разы (хотя сама идеология ФМ правильная - не пытаться смоделировать вообще все, каждый чих, а достаточно простыми формулами сымитировать полет очень походий на реальный).


Нсчет площади рулей. Это сделано для получения управляемости похожей на реальную чтобы компенсировать косяки фм или для придания игрового интереса? Отклик самолета на действия рулями на низких скоростях кажется просто фантастическим
Аватара пользователя
Pegas-G1
Путешественник
Путешественник
 
Сообщения: 288
Зарегистрирован:
20 июн 2008, 22:16
Has thanked: 6 times
Have thanks: 10 times

Сообщение Karabas-Barabas » 02 дек 2011, 19:18

Pegas-G1 писал(а):
Karabas-Barabas писал(а):... например ни у одного самолета в иле площади рулей не соответствуют реальным, при чем очень часто в разы (хотя сама идеология ФМ правильная - не пытаться смоделировать вообще все, каждый чих, а достаточно простыми формулами сымитировать полет очень походий на реальный).


Нсчет площади рулей. Это сделано для получения управляемости похожей на реальную чтобы компенсировать косяки фм или для придания игрового интереса? Отклик самолета на действия рулями на низких скоростях кажется просто фантастическим


Все правильно, площади рулей завышены от несовершенства ФМ, отсюда дикая управляемость на скоростях, где она вообще должна отсутствовать.
Вместо того, чтобы настроить саму ФМ, МГ настраивали самолеты, каждый в отдельности.
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times

Сообщение Karabas-Barabas » 07 дек 2011, 20:28

/* MGunBrowning50s - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package com.maddox.il2.objects.weapons;
import com.maddox.JGP.Color3f;
import com.maddox.il2.engine.BulletProperties;
import com.maddox.il2.engine.GunProperties;

public class MGunBrowning50s extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = false;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = "3DO/Effects/GunFire/12mm/mono.sim";
gunproperties.fire = null;
gunproperties.sprite = "3DO/Effects/GunFire/12mm/GunFlare.eff";
gunproperties.smoke = null;
gunproperties.shells = "3DO/Effects/GunShells/GunShells.eff";
gunproperties.sound = "weapon.mgun_15_700";
gunproperties.emitColor = new Color3f(1.0F, 1.0F, 0.0F);
gunproperties.emitI = 10.0F;
gunproperties.emitR = 3.0F;
gunproperties.emitTime = 0.03F;
gunproperties.aimMinDist = 10.0F;
gunproperties.aimMaxDist = 1000.0F;
gunproperties.weaponType = -1;
gunproperties.maxDeltaAngle = 0.229F;
gunproperties.shotFreq = 10.833333F;
gunproperties.traceFreq = 4;
gunproperties.bullets = 500;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= (new BulletProperties[]
{ new BulletProperties(), new BulletProperties(),
new BulletProperties(), new BulletProperties() });
gunproperties.bullet[0].massa = 0.0485F;
gunproperties.bullet[0].kalibr = 1.209675E-4F;
gunproperties.bullet[0].speed = 870.0F;
gunproperties.bullet[0].power = 0.0020F;
gunproperties.bullet[0].powerType = 0;
gunproperties.bullet[0].powerRadius = 0.0F;
gunproperties.bullet[0].traceMesh
= "3do/effects/tracers/20mmRed/mono.sim";
gunproperties.bullet[0].traceTrail = null;
gunproperties.bullet[0].traceColor = -117440257;
gunproperties.bullet[0].timeLife = 6.5F;
gunproperties.bullet[1].massa = 0.0485F;
gunproperties.bullet[1].kalibr = 1.209675E-4F;
gunproperties.bullet[1].speed = 870.0F;
gunproperties.bullet[1].power = 0.0F;
gunproperties.bullet[1].powerType = 0;
gunproperties.bullet[1].powerRadius = 0.0F;
gunproperties.bullet[1].traceMesh = null;
gunproperties.bullet[1].traceTrail = null;
gunproperties.bullet[1].traceColor = 0;
gunproperties.bullet[1].timeLife = 6.52F;
gunproperties.bullet[2].massa = 0.0485F;
gunproperties.bullet[2].kalibr = 1.258062E-4F;
gunproperties.bullet[2].speed = 870.0F;
gunproperties.bullet[2].power = 9.768E-4F;
gunproperties.bullet[2].powerType = 0;
gunproperties.bullet[2].powerRadius = 0.15F;
gunproperties.bullet[2].traceMesh = null;
gunproperties.bullet[2].traceTrail = null;
gunproperties.bullet[2].traceColor = 0;
gunproperties.bullet[2].timeLife = 6.5F;
gunproperties.bullet[3].massa = 0.0485F;
gunproperties.bullet[3].kalibr = 1.209675E-4F;
gunproperties.bullet[3].speed = 870.0F;
gunproperties.bullet[3].power = 0.0F;
gunproperties.bullet[3].powerType = 0;
gunproperties.bullet[3].powerRadius = 0.0F;
gunproperties.bullet[3].traceMesh = null;
gunproperties.bullet[3].traceTrail = null;
gunproperties.bullet[3].traceColor = 0;
gunproperties.bullet[3].timeLife = 6.25F;
return gunproperties;
}
}
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times

Сообщение Karabas-Barabas » 10 дек 2011, 10:07

Про знаменитый Лавочкинский не перегрев мотора.

Моторы в Иле, смотрим температуры, время работы на максимальных оборотах (понятное дело что вода в воздушниках отсутствует, но температуру то все равно надо считать как-то)

[Generic]
Type Radial
Autonomous 1
Cylinders 14
Carburetor 2
Direction Right
TowFactor 1.0
Thrust 0.0
PropMass 141.0
EngineI 1.0
EngineAcceleration 4.0
Extinguishers 0
CompressorType 1
CompressorSteps 2
AfterburnerType 7
MixerType 2
MixerAltitude 4800
cThrottle 1
cAfterburner 0
cProp 1
cMix 1
cMagneto 1
cCompressor 1
cFeather 0
cRadiator 1
TESPEED 0.01
TWATERMAXRPM 210
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 600
MINRPMTIME 999
TWATERMAX 215
TWATERMIN 60
TOILMAX 125
TOILMIN 40

SoundName m82
PropName middle
StartStopName std_p
[M-82A]
HorsePowers 1400
BoostFactor 1.0
WEPBoostFactor 1.16
Carburetor 1
cAfterburner 1
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.72
PropDiameter 3.2
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2450.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 5.0
CompressorPMax 1.55
CompressorAltitude0 2700.0
CompressorMultiplier0 1.0
CompressorAltitude1 5300.0
CompressorMultiplier1 0.85
CompressorRPMP0 1500.0
CompressorRPMCurvature 2.0
CompressorRPMPMax 2450.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.5
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2500
DisP0y 0
DisP1x 0
DisP1y 56
TESPEED 0.01
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 210
TWATERMIN 60
TOILMAX 115
TOILMIN 40
и т.д.
[ASh-82F]
HorsePowers 1400
BoostFactor 1.0
WEPBoostFactor 1.16
AfterburnerType 8
Carburetor 1
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.72
PropDiameter 3.2
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2450.0
PropPhiMin 20.0
PropPhiMax 42.0
PropAoA0 5.0
CompressorPMax 1.55
CompressorAltitude0 2000.0
CompressorMultiplier0 1.0
CompressorAltitude1 5200.0
CompressorMultiplier1 0.90
CompressorRPMP0 1500.0
CompressorRPMCurvature 2.0
CompressorRPMPMax 2450.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.8
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2500
DisP0y 0
DisP1x 0
DisP1y 56
TESPEED 0.01
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 215
TWATERMIN 60
TOILMAX 115
TOILMIN 40
[ASh-82FN]
HorsePowers 1630
BoostFactor 1.0001
WEPBoostFactor 1.112
AfterburnerType 8
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.72
PropDiameter 3.3
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2500.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 11.0
CompressorPMax 1.6
Voptimal 350.0
CompressorAltitude0 2000.0
CompressorMultiplier0 0.94
CompressorAltitude1 4800.0
CompressorMultiplier1 0.81
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 2500.0
CompressorMaxATARPM 1.35
CompressorSpeedManifold 0.8
CompressorRPM0 450
CompressorATA0 0.7
CompressorRPM1 1700
CompressorATA1 1.08
CompressorRPM2 2100
CompressorATA2 1.15
CompressorRPM3 2200
CompressorATA3 1.22
CompressorRPM4 2400
CompressorATA4 1.35
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 250
tFuel 400.0
inSair 200.0
inSoil 1.0
inSwater 0.0
outSair 1100.0
outSoil 100.0
outSwater 0.0
[ASh-82FN_LA_7]
HorsePowers 1630
BoostFactor 1.0001
WEPBoostFactor 1.112
AfterburnerType 8
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.72
PropDiameter 3.3
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2500.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 11.0
CompressorPMax 1.6
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 0.94
CompressorAltitude1 4500.0
CompressorMultiplier1 0.89
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 2500.0
CompressorMaxATARPM 1.35
CompressorSpeedManifold 0.8
CompressorRPM0 450
CompressorATA0 0.7
CompressorRPM0 1700
CompressorATA0 1.08
CompressorRPM1 2100
CompressorATA1 1.15
CompressorRPM2 2200
CompressorATA2 1.22
CompressorRPM3 2400
CompressorATA3 1.35
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 250
[ASh-82FN_TU_2]
HorsePowers 1600
BoostFactor 1.12
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.72
PropDiameter 3.35
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 11.0
CompressorPMax 1.6
Voptimal 260.0
CompressorAltitude0 2000.0
CompressorMultiplier0 0.91
CompressorAltitude1 4800.0
CompressorMultiplier1 0.85
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 2500.0
CompressorMaxATARPM 1.6
CompressorSpeedManifold 0.4
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 220
[ASh-62]
HorsePowers 1000
BoostFactor 1.000
CompressorSteps 1
AfterburnerType 0
MixerAltitude 2500
cCompressor 0
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.87
PropDiameter 3.0
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropPhiMin 17.0
PropPhiMax 40.0
PropAoA0 11.0
CompressorPMax 1.573
Voptimal 100.0
CompressorAltitude0 1700.0
CompressorMultiplier0 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 2470.0
CompressorMaxATARPM 1.36
CompressorSpeedManifold 0.3
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 220
[M-85]
HorsePowers 710
BoostFactor 1.0
AfterburnerType 0
CompressorSteps 1
cCompressor 0
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.87
PropDiameter 2.8
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropPhiMin 18.0
PropPhiMax 42.0
PropAoA0 11.0
CompressorPMax 1.573
CompressorAltitude0 3850.0
CompressorMultiplier0 1.1
CompressorRPMP0 1500.0
CompressorRPMPMax 2470.0
CompressorMaxATARPM 1.36
CompressorSpeedManifold 0.3
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 220
[M-87B]
HorsePowers 900
BoostFactor 1.0
AfterburnerType 0
CompressorSteps 1
cCompressor 0
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.80
PropDiameter 3.0
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropPhiMin 18.0
PropPhiMax 42.0
PropAoA0 11.0
CompressorPMax 1.36
CompressorAltitude0 4500.0
CompressorMultiplier0 1.1
CompressorRPMP0 1500.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.36
CompressorSpeedManifold 0.3
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 220
[M-88]
HorsePowers 1100
BoostFactor 1.0
AfterburnerType 0
RPMMin 340
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.79
PropDiameter 3.0
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropPhiMin 18.0
PropPhiMax 65.0
PropAoA0 11.0
CompressorPMax 1.36
CompressorAltitude0 4000.0
CompressorMultiplier0 1.1
CompressorAltitude1 6200.0
CompressorMultiplier1 1.0
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.36
CompressorSpeedManifold 0.3
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 220
[M-90]
HorsePowers 1500
BoostFactor 1.0
WEPBoostFactor 1.16
Carburetor 1
cAfterburner 1
CompressorSteps 3
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.76
PropDiameter 3.2
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2450.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 5.0
CompressorPMax 1.55
CompressorAltitude0 200.0
CompressorMultiplier0 1.0
CompressorAltitude1 2700.0
CompressorMultiplier1 0.9
CompressorAltitude2 5200.0
CompressorMultiplier2 0.80
CompressorRPMP0 1500.0
CompressorRPMCurvature 2.0
CompressorRPMPMax 2450.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.5
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2500
DisP0y 0
DisP1x 0
DisP1y 56
TESPEED 0.01
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 210
TWATERMIN 60
TOILMAX 115
TOILMIN 40
[M-82A_I-185]
HorsePowers 1400
BoostFactor 1.0
WEPBoostFactor 1.16
Carburetor 1
cAfterburner 1
CompressorSteps 3
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.72
PropDiameter 3.2
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2450.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 5.0
CompressorPMax 1.55
CompressorAltitude0 200.0
CompressorMultiplier0 1.0
CompressorAltitude1 2700.0
CompressorMultiplier1 0.9
CompressorAltitude2 5200.0
CompressorMultiplier2 0.80
CompressorRPMP0 1500.0
CompressorRPMCurvature 2.0
CompressorRPMPMax 2450.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.5
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2500
DisP0y 0
DisP1x 0
DisP1y 56
TESPEED 0.01
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 210
TWATERMIN 60
TOILMAX 115
TOILMIN 40
[M-71]
HorsePowers 1725
BoostFactor 1.0
WEPBoostFactor 1.16
Carburetor 1
cAfterburner 1
CompressorSteps 3
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.76
PropDiameter 3.25
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2450.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 5.0
CompressorPMax 1.55
CompressorAltitude0 200.0
CompressorMultiplier0 1.0
CompressorAltitude1 2700.0
CompressorMultiplier1 0.95
CompressorAltitude2 5200.0
CompressorMultiplier2 0.85
CompressorRPMP0 1500.0
CompressorRPMCurvature 2.0
CompressorRPMPMax 2450.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.5
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2500
DisP0y 0
DisP1x 0
DisP1y 56
TESPEED 0.01
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 210
TWATERMIN 60
TOILMAX 115
TOILMIN 40


Сюда правда почему-то 9 и 18 цилиндровые звезды попали... УНВП :)

[Generic]
Type Radial
Autonomous 1
Cylinders 14
Carburetor 1
Direction Right
TowFactor 1.0
PropMass 145.0
EngineI 1.0
EngineAcceleration 3.0
Extinguishers 0
CompressorType 1
CompressorSteps 2
CompressorPAt0 0.55
AfterburnerType 0
MixerType 0
MixerAltitude 13000
cThrottle 1
cAfterburner 0
cProp 1
cMix 0
cMagneto 1
cCompressor 0
cFeather 0
cRadiator 1
TESPEED 0.01
TWATERMAXRPM 90
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 128
TOILMIN 40
SoundName db605
PropName middle
StartStopName std_e
[BMW801C-1]
HorsePowers 1400
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2300
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.72
PropDiameter 3.3
PropAnglerType 8
PropAnglerSpeed 0.08
PropAnglerMinParam 1700
PropAnglerMaxParam 2400
PropPhiMin 19.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.32
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.00
CompressorAltitude1 5000.0
CompressorMultiplier1 0.94
CompressorRPMP0 2000.0
CompressorRPMPMax 2700.0
CompressorMaxATARPM 1.32
CompressorSpeedManifold 0.62
CompressorRPM0 450
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.10
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM7 2400
CompressorATA7 1.27
CompressorRPM8 2550
CompressorATA8 1.30
CompressorRPM9 2600
CompressorATA9 1.32
CompressorRPM4 2700
CompressorATA4 1.32
DisP0x 2500
DisP0y 05
DisP1x 0
DisP1y 48
TOILINMAXRPM 80
TOILOUTMAXRPM 110
MAXRPMTIME 45
TOILMAX 114
[BMW801C-2]
HorsePowers 1420
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2300
RPMMax 2400
RPMMaxAllowed 2700
Reductor 0.72
PropDiameter 3.3
PropAnglerType 8
PropAnglerSpeed 0.08
PropAnglerMinParam 1700
PropAnglerMaxParam 2400
PropPhiMin 19.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.32
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.00
CompressorAltitude1 5000.0
CompressorMultiplier1 0.94
CompressorRPMP0 2000.0
CompressorRPMPMax 2700.0
CompressorMaxATARPM 1.32
CompressorSpeedManifold 0.62
CompressorRPM0 450
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.10
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM7 2400
CompressorATA7 1.27
CompressorRPM8 2550
CompressorATA8 1.30
CompressorRPM9 2600
CompressorATA9 1.32
CompressorRPM4 2700
CompressorATA4 1.32
DisP0x 2500
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801D-2_A4]
HorsePowers 1460
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2900
Reductor 0.72
PropDiameter 3.3
PropAnglerType 8
PropAnglerSpeed 0.08
PropAnglerMinParam 1700
PropAnglerMaxParam 2400
PropPhiMin 19.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.00
CompressorAltitude1 5000.0
CompressorMultiplier1 0.94
CompressorRPMP0 2000.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.62
CompressorRPM0 450
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
DisP0x 2500
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801D-2_A5]
HorsePowers 1460
BoostFactor 1.1
WEPBoostFactor 1.035
cAfterburner 1
AfterburnerType 6
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 3100
Reductor 0.72
PropDiameter 3.27
PropAnglerType 8
PropAnglerSpeed 0.08
PropAnglerMinParam 1700
PropAnglerMaxParam 2400
PropAnglerAfterburnerParam 2700
PropPhiMin 19.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.00
CompressorAltitude1 5100.0
CompressorMultiplier1 0.90
CompressorRPMP0 2000.0
CompressorRPMPMax 2701.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
DisP0x 2700
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801D-2_A5_165ATA]
HorsePowers 1460
BoostFactor 1.1
WEPBoostFactor 1.10
cAfterburner 1
AfterburnerType 6
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 3100
Reductor 0.72
PropDiameter 3.27
PropAnglerType 8
PropAnglerSpeed 0.08
PropAnglerMinParam 1700
PropAnglerMaxParam 2400
PropAnglerAfterburnerParam 2700
PropPhiMin 19.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.65
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.00
CompressorAltitude1 5100.0
CompressorMultiplier1 0.90
CompressorRPMP0 2000.0
CompressorRPMPMax 2701.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.32
DisP0x 2700
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801D-2_A8]
HorsePowers 1460
BoostFactor 1.2
WEPBoostFactor 1.17
cAfterburner 1
AfterburnerType 6
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3150
Reductor 0.72
PropDiameter 3.2
PropAnglerType 8
PropAnglerSpeed 0.10
PropAnglerMinParam 1700
PropAnglerMaxParam 2700
PropPhiMin 19.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.65
Voptimal 360.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.0
CompressorAltitude1 5100.0
CompressorMultiplier1 0.90
CompressorRPMP0 2000.0
CompressorRPMPMax 2701.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.65
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.32
DisP0x 2700
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801D-2_A9]
HorsePowers 1650
BoostFactor 1.1
WEPBoostFactor 1.12
cAfterburner 1
AfterburnerType 6
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3150
Reductor 0.72
PropDiameter 3.2
PropAnglerType 8
PropAnglerSpeed 0.10
PropAnglerMinParam 1700
PropAnglerMaxParam 2700
PropPhiMin 20.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.75
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.00
CompressorAltitude1 4800.0
CompressorMultiplier1 0.90
CompressorRPMP0 2000.0
CompressorRPMPMax 2701.0
CompressorMaxATARPM 1.65
CompressorSpeedManifold 0.65
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.45
DisP0x 2700
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801D-2_F8]
HorsePowers 1460
BoostFactor 1.2
WEPBoostFactor 1.17
cAfterburner 1
AfterburnerType 6
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3150
Reductor 0.72
PropDiameter 3.2
PropAnglerType 8
PropAnglerSpeed 0.10
PropAnglerMinParam 1700
PropAnglerMaxParam 2700
PropPhiMin 20.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.65
Voptimal 340.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.0
CompressorAltitude1 5100.0
CompressorMultiplier1 0.90
CompressorRPMP0 2000.0
CompressorRPMPMax 2701.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.65
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.32
DisP0x 2700
DisP0y 05
DisP1x 0
DisP1y 48
[Ha-45-21]
HorsePowers 1507
BoostFactor 1.1
WEPBoostFactor 1.2
cAfterburner 1
AfterburnerType 9
cMix 1
MixerType 1
MixerAltitude 2000
cCompressor 1
Cylinders 18
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2900
RPMMax 2900
RPMMaxAllowed 3350
Reductor 0.71
PropDiameter 3.10
PropAnglerType 2
PropAnglerSpeed 0.10
PropAnglerMinParam 1700
PropAnglerMaxParam 3000
PropPhiMin 20.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.679
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 0.95
CompressorAltitude1 5700.0
CompressorMultiplier1 0.96
CompressorRPMP0 2000.0
CompressorRPMPMax 3001.0
CompressorMaxATARPM 1.475
CompressorSpeedManifold 0.65
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.32
DisP0x 2900
DisP0y 05
DisP1x 0
DisP1y 48
[BMW801ML]
HorsePowers 1505
BoostFactor 1.0000001
WEPBoostFactor 1.01538
cAfterburner 0
cFeather 1
cCompressor 1
Carburetor 1
AfterburnerType 8
TowFactor 1.0
Thrust 0
RPMMin 450
RPMNom 2700
RPMMax 2550
RPMMaxAllowed 3100
Reductor 0.8692
PropDiameter 3.2
PropAnglerType 257
PropAnglerSpeed 0.08
PropAnglerMinParam 1700
PropAnglerMaxParam 2550
PropAnglerAfterburnerParam 2700
PropPhiMin 15.0
PropPhiMax 35.0
PropAoA0 11.0
CompressorPMax 1.32
Voptimal 0.0
CompressorAltitude0 900.0
CompressorMultiplier0 1.02
CompressorAltitude1 4300.0
CompressorMultiplier1 0.98
CompressorRPMP0 2000.0
CompressorRPMPMax 2701.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 1.0
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.80
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
DisP0x 2700
DisP0y 05
DisP1x 0
DisP1y 48
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 210
TWATERMIN 60
TOILMAX 128
TOILMIN 40


С-1 и С-2 это эксперимент для Фок А-1 и А-2, мотор МЛ (ставится на Do-217) - как раз пример реализации быстрого перегрева, заодно, только для этого мотора правда, ДТ циферки "воды" привели к температуре цилиндров.
Последний раз редактировалось Karabas-Barabas 11 дек 2011, 18:43, всего редактировалось 7 раз(а).
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Сообщение Karabas-Barabas » 10 дек 2011, 10:08

Для сравнения рядные с водяным охлаждением:

[Generic]
Type Inline
Autonomous 1
Cylinders 12
Carburetor 1
Direction Left
TowFactor 1.0
PropMass 130.0
EngineI 1.0
EngineAcceleration 4.0
Extinguishers 0
CompressorType 1
CompressorSteps 2
CompressorPAt0 0.4
AfterburnerType 0
MixerType 2
MixerAltitude 4500
cThrottle 1
cAfterburner 0
cProp 1
cMix 1
cMagneto 1
cCompressor 1
cFeather 0
cRadiator 1
TESPEED 0.01
TWATERMAXRPM 92
TOILINMAXRPM 70
TOILOUTMAXRPM 100
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 110
TWATERMIN 60
TOILMAX 115
TOILMIN 40
SoundName bmw6
PropName middle
StartStopName std_e
[Avia_12Ydrs]
Extinguishers 1
HorsePowers 460
BoostFactor 1.00
TowFactor 1.0
Thrust 0
cProp 0
Carburetor 3
CompressorSteps 1
cCompressor 0
EngineAcceleration 5.0
RPMMin 500
RPMNom 1650
RPMMax 2400
RPMMaxAllowed 2800
Reductor 1.57
PropDiameter 2.15
Voptimal 180.0
PropAnglerType 0
PropAnglerSpeed 0.1
PropAnglerMinParam 800.0
PropAnglerMaxParam 2400.0
PropPhiMin 20.75
PropPhiMax 20.75
PropAoA0 11.0
MixerAltitude 6000
CompressorPMax 1.158
CompressorPAt0 0.23
CompressorSpeedManifold 0.9
CompressorAltitude0 3200.0
CompressorMultiplier0 1.117
CompressorRPMP0 900.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.158
CompressorRPM0 450
CompressorATA0 0.65
FuelConsumptionP0 0.4
FuelConsumptionP05 0.5
FuelConsumptionP1 0.6
FuelConsumptionPMAX 0.6
DisP0x 2200
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 85
TOILINMAXRPM 40
TOILOUTMAXRPM 98
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 90
TWATERMIN 60
TOILMAX 110
TOILMIN 40
[M-100A]
HorsePowers 850
BoostFactor 1.07
TowFactor 1.0
Thrust 0
CompressorSteps 1
cCompressor 0
RPMMin 300
RPMNom 2200
RPMMax 2200
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.25
PropAnglerType 2
PropAnglerSpeed 0.06
PropAnglerMinParam 800.0
PropAnglerMaxParam 2200.0
PropPhiMin 19.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.1
CompressorAltitude0 4000.0
CompressorMultiplier0 1.0
CompressorRPMP0 900.0
CompressorRPMCurvature 1.0
CompressorRPMPMax 2200.0
CompressorMaxATARPM 1.1
CompressorRPM0 450
CompressorATA0 0.65
DisP0x 2200
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 124
TOILMIN 40
[Hispano-Suiza_12Y-31_Vee]
HorsePowers 850
BoostFactor 1.07
TowFactor 1.0
Thrust 0
CompressorSteps 1
cCompressor 0
RPMMin 380
RPMNom 2200
RPMMax 2200
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.06
PropAnglerMinParam 800.0
PropAnglerMaxParam 2200.0
PropPhiMin 22.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.1
CompressorAltitude0 4000.0
CompressorMultiplier0 1.1
CompressorRPMP0 900.0
CompressorRPMCurvature 1.0
CompressorRPMPMax 2200.0
CompressorMaxATARPM 1.1
CompressorRPM0 450
CompressorATA0 0.65
DisP0x 2200
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 124
TOILMIN 40
[M-103]
HorsePowers 960
BoostFactor 1.07
TowFactor 1.0
Thrust 0
CompressorSteps 1
cCompressor 0
RPMMin 380
RPMNom 2200
RPMMax 2200
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.3
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 800.0
PropAnglerMaxParam 2200.0
PropPhiMin 19.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.1
CompressorAltitude0 4000.0
CompressorMultiplier0 1.1
CompressorRPMP0 1200.0
CompressorRPMCurvature 1.0
CompressorRPMPMax 2200.0
CompressorMaxATARPM 1.1
CompressorRPM0 450
CompressorATA0 0.65
DisP0x 2200
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 124
TOILMIN 40
[M-105]
HorsePowers 1100
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.68
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 16.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 1.0
CompressorAltitude1 4000.0
CompressorMultiplier1 1.0
CompressorRPMP0 1200.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.5
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 124
TOILMIN 40
[M-105P]
HorsePowers 1100
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.67
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.07
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 17.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 1.05
CompressorAltitude1 4000.0
CompressorMultiplier1 1.05
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.3
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 113.2
TOILMIN 40
[M-105P_Pe]
HorsePowers 1100
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.8
PropDiameter 3.0
PropAnglerType 2
PropAnglerSpeed 0.07
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 17.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 1.05
CompressorAltitude1 4000.0
CompressorMultiplier1 1.05
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.3
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 113.2
TOILMIN 40
[M-105P_LAG_3]
HorsePowers 1100
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.67
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.07
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 17.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 1.05
CompressorAltitude1 4100.0
CompressorMultiplier1 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.3
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 113
TOILMIN 40
[M-105P_YAK_7B]
HorsePowers 1100
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.67
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.07
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 17.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 1.05
CompressorAltitude1 4000.0
CompressorMultiplier1 1.05
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.3
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 113.2
TOILMIN 40
[M-105P_P_40]
HorsePowers 1100
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.80
PropDiameter 2.95
PropAnglerType 2
PropAnglerSpeed 0.07
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 17.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 2000.0
CompressorMultiplier0 1.05
CompressorAltitude1 4000.0
CompressorMultiplier1 1.05
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.3
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 113.2
TOILMIN 40
[M-105PF]
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 3000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.68
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1200.0
CompressorMultiplier0 1.02
CompressorAltitude1 3300.0
CompressorMultiplier1 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.55
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 112.1
TOILMIN 40
[M-105PF_Pe]
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 3000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.8
PropDiameter 3.0
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1200.0
CompressorMultiplier0 1.02
CompressorAltitude1 3300.0
CompressorMultiplier1 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.55
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 112.1
TOILMIN 40
[M-105PF_LaGG_3]
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 3000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.70
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1200.0
CompressorMultiplier0 1.0
CompressorAltitude1 3200.0
CompressorMultiplier1 0.92
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.4
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 112.1
TOILMIN 40
[M-105PF_YAK_9]
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 3000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.68
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1200.0
CompressorMultiplier0 1.02
CompressorAltitude1 3300.0
CompressorMultiplier1 1.02
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 112.7
TOILMIN 40
[M-105PF_YAK_9D]
MixerAltitude 3000
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.68
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1200.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1200.0
CompressorMultiplier0 1.02
CompressorAltitude1 3000.0
CompressorMultiplier1 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.55
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 111.94
TOILMIN 40
[M-105PF_YAK_9T]
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 3000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.68
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1000.0
CompressorMultiplier0 1.02
CompressorAltitude1 3100.0
CompressorMultiplier1 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 112.4
TOILMIN 40
[M-105PF_YAK_9K]
HorsePowers 1180
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 3000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3200
Reductor 0.68
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 18.0
PropPhiMax 45.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1000.0
CompressorMultiplier0 1.02
CompressorAltitude1 3100.0
CompressorMultiplier1 0.95
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.427
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 112.4
TOILMIN 40
[VK-105PF2]
HorsePowers 1240
BoostFactor 1.1
TowFactor 1.0
Thrust 0
MixerAltitude 4000
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3300
Reductor 0.68
PropDiameter 3.05
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 20.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1300.0
CompressorMultiplier0 1.02
CompressorAltitude1 3100.0
CompressorMultiplier1 1.00
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.5
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 111.1
TOILMIN 40
tFuel 400.0
inSair 10.0
inSoil 1.0
inSwater 15.0
outSair 10.0
outSoil 100.0
outSwater 1000.0
[VK-107A]
HorsePowers 1500
BoostFactor 1.1
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3300
Reductor 0.70
PropDiameter 3.15
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 20.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1500.0
CompressorMultiplier0 1.02
CompressorAltitude1 3900.0
CompressorMultiplier1 1.05
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.5
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 111.1
TOILMIN 40
[VK-107R]
HorsePowers 1650
BoostFactor 1.0
TowFactor 1.0
Thrust 0
RPMMin 500
RPMNom 2700
RPMMax 2700
RPMMaxAllowed 3300
Reductor 0.7
PropDiameter 3.20
PropAnglerType 2
PropAnglerSpeed 0.09
PropAnglerMinParam 1000.0
PropAnglerMaxParam 2700.0
PropPhiMin 20.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.5
Voptimal 340.0
CompressorAltitude0 1750.0
CompressorMultiplier0 1.09
CompressorAltitude1 5100.0
CompressorMultiplier1 1.08
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 3000.0
CompressorMaxATARPM 1.5
CompressorSpeedManifold 0.6
CompressorRPM0 450
CompressorATA0 0.7
DisP0x 2600
DisP0y 2
DisP1x 0
DisP1y 135
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 100
TWATERMIN 60
TOILMAX 111.1
TOILMIN 40


Зачем-то некоторые М-105 продублированы для разных самолетов, наверно планировалась более тонкая настройка.

[Generic]
Type Inline
Autonomous 1
Cylinders 12
Carburetor 2
Direction Right
TowFactor 1.0
PropMass 150.0
EngineI 1.0
EngineAcceleration 4.0
Extinguishers 0
CompressorType 2
CompressorSteps 1
AfterburnerType 0
MixerType 0
MixerAltitude 13000
cThrottle 1
cAfterburner 0
cProp 1
cMix 0
cMagneto 1
cCompressor 0
cFeather 0
cRadiator 1
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 124
TOILMIN 40
SoundName db605
PropName middle
StartStopName std_e
[DB601A]
HorsePowers 1045
BoostFactor 1.1
TowFactor 0.1
Thrust 0
RPMMin 400
RPMNom 2300
RPMMax 2300
RPMMaxAllowed 2650
Reductor 0.70
PropDiameter 3.25
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2300.0
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 340.0
CompressorAltitude0 4300.0
CompressorMultiplier0 0.99
CompressorRPMP0 2000.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2200
CompressorATA5 1.15
CompressorRPM6 2300
CompressorATA6 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 94.5
TWATERMIN 60
TOILMAX 113
TOILMIN 40
tFuel 400.0
inSair 10.0
inSoil 1.0
inSwater 20.0
outSair 0.5
outSoil 3.0
outSwater 30.0
[DB601A_MC]
HorsePowers 1045
BoostFactor 1.1
TowFactor 0.1
Thrust 0
RPMMin 400
RPMNom 2300
RPMMax 2300
RPMMaxAllowed 2650
Reductor 0.75
PropDiameter 3.20
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2300.0
PropPhiMin 18.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 340.0
CompressorAltitude0 4200.0
CompressorMultiplier0 1.05
CompressorRPMP0 2000.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2200
CompressorATA5 1.15
CompressorRPM6 2300
CompressorATA6 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 94.5
TWATERMIN 60
TOILMAX 113
TOILMIN 40
tFuel 400.0
inSair 10.0
inSoil 1.0
inSwater 20.0
outSair 0.5
outSoil 3.0
outSwater 30.0
[DB601A_7Z]
HorsePowers 1045
BoostFactor 1.1
WEPBoostFactor 1.0
TowFactor 0.1
Thrust 0
cAfterburner 1
AfterburnerType 2
RPMMin 400
RPMNom 2300
RPMMax 2300
RPMMaxAllowed 2650
Reductor 0.70
PropDiameter 3.25
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2300.0
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
CompressorAltitude0 5000.0
CompressorMultiplier0 0.95
CompressorRPMP0 2000.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.8
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2200
CompressorATA5 1.15
CompressorRPM6 2300
CompressorATA6 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 94.5
TWATERMIN 60
TOILMAX 113
TOILMIN 40
[DB601N]
HorsePowers 1100
BoostFactor 1.1
Thrust 0
RPMMin 400
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2900
Reductor 0.74
PropDiameter 3.05
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
CompressorAltitude0 4400.0
CompressorMultiplier0 1.01
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2600.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.55
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 116.5
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB601N_F4]
HorsePowers 1120
BoostFactor 1.15
Thrust 0
RPMMin 400
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2900
Reductor 0.74
PropDiameter 3.05
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
CompressorAltitude0 5000.0
CompressorMultiplier0 1.0
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2600.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.55
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 116.5
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB601EZ]
HorsePowers 1120
BoostFactor 1.15
WEPBoostFactor 1.0
TowFactor 0.1
Thrust 0
cAfterburner 1
AfterburnerType 2
RPMMin 400
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2900
Reductor 0.74
PropDiameter 3.05
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
CompressorAltitude0 6200.0
CompressorMultiplier0 0.96
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.3
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 116.5
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB601N_110]
HorsePowers 1100
BoostFactor 1.1
Thrust 0
cFeather 1
RPMMin 400
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2900
Reductor 0.70
PropDiameter 3.05
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.3
CompressorAltitude0 7500.0
CompressorMultiplier0 0.8
CompressorRPMP0 1500.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2600.0
CompressorMaxATARPM 1.3
CompressorRPM0 400
CompressorATA0 0.6
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 116.5
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605A]
HorsePowers 1400
BoostFactor 1.1
Thrust 0
EngineAcceleration 5.0
RPMMin 500
RPMNom 2800
RPMMax 2800
RPMMaxAllowed 3050
Reductor 0.72
PropDiameter 3.09
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 330.0
CompressorAltitude0 6200.0
CompressorMultiplier0 0.96
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.5
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM7 2600
CompressorATA7 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 120
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605B]
HorsePowers 1400
BoostFactor 1.1
Thrust 0
EngineAcceleration 5.0
cFeather 1
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2900
Reductor 0.67
PropDiameter 3.22
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropPhiMin 13.5
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.4
CompressorAltitude0 7000.0
CompressorMultiplier0 0.80
CompressorRPMP0 1500.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2600.0
CompressorMaxATARPM 1.4
CompressorRPM0 400
CompressorATA0 0.6
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605B_MC]
HorsePowers 1400
BoostFactor 1.1
Thrust 0
EngineAcceleration 5.0
cFeather 1
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2900
Reductor 0.72
PropDiameter 3.20
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropPhiMin 15.5
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.4
CompressorAltitude0 7000.0
CompressorMultiplier0 0.89
CompressorRPMP0 1500.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2600.0
CompressorMaxATARPM 1.4
CompressorRPM0 400
CompressorATA0 0.6
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 112
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605D]
HorsePowers 1400
BoostFactor 1.1
Thrust 0
EngineAcceleration 5.0
RPMMin 500
RPMNom 2800
RPMMax 2800
RPMMaxAllowed 3100
Reductor 0.72
PropDiameter 3.12
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.42
CompressorAltitude0 6200.0
CompressorMultiplier0 0.86
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.5
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM7 2600
CompressorATA7 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605DB]
HorsePowers 1400
BoostFactor 1.075
WEPBoostFactor 1.155
Thrust 0
cAfterburner 1
AfterburnerType 1
EngineAcceleration 5.0
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.22
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2800
PropPhiMin 16.0
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.8
CompressorAltitude0 7500.0
CompressorMultiplier0 0.84
CompressorRPMP0 1600.0
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.4
CompressorSpeedManifold 0.8
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.78
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 2000
CompressorATA3 1.15
CompressorRPM4 2400
CompressorATA4 1.35
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605DCM]
HorsePowers 1400
BoostFactor 1.08
WEPBoostFactor 1.22
Thrust 0
cAfterburner 1
AfterburnerType 1
EngineAcceleration 5.0
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.27
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.8
CompressorAltitude0 6000.0
CompressorMultiplier0 1.04
CompressorRPMP0 1600.0
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.45
CompressorSpeedManifold 1.0
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.78
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 2000
CompressorATA3 1.15
CompressorRPM4 2400
CompressorATA4 1.35
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605DCM_C3]
HorsePowers 1450
BoostFactor 1.08
WEPBoostFactor 1.24
Thrust 0
cAfterburner 1
AfterburnerType 1
EngineAcceleration 5.0
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.27
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.98
CompressorAltitude0 6000.0
CompressorMultiplier0 1.04
CompressorRPMP0 1600.0
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.45
CompressorSpeedManifold 1.0
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.78
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 2000
CompressorATA3 1.15
CompressorRPM4 2400
CompressorATA4 1.35
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605ASM]
HorsePowers 1400
BoostFactor 1.12
WEPBoostFactor 1.13
Thrust 0
cAfterburner 1
AfterburnerType 1
EngineAcceleration 5.0
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.22
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.80
CompressorAltitude0 5800.0
CompressorMultiplier0 0.91
CompressorRPMP0 2000.0
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.45
CompressorSpeedManifold 0.8
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.78
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB605AM]
HorsePowers 1400
BoostFactor 1.09
WEPBoostFactor 1.16
Thrust 0
cAfterburner 1
AfterburnerType 1
EngineAcceleration 5.0
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.22
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.70
CompressorAltitude0 6300.0
CompressorMultiplier0 0.87
CompressorRPMP0 2000.0
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.8
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.78
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB603L]
HorsePowers 1690
BoostFactor 1.08
WEPBoostFactor 1.15
Thrust 0
cAfterburner 1
AfterburnerType 1
EngineAcceleration 5.0
RPMMin 500
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 3100
Reductor 0.70
PropDiameter 3.22
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2700
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.80
CompressorAltitude0 9200.0
CompressorMultiplier0 0.72
CompressorRPMP0 2000.0
CompressorRPMPMax 2700.0
CompressorMaxATARPM 1.45
CompressorSpeedManifold 0.8
CompressorRPM0 400
CompressorATA0 0.65
CompressorRPM1 1200
CompressorATA1 0.78
CompressorRPM2 1400
CompressorATA2 0.85
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 115
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[IAR-1000A]
HorsePowers 930
BoostFactor 1.1
TowFactor 0.1
Thrust 0
Direction Left
RPMMin 400
RPMNom 2300
RPMMax 2300
RPMMaxAllowed 2700
Reductor 0.80
PropDiameter 3.1
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 800.0
PropAnglerMaxParam 2300.0
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.40
Voptimal 340.0
CompressorAltitude0 6200.0
CompressorMultiplier0 0.75
CompressorRPMP0 2000.0
CompressorRPMPMax 2400.0
CompressorMaxATARPM 1.40
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2200
CompressorATA5 1.15
CompressorRPM6 2300
CompressorATA6 1.23
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 94.5
TWATERMIN 60
TOILMAX 113
TOILMIN 40
[Ha-40]
HorsePowers 1045
BoostFactor 1.1
TowFactor 0.1
Thrust 0
RPMMin 400
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2850
Reductor 0.70
PropDiameter 3.10
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 800.0
PropAnglerMaxParam 2600.0
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 340.0
CompressorAltitude0 4100.0
CompressorMultiplier0 1.04
CompressorRPMP0 2000.0
CompressorRPMPMax 2601.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1900
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.15
CompressorRPM6 2600
CompressorATA6 1.30
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 94.5
TWATERMIN 60
TOILMAX 113
TOILMIN 40
[Ha-40e]
HorsePowers 1045
BoostFactor 1.1
TowFactor 0.1
Thrust 0
Extinguishers 4
RPMMin 400
RPMNom 2600
RPMMax 2600
RPMMaxAllowed 2850
Reductor 0.70
PropDiameter 3.10
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 800.0
PropAnglerMaxParam 2600.0
PropPhiMin 16.0
PropPhiMax 50.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 340.0
CompressorAltitude0 4100.0
CompressorMultiplier0 1.04
CompressorRPMP0 2000.0
CompressorRPMPMax 2601.0
CompressorMaxATARPM 1.30
CompressorSpeedManifold 0.6
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1900
CompressorATA4 0.92
CompressorRPM5 2400
CompressorATA5 1.15
CompressorRPM6 2600
CompressorATA6 1.30
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 80
TESPEED 0.01
TWATERMAXRPM 75
TOILINMAXRPM 70
TOILOUTMAXRPM 93
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 94.5
TWATERMIN 60
TOILMAX 113
TOILMIN 40
[DB603E]
HorsePowers 1770
BoostFactor 1.15
Thrust 0
EngineAcceleration 5.0
Extinguishers 5
cFeather 1
RPMMin 500
RPMNom 2800
RPMMax 2800
RPMMaxAllowed 3050
Reductor 0.78
PropDiameter 3.10
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 330.0
CompressorAltitude0 5500.0
CompressorMultiplier0 1.06
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.5
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM7 2600
CompressorATA7 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 120
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[DB603E_rear]
HorsePowers 1770
BoostFactor 1.15
Thrust 0
EngineAcceleration 5.0
Direction Left
Extinguishers 5
cFeather 1
RPMMin 500
RPMNom 2800
RPMMax 2800
RPMMaxAllowed 3050
Reductor 0.78
PropDiameter 3.10
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2800
PropPhiMin 16.00
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.42
Voptimal 330.0
CompressorAltitude0 5500.0
CompressorMultiplier0 1.06
CompressorRPMP0 2000.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.42
CompressorSpeedManifold 0.5
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM7 2600
CompressorATA7 1.30
DisP0x 2400
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 280
MINRPMTIME 999
TWATERMAX 120
TWATERMIN 60
TOILMAX 125
TOILMIN 40
[Fiat_RA1050_RC58]
HorsePowers 1145
BoostFactor 1.0
WEPBoostFactor 1.0
Thrust 0
cAfterburner 0
AfterburnerType 12
EngineAcceleration 5.0
Extinguishers 0
RPMMin 500
RPMNom 2100
RPMMax 2600
RPMMaxAllowed 3050
Reductor 0.9
PropDiameter 2.66
Voptimal 266.0
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2600
PropAnglerAfterburnerParam 2800
PropPhiMin 15.5
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.3
CompressorSpeedManifold 0.6
CompressorAltitude0 6200.0
CompressorMultiplier0 0.89
CompressorRPMP0 1500.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2600.0
CompressorMaxATARPM 1.30
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM6 2600
CompressorATA6 1.30
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 125
TWATERMIN 60
TOILMAX 135
TOILMIN 40
[Fiat_RA1050_RC58_late]
HorsePowers 1145
BoostFactor 1.21
WEPBoostFactor 1.0
Thrust 0
cAfterburner 0
AfterburnerType 12
EngineAcceleration 5.0
Extinguishers 0
RPMMin 500
RPMNom 2100
RPMMax 2800
RPMMaxAllowed 3050
Reductor 0.9
PropDiameter 2.66
Voptimal 266.0
PropAnglerType 7
PropAnglerSpeed 0.08
PropAnglerMinParam 1650
PropAnglerMaxParam 2800
PropAnglerAfterburnerParam 2800
PropPhiMin 15.5
PropPhiMax 55.0
PropAoA0 11.0
CompressorPMax 1.3
CompressorSpeedManifold 0.6
CompressorAltitude0 6200.0
CompressorMultiplier0 0.89
CompressorRPMP0 1500.0
CompressorRPMCurvature 3.7
CompressorRPMPMax 2800.0
CompressorMaxATARPM 1.42
CompressorRPM0 400
CompressorATA0 0.6
CompressorRPM1 1200
CompressorATA1 0.75
CompressorRPM2 1400
CompressorATA2 0.80
CompressorRPM3 1600
CompressorATA3 0.86
CompressorRPM4 1800
CompressorATA4 0.92
CompressorRPM5 2100
CompressorATA5 1.05
CompressorRPM6 2300
CompressorATA6 1.15
CompressorRPM6 2600
CompressorATA6 1.30
DisP0x 2450
DisP0y 0
DisP1x 0
DisP1y 12
TESPEED 0.01
TWATERMAXRPM 95
TOILINMAXRPM 70
TOILOUTMAXRPM 107
MAXRPMTIME 300
MINRPMTIME 999
TWATERMAX 126
TWATERMIN 60
TOILMAX 136
TOILMIN 40
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Сообщение Pegas-G1 » 11 дек 2011, 18:38

а про мотор М-82фн есть такая портянка?
Аватара пользователя
Pegas-G1
Путешественник
Путешественник
 
Сообщения: 288
Зарегистрирован:
20 июн 2008, 22:16
Has thanked: 6 times
Have thanks: 10 times

Сообщение OLORIN » 11 дек 2011, 20:31

так выложили же. Смотри в файле с М-82. Он относится по сути ко всем советским радиальным движкам.
Да, у нас тут провинция, до сих пор с бабами трахаемся (с) Некто с Питера ;)
Аватара пользователя
OLORIN
Местный
Местный
 
Сообщения: 1427
Зарегистрирован:
02 фев 2008, 22:26
Has thanked: 0 time
Have thanks: 2 times

Сообщение Karabas-Barabas » 21 дек 2011, 20:55

Все ясно, народу даже на выложенное посмотреть самим лениво.

Вот пример, на что смотреть.

Управление элеронами:

case 4:
if (getEnergyPastArmor(1.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.25F) {
FM.AS.setControlsDamage(shot.initiator, 0);
debuggunnery("Ailerons Controls Out..");
}


case 4:
if (getEnergyPastArmor(1.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 0);
mydebuggunnery("Ailerons Controls Out..");
}


Наверняка у Ю-88 управление элеронами было сделано более стойким к повреждениям, размещено по-другому и др. конструктивные решения, но факт - разница в 2 раза. Хотя в реале может быть и больше была.


Киль:

if ((string.endsWith("ta1") || string.endsWith("ta2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("Tail1") > 2
&& getEnergyPastArmor((19.9F
/ (float) Math.sqrt(v1.y * v1.y
+ v1.z * v1.z)),
shot) > 0.0F) {
debuggunnery("*** Tail1 Spars Broken in Half..");


if ((string.endsWith("ta1") || string.endsWith("ta2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("Tail1") > 2
&& getEnergyPastArmor((15.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
mydebuggunnery("*** Tail1 Spars Broken in Half..");


Разница в 25%. ХЗ, может так и было на самом деле...
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Сообщение =RUDOLF= » 21 дек 2011, 23:29

А ничо что Ju-88 - это пикировщик, предназначенный для работы в гораздо большей нагрузке, чем линейщик Не-111 ?
Может быть с этим и связано то что эти величины больше?

И не лениво смотреть, просто я не понимаю (и думаю тут многие на форуме такие же) что это за цифра < 0.12F) и ((15.9F и на что эти цифры влияют.
Что это прочность, устойчивость к перегрузке, и т.п. (и в чем измеряется)?
Вот это объясни пожалуйста!


С уважением.

А просто сидеть и сравнивать циферьки и находить отличия (как в той игре - "найди десять отличий") - это и я могу.


Хорошая мысля приходит опосля!

Я тут подумал, а что если сравнить эти величины не между разными самолетами, а между J-88A-4 в нынешнем патче 4.10.1 и в патче 4.09 и мы тогда точно узнаем - накрутили ли жужу или просто её прочность обусловлена более проработанной моделью повреждений!

Сравни пожалуйста, Карабас!
1/JGr125Rudolf
Аватара пользователя
=RUDOLF=
Новичок
Новичок
 
Сообщения: 100
Зарегистрирован:
26 сен 2010, 04:59
Has thanked: 18 times
Have thanks: 4 times

Сообщение =RF=ODESSA » 22 дек 2011, 10:24

Давно хотел узнать мучавший меня вопрос. В патче 4.10 изменилось по моим субьективным ощущениям управление Спитом. Он стал менее устойчивым, ведет себя как Ишачек, если отпускаю ручку управления норовит задирать нос и сваливаться в штопор. Вы не могли бы подсказать, что же в нем изменилось?
Аватара пользователя
=RF=ODESSA
Школота
Школота
 
Сообщения: 2
Зарегистрирован:
22 дек 2011, 09:40
Has thanked: 0 time
Have thanks: 0 time

Сообщение Karabas-Barabas » 22 дек 2011, 16:32

=RUDOLF= писал(а):А ничо что Ju-88 - это пикировщик, предназначенный для работы в гораздо большей нагрузке, чем линейщик Не-111 ?
Может быть с этим и связано то что эти величины больше?


Бессмысленно спорить на эту тему - у нас нет таких данных ни по одному самолету.

=RUDOLF= писал(а):И не лениво смотреть, просто я не понимаю (и думаю тут многие на форуме такие же) что это за цифра < 0.12F) и ((15.9F и на что эти цифры влияют.
Что это прочность, устойчивость к перегрузке, и т.п. (и в чем измеряется)?
Вот это объясни пожалуйста!


Чего там объяснять, это "эмпирический коэффициент прочности" остальная же часть формулы одинаковая для обоих самолетов.
Для Не-111 МГ его "вычислили" очевидно экспериментально и для каждого агрегата отдельно, а для Ю-88 ДТ скорее всего проставили циферки "от балды", просто как им виделось, наверно.

=RUDOLF= писал(а):Хорошая мысля приходит опосля!

Я тут подумал, а что если сравнить эти величины не между разными самолетами, а между J-88A-4 в нынешнем патче 4.10.1 и в патче 4.09 и мы тогда точно узнаем - накрутили ли жужу или просто её прочность обусловлена более проработанной моделью повреждений!

Сравни пожалуйста, Карабас!


Это невозможно, в 4.09 у Ю-88 была упрощенная модель повреждений версии 2001 года.
Я же об этом, в этой же ветке написал, в самом начале, с кодом обеих ДМ. (говорю же - никто, ничего не читает и ничего не смотрит :)
ДТ сделали новую на основе модели Не-111, т.к. они очень похожи по агрегатам, по размерениям, а моторы просто одинаковые стоят.
Почему этого не сделали сами МГ, когда вставляли в игру Ю-88, учитывая, что к этому времени уже был Хенкель, А-20, Б-25, Пе-2 и многие др., да и Ил-4 с Сб-2 нелетабы уже имели новую ДМ, наверно было лениво что-то делать для Ила...
Последний раз редактировалось Karabas-Barabas 22 дек 2011, 16:48, всего редактировалось 4 раз(а).
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times

Сообщение Karabas-Barabas » 22 дек 2011, 16:37

=RF=ODESSA писал(а):Давно хотел узнать мучавший меня вопрос. В патче 4.10 изменилось по моим субьективным ощущениям управление Спитом. Он стал менее устойчивым, ведет себя как Ишачек, если отпускаю ручку управления норовит задирать нос и сваливаться в штопор. Вы не могли бы подсказать, что же в нем изменилось?


Извини, Спиты не интересуют.
А потому что там сделали, хоть метлу в ступе... :)
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times

Сообщение Pegas-G1 » 22 дек 2011, 18:25

Читать то я читаю но где тут про перегрев сообразить не могу

[ASh-82FN]
HorsePowers 1630
BoostFactor 1.0001
WEPBoostFactor 1.112
AfterburnerType 8
RPMMin 350
RPMNom 2400
RPMMax 2400
RPMMaxAllowed 2800
Reductor 0.72
PropDiameter 3.3
PropAnglerType 2
PropAnglerSpeed 0.08
PropAnglerMinParam 900.0
PropAnglerMaxParam 2400.0
PropAnglerAfterburnerParam 2500.0
PropPhiMin 22.0
PropPhiMax 42.0
PropAoA0 11.0
CompressorPMax 1.6
Voptimal 350.0
CompressorAltitude0 2000.0
CompressorMultiplier0 0.94
CompressorAltitude1 4800.0
CompressorMultiplier1 0.81
CompressorRPMP0 1500.0
CompressorRPMCurvature 0.0
CompressorRPMPMax 2500.0
CompressorMaxATARPM 1.35
CompressorSpeedManifold 0.8
CompressorRPM0 450
CompressorATA0 0.7
CompressorRPM1 1700
CompressorATA1 1.08
CompressorRPM2 2100
CompressorATA2 1.15
CompressorRPM3 2200
CompressorATA3 1.22
CompressorRPM4 2400
CompressorATA4 1.35
DisP0x 2550
DisP0y 0
DisP1x 0
DisP1y 56
MAXRPMTIME 250
tFuel 400.0
inSair 200.0
inSoil 1.0
inSwater 0.0
outSair 1100.0
outSoil 100.0
outSwater 0.0

Строки как в других моторах
TWATERMAXRPM 205
TOILINMAXRPM 70
TOILOUTMAXRPM 90
MAXRPMTIME 400
MINRPMTIME 999
TWATERMAX 215
TWATERMIN 60
TOILMAX 115
TOILMIN 40
даже с лупой не нашел
Аватара пользователя
Pegas-G1
Путешественник
Путешественник
 
Сообщения: 288
Зарегистрирован:
20 июн 2008, 22:16
Has thanked: 6 times
Have thanks: 10 times

Сообщение Karabas-Barabas » 22 дек 2011, 21:09

TWATERMAXRPM 205 - температура воды (цилиндров воздушника в данном случае) на выходе из двигателя при макс оборотах
TOILINMAXRPM 70 - темп масла на входе в мотор при максимальных оборотах
TOILOUTMAXRPM 90 - темп масла на выходе из мотора на макс оборотах
MAXRPMTIME 400 - время работы мотора на максимальных оборотах до появления надписи "перегрев", так же определяет время до начала деградации мотора (падение мощности и т.п.) после перегрева, если продолжить лететь на максимальных оборотах
MINRPMTIME 999 - время для переохлаждения, т.е. фактически отключено, не знаю с какой версии это сделано, давно очень
TWATERMAX 215 - максимальная температура воды (цилиндров) при достижении которой появляется надпись "перегрев"
TWATERMIN 60 - это для переохлаждения
TOILMAX 115 - макс темп масла при которой появляется надпись "перегрев"
TOILMIN 40 - для переохлаждения

Скорость нагрева воды/цилиндров, масла зависит от разницы между температурой на макс оборотах и максимальной температурой, от оборотов, скорости "набегающего потока воздуха" и его количества - степени открытия створок, надо посмотреть внимательно, но по-моему расчет количества охлаждающего воздуха там упрощенный, площадь не считается, только % открытия створок, а вот температура внешнего воздуха в расчетах есть, так что - чем выше, тем лучше.

/* Engines - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package com.maddox.il2.fm;
import com.maddox.JGP.Vector3f;
import com.maddox.il2.ai.Airport;
import com.maddox.il2.ai.World;
import com.maddox.il2.engine.Eff3DActor;
import com.maddox.il2.engine.Engine;
import com.maddox.il2.engine.Hook;
import com.maddox.il2.game.HUD;
import com.maddox.rts.SectFile;
import com.maddox.rts.Time;

public class Engines extends FMMath
{
float[] Arm;
float[] Power;
float Power100;
float PowerSET;
float Nominal;
float Reductor;
public float W0;
public float Wx;
public float propAOA;
float Mp;
float Ix;
float Kh0 = 0.0F;
float[] kh;
float HofVmax = 100.0F;
float[] khAlt;
public float PropDiam;
public int PropDir;
public boolean RadiatorOK = true;
public boolean JET;
public boolean bInline = false;
public boolean bAutonomous = false;
public boolean bRan = false;
public byte magneto = 0;
private byte stage = 0;
private byte oldStage = 0;
private long timer = 0L;
private long given = 4611686018427387903L;
private static boolean bTFirst;
private float boostFactor = 1.0F;
private FlightModel fmdreference = null;
public float TOilIn = 0.0F;
public float TOilOut = 0.0F;
public float TWaterOut = 0.0F;
private float tWaterCritMin;
private float tWaterCritMax;
private float tOilCritMin;
private float tOilCritMax;
private float tWaterMaxRPM;
public float tOilOutMaxRPM;
private float tOilInMaxRPM;
private float tChangeSpeed;
private float timeOverheat;
private float timeUnderheat;
private float timeCounter;
private static int heatStringID = -1;
public FmSounds isnd = null;
public static final int PROP_LEFT = 1;
public static final int PROP_RIGHT = 2;
public static final int PROP_AUTO = 0;
private static Vector3f L = new Vector3f(0.0F, 0.0F, 0.0F);
private static float k;
private static float ktmp;
private static float P;
private static float Pow;

public void set(Engines engines_0_) {
Arm = new float[engines_0_.Arm.length];
Power = new float[engines_0_.Arm.length];
for (int i = 0; i < engines_0_.Arm.length; i++) {
Arm[i] = engines_0_.Arm[i];
Power[i] = engines_0_.Power[i];
}
Power100 = engines_0_.Power100;
PowerSET = engines_0_.PowerSET;
Nominal = engines_0_.Nominal;
Reductor = engines_0_.Reductor;
W0 = engines_0_.W0;
Mp = engines_0_.Mp;
Ix = engines_0_.Ix;
PropDiam = engines_0_.PropDiam;
PropDir = engines_0_.PropDir;
Wx = engines_0_.Wx;
Kh0 = engines_0_.Kh0;
kh = engines_0_.kh;
HofVmax = engines_0_.HofVmax;
khAlt = engines_0_.khAlt;
}

public void load(SectFile sectfile) {
String string = "Engine";
if (sectfile.get(string, "Jet", 0) == 1)
JET = true;
Power = new float[Arm.length];
Power100 = sectfile.get(string, JET ? "THRUST" : "POWER", 120.0F);
if (JET)
Power100 *= 9.81F;
Nominal = sectfile.get(string, "NOMINAL", 0.0F);
for (int i = 0; i < Arm.length; i++)
Power[i] = 1.0F;
if (!JET) {
if (sectfile.get(string, "Inline", 0) == 1)
bInline = true;
if (sectfile.get(string, "Autonomous", 0) == 1)
bAutonomous = true;
Reductor = sectfile.get(string, "REDUCTOR", 1.0F);
PropDiam = sectfile.get(string, "PROPELLER_DIAM", 3.0F);
String string_1_ = sectfile.get(string, "PROPELLER_DIR");
if (string_1_.endsWith("LEFT"))
PropDir = 1;
else if (string_1_.endsWith("RIGHT"))
PropDir = 2;
else
PropDir = 0;
W0 = 6.2831855F * Nominal * Reductor / 60.0F;
Mp = PropDiam * PropDiam * PropDiam;
Ix = Mp * PropDiam * PropDiam;
}
PowerSET = 0.0F;
boostFactor = sectfile.get(string, "BOOSTFACTOR", 1.0F);
tChangeSpeed = sectfile.get(string, "TESPEED", 0.01F);
tWaterMaxRPM = sectfile.get(string, "TWATERMAXRPM", 95.0F);
tOilInMaxRPM = sectfile.get(string, "TOILINMAXRPM", 70.0F);
tOilOutMaxRPM = sectfile.get(string, "TOILOUTMAXRPM", 107.0F);
timeOverheat = sectfile.get(string, "MAXRPMTIME", 120.0F);
timeUnderheat = sectfile.get(string, "MINRPMTIME", 999.0F);
tWaterCritMax = sectfile.get(string, "TWATERMAX", 115.0F);
tWaterCritMin = sectfile.get(string, "TWATERMIN", 60.0F);
tOilCritMax = sectfile.get(string, "TOILMAX", 132.0F);
tOilCritMin = sectfile.get(string, "TOILMIN", 40.0F);
timeCounter = 0.0F;
string = "Params";
boolean bool = true;
float f = sectfile.get(string, "Vmax", 0.0F) * 0.2777778F;
int i = 2;
int i_2_;
for (;;) {
if (sectfile.get(string, "VmaxH" + i, -1.0F) == -1.0F) {
i_2_ = i - 1;
break;
}
i++;
}
if (i_2_ == 1) {
kh = new float[1];
khAlt = new float[1];
khAlt[0] = sectfile.get(string, "HofVmax", 100.0F);
kh[0]
= getKforH(f, sectfile.get(string, "VmaxH", 0.0F) * 0.2777778F,
khAlt[0]);
} else {
kh = new float[i_2_];
khAlt = new float[i_2_];
for (i = 0; i < kh.length; i++) {
khAlt[i] = sectfile.get(string, "HofVmax" + (i + 1), 100.0F);
kh[i] = getKforH(f, sectfile.get(string, "VmaxH" + (i + 1),
0.0F) * 0.2777778F, khAlt[i]);
}
}
}

public void setP(float f) {
PowerSET = stage == 6 ? f : f;
}

public void setPowerReadyness(int i, float f) {
Power[i] = f;
}

public float getPower() {
float f = 0.0F;
if (Power.length < 1)
return 0.0F;
for (int i = 0; i < Power.length; i++)
f += Power[i];
return (stage == 6 ? PowerSET : 0.0F) * f / (float) Power.length;
}

public float getRPM(int i) {
if (JET) {
if (stage == 6) {
float f = PowerSET;
if (f < 0.1F)
f = 0.1F;
return f * Nominal;
}
return 0.0F;
}
float f = Wx / Reductor * 9.55F;
if (stage == 6 && f < 200.0F)
f = 200.0F;
if (Power[i] > 0.0F)
return f;
return 0.0F;
}

public float getWx(int i) {
if (JET)
return getRPM(i);
float f = Wx;
if (stage == 6 && f < 20.0F)
f = 20.0F;
if (Power[i] > 0.0F)
return f;
return 0.0F;
}

public void update(float f, FlightModel flightmodel) {
float f_3_ = Pitot.Indicator((float) flightmodel.Loc.z,
flightmodel.getSpeedKMH());
boolean bool = true;
float f_4_
= Atmosphere.temperature((float) flightmodel.Loc.z) - 273.15F;
if (stage == 6) {
float f_5_ = (1.05F
* (float) (Math.sqrt
(Math.sqrt
((double) (getPower() > 0.2F
? (getPower()
+ (float) (flightmodel.AS
.astateOilStates
[0]) * 0.33F)
: 0.2F))))
* (float) Math.sqrt(Wx / W0 > 0.75F
? (double) (Wx / W0) : 0.75)
* tOilOutMaxRPM * (bool ? 0.9F : 1.0F)
* (1.0F - f_3_ * 2.0E-4F)) + 22.0F;
if (getPower() > 1.0F)
f_5_ *= getPower();
TOilOut += (f_5_ - TOilOut) * f * tChangeSpeed;
} else {
float f_6_ = Wx / W0 * tOilOutMaxRPM * (bool ? 0.8F : 1.0F) + f_4_;
Engines engines_7_ = this;
engines_7_.TOilOut
= engines_7_.TOilOut + ((f_6_ - TOilOut) * f * tChangeSpeed
* (bInline ? 0.42F : 1.07F));
}
float f_8_;
if (bool)
f_8_ = (TOilOut * (0.75F - f_3_ * 5.0E-4F)
+ f_4_ * (0.25F + f_3_ * 5.0E-4F));
else
f_8_ = (TOilOut * (0.8F - f_3_ * 5.0E-4F)
+ f_4_ * (0.2F + f_3_ * 5.0E-4F));
TOilIn += (f_8_ - TOilIn) * f * tChangeSpeed * 0.5F;
f_8_ = (1.05F * (float) Math.sqrt((double) getPower())
* (1.0F - f_3_ * 2.0E-4F) * tWaterMaxRPM) + f_4_;
Engines engines_9_ = this;
engines_9_.TWaterOut
= engines_9_.TWaterOut + ((f_8_ - TWaterOut) * f * tChangeSpeed
* (TWaterOut < 50.0F ? 0.4F : 1.0F)
* (1.0F - f_3_ * 6.0E-4F));
if (TOilOut < f_4_)
TOilOut = f_4_;
if (TOilIn < f_4_)
TOilIn = f_4_;
if (TWaterOut < f_4_)
TWaterOut = f_4_;
if (World.cur().diffCur.Engine_Overheat
&& (TWaterOut > tWaterCritMax || TOilOut > tOilCritMax)) {
if (heatStringID == -1)
heatStringID = HUD.makeIdLog();
HUD.log(heatStringID, "EngineOverheat");
timeCounter += f;
if (timeCounter > timeOverheat) {
for (int i = 0; i < Power.length; i++) {
if (Power[i] > 0.33F) {
Power[i] -= 0.00666F * f;
tOilCritMax
-= 0.00666F * f * (tOilCritMax - tOilOutMaxRPM);
} else {
Power[i] = 0.33F;
stage = (byte) 7;
}
}
}
} else if (timeCounter > 0.0F) {
timeCounter = 0.0F;
if (heatStringID == -1)
heatStringID = HUD.makeIdLog();
HUD.log(heatStringID, "EngineRestored");
}
}

public void update(float f) {
if (stage != 6) {
bTFirst = false;
float f_10_ = 20.0F;
long l = Time.current() - timer;
if (stage > 0 && stage < 6 && l > given) {
stage++;
if (fmdreference.isPlayers() && stage == 1)
HUD.log("Starting_Engine");
timer = Time.current();
}
if (oldStage != stage) {
bTFirst = true;
oldStage = stage;
}
if (stage > 0 && stage < 6 && fmdreference != null)
fmdreference.CT.setPowerControl(0.2F);
switch (stage) {
case 0:
if (bTFirst) {
given = 4611686018427387903L;
timer = Time.current();
}
setP(0.0F);
break;
case 1:
if (bTFirst)
given
= (long) (500.0F * World.Rnd().nextFloat(1.0F, 2.0F));
magneto = (byte) 2;
Wx = 0.1047F * (20.0F * (float) l / (float) given);
setP(0.0F);
break;
case 2:
if (bTFirst) {
given
= (long) (4000.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (bRan) {
given
= (long) (100.0F
+ ((tOilOutMaxRPM - TOilOut)
/ (tOilOutMaxRPM - f_10_) * 7900.0F
* World.Rnd().nextFloat(2.0F, 4.2F)));
if (given > 9000L)
given = World.Rnd().nextLong(7800L, 9600L);
if (fmdreference.AS.isMaster()
&& World.Rnd().nextFloat() < 0.5F) {
stage = (byte) 0;
fmdreference.AS.setEngineStops(0);
}
}
}
Wx = 0.1047F * (20.0F + 15.0F * (float) l / (float) given);
setP(0.0F);
break;
case 3:
if (bTFirst) {
given = (long) (50.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (fmdreference.AS.isMaster()
&& World.Rnd().nextFloat() < 0.12F
&& ((tOilOutMaxRPM - TOilOut) / (tOilOutMaxRPM - f_10_)
< 0.75F))
fmdreference.AS.setEngineStops(0);
}
Wx = 0.1047F * (60.0F + 60.0F * (float) l / (float) given);
setP(0.0F);
if (fmdreference != null
&& ((tOilOutMaxRPM - TOilOut) / (tOilOutMaxRPM - f_10_)
> 0.75F)) {
for (int i = 1; i < 4; i++) {
for (int i_11_ = 1; i_11_ < 64; i_11_++) {
try {
Hook hook = (fmdreference.actor.findHook
("_Engine" + i + "EF_"
+ (i_11_ < 10 ? "0" + i_11_
: "" + i_11_)));
if (hook != null)
Eff3DActor.New
(fmdreference.actor, hook, null, 1.0F,
("3DO/Effects/Aircraft/EngineStart"
+ World.Rnd().nextInt(1, 3)
+ ".eff"),
-1.0F);
} catch (Exception exception) {
/* empty */
}
}
}
}
break;
case 4:
if (bTFirst) {
given
= (long) (500.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (fmdreference.AS.isMaster()
&& World.Rnd().nextFloat() < 0.05F)
setPowerReadyness(0, getEngineDamageFactor(0) - 0.1F);
}
Wx = 12.564F;
setP(0.0F);
break;
case 5:
if (bTFirst) {
given
= (long) (500.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (bRan) {
if ((tOilOutMaxRPM - TOilOut) / (tOilOutMaxRPM - f_10_)
> 0.75F) {
if (bInline) {
if (fmdreference.AS.isMaster()
&& getEngineDamageFactor(0) > 0.75F
&& World.Rnd().nextFloat() < 0.25F)
setPowerReadyness(0,
(getEngineDamageFactor(0)
- 0.05F));
} else if (fmdreference.AS.isMaster()
&& World.Rnd().nextFloat() < 0.1F)
fmdreference.AS
.setEngineDies(fmdreference.actor, 0);
}
if (fmdreference.AS.isMaster()
&& World.Rnd().nextFloat() < 0.1F)
fmdreference.AS.setEngineStops(0);
}
bRan = true;
}
Wx = 0.1047F * (120.0F + 120.0F * (float) l / (float) given);
setP(0.2F);
break;
case 6:
if (bTFirst) {
given = -1L;
fmdreference.AS.setEngineRunning(0);
}
break;
case 7:
if (bTFirst)
given = -1L;
if (Power.length > 0) {
for (int i = 0; i < Power.length; i++)
setPowerReadyness(i, 0.0F);
}
magneto = (byte) 0;
break;
}
}
}

public void torque(float f, Vector3f vector3f, Vector3f vector3f_12_,
float f_13_, float f_14_) {
if (JET)
vector3f_12_.set(0.0F, 0.0F, 0.0F);
else {
float f_16_;
float f_15_ = f_16_ = 0.0F;
if (Wx < 0.0F)
Wx = 0.0F;
float f_17_ = Wx;
for (int i = 0; i < Power.length; i++)
f_16_ = Math.max(f_16_, Power[i]);
for (int i = 0; i < Power.length; i++)
f_15_ += Power[i];
if (f_13_ < 20.0F)
f_13_ = 0.0F;
else
f_13_ -= 20.0F;
if (f_14_ < -1.0F) {
calcPropAOA(f_13_, f_14_);
if (stage == 6 || stage == 7)
Wx = (W0 * (float) Math.sqrt((double) (PowerSET * f_16_))
+ f_13_ * 0.2F) * (1.0F - 0.35F * propAOA);
else if (stage == 0)
Wx = 0.0F;
Wx = f_17_ + ((Wx - f_17_)
* (Wx < f_17_ ? 0.5F
: 0.2658F / Reductor / Reductor)
* f * 0.333F);
if (f_16_ < 0.01F)
Wx *= 0.99F;
vector3f_12_.set(0.0F, 0.0F, 0.0F);
} else {
calcPropAOA(f_13_, f_14_);
if (stage == 6 || stage == 7)
Wx = (W0 * (float) Math.sqrt((double) (PowerSET * f_16_))
+ f_13_ * 0.2F) * (1.0F - 0.35F * propAOA);
else if (stage == 0)
Wx = 0.0F;
Wx = (f_17_
+ (Wx - f_17_) * (Wx < f_17_ ? 0.5F
: 0.2658F / Reductor / Reductor) * f);
if (f_16_ < 0.01F)
Wx *= 0.99F;
if (World.cur().diffCur.Torque_N_Gyro_Effects) {
L.x = Ix * Wx * f_15_ * 0.15F;
vector3f_12_.cross(vector3f, L);
float f_18_ = Ix * (Wx - f_17_) / f * 0.8F;
Vector3f vector3f_19_ = vector3f_12_;
vector3f_19_.x
= vector3f_19_.x + (f_15_ > 0.0F ? f_18_ : -f_18_);
Vector3f vector3f_20_ = vector3f_12_;
vector3f_20_.x
= vector3f_20_.x * (PropDir == 1 ? 1.0F : -1.0F);
} else
vector3f_12_.set(0.0F, 0.0F, 0.0F);
}
}
}

private void calcPropAOA(float f, float f_21_) {
float f_22_
= (float) Math.atan2((double) f,
(double) (0.375F * PropDiam * (Wx + 1.0F)));
float f_23_;
if (f_21_ < 0.0F)
f_23_ = f_22_ + 0.2F;
else
f_23_ = 0.35F + f_21_ * 0.65F;
if (f_23_ < 0.35F)
f_23_ = 0.35F;
else if (f_23_ > 1.0F)
f_23_ = 1.0F;
propAOA = f_23_ - f_22_;
}

public void propSpeed(float f) {
float f_24_ = Wx;
float f_25_ = 0.0F;
for (int i = 0; i < Power.length; i++)
f_25_ = Math.max(f_25_, Power[i]);
if (stage == 6)
Wx = W0 * (float) Math.sqrt((double) (PowerSET * f_25_));
if (stage == 0) {
Wx = 0.0F;
Wx = f_24_ + (Wx - f_24_) * (Wx < f_24_ ? 0.03F : 0.01F);
if (f_25_ < 0.01F)
Wx *= 0.99F;
}
}

public float forcePropAOA(float f, float f_26_) {
Wx = W0;
calcPropAOA(f, -2.0F);
Wx = 0.0F;
if (propAOA > 0.2F)
propAOA = 0.2F + (propAOA - 0.2F) * 2.0F;
return force(f, f_26_);
}

private float forceJet(float f, float f_27_) {
float f_28_ = 0.0F;
for (int i = 0; i < Power.length; i++)
f_28_ += Power[i];
f_28_ *= PowerSET * Power100;
float f_29_ = f_27_ / khAlt[0];
if (f_29_ < 1.0F)
f_29_ = interpolate(1.0F, kh[0], f_29_);
else
f_29_ = kh[0] / f_29_;
return f_28_ * f_29_;
}

private float kV(float f) {
return 1.0F - 0.0032F * f;
}

public float force(float f, float f_30_) {
if (JET)
return forceJet(f, f_30_);
if (propAOA < 0.0F)
return 0.0F;
Pow = 0.0F;
for (int i = 0; i < Power.length; i++)
Pow += Power[i];
Pow *= PowerSET * Power100 * 9.6F;
if (PowerSET > 1.0F)
Pow *= boostFactor;
k = 0.0F;
for (int i = 0; i < kh.length; i++) {
ktmp = interpolate(khAlt[0] / khAlt[i], kh[i], f_30_ / khAlt[i]);
if (f_30_ > khAlt[i])
ktmp = kh[i] * (Atmosphere.density(f_30_)
/ Atmosphere.density(khAlt[i]));
if (ktmp > k)
k = ktmp;
}
P = Pow * k * kV(f);
if (propAOA <= 0.2F)
return P * (propAOA * 5.0F);
return P * (0.2F / propAOA);
}

void setAltSpeed(float f, float f_31_, float f_32_) {
HofVmax = f_32_;
float f_33_ = (Atmosphere.density(HofVmax) * (f_31_ * f_31_)
/ (Atmosphere.density(0.0F) * (f * f)));
if (JET)
Kh0 = f_33_;
else
Kh0 = f_33_ * kV(f) / kV(f_31_);
}

protected float getKforH(float f, float f_34_, float f_35_) {
float f_36_ = (Atmosphere.density(f_35_) * (f_34_ * f_34_)
/ (Atmosphere.density(0.0F) * (f * f)));
if (!JET)
f_36_ = f_36_ * kV(f) / kV(f_34_);
return f_36_;
}

public void doStartEngine(FlightModel flightmodel) {
fmdreference = flightmodel;
if (Airport.distToNearestAirport(fmdreference.Loc) < 1000.0
&& fmdreference.isStationedOnGround()) {
stage = (byte) 1;
bRan = false;
timer = Time.current();
flightmodel.AS.setEngineStarts(0);
} else if (stage == 0) {
if (bAutonomous) {
stage = (byte) 1;
timer = Time.current();
flightmodel.AS.setEngineStarts(0);
} else {
doStopEngine(flightmodel);
magneto = (byte) 0;
}
}
}

public void doStopEngine(FlightModel flightmodel) {
fmdreference = flightmodel;
if (stage != 0) {
stage = (byte) 0;
magneto = (byte) 0;
timer = Time.current();
flightmodel.AS.setEngineStops(0);
}
}

public void doKillEngine(FlightModel flightmodel, int i) {
fmdreference = flightmodel;
flightmodel.setCapableOfTaxiing(false);
flightmodel.setCapableOfACM(false);
if (stage != 7) {
setPowerReadyness(i, 0.0F);
if (PowerSET != 0.0F && getPower() == 0.0F) {
stage = (byte) 7;
if (World.getPlayerAircraft() == flightmodel.actor)
HUD.log("FailedEngine");
magneto = (byte) 0;
}
timer = Time.current();
}
}

public void doKillCompressor(FlightModel flightmodel, int i) {
fmdreference = flightmodel;
if (kh.length > 1 && khAlt[0] != 55.0F) {
kh = new float[] { 1.0F };
khAlt = new float[] { 55.0F };
if (World.getPlayerAircraft() == flightmodel.actor)
HUD.log("FailedCompressor");
}
}

public void toggleMagnetos(FlightModel flightmodel) {
fmdreference = flightmodel;
if (stage == 0) {
if (((double) flightmodel.getAltitude()
- Engine.land().HQ(flightmodel.Loc.x, flightmodel.Loc.y))
> 25.0) {
if (bRan) {
magneto = (byte) 2;
doStartEngine(flightmodel);
} else
setMagnetos(flightmodel, (byte) 2);
} else {
magneto = (byte) 2;
doStartEngine(flightmodel);
}
} else
doStopEngine(flightmodel);
}

public void setMagnetos(FlightModel flightmodel, byte i) {
fmdreference = flightmodel;
switch (i) {
case 2:
magneto = (byte) 2;
stage = (byte) 6;
bRan = true;
timer = Time.current();
flightmodel.AS.setEngineRunning(0);
break;
}
}

public byte getMagnetos() {
return magneto;
}

public int getEngineNumber() {
return Power.length;
}

public float getReductor() {
return Reductor;
}

public float getFanSpeed(int i) {
return Wx * 0.15915F * Power[i];
}

public float getEngineDamageFactor(int i) {
return Power[i];
}

public float getPropellerMoment(int i) {
return PowerSET * Power[i];
}

public int getStage(int i) {
return stage;
}
}


Разумеется управление мотором, визуализация, в том числе пропеллеров, выхлопа и т.п. вещи тоже относящиеся к мотору "лежат" в других джава-классах.
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Сообщение Karabas-Barabas » 22 дек 2011, 21:54

/* Motor - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package com.maddox.il2.fm;
import java.io.IOException;

import com.maddox.JGP.Point3d;
import com.maddox.JGP.Point3f;
import com.maddox.JGP.Vector3d;
import com.maddox.JGP.Vector3f;
import com.maddox.il2.ai.Airport;
import com.maddox.il2.ai.World;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.engine.Eff3DActor;
import com.maddox.il2.engine.Hook;
import com.maddox.il2.game.AircraftHotKeys;
import com.maddox.il2.game.HUD;
import com.maddox.il2.game.Main3D;
import com.maddox.il2.objects.air.Aircraft;
import com.maddox.il2.objects.air.BI_1;
import com.maddox.il2.objects.air.BI_6;
import com.maddox.il2.objects.air.GLADIATOR;
import com.maddox.il2.objects.air.MXY_7;
import com.maddox.il2.objects.air.P_38;
import com.maddox.il2.objects.air.P_51;
import com.maddox.il2.objects.air.P_63C;
import com.maddox.il2.objects.air.SM79;
import com.maddox.il2.objects.air.SPITFIRE5B;
import com.maddox.il2.objects.air.SPITFIRE8;
import com.maddox.il2.objects.air.SPITFIRE8CLP;
import com.maddox.il2.objects.air.SPITFIRE9;
import com.maddox.il2.objects.air.YAK_3;
import com.maddox.il2.objects.air.YAK_3P;
import com.maddox.il2.objects.air.YAK_9M;
import com.maddox.il2.objects.air.YAK_9U;
import com.maddox.il2.objects.air.YAK_9UT;
import com.maddox.rts.NetMsgGuaranted;
import com.maddox.rts.NetMsgInput;
import com.maddox.rts.SectFile;
import com.maddox.rts.Time;

public class Motor extends FMMath
{
private static final boolean ___debug___ = false;
public static final int _E_TYPE_INLINE = 0;
public static final int _E_TYPE_RADIAL = 1;
public static final int _E_TYPE_JET = 2;
public static final int _E_TYPE_ROCKET = 3;
public static final int _E_TYPE_ROCKETBOOST = 4;
public static final int _E_TYPE_TOW = 5;
public static final int _E_TYPE_PVRD = 6;
public static final int _E_TYPE_HELO_INLINE = 7;
public static final int _E_TYPE_UNIDENTIFIED = 8;
public static final int _E_PROP_DIR_LEFT = 0;
public static final int _E_PROP_DIR_RIGHT = 1;
public static final int _E_STAGE_NULL = 0;
public static final int _E_STAGE_WAKE_UP = 1;
public static final int _E_STAGE_STARTER_ROLL = 2;
public static final int _E_STAGE_CATCH_UP = 3;
public static final int _E_STAGE_CATCH_ROLL = 4;
public static final int _E_STAGE_CATCH_FIRE = 5;
public static final int _E_STAGE_NOMINAL = 6;
public static final int _E_STAGE_DEAD = 7;
public static final int _E_STAGE_STUCK = 8;
public static final int _E_PROP_FIXED = 0;
public static final int _E_PROP_RETAIN_RPM_1 = 1;
public static final int _E_PROP_RETAIN_RPM_2 = 2;
public static final int _E_PROP_RETAIN_AOA_1 = 3;
public static final int _E_PROP_RETAIN_AOA_2 = 4;
public static final int _E_PROP_FRICTION = 5;
public static final int _E_PROP_MANUALDRIVEN = 6;
public static final int _E_PROP_WM_KOMANDGERAT = 7;
public static final int _E_PROP_FW_KOMANDGERAT = 8;
public static final int _E_PROP_CSP_EL = 9;
public static final int _E_CARB_SUCTION = 0;
public static final int _E_CARB_CARBURETOR = 1;
public static final int _E_CARB_INJECTOR = 2;
public static final int _E_CARB_FLOAT = 3;
public static final int _E_CARB_SHILLING = 4;
public static final int _E_COMPRESSOR_NONE = 0;
public static final int _E_COMPRESSOR_MANUALSTEP = 1;
public static final int _E_COMPRESSOR_WM_KOMANDGERAT = 2;
public static final int _E_COMPRESSOR_TURBO = 3;
public static final int _E_MIXER_GENERIC = 0;
public static final int _E_MIXER_BRIT_FULLAUTO = 1;
public static final int _E_MIXER_LIMITED_PRESSURE = 2;
public static final int _E_AFTERBURNER_GENERIC = 0;
public static final int _E_AFTERBURNER_MW50 = 1;
public static final int _E_AFTERBURNER_GM1 = 2;
public static final int _E_AFTERBURNER_FIRECHAMBER = 3;
public static final int _E_AFTERBURNER_WATER = 4;
public static final int _E_AFTERBURNER_NO2 = 5;
public static final int _E_AFTERBURNER_FUEL_INJECTION = 6;
public static final int _E_AFTERBURNER_FUEL_ILA5 = 7;
public static final int _E_AFTERBURNER_FUEL_ILA5AUTO = 8;
public static final int _E_AFTERBURNER_WATERMETHANOL = 9;
public static final int _E_AFTERBURNER_P51 = 10;
public static final int _E_AFTERBURNER_SPIT = 11;
private static int heatStringID = -1;
public FmSounds isnd = null;
private FlightModel reference = null;
private static boolean bTFirst;
public String soundName = null;
public String startStopName = null;
public String propName = null;
private int number = 0;
private int type = 0;
private int cylinders = 12;
private float engineMass = 900.0F;
private float wMin = 20.0F;
private float wNom = 180.0F;
private float wMax = 200.0F;
private float wWEP = 220.0F;
private float wMaxAllowed = 250.0F;
public int wNetPrev = 0;
public float engineMoment = 0.0F;
private float engineMomentMax = 0.0F;
private float engineBoostFactor = 1.0F;
private float engineAfterburnerBoostFactor = 1.0F;
private float engineDistAM = 0.0F;
private float engineDistBM = 0.0F;
private float engineDistCM = 0.0F;
private float producedDistabilisation;
private boolean bRan = false;
private Point3f enginePos = new Point3f();
private Vector3f engineVector = new Vector3f();
private Vector3f engineForce = new Vector3f();
private Vector3f engineTorque = new Vector3f();
private float engineDamageAccum = 0.0F;
private float _1_wMaxAllowed = 1.0F / wMaxAllowed;
private float _1_wMax = 1.0F / wMax;
private float RPMMin = 200.0F;
private float RPMNom = 2000.0F;
private float RPMMax = 2200.0F;
private float Vopt = 90.0F;
private float pressureExtBar;
private double momForFuel = 0.0;
public double addVflow = 0.0;
public double addVside = 0.0;
private Point3f propPos = new Point3f();
private float propReductor = 1.0F;
private int propAngleDeviceType = 0;
private float propAngleDeviceMinParam = 0.0F;
private float propAngleDeviceMaxParam = 0.0F;
private float propAngleDeviceAfterburnerParam = -999.9F;
private int propDirection = 0;
private float propDiameter = 3.0F;
private float propMass = 30.0F;
private float propI = 1.0F;
public Vector3d propIW = new Vector3d();
private float propSEquivalent = 1.0F;
private float propr = 1.125F;
private float propPhiMin = (float) Math.toRadians(10.0);
private float propPhiMax = (float) Math.toRadians(29.0);
private float propPhi = (float) Math.toRadians(11.0);
private float propPhiW;
private float propAoA;
private float propAoA0 = (float) Math.toRadians(11.0);
private float propAoACrit = (float) Math.toRadians(16.0);
private float propAngleChangeSpeed = 0.1F;
private float propForce = 0.0F;
public float propMoment = 0.0F;
private float propTarget = 0.0F;
private int mixerType = 0;
private float mixerLowPressureBar = 0.0F;
private float horsePowers = 1200.0F;
private float thrustMax = 10.7F;
private int cylindersOperable = 12;
private float engineI = 1.0F;
private float engineAcceleration = 1.0F;
private boolean[] bMagnetos = { true, true };
private boolean bIsAutonomous = true;
private boolean bIsMaster = true;
private boolean bIsStuck = false;
private boolean bIsInoperable = false;
private boolean bIsAngleDeviceOperational = true;
private boolean isPropAngleDeviceHydroOperable = true;
private int engineCarburetorType = 0;
private float FuelConsumptionP0 = 0.4F;
private float FuelConsumptionP05 = 0.24F;
private float FuelConsumptionP1 = 0.28F;
private float FuelConsumptionPMAX = 0.3F;
private int compressorType = 0;
public int compressorMaxStep = 0;
private float compressorPMax = 1.0F;
private float compressorManifoldPressure = 1.0F;
public float[] compressorAltitudes = null;
private float[] compressorPressure = null;
private float[] compressorAltMultipliers = null;
private float compressorRPMtoP0 = 1500.0F;
private float compressorRPMtoCurvature = -30.0F;
private float compressorRPMtoPMax = 2600.0F;
private float compressorRPMtoWMaxATA = 1.45F;
private float compressorSpeedManifold = 0.2F;
private float[] compressorRPM = new float[16];
private float[] compressorATA = new float[16];
private int nOfCompPoints = 0;
private boolean compressorStepFound = false;
private float compressorManifoldThreshold = 1.0F;
private float afterburnerCompressorFactor = 1.0F;
private float _1_P0 = 1.0F / Atmosphere.P0();
private float compressor1stThrottle = 1.0F;
private float compressor2ndThrottle = 1.0F;
private float compressorPAt0 = 0.3F;
private int afterburnerType = 0;
private boolean afterburnerChangeW = false;
private int stage = 0;
private int oldStage = 0;
private long timer = 0L;
private long given = 4611686018427387903L;
private float rpm = 0.0F;
public float w = 0.0F;
private float aw = 0.0F;
private float oldW = 0.0F;
private float readyness = 1.0F;
private float oldReadyness = 1.0F;
private float radiatorReadyness = 1.0F;
private float rearRush;
public float tOilIn = 0.0F;
public float tOilOut = 0.0F;
public float tWaterOut = 0.0F;
public float tCylinders = 0.0F;
private float tWaterCritMin;
public float tWaterCritMax;
private float tOilCritMin;
public float tOilCritMax;
private float tWaterMaxRPM;
public float tOilOutMaxRPM;
private float tOilInMaxRPM;
private float tChangeSpeed;
private float timeOverheat;
private float timeUnderheat;
private float timeCounter;
private float oilMass = 90.0F;
private float waterMass = 90.0F;
private float Ptermo;
private float R_air;
private float R_oil;
private float R_water;
private float R_cyl_oil;
private float R_cyl_water;
private float C_eng;
private float C_oil;
private float C_water;
private boolean bHasThrottleControl = true;
private boolean bHasAfterburnerControl = true;
private boolean bHasPropControl = true;
private boolean bHasRadiatorControl = true;
private boolean bHasMixControl = true;
private boolean bHasMagnetoControl = true;
private boolean bHasExtinguisherControl = false;
private boolean bHasCompressorControl = false;
private boolean bHasFeatherControl = false;
private int extinguishers = 0;
private float controlThrottle = 0.0F;
public float controlRadiator = 0.0F;
private boolean controlAfterburner = false;
private float controlProp = 1.0F;
private boolean bControlPropAuto = true;
private float controlMix = 1.0F;
private int controlMagneto = 0;
private int controlCompressor = 0;
private int controlFeather = 0;
public double zatizeni;
public float coolMult;
private int controlPropDirection;
private float neg_G_Counter = 0.0F;
private boolean bFullT = false;
private boolean bFloodCarb = false;
private boolean bWepRpmInLowGear;
public boolean fastATA = false;
private Vector3f old_engineForce = new Vector3f();
private Vector3f old_engineTorque = new Vector3f();
private float updateStep = 0.12F;
private float updateLast = 0.0F;
private float fricCoeffT = 1.0F;
private static Vector3f tmpV3f = new Vector3f();
private static Vector3d tmpV3d1 = new Vector3d();
private static Vector3d tmpV3d2 = new Vector3d();
private static Point3f safeloc = new Point3f();
private static Point3d safeLoc = new Point3d();
private static Vector3f safeVwld = new Vector3f();
private static Vector3f safeVflow = new Vector3f();
private static boolean tmpB;
private static float tmpF;
private int engineNoFuelHUDLogId = -1;

public void load(FlightModel flightmodel, String string, String string_0_,
int i) {
reference = flightmodel;
number = i;
SectFile sectfile = FlightModelMain.sectFile(string);
resolveFromFile(sectfile, "Generic");
resolveFromFile(sectfile, string_0_);
calcAfterburnerCompressorFactor();
if (type == 0 || type == 1 || type == 7)
initializeInline(flightmodel.Vmax);
if (type == 2)
initializeJet(flightmodel.Vmax);
}

private void resolveFromFile(SectFile sectfile, String string) {
soundName = sectfile.get(string, "SoundName", soundName);
propName = sectfile.get(string, "PropName", propName);
startStopName = sectfile.get(string, "StartStopName", startStopName);
Aircraft.debugprintln(reference.actor,
("Resolving submodel " + string + " from file '"
+ sectfile.toString() + "'...."));
String string_1_ = sectfile.get(string, "Type");
if (string_1_ != null) {
if (string_1_.endsWith("Inline"))
type = 0;
else if (string_1_.endsWith("Radial"))
type = 1;
else if (string_1_.endsWith("Jet"))
type = 2;
else if (string_1_.endsWith("RocketBoost"))
type = 4;
else if (string_1_.endsWith("Rocket"))
type = 3;
else if (string_1_.endsWith("Tow"))
type = 5;
else if (string_1_.endsWith("PVRD"))
type = 6;
else if (string_1_.endsWith("Unknown"))
type = 8;
else if (string_1_.endsWith("Azure"))
type = 8;
else if (string_1_.endsWith("HeloI"))
type = 7;
}
if (type == 0 || type == 1 || type == 7) {
int i = sectfile.get(string, "Cylinders", -99999);
if (i != -99999) {
cylinders = i;
cylindersOperable = cylinders;
}
}
string_1_ = sectfile.get(string, "Direction");
if (string_1_ != null) {
if (string_1_.endsWith("Left"))
propDirection = 0;
else if (string_1_.endsWith("Right"))
propDirection = 1;
}
float f = sectfile.get(string, "RPMMin", -99999.0F);
if (f != -99999.0F) {
RPMMin = f;
wMin = toRadianPerSecond(RPMMin);
}
f = sectfile.get(string, "RPMNom", -99999.0F);
if (f != -99999.0F) {
RPMNom = f;
wNom = toRadianPerSecond(RPMNom);
}
f = sectfile.get(string, "RPMMax", -99999.0F);
if (f != -99999.0F) {
RPMMax = f;
wMax = toRadianPerSecond(RPMMax);
_1_wMax = 1.0F / wMax;
}
f = sectfile.get(string, "RPMMaxAllowed", -99999.0F);
if (f != -99999.0F) {
wMaxAllowed = toRadianPerSecond(f);
_1_wMaxAllowed = 1.0F / wMaxAllowed;
}
f = sectfile.get(string, "Reductor", -99999.0F);
if (f != -99999.0F)
propReductor = f;
if (type == 0 || type == 1 || type == 7) {
f = sectfile.get(string, "HorsePowers", -99999.0F);
if (f != -99999.0F)
horsePowers = f;
int i = sectfile.get(string, "Carburetor", -99999);
if (i != -99999)
engineCarburetorType = i;
f = sectfile.get(string, "Mass", -99999.0F);
if (f != -99999.0F)
engineMass = f;
else
engineMass = horsePowers * 0.6F;
} else {
f = sectfile.get(string, "Thrust", -99999.0F);
if (f != -99999.0F)
thrustMax = f * 9.81F;
}
f = sectfile.get(string, "BoostFactor", -99999.0F);
if (f != -99999.0F)
engineBoostFactor = f;
f = sectfile.get(string, "WEPBoostFactor", -99999.0F);
if (f != -99999.0F)
engineAfterburnerBoostFactor = f;
if (type == 2) {
FuelConsumptionP0 = 0.075F;
FuelConsumptionP05 = 0.075F;
FuelConsumptionP1 = 0.1F;
FuelConsumptionPMAX = 0.11F;
}
if (type == 6) {
FuelConsumptionP0 = 0.835F;
FuelConsumptionP05 = 0.835F;
FuelConsumptionP1 = 0.835F;
FuelConsumptionPMAX = 0.835F;
}
f = sectfile.get(string, "FuelConsumptionP0", -99999.0F);
if (f != -99999.0F)
FuelConsumptionP0 = f;
f = sectfile.get(string, "FuelConsumptionP05", -99999.0F);
if (f != -99999.0F)
FuelConsumptionP05 = f;
f = sectfile.get(string, "FuelConsumptionP1", -99999.0F);
if (f != -99999.0F)
FuelConsumptionP1 = f;
f = sectfile.get(string, "FuelConsumptionPMAX", -99999.0F);
if (f != -99999.0F)
FuelConsumptionPMAX = f;
int i = sectfile.get(string, "Autonomous", -99999);
if (i != -99999) {
if (i == 0)
bIsAutonomous = false;
else if (i == 1)
bIsAutonomous = true;
}
i = sectfile.get(string, "cThrottle", -99999);
if (i != -99999) {
if (i == 0)
bHasThrottleControl = false;
else if (i == 1)
bHasThrottleControl = true;
}
i = sectfile.get(string, "cAfterburner", -99999);
if (i != -99999) {
if (i == 0)
bHasAfterburnerControl = false;
else if (i == 1)
bHasAfterburnerControl = true;
}
i = sectfile.get(string, "cProp", -99999);
if (i != -99999) {
if (i == 0)
bHasPropControl = false;
else if (i == 1)
bHasPropControl = true;
}
i = sectfile.get(string, "cMix", -99999);
if (i != -99999) {
if (i == 0)
bHasMixControl = false;
else if (i == 1)
bHasMixControl = true;
}
i = sectfile.get(string, "cMagneto", -99999);
if (i != -99999) {
if (i == 0)
bHasMagnetoControl = false;
else if (i == 1)
bHasMagnetoControl = true;
}
i = sectfile.get(string, "cCompressor", -99999);
if (i != -99999) {
if (i == 0)
bHasCompressorControl = false;
else if (i == 1)
bHasCompressorControl = true;
}
i = sectfile.get(string, "cFeather", -99999);
if (i != -99999) {
if (i == 0)
bHasFeatherControl = false;
else if (i == 1)
bHasFeatherControl = true;
}
i = sectfile.get(string, "cRadiator", -99999);
if (i != -99999) {
if (i == 0)
bHasRadiatorControl = false;
else if (i == 1)
bHasRadiatorControl = true;
}
i = sectfile.get(string, "Extinguishers", -99999);
if (i != -99999) {
extinguishers = i;
if (i != 0)
bHasExtinguisherControl = true;
else
bHasExtinguisherControl = false;
}
f = sectfile.get(string, "PropDiameter", -99999.0F);
if (f != -99999.0F)
propDiameter = f;
propr = 0.5F * propDiameter * 0.75F;
f = sectfile.get(string, "PropMass", -99999.0F);
if (f != -99999.0F)
propMass = f;
propI = propMass * propDiameter * propDiameter * 0.083F;
bWepRpmInLowGear = false;
i = sectfile.get(string, "PropAnglerType", -99999);
if (i != -99999) {
if (i > 255) {
bWepRpmInLowGear = (i & 0x100) > 1;
i -= 256;
}
propAngleDeviceType = i;
}
f = sectfile.get(string, "PropAnglerSpeed", -99999.0F);
if (f != -99999.0F)
propAngleChangeSpeed = f;
f = sectfile.get(string, "PropAnglerMinParam", -99999.0F);
if (f != -99999.0F) {
propAngleDeviceMinParam = f;
if (propAngleDeviceType == 6 || propAngleDeviceType == 5)
propAngleDeviceMinParam
= (float) Math.toRadians((double) propAngleDeviceMinParam);
if (propAngleDeviceType == 1 || propAngleDeviceType == 2
|| propAngleDeviceType == 7 || propAngleDeviceType == 8
|| propAngleDeviceType == 9)
propAngleDeviceMinParam
= toRadianPerSecond(propAngleDeviceMinParam);
}
f = sectfile.get(string, "PropAnglerMaxParam", -99999.0F);
if (f != -99999.0F) {
propAngleDeviceMaxParam = f;
if (propAngleDeviceType == 6 || propAngleDeviceType == 5)
propAngleDeviceMaxParam
= (float) Math.toRadians((double) propAngleDeviceMaxParam);
if (propAngleDeviceType == 1 || propAngleDeviceType == 2
|| propAngleDeviceType == 7 || propAngleDeviceType == 8
|| propAngleDeviceType == 9)
propAngleDeviceMaxParam
= toRadianPerSecond(propAngleDeviceMaxParam);
if (propAngleDeviceAfterburnerParam == -999.9F)
propAngleDeviceAfterburnerParam = propAngleDeviceMaxParam;
}
f = sectfile.get(string, "PropAnglerAfterburnerParam", -99999.0F);
if (f != -99999.0F) {
propAngleDeviceAfterburnerParam = f;
wWEP = toRadianPerSecond(propAngleDeviceAfterburnerParam);
if (wWEP != wMax)
afterburnerChangeW = true;
if (propAngleDeviceType == 6 || propAngleDeviceType == 5)
propAngleDeviceAfterburnerParam
= (float) (Math.toRadians
((double) propAngleDeviceAfterburnerParam));
if (propAngleDeviceType == 1 || propAngleDeviceType == 2
|| propAngleDeviceType == 7 || propAngleDeviceType == 8
|| propAngleDeviceType == 9)
propAngleDeviceAfterburnerParam
= toRadianPerSecond(propAngleDeviceAfterburnerParam);
} else
wWEP = wMax;
f = sectfile.get(string, "PropPhiMin", -99999.0F);
if (f != -99999.0F) {
propPhiMin = (float) Math.toRadians((double) f);
if (propPhi < propPhiMin)
propPhi = propPhiMin;
if (propTarget < propPhiMin)
propTarget = propPhiMin;
}
f = sectfile.get(string, "PropPhiMax", -99999.0F);
if (f != -99999.0F) {
propPhiMax = (float) Math.toRadians((double) f);
if (propPhi > propPhiMax)
propPhi = propPhiMax;
if (propTarget > propPhiMax)
propTarget = propPhiMax;
}
f = sectfile.get(string, "PropAoA0", -99999.0F);
if (f != -99999.0F)
propAoA0 = (float) Math.toRadians((double) f);
i = sectfile.get(string, "CompressorType", -99999);
if (i != -99999)
compressorType = i;
f = sectfile.get(string, "CompressorPMax", -99999.0F);
if (f != -99999.0F)
compressorPMax = f;
i = sectfile.get(string, "CompressorSteps", -99999);
if (i != -99999) {
compressorMaxStep = i - 1;
if (compressorMaxStep < 0)
compressorMaxStep = 0;
}
if (compressorAltitudes != null
&& compressorAltitudes.length == compressorMaxStep + 1) {
/* empty */
}
compressorAltitudes = new float[compressorMaxStep + 1];
compressorPressure = new float[compressorMaxStep + 1];
compressorAltMultipliers = new float[compressorMaxStep + 1];
if (compressorAltitudes.length > 0) {
for (int i_2_ = 0; i_2_ < compressorAltitudes.length; i_2_++) {
f = sectfile.get(string, "CompressorAltitude" + i_2_,
-99999.0F);
if (f != -99999.0F) {
compressorAltitudes[i_2_] = f;
compressorPressure[i_2_]
= (Atmosphere.pressure(compressorAltitudes[i_2_])
* _1_P0);
}
f = sectfile.get(string, "CompressorMultiplier" + i_2_,
-99999.0F);
if (f != -99999.0F)
compressorAltMultipliers[i_2_] = f;
}
}
f = sectfile.get(string, "CompressorRPMP0", -99999.0F);
if (f != -99999.0F) {
compressorRPMtoP0 = f;
insetrPoiInCompressorPoly(compressorRPMtoP0, 1.0F);
}
f = sectfile.get(string, "CompressorRPMCurvature", -99999.0F);
if (f != -99999.0F)
compressorRPMtoCurvature = f;
f = sectfile.get(string, "CompressorMaxATARPM", -99999.0F);
if (f != -99999.0F) {
compressorRPMtoWMaxATA = f;
insetrPoiInCompressorPoly(RPMMax, compressorRPMtoWMaxATA);
}
f = sectfile.get(string, "CompressorRPMPMax", -99999.0F);
if (f != -99999.0F) {
compressorRPMtoPMax = f;
insetrPoiInCompressorPoly(compressorRPMtoPMax, compressorPMax);
}
f = sectfile.get(string, "CompressorSpeedManifold", -99999.0F);
if (f != -99999.0F)
compressorSpeedManifold = f;
f = sectfile.get(string, "CompressorPAt0", -99999.0F);
if (f != -99999.0F)
compressorPAt0 = f;
f = sectfile.get(string, "Voptimal", -99999.0F);
if (f != -99999.0F)
Vopt = f * 0.277778F;
boolean bool = true;
float f_3_ = 2000.0F;
float f_4_ = 1.0F;
int i_5_ = 0;
while (bool) {
f = sectfile.get(string, "CompressorRPM" + i_5_, -99999.0F);
if (f != -99999.0F)
f_3_ = f;
else
bool = false;
f = sectfile.get(string, "CompressorATA" + i_5_, -99999.0F);
if (f != -99999.0F)
f_4_ = f;
else
bool = false;
if (bool)
insetrPoiInCompressorPoly(f_3_, f_4_);
i_5_++;
if (nOfCompPoints > 15 || i_5_ > 15)
bool = false;
}
i = sectfile.get(string, "AfterburnerType", -99999);
if (i != -99999)
afterburnerType = i;
i = sectfile.get(string, "MixerType", -99999);
if (i != -99999)
mixerType = i;
f = sectfile.get(string, "MixerAltitude", -99999.0F);
if (f != -99999.0F)
mixerLowPressureBar = Atmosphere.pressure(f) / Atmosphere.P0();
f = sectfile.get(string, "EngineI", -99999.0F);
if (f != -99999.0F)
engineI = f;
f = sectfile.get(string, "EngineAcceleration", -99999.0F);
if (f != -99999.0F)
engineAcceleration = f;
f = sectfile.get(string, "DisP0x", -99999.0F);
if (f != -99999.0F) {
float f_6_ = sectfile.get(string, "DisP0x", -99999.0F);
f_6_ = toRadianPerSecond(f_6_);
float f_7_ = sectfile.get(string, "DisP0y", -99999.0F);
f_7_ *= 0.01F;
float f_8_ = sectfile.get(string, "DisP1x", -99999.0F);
f_8_ = toRadianPerSecond(f_8_);
float f_9_ = sectfile.get(string, "DisP1y", -99999.0F);
f_9_ *= 0.01F;
float f_10_ = f_6_;
float f_11_ = f_7_;
float f_12_ = (f_8_ - f_6_) * (f_8_ - f_6_);
float f_13_ = f_9_ - f_7_;
engineDistAM = f_13_ / f_12_;
engineDistBM = -2.0F * f_13_ * f_10_ / f_12_;
engineDistCM = f_11_ + f_13_ * f_10_ * f_10_ / f_12_;
}
timeCounter = 0.0F;
f = sectfile.get(string, "TESPEED", -99999.0F);
if (f != -99999.0F)
tChangeSpeed = f;
f = sectfile.get(string, "TWATERMAXRPM", -99999.0F);
if (f != -99999.0F)
tWaterMaxRPM = f;
f = sectfile.get(string, "TOILINMAXRPM", -99999.0F);
if (f != -99999.0F)
tOilInMaxRPM = f;
f = sectfile.get(string, "TOILOUTMAXRPM", -99999.0F);
if (f != -99999.0F)
tOilOutMaxRPM = f;
f = sectfile.get(string, "MAXRPMTIME", -99999.0F);
if (f != -99999.0F)
timeOverheat = f;
f = sectfile.get(string, "MINRPMTIME", -99999.0F);
if (f != -99999.0F)
timeUnderheat = f;
f = sectfile.get(string, "TWATERMAX", -99999.0F);
if (f != -99999.0F)
tWaterCritMax = f;
f = sectfile.get(string, "TWATERMIN", -99999.0F);
if (f != -99999.0F)
tWaterCritMin = f;
f = sectfile.get(string, "TOILMAX", -99999.0F);
if (f != -99999.0F)
tOilCritMax = f;
f = sectfile.get(string, "TOILMIN", -99999.0F);
if (f != -99999.0F)
tOilCritMin = f;
coolMult = 1.0F;
}

private void initializeInline(float f) {
propSEquivalent = 0.26F * propr * propr;
engineMomentMax = horsePowers * 746.0F * 1.2F / wMax;
}

private void initializeJet(float f) {
propSEquivalent = ((float) (cylinders * cylinders) * (2.0F * thrustMax)
/ (getFanCy(propAoA0) * Atmosphere.ro0() * wMax
* wMax * propr * propr));
computePropForces(wMax, 0.0F, 0.0F, propAoA0, 0.0F);
engineMomentMax = propMoment;
}

public void initializeTowString(float f) {
propForce = f;
}

public void setMaster(boolean bool) {
bIsMaster = bool;
}

private void insetrPoiInCompressorPoly(float f, float f_14_) {
int i;
for (i = 0; i < nOfCompPoints; i++) {
if (!(compressorRPM[i] < f)) {
if (compressorRPM[i] != f)
break;
return;
}
}
for (int i_15_ = nOfCompPoints - 1; i_15_ >= i; i_15_--) {
compressorRPM[i_15_ + 1] = compressorRPM[i_15_];
compressorATA[i_15_ + 1] = compressorATA[i_15_];
}
nOfCompPoints++;
compressorRPM[i] = f;
compressorATA[i] = f_14_;
}

private void calcAfterburnerCompressorFactor() {
if (afterburnerType == 1 || afterburnerType == 7
|| afterburnerType == 8 || afterburnerType == 10
|| afterburnerType == 11 || afterburnerType == 6
|| afterburnerType == 5 || afterburnerType == 9
|| afterburnerType == 4) {
float f = compressorRPM[nOfCompPoints - 1];
float f_16_ = compressorATA[nOfCompPoints - 1];
nOfCompPoints--;
int i = 0;
int i_17_ = 1;
float f_18_ = 1.0F;
float f_19_ = f;
if (nOfCompPoints < 2)
afterburnerCompressorFactor = 1.0F;
else {
if ((double) f_19_ < 0.1)
f_18_
= Atmosphere.pressure((float) reference.Loc.z) * _1_P0;
else if (f_19_ >= compressorRPM[nOfCompPoints - 1])
f_18_ = compressorATA[nOfCompPoints - 1];
else {
if (f_19_ < compressorRPM[0]) {
i = 0;
i_17_ = 1;
} else {
for (int i_20_ = 0; i_20_ < nOfCompPoints - 1;
i_20_++) {
if (compressorRPM[i_20_] <= f_19_
&& f_19_ < compressorRPM[i_20_ + 1]) {
i = i_20_;
i_17_ = i_20_ + 1;
break;
}
}
}
float f_21_ = compressorRPM[i_17_] - compressorRPM[i];
if (f_21_ < 0.001F)
f_21_ = 0.001F;
f_18_ = compressorATA[i] + ((f_19_ - compressorRPM[i])
* (compressorATA[i_17_]
- compressorATA[i])
/ f_21_);
}
afterburnerCompressorFactor = f_16_ / f_18_;
}
} else
afterburnerCompressorFactor = 1.0F;
}

public float getATA(float f) {
int i = 0;
int i_22_ = 1;
float f_23_ = 1.0F;
if (nOfCompPoints < 2)
return 1.0F;
if ((double) f < 0.1)
f_23_ = Atmosphere.pressure((float) reference.Loc.z) * _1_P0;
else if (f >= compressorRPM[nOfCompPoints - 1])
f_23_ = compressorATA[nOfCompPoints - 1];
else {
if (f < compressorRPM[0]) {
i = 0;
i_22_ = 1;
} else {
for (int i_24_ = 0; i_24_ < nOfCompPoints - 1; i_24_++) {
if (compressorRPM[i_24_] <= f
&& f < compressorRPM[i_24_ + 1]) {
i = i_24_;
i_22_ = i_24_ + 1;
break;
}
}
}
float f_25_ = compressorRPM[i_22_] - compressorRPM[i];
if (f_25_ < 0.001F)
f_25_ = 0.001F;
f_23_ = (compressorATA[i]
+ ((f - compressorRPM[i])
* (compressorATA[i_22_] - compressorATA[i]) / f_25_));
}
return f_23_;
}

public void update(float f) {
if (!(reference instanceof RealFlightModel)
&& Time.tickCounter() > 200) {
updateLast += f;
if (updateLast >= updateStep)
f = updateStep;
else {
engineForce.set(old_engineForce);
engineTorque.set(old_engineTorque);
return;
}
}
producedDistabilisation = 0.0F;
pressureExtBar = (Atmosphere.pressure(reference.getAltitude())
+ (compressorSpeedManifold * 0.5F
* Atmosphere.density(reference.getAltitude())
* reference.getSpeed() * reference.getSpeed()));
pressureExtBar /= Atmosphere.P0();
if (controlThrottle > 1.0F && engineBoostFactor == 1.0F) {
reference.CT.setPowerControl(1.0F);
if (reference.isPlayers() && reference instanceof RealFlightModel
&& ((RealFlightModel) reference).isRealMode())
HUD.log(AircraftHotKeys.hudLogPowerId, "Power",
new Object[] { new Integer(100) });
}
computeForces(f);
computeStage(f);
if (stage > 0 && stage < 6)
engineForce.set(0.0F, 0.0F, 0.0F);
else if (stage == 8)
rpm = w = 0.0F;
if (reference.isPlayers()) {
if (bIsMaster && reference instanceof RealFlightModel
&& ((RealFlightModel) reference).isRealMode()) {
computeTemperature(f);
if (World.cur().diffCur.Reliability)
computeReliability(f);
}
if (World.cur().diffCur.Limited_Fuel)
computeFuel(f);
} else
computeFuel(f);
old_engineForce.set(engineForce);
old_engineTorque.set(engineTorque);
updateLast = 0.0F;
float f_26_ = 0.5F / (Math.abs(aw) + 1.0F) - 0.1F;
if (f_26_ < 0.025F)
f_26_ = 0.025F;
if (f_26_ > 0.4F)
f_26_ = 0.4F;
if (f_26_ < updateStep)
updateStep = 0.9F * updateStep + 0.1F * f_26_;
else
updateStep = 0.99F * updateStep + 0.01F * f_26_;
}

public void netupdate(float f, boolean bool) {
computeStage(f);
if ((double) Math.abs(w) < 1.0E-5)
propPhiW = 1.5707964F;
else
propPhiW
= (float) Math.atan(reference.Vflow.x
/ (double) (w * propReductor * propr));
propAoA = propPhi - propPhiW;
computePropForces(w * propReductor, (float) reference.Vflow.x, propPhi,
propAoA, reference.getAltitude());
float f_27_ = w;
float f_28_ = propPhi;
float f_29_ = compressorManifoldPressure;
computeForces(f);
if (bool)
compressorManifoldPressure = f_29_;
w = f_27_;
propPhi = f_28_;
rpm = toRPM(w);
}

public void setReadyness(Actor actor, float f) {
if (f > 1.0F)
f = 1.0F;
if (f < 0.0F)
f = 0.0F;
if (Actor.isAlive(actor)) {
if (bIsMaster) {
if (readyness > 0.0F && f == 0.0F) {
readyness = 0.0F;
setEngineDies(actor);
return;
}
doSetReadyness(f);
}
if (Math.abs(oldReadyness - readyness) > 0.1F) {
reference.AS.setEngineReadyness(actor, number,
(int) (f * 100.0F));
oldReadyness = readyness;
}
}
}

private void setReadyness(float f) {
setReadyness(reference.actor, f);
}

public void doSetReadyness(float f) {
readyness = f;
}

public void setStage(Actor actor, int i) {
if (Actor.isAlive(actor)) {
if (bIsMaster)
doSetStage(i);
reference.AS.setEngineStage(actor, number, i);
}
}

public void doSetStage(int i) {
stage = i;
}

public void setEngineStarts(Actor actor) {
if (bIsMaster && Actor.isAlive(actor)
&& (!isHasControlMagnetos() || !(getMagnetoMultiplier() < 0.1F)))
reference.AS.setEngineStarts(number);
}

public void doSetEngineStarts() {
if (Airport.distToNearestAirport(reference.Loc) < 1200.0
&& reference.isStationedOnGround()) {
reference.CT.setMagnetoControl(3);
setControlMagneto(3);
stage = 1;
bRan = false;
timer = Time.current();
} else if (stage == 0) {
reference.CT.setMagnetoControl(3);
setControlMagneto(3);
stage = 1;
timer = Time.current();
}
}

public void setEngineStops(Actor actor) {
if (Actor.isAlive(actor) && (stage >= 1 && stage <= 6))
reference.AS.setEngineStops(number);
}

public void doSetEngineStops() {
if (stage != 0) {
stage = 0;
setControlMagneto(0);
timer = Time.current();
}
}

public void setEngineDies(Actor actor) {
if (stage <= 6)
reference.AS.setEngineDies(reference.actor, number);
}

public void doSetEngineDies() {
if (stage < 7) {
bIsInoperable = true;
reference.setCapableOfTaxiing(false);
reference.setCapableOfACM(false);
doSetReadyness(0.0F);
float f = 0.0F;
int i = reference.EI.getNum();
if (i != 0) {
for (int i_30_ = 0; i_30_ < i; i_30_++)
f += (reference.EI.engines[i_30_].getReadyness()
/ (float) i);
if (f < 0.7F)
reference.setReadyToReturn(true);
if (f < 0.3F)
reference.setReadyToDie(true);
}
stage = 7;
if (reference.isPlayers())
HUD.log("FailedEngine");
timer = Time.current();
}
}

public void setEngineRunning(Actor actor) {
if (bIsMaster && Actor.isAlive(actor))
reference.AS.setEngineRunning(number);
}

public void doSetEngineRunning() {
if (stage < 6) {
stage = 6;
reference.CT.setMagnetoControl(3);
setControlMagneto(3);
if (reference.isPlayers())
HUD.log("EngineI1");
w = wMax * 0.75F;
tWaterOut = 0.5F * (tWaterCritMin + tWaterMaxRPM);
tOilOut = 0.5F * (tOilCritMin + tOilOutMaxRPM);
tOilIn = 0.5F * (tOilCritMin + tOilInMaxRPM);
propPhi = 0.5F * (propPhiMin + propPhiMax);
propTarget = propPhi;
if (isnd != null)
isnd.onEngineState(stage);
}
}

public void setKillCompressor(Actor actor) {
reference.AS.setEngineSpecificDamage(actor, number, 0);
}

public void doSetKillCompressor() {
switch (compressorType) {
case 2:
compressorAltitudes[0] = 50.0F;
compressorAltMultipliers[0] = 1.0F;
break;
case 1:
for (int i = 0; i < compressorMaxStep; i++) {
compressorAltitudes[i] = 50.0F;
compressorAltMultipliers[i] = 1.0F;
}
break;
}
}

public void setKillPropAngleDevice(Actor actor) {
reference.AS.setEngineSpecificDamage(actor, number, 3);
}

public void doSetKillPropAngleDevice() {
bIsAngleDeviceOperational = false;
}

public void setKillPropAngleDeviceSpeeds(Actor actor) {
reference.AS.setEngineSpecificDamage(actor, number, 4);
}

public void doSetKillPropAngleDeviceSpeeds() {
isPropAngleDeviceHydroOperable = false;
}

public void setCyliderKnockOut(Actor actor, int i) {
reference.AS.setEngineCylinderKnockOut(actor, number, i);
}

public void doSetCyliderKnockOut(int i) {
cylindersOperable -= i;
if (cylindersOperable < 0)
cylindersOperable = 0;
if (bIsMaster) {
if (getCylindersRatio() < 0.12F)
setEngineDies(reference.actor);
else if (getCylindersRatio() < getReadyness())
setReadyness(reference.actor, getCylindersRatio());
}
}

public void setMagnetoKnockOut(Actor actor, int i) {
reference.AS.setEngineMagnetoKnockOut(reference.actor, number, i);
}

public void doSetMagnetoKnockOut(int i) {
bMagnetos[i] = false;
if (i == controlMagneto)
setEngineStops(reference.actor);
}

public void setEngineStuck(Actor actor) {
reference.AS.setEngineStuck(actor, number);
}

public void doSetEngineStuck() {
bIsInoperable = true;
reference.setCapableOfTaxiing(false);
reference.setCapableOfACM(false);
if (stage != 8) {
setReadyness(0.0F);
if (reference.isPlayers() && stage != 7)
HUD.log("FailedEngine");
stage = 8;
timer = Time.current();
}
}

public void setw(float f) {
w = f;
rpm = toRPM(w);
}

public void setPropPhi(float f) {
propPhi = f;
}

public void setEngineMomentMax(float f) {
engineMomentMax = f;
}

public void setPos(Point3d point3d) {
enginePos.set(point3d);
}

public void setPropPos(Point3d point3d) {
propPos.set(point3d);
}

public void setVector(Vector3f vector3f) {
engineVector.set(vector3f);
engineVector.normalize();
}

public void setControlThrottle(float f) {
if (bHasThrottleControl) {
if (afterburnerType == 4) {
if (f > 1.0F && controlThrottle <= 1.0F
&& reference.M.requestNitro(1.0E-4F)) {
reference.CT.setAfterburnerControl(true);
setControlAfterburner(true);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(true);
HUD.logRightBottom("BoostWepTP4");
}
}
if (f < 1.0F && controlThrottle >= 1.0F) {
reference.CT.setAfterburnerControl(false);
setControlAfterburner(false);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(false);
HUD.logRightBottom(null);
}
}
} else if (afterburnerType == 8) {
if (f > 1.0F && controlThrottle <= 1.0F) {
reference.CT.setAfterburnerControl(true);
setControlAfterburner(true);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(true);
HUD.logRightBottom("BoostWepTP7");
}
}
if (f < 1.0F && controlThrottle >= 1.0F) {
reference.CT.setAfterburnerControl(false);
setControlAfterburner(false);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(false);
HUD.logRightBottom(null);
}
}
} else if (afterburnerType == 10) {
if (f > 1.0F && controlThrottle <= 1.0F) {
reference.CT.setAfterburnerControl(true);
setControlAfterburner(true);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(true);
HUD.logRightBottom("BoostWepTP0");
}
}
if (f < 1.0F && controlThrottle >= 1.0F) {
reference.CT.setAfterburnerControl(false);
setControlAfterburner(false);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(false);
HUD.logRightBottom(null);
}
}
}
controlThrottle = f;
}
}

public void setControlAfterburner(boolean bool) {
if (bHasAfterburnerControl) {
if (afterburnerType == 1 && !controlAfterburner && bool
&& controlThrottle > 1.0F && World.Rnd().nextFloat() < 0.5F
&& reference.isPlayers()
&& reference instanceof RealFlightModel
&& ((RealFlightModel) reference).isRealMode()
&& World.cur().diffCur.Vulnerability)
setCyliderKnockOut(reference.actor, World.Rnd().nextInt(0, 3));
controlAfterburner = bool;
}
if (afterburnerType == 4 || afterburnerType == 8
|| afterburnerType == 10)
controlAfterburner = bool;
}

public void doSetKillControlThrottle() {
bHasThrottleControl = false;
}

public void setControlPropDelta(int i) {
controlPropDirection = i;
}

public int getControlPropDelta() {
return controlPropDirection;
}

public void doSetKillControlAfterburner() {
bHasAfterburnerControl = false;
}

public void setControlProp(float f) {
if (bHasPropControl)
controlProp = f;
}

public void setControlPropAuto(boolean bool) {
if (bHasPropControl)
bControlPropAuto = bool && isAllowsAutoProp();
}

public void doSetKillControlProp() {
bHasPropControl = false;
}

public void setControlMix(float f) {
if (bHasMixControl) {
switch (mixerType) {
case 0:
controlMix = f;
break;
case 1:
controlMix = f;
if (controlMix < 1.0F)
controlMix = 1.0F;
break;
default:
controlMix = f;
}
}
}

public void doSetKillControlMix() {
bHasMixControl = false;
}

public void setControlMagneto(int i) {
if (bHasMagnetoControl) {
controlMagneto = i;
if (i == 0)
setEngineStops(reference.actor);
}
}

public void setControlCompressor(int i) {
if (bHasCompressorControl)
controlCompressor = i;
}

public void setControlFeather(int i) {
if (bHasFeatherControl) {
controlFeather = i;
if (reference.isPlayers())
HUD.log("EngineFeather" + controlFeather);
}
}

public void setControlRadiator(float f) {
if (bHasRadiatorControl)
controlRadiator = f;
}

public void setExtinguisherFire() {
if (bIsMaster) {
if (bHasExtinguisherControl) {
reference.AS.setEngineSpecificDamage(reference.actor, number,
5);
if (reference.AS.astateEngineStates[number] > 2)
reference.AS.setEngineState(reference.actor, number,
World.Rnd().nextInt(1, 2));
else if (reference.AS.astateEngineStates[number] > 0)
reference.AS.setEngineState(reference.actor, number, 0);
}
}
}

public void doSetExtinguisherFire() {
if (bHasExtinguisherControl) {
extinguishers--;
if (extinguishers == 0)
bHasExtinguisherControl = false;
reference.AS.doSetEngineExtinguisherVisuals(number);
if (bIsMaster) {
if (reference.AS.astateEngineStates[number] > 1
&& World.Rnd().nextFloat() < 0.56F)
reference.AS.repairEngine(number);
if (reference.AS.astateEngineStates[number] > 3
&& World.Rnd().nextFloat() < 0.21F) {
reference.AS.repairEngine(number);
reference.AS.repairEngine(number);
}
tWaterOut -= 4.0F;
tOilIn -= 4.0F;
tOilOut -= 4.0F;
}
if (reference.isPlayers())
HUD.log("ExtinguishersFired");
}
}

private void computeStage(float f) {
if (stage != 6) {
bTFirst = false;
float f_31_ = 20.0F;
long l = Time.current() - timer;
if (stage > 0 && stage < 6 && l > given) {
stage++;
timer = Time.current();
l = 0L;
}
if (oldStage != stage) {
bTFirst = true;
oldStage = stage;
}
if (stage > 0 && stage < 6)
setControlThrottle(0.2F);
switch (stage) {
case 0:
if (bTFirst) {
given = 4611686018427387903L;
timer = Time.current();
}
if (isnd != null)
isnd.onEngineState(stage);
break;
case 1:
if (bTFirst) {
if (bIsStuck) {
stage = 8;
break;
}
if (type == 3 || type == 4 || type == 6) {
stage = 5;
if (reference.isPlayers())
HUD.log("Starting_Engine");
break;
}
if (type == 0 || type == 1 || type == 7) {
if (w > wMin) {
stage = 3;
if (reference.isPlayers())
HUD.log("Starting_Engine");
break;
}
if (!bIsAutonomous) {
if ((Airport.distToNearestAirport(reference.Loc)
< 1200.0)
&& reference.isStationedOnGround()) {
setControlMagneto(3);
if (reference.isPlayers())
HUD.log("Starting_Engine");
} else {
doSetEngineStops();
if (reference.isPlayers())
HUD.log("EngineI0");
break;
}
} else if (reference.isPlayers())
HUD.log("Starting_Engine");
} else if (!bIsAutonomous) {
if ((Airport.distToNearestAirport(reference.Loc)
< 1200.0)
&& reference.isStationedOnGround()) {
setControlMagneto(3);
if (reference.isPlayers())
HUD.log("Starting_Engine");
} else {
if (reference.getSpeedKMH() < 350.0F) {
doSetEngineStops();
if (reference.isPlayers())
HUD.log("EngineI0");
break;
}
if (reference.isPlayers())
HUD.log("Starting_Engine");
}
} else if (reference.isPlayers())
HUD.log("Starting_Engine");
given
= (long) (500.0F * World.Rnd().nextFloat(1.0F, 2.0F));
}
if (isnd != null)
isnd.onEngineState(stage);
reference.CT.setMagnetoControl(3);
setControlMagneto(3);
w = 0.1047F * (20.0F * (float) l / (float) given);
setControlThrottle(0.0F);
break;
case 2:
if (bTFirst) {
given
= (long) (4000.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (bRan) {
given
= (long) (100.0F
+ ((tOilOutMaxRPM - tOilOut)
/ (tOilOutMaxRPM - f_31_) * 7900.0F
* World.Rnd().nextFloat(2.0F, 4.2F)));
if (given > 9000L)
given = World.Rnd().nextLong(7800L, 9600L);
if (bIsMaster && World.Rnd().nextFloat() < 0.5F) {
stage = 0;
reference.AS.setEngineStops(number);
}
}
}
w = 0.1047F * (20.0F + 15.0F * (float) l / (float) given);
setControlThrottle(0.0F);
if (isnd != null)
isnd.onEngineState(stage);
break;
case 3:
if (bTFirst) {
if (isnd != null)
isnd.onEngineState(stage);
if (bIsInoperable) {
stage = 0;
doSetEngineDies();
break;
}
given = (long) (50.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (bIsMaster && World.Rnd().nextFloat() < 0.12F
&& ((tOilOutMaxRPM - tOilOut) / (tOilOutMaxRPM - f_31_)
< 0.75F))
reference.AS.setEngineStops(number);
}
w = 0.1047F * (60.0F + 60.0F * (float) l / (float) given);
setControlThrottle(0.0F);
if (reference != null && type != 2 && type != 3 && type != 4
&& type != 6 && type != 5) {
for (int i = 1; i < 32; i++) {
try {
Hook hook
= reference.actor.findHook("_Engine"
+ (number + 1)
+ "EF_"
+ (i < 10 ? "0" + i
: "" + i));
if (hook != null)
Eff3DActor.New
(reference.actor, hook, null, 1.0F,
("3DO/Effects/Aircraft/EngineStart"
+ World.Rnd().nextInt(1, 3) + ".eff"),
-1.0F);
} catch (Exception exception) {
/* empty */
}
}
}
break;
case 4:
if (bTFirst)
given
= (long) (500.0F * World.Rnd().nextFloat(1.0F, 2.0F));
w = 12.564F;
setControlThrottle(0.0F);
if (isnd != null)
isnd.onEngineState(stage);
break;
case 5:
if (bTFirst) {
given
= (long) (500.0F * World.Rnd().nextFloat(1.0F, 2.0F));
if (bRan && (type == 0 || type == 1 || type == 7)) {
if ((tOilOutMaxRPM - tOilOut) / (tOilOutMaxRPM - f_31_)
> 0.75F) {
if (type == 0 || type == 7) {
if (bIsMaster && getReadyness() > 0.75F
&& World.Rnd().nextFloat() < 0.25F)
setReadyness(getReadyness() - 0.05F);
} else if (type == 1 && bIsMaster
&& World.Rnd().nextFloat() < 0.1F)
reference.AS.setEngineDies(reference.actor,
number);
}
if (bIsMaster && World.Rnd().nextFloat() < 0.1F)
reference.AS.setEngineStops(number);
}
bRan = true;
}
w = 0.1047F * (120.0F + 120.0F * (float) l / (float) given);
setControlThrottle(0.2F);
if (isnd != null)
isnd.onEngineState(stage);
break;
case 6:
if (bTFirst) {
given = -1L;
reference.AS.setEngineRunning(number);
}
if (isnd != null)
isnd.onEngineState(stage);
break;
case 7:
case 8:
if (bTFirst)
given = -1L;
setReadyness(0.0F);
setControlMagneto(0);
if (isnd != null)
isnd.onEngineState(stage);
break;
}
}
}

private void computeFuel(float f) {
tmpF = 0.0F;
float f_32_ = w * _1_wMax;
if (stage == 6) {
double d;
float f_33_;
switch (type) {
case 0:
case 1:
case 7:
d = momForFuel * (double) w * 0.00105;
f_33_ = (float) d / horsePowers;
if (d < (double) horsePowers * 0.05)
d = (double) horsePowers * 0.05;
break;
default:
d = (double) (thrustMax * (f_33_ = getPowerOutput()));
if (d < (double) thrustMax * 0.05)
d = (double) thrustMax * 0.05;
}
if (f_33_ < 0.0F)
f_33_ = 0.0F;
double d_34_;
if (f_33_ <= 0.5F)
d_34_ = ((double) FuelConsumptionP0
+ ((double) (FuelConsumptionP05 - FuelConsumptionP0)
* (2.0 * (double) f_33_)));
else if ((double) f_33_ <= 1.0)
d_34_ = ((double) FuelConsumptionP05
+ ((double) (FuelConsumptionP1 - FuelConsumptionP05)
* (2.0 * ((double) f_33_ - 0.5))));
else {
float f_35_ = f_33_ - 1.0F;
if (f_35_ > 0.1F)
f_35_ = 0.1F;
f_35_ *= 10.0F;
d_34_ = (double) (FuelConsumptionP1
+ ((FuelConsumptionPMAX - FuelConsumptionP1)
* f_35_));
}
d_34_ /= 3600.0;
switch (type) {
case 0:
case 1:
case 7: {
float f_36_ = (float) (d_34_ * d);
tmpF = f_36_ * f;
double d_37_ = (double) (f_36_ * 4.4E7F);
double d_38_ = (double) (f_36_ * 15.7F);
double d_39_ = 1010.0 * d_38_ * 700.0;
d *= 746.0;
Ptermo = (float) (d_37_ - d - d_39_);
break;
}
case 2:
tmpF = (float) (d_34_ * d * (double) f);
break;
case 3:
if (reference.actor instanceof BI_1
|| reference.actor instanceof BI_6)
tmpF = 1.8F * getPowerOutput() * f;
else if (reference.actor instanceof MXY_7)
tmpF = 0.5F * getPowerOutput() * f;
else
tmpF = 2.5777F * getPowerOutput() * f;
break;
case 4:
tmpF = 1.4320556F * getPowerOutput() * f;
tmpB = reference.M.requestNitro(tmpF);
tmpF = 0.0F;
if (!tmpB && bIsMaster) {
setEngineStops(reference.actor);
if (reference.isPlayers() && engineNoFuelHUDLogId == -1) {
engineNoFuelHUDLogId = HUD.makeIdLog();
HUD.log(engineNoFuelHUDLogId, "EngineNoFuel");
}
} else
break;
return;
case 6:
tmpF = (float) (d_34_ * d * (double) f);
tmpB = reference.M.requestNitro(tmpF);
tmpF = 0.0F;
if (!tmpB && bIsMaster) {
setEngineStops(reference.actor);
if (reference.isPlayers() && engineNoFuelHUDLogId == -1) {
engineNoFuelHUDLogId = HUD.makeIdLog();
HUD.log(engineNoFuelHUDLogId, "EngineNoFuel");
}
} else
break;
return;
}
}
tmpB = reference.M.requestFuel(tmpF);
if (!tmpB && bIsMaster) {
setEngineStops(reference.actor);
reference.setCapableOfACM(false);
reference.setCapableOfTaxiing(false);
if (reference.isPlayers() && engineNoFuelHUDLogId == -1) {
engineNoFuelHUDLogId = HUD.makeIdLog();
HUD.log(engineNoFuelHUDLogId, "EngineNoFuel");
}
}
if (controlAfterburner) {
switch (afterburnerType) {
case 1:
if (controlThrottle > 1.0F
&& !reference.M.requestNitro(0.044872F * f)
&& reference.isPlayers()
&& reference instanceof RealFlightModel
&& ((RealFlightModel) reference).isRealMode()
&& World.cur().diffCur.Vulnerability)
setReadyness(reference.actor, getReadyness() - 0.01F * f);
break;
case 2:
if (!reference.M.requestNitro(0.044872F * f)) {
/* empty */
}
break;
case 5:
if (!reference.M.requestNitro(0.044872F * f)) {
/* empty */
}
break;
case 9:
if (!reference.M.requestNitro(0.044872F * f)) {
/* empty */
}
break;
case 4:
if (!reference.M.requestNitro(0.044872F * f)) {
reference.CT.setAfterburnerControl(false);
if (reference.isPlayers()) {
Main3D.cur3D().aircraftHotKeys
.setAfterburnerForAutoActivation(false);
HUD.logRightBottom(null);
}
}
break;
}
}
}

private void computeReliability(float f) {
if (stage == 6) {
float f_40_ = controlThrottle;
if (engineBoostFactor > 1.0F)
f_40_ *= 0.9090909F;
switch (type) {
default:
zatizeni = (double) f_40_;
zatizeni = zatizeni * zatizeni;
zatizeni = zatizeni * zatizeni;
zatizeni *= (double) f * 6.19842621786999E-5;
if (zatizeni > World.Rnd().nextDouble(0.0, 1.0)) {
int i = World.Rnd().nextInt(0, 9);
if (i < 2) {
reference.AS.hitEngine(reference.actor, number, 3);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - smoke"));
} else {
setCyliderKnockOut(reference.actor,
World.Rnd().nextInt(0, 3));
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - power loss"));
}
}
break;
case 0:
case 1:
case 7: {
zatizeni = (double) (coolMult * f_40_);
zatizeni *= (double) (w / wWEP);
zatizeni = zatizeni * zatizeni;
zatizeni = zatizeni * zatizeni;
double d = zatizeni * (double) f * 1.4248134284734321E-5;
if (d > World.Rnd().nextDouble(0.0, 1.0)) {
int i = World.Rnd().nextInt(0, 19);
if (i < 10) {
reference.AS.setEngineCylinderKnockOut(reference.actor,
number, 1);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - cylinder"));
} else if (i < 12) {
if (i < 11) {
reference.AS.setEngineMagnetoKnockOut((reference
.actor),
number, 0);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - mag1"));
} else {
reference.AS.setEngineMagnetoKnockOut((reference
.actor),
number, 1);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - mag2"));
}
} else if (i < 14) {
reference.AS.setEngineDies(reference.actor, number);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - dead"));
} else if (i < 15) {
reference.AS.setEngineStuck(reference.actor, number);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - stuck"));
} else if (i < 17) {
setKillPropAngleDevice(reference.actor);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - propAngler"));
} else {
reference.AS.hitOil(reference.actor, number);
Aircraft.debugprintln(reference.actor,
("Malfunction #" + number
+ " - oil"));
}
}
}
}
}
}
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Пред.След.

Вернуться в Ил-2 Air Domination War

Кто сейчас на конференции

Посетителей: 6, из них зарегистрированных: 0, скрытых: 0 и гостей: 6 (находятся на конференции)
Этот раздел просматривают: нет зарегистрированных пользователей и гости: 6