КОД Ил-2

Сообщение Karabas-Barabas » 14 ноя 2011, 18:52

[На счет бетонности Ю-88.

public void rareAction(float f, boolean bool) {
super.rareAction(f, bool);
if (bool && World.Rnd().nextFloat() < 0.2F) {
if (FM.AS.astateEngineStates[0] > 3) {
if (World.Rnd().nextFloat() < 0.25F)
FM.AS.hitTank(this, 0, 3);
if (World.Rnd().nextFloat() < 0.12F)
FM.AS.hitTank(this, 1, 3);
}
if (FM.AS.astateEngineStates[1] > 3) {
if (World.Rnd().nextFloat() < 0.12F)
FM.AS.hitTank(this, 2, 3);
if (World.Rnd().nextFloat() < 0.25F)
FM.AS.hitTank(this, 3, 3);
}
if (FM.AS.astateTankStates[0] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[0] + "0", 0, this);
if (FM.AS.astateTankStates[1] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[1] + "0", 0, this);
if (FM.AS.astateTankStates[1] > 4
&& World.Rnd().nextFloat() < 0.11F)
FM.AS.hitTank(this, 2, 3);
if (FM.AS.astateTankStates[2] > 4
&& World.Rnd().nextFloat() < 0.11F)
FM.AS.hitTank(this, 1, 3);
if (FM.AS.astateTankStates[2] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[2] + "0", 0, this);
if (FM.AS.astateTankStates[3] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[3] + "0", 0, this);
}
if (!(this instanceof JU_88MSTL)) {
for (int i = 1; i < 4; i++) {
if (FM.getAltitude() < 3000.0F)
hierMesh().chunkVisible("HMask" + i + "_D0", false);
else
hierMesh().chunkVisible
("HMask" + i + "_D0",
hierMesh().isChunkVisible("Pilot" + i + "_D0"));
}
}
}


protected void hitBone(String string, Shot shot, Point3d point3d) {
if (string.startsWith("xx")) {
if (string.startsWith("xxarmor")) {
if (string.endsWith("p1")) {
if (Aircraft.v1.z > 0.5)
getEnergyPastArmor(5.0 / Aircraft.v1.z, shot);
else if (Aircraft.v1.x > 0.9396926164627075)
getEnergyPastArmor
((10.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
} else if (string.endsWith("p2"))
getEnergyPastArmor(5.0 / Math.abs(Aircraft.v1.z), shot);
else if (string.endsWith("p5"))
getEnergyPastArmor(5.0 / Math.abs(Aircraft.v1.z), shot);
else if (string.endsWith("p3"))
getEnergyPastArmor((8.0 / Math.abs(Aircraft.v1.x)
* (double) World.Rnd()
.nextFloat(1.0F, 1.2F)),
shot);
else if (string.endsWith("p4")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else if (Aircraft.v1.x > -0.7071067690849304)
getEnergyPastArmor(6.0F, shot);
} else if (string.endsWith("o1") || string.endsWith("o2")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else
getEnergyPastArmor(5.0F, shot);
}
}
if (string.startsWith("xxcontrols")) {
int i = string.charAt(10) - 48;
switch (i) {
default:
break;
case 1:
case 2:
if (getEnergyPastArmor(1.0F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.08F) {
FM.AS.setControlsDamage(shot.initiator, 1);
mydebuggunnery("Evelator Controls Out..");
}
if (World.Rnd().nextFloat() < 0.08F) {
FM.AS.setControlsDamage(shot.initiator, 2);
mydebuggunnery("Rudder Controls Out..");
}
}
break;
case 3:
case 4:
if (getEnergyPastArmor(1.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 0);
mydebuggunnery("Ailerons Controls Out..");
}
break;
case 5:
if (!(getEnergyPastArmor(0.1F, shot) <= 0.0F)) {
if (World.Rnd().nextFloat() < 0.25F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
1);
mydebuggunnery
("*** Engine1 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.15F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
6);
mydebuggunnery("*** Engine1 Prop Controls Out..");
}
}
break;
case 6:
if (!(getEnergyPastArmor(0.1F, shot) <= 0.0F)) {
if (World.Rnd().nextFloat() < 0.15F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
1);
mydebuggunnery
("*** Engine2 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.15F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
6);
mydebuggunnery("*** Engine2 Prop Controls Out..");
}
}
}
}
if (string.startsWith("xxcannon1")) {
debuggunnery("MGFF: Disabled..");
FM.AS.setJamBullets(1, 0);
getEnergyPastArmor(World.Rnd().nextFloat(3.3F, 24.6F), shot);
}
if (string.startsWith("xxspar")) {
getEnergyPastArmor(1.0F, shot);
if ((string.endsWith("cf1") || string.endsWith("cf2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("CF") > 2
&& getEnergyPastArmor((15.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
mydebuggunnery("*** CF Spars Broken in Half..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
msgCollision(this, "WingLIn_D0", "WingLIn_D0");
msgCollision(this, "WingRIn_D0", "WingRIn_D0");
}
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..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
}
if ((string.endsWith("li1") || string.endsWith("li2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLIn") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingLIn Spars Damaged..");
nextDMGLevels(1, 2, "WingLIn_D3", shot.initiator);
}
if ((string.endsWith("ri1") || string.endsWith("ri2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRIn") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingRIn Spars Damaged..");
nextDMGLevels(1, 2, "WingRIn_D3", shot.initiator);
}
if ((string.endsWith("lm1") || string.endsWith("lm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLMid") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingLMid Spars Damaged..");
nextDMGLevels(1, 2, "WingLMid_D3", shot.initiator);
}
if ((string.endsWith("rm1") || string.endsWith("rm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRMid") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingRMid Spars Damaged..");
nextDMGLevels(1, 2, "WingRMid_D3", shot.initiator);
}
if ((string.endsWith("lo1") || string.endsWith("lo2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLOut") > 2
&& getEnergyPastArmor(8.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingLOut Spars Damaged..");
nextDMGLevels(1, 2, "WingLOut_D3", shot.initiator);
}
if ((string.endsWith("ro1") || string.endsWith("ro2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingROut") > 2
&& getEnergyPastArmor(8.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingROut Spars Damaged..");
nextDMGLevels(1, 2, "WingROut_D3", shot.initiator);
}
if (string.endsWith("e1")
&& (point3d.y > 2.79 || point3d.y < 2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
mydebuggunnery("*** Engine1 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine1_D0", shot.initiator);
}
if (string.endsWith("e2")
&& (point3d.y < -2.79 || point3d.y > -2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
mydebuggunnery("*** Engine2 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine2_D0", shot.initiator);
}
}
if (string.startsWith("xxbomb") && World.Rnd().nextFloat() < 0.01F
&& FM.CT.Weapons[3] != null
&& FM.CT.Weapons[3][0].haveBullets()) {
mydebuggunnery("*** Bomb Payload Detonates..");
FM.AS.hitTank(shot.initiator, 0, 100);
FM.AS.hitTank(shot.initiator, 1, 100);
FM.AS.hitTank(shot.initiator, 2, 100);
FM.AS.hitTank(shot.initiator, 3, 100);
msgCollision(this, "CF_D0", "CF_D0");
}
if (string.startsWith("xxprop")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(2.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.35F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 3);
mydebuggunnery("*** Engine" + (i + 1)
+ " Governor Failed..");
}
}
if (string.startsWith("xxengine")) {
int i = 0;
if (string.startsWith("xxengine2"))
i = 1;
mydebuggunnery("*** Engine " + i + " " + string + " hit");
if (string.endsWith("base")) {
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < shot.power / 120000.0F) {
FM.AS.setEngineStuck(shot.initiator, i);
mydebuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Stucks..");
}
if (World.Rnd().nextFloat() < shot.power / 30000.0F) {
FM.AS.hitEngine(shot.initiator, i, 2);
mydebuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Damaged..");
}
}
} else if (string.endsWith("cyl")) {
mydebuggunnery("*** Engine " + i + " " + string + " hit");
if (getEnergyPastArmor(1.2F, shot) > 0.0F
&& (World.Rnd().nextFloat()
< FM.EI.engines[i].getCylindersRatio() * 1.8F)) {
FM.EI.engines[i].setCyliderKnockOut
(shot.initiator,
World.Rnd().nextInt(1, (int) (shot.power
/ 4800.0F)));
mydebuggunnery("*** Engine" + (i + 1)
+ " Cylinders Hit, "
+ FM.EI.engines[i]
.getCylindersOperable()
+ "/" + FM.EI.engines[i].getCylinders()
+ " Left..");
if (FM.AS.astateEngineStates[i] < 1) {
FM.AS.hitEngine(shot.initiator, i, 1);
FM.AS.doSetEngineState(shot.initiator, i, 1);
}
if (World.Rnd().nextFloat() < shot.power / 960000.0F) {
FM.AS.hitEngine(shot.initiator, i, 3);
mydebuggunnery
("*** Engine" + (i + 1)
+ " Cylinders Hit - Engine Fires..");
}
mydebuggunnery("*** Engine" + (i + 1) + " state "
+ FM.AS.astateEngineStates[i]);
}
} else if (string.endsWith("sup")
&& getEnergyPastArmor(0.05F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.89F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 0);
mydebuggunnery("*** Engine" + (i + 1)
+ " Supercharger Out..");
}
if (World.Rnd().nextFloat(0.0F, 18000.0F) < shot.power)
FM.AS.hitEngine(shot.initiator, i, 1);
FM.AS.hitOil(shot.initiator, i);
}
if (string.startsWith("xxoil")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(0.18F, shot) > 0.0F) {
FM.AS.hitOil(shot.initiator, i);
getEnergyPastArmor(0.42F, shot);
}
}
if (string.startsWith("xxtank")) {
int i = string.charAt(6) - 49;
if (getEnergyPastArmor(0.5F, shot) > 0.0F) {
if (shot.power < 14100.0F) {
if (FM.AS.astateTankStates[i] < 1)
FM.AS.hitTank(shot.initiator, i, 1);
if (FM.AS.astateTankStates[i] < 4
&& World.Rnd().nextFloat() < 0.1F)
FM.AS.hitTank(shot.initiator, i, 1);
if (shot.powerType == 3
&& FM.AS.astateTankStates[i] > 2
&& World.Rnd().nextFloat() < 0.12F)
FM.AS.hitTank(shot.initiator, i, 10);
} else
FM.AS.hitTank(shot.initiator, i,
World.Rnd().nextInt(0,
(int) (shot.power
/ 20000.0F)));
}
mydebuggunnery("*** Tank " + (i + 1) + " state = "
+ FM.AS.astateTankStates[i]);
}
}
if (string.startsWith("xoil")) {
if (string.equals("xoil1")) {
FM.AS.hitOil(shot.initiator, 0);
string = "xengine1";
}
if (string.equals("xoil2")) {
FM.AS.hitOil(shot.initiator, 1);
string = "xengine2";
}
}
if (string.startsWith("xcf")) {
if (chunkDamageVisible("CF") < 3)
hitChunk("CF", shot);
} else if (string.startsWith("xnose")) {
if (chunkDamageVisible("Nose") < 2)
hitChunk("Nose", shot);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x40);
if (point3d.x > 4.505000114440918)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x1);
else if (point3d.y > 0.0) {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x4);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x8);
} else {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x10);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x20);
}
} else if (string.startsWith("xtail")) {
if (chunkDamageVisible("Tail1") < 3)
hitChunk("Tail1", shot);
} else if (string.startsWith("xkeel")) {
if (chunkDamageVisible("Keel1") < 2)
hitChunk("Keel1", shot);
} else if (string.startsWith("xrudder"))
hitChunk("Rudder1", shot);
else if (string.startsWith("xstabl"))
hitChunk("StabL", shot);
else if (string.startsWith("xstabr"))
hitChunk("StabR", shot);
else if (string.startsWith("xvatorl"))
hitChunk("VatorL", shot);
else if (string.startsWith("xvatorr"))
hitChunk("VatorR", shot);
else if (string.startsWith("xwinglin")) {
if (chunkDamageVisible("WingLIn") < 3)
hitChunk("WingLIn", shot);
} else if (string.startsWith("xwingrin")) {
if (chunkDamageVisible("WingRIn") < 3)
hitChunk("WingRIn", shot);
} else if (string.startsWith("xwinglmid")) {
if (chunkDamageVisible("WingLMid") < 3)
hitChunk("WingLMid", shot);
} else if (string.startsWith("xwingrmid")) {
if (chunkDamageVisible("WingRMid") < 3)
hitChunk("WingRMid", shot);
} else if (string.startsWith("xwinglout")) {
if (chunkDamageVisible("WingLOut") < 3)
hitChunk("WingLOut", shot);
} else if (string.startsWith("xwingrout")) {
if (chunkDamageVisible("WingROut") < 3)
hitChunk("WingROut", shot);
} else if (string.startsWith("xaronel"))
hitChunk("AroneL", shot);
else if (string.startsWith("xaroner"))
hitChunk("AroneR", shot);
else if (string.startsWith("xengine1")) {
if (chunkDamageVisible("Engine1") < 2)
hitChunk("Engine1", shot);
} else if (string.startsWith("xengine2")) {
if (chunkDamageVisible("Engine2") < 2)
hitChunk("Engine2", shot);
} else if (string.startsWith("xgear")) {
if (string.endsWith("1") && World.Rnd().nextFloat() < 0.05F) {
debuggunnery("Hydro System: Disabled..");
FM.AS.setInternalDamage(shot.initiator, 0);
}
if (string.endsWith("2")) {
if (World.Rnd().nextFloat() < 0.1F
&& getEnergyPastArmor(World.Rnd().nextFloat(6.8F, 29.35F),
shot) > 0.0F) {
debuggunnery("Undercarriage: Stuck..");
FM.AS.setInternalDamage(shot.initiator, 3);
}
String string_4_ = "" + string.charAt(5);
hitChunk("Gear" + string_4_.toUpperCase() + "2", shot);
}
} else if (string.startsWith("xturret")) {
if (string.startsWith("xturret1"))
FM.AS.setJamBullets(10, 0);
if (string.startsWith("xturret2"))
FM.AS.setJamBullets(11, 0);
if (string.startsWith("xturret3"))
FM.AS.setJamBullets(12, 0);
if (string.startsWith("xturret4"))
FM.AS.setJamBullets(13, 0);
if (string.startsWith("xturret5"))
FM.AS.setJamBullets(14, 0);
} else if (string.startsWith("xpilot") || string.startsWith("xhead")) {
int i = 0;
int i_5_;
if (string.endsWith("a")) {
i = 1;
i_5_ = string.charAt(6) - 49;
} else if (string.endsWith("b")) {
i = 2;
i_5_ = string.charAt(6) - 49;
} else
i_5_ = string.charAt(5) - 49;
hitFlesh(i_5_, shot, i);
}
hierMesh().chunkVisible("fakeNose_D1",
hierMesh().isChunkVisible("Nose_D1"));
hierMesh().chunkVisible("fakeNose_D2",
hierMesh().isChunkVisible("Nose_D2"));
hierMesh().chunkVisible("fakeNose_D3",
hierMesh().isChunkVisible("Nose_D3"));
}


protected void hitBone(String string, Shot shot, Point3d point3d) {
if (string.startsWith("xx")) {
if (string.startsWith("xxarmor")) {
if (string.endsWith("p1")) {
if (Aircraft.v1.z > 0.5)
getEnergyPastArmor(5.0 / Aircraft.v1.z, shot);
else if (Aircraft.v1.x > 0.9396926164627075)
getEnergyPastArmor
((10.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
} else if (string.endsWith("p2"))
getEnergyPastArmor(5.0 / Math.abs(Aircraft.v1.z), shot);
else if (string.endsWith("p3a") || string.endsWith("p3b"))
getEnergyPastArmor((8.0 / Math.abs(Aircraft.v1.x)
* (double) World.Rnd()
.nextFloat(1.0F, 1.2F)),
shot);
else if (string.endsWith("p4")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else if (Aircraft.v1.x > -0.7071067690849304)
getEnergyPastArmor(6.0F, shot);
} else if (string.endsWith("o1") || string.endsWith("o2")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else
getEnergyPastArmor(5.0F, shot);
}
}
if (string.startsWith("xxcontrols")) {
int i = string.charAt(10) - 48;
switch (i) {
case 1:
case 2:
if (getEnergyPastArmor(1.0F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 1);
debuggunnery("Evelator Controls Out..");
}
if (World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 2);
debuggunnery("Rudder Controls Out..");
}
}
break;
case 3:
case 4:
if (getEnergyPastArmor(1.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.25F) {
FM.AS.setControlsDamage(shot.initiator, 0);
debuggunnery("Ailerons Controls Out..");
}
break;
case 5:
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.75F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
1);
debuggunnery
("*** Engine1 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.45F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
6);
debuggunnery("*** Engine1 Prop Controls Out..");
}
}
break;
case 6:
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.75F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
1);
debuggunnery
("*** Engine2 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.45F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
6);
debuggunnery("*** Engine2 Prop Controls Out..");
}
}
break;
}
}
if (string.startsWith("xxspar")) {
if ((string.endsWith("cf1") || string.endsWith("cf2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("CF") > 2
&& getEnergyPastArmor((19.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
debuggunnery("*** CF Spars Broken in Half..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
msgCollision(this, "WingLIn_D0", "WingLIn_D0");
msgCollision(this, "WingRIn_D0", "WingRIn_D0");
}
if ((string.endsWith("ta1") || string.endsWith("ta2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("Tail1") > 2
&& getEnergyPastArmor((19.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
debuggunnery("*** Tail1 Spars Broken in Half..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
}
if ((string.endsWith("li1") || string.endsWith("li2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLIn") > 2
&& getEnergyPastArmor(17.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingLIn Spars Damaged..");
nextDMGLevels(1, 2, "WingLIn_D3", shot.initiator);
}
if ((string.endsWith("ri1") || string.endsWith("ri2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRIn") > 2
&& getEnergyPastArmor(17.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingRIn Spars Damaged..");
nextDMGLevels(1, 2, "WingRIn_D3", shot.initiator);
}
if ((string.endsWith("lm1") || string.endsWith("lm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLMid") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingLMid Spars Damaged..");
nextDMGLevels(1, 2, "WingLMid_D3", shot.initiator);
}
if ((string.endsWith("rm1") || string.endsWith("rm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRMid") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingRMid Spars Damaged..");
nextDMGLevels(1, 2, "WingRMid_D3", shot.initiator);
}
if ((string.endsWith("lo1") || string.endsWith("lo2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLOut") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingLOut Spars Damaged..");
nextDMGLevels(1, 2, "WingLOut_D3", shot.initiator);
}
if ((string.endsWith("ro1") || string.endsWith("ro2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingROut") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingROut Spars Damaged..");
nextDMGLevels(1, 2, "WingROut_D3", shot.initiator);
}
if (string.endsWith("e1")
&& (point3d.y > 2.79 || point3d.y < 2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
debuggunnery("*** Engine1 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine1_D0", shot.initiator);
}
if (string.endsWith("e2")
&& (point3d.y < -2.79 || point3d.y > -2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
debuggunnery("*** Engine2 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine2_D0", shot.initiator);
}
}
if (string.startsWith("xxbomb") && World.Rnd().nextFloat() < 0.01F
&& FM.CT.Weapons[3] != null
&& FM.CT.Weapons[3][0].haveBullets()) {
debuggunnery("*** Bomb Payload Detonates..");
FM.AS.hitTank(shot.initiator, 0, 100);
FM.AS.hitTank(shot.initiator, 1, 100);
FM.AS.hitTank(shot.initiator, 2, 100);
FM.AS.hitTank(shot.initiator, 3, 100);
msgCollision(this, "CF_D0", "CF_D0");
}
if (string.startsWith("xxprop")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(2.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.35F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 3);
debuggunnery("*** Engine" + (i + 1)
+ " Governor Failed..");
}
}
if (string.startsWith("xxengine")) {
int i = 0;
if (string.startsWith("xxengine2"))
i = 1;
if (string.endsWith("base")) {
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < shot.power / 200000.0F) {
FM.AS.setEngineStuck(shot.initiator, i);
debuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Stucks..");
}
if (World.Rnd().nextFloat() < shot.power / 50000.0F) {
FM.AS.hitEngine(shot.initiator, i, 2);
debuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Damaged..");
}
}
} else if (string.endsWith("cyl")) {
if (getEnergyPastArmor(1.45F, shot) > 0.0F
&& (World.Rnd().nextFloat()
< FM.EI.engines[i].getCylindersRatio() * 0.5F)) {
FM.EI.engines[i].setCyliderKnockOut
(shot.initiator,
World.Rnd().nextInt(1, (int) (shot.power
/ 4800.0F)));
debuggunnery("*** Engine" + (i + 1)
+ " Cylinders Hit, "
+ FM.EI.engines[i].getCylindersOperable()
+ "/" + FM.EI.engines[i].getCylinders()
+ " Left..");
if (FM.AS.astateEngineStates[i] < 1) {
FM.AS.hitEngine(shot.initiator, i, 1);
FM.AS.doSetEngineState(shot.initiator, i, 1);
}
if (World.Rnd().nextFloat() < shot.power / 960000.0F) {
FM.AS.hitEngine(shot.initiator, i, 3);
debuggunnery("*** Engine" + (i + 1)
+ " Cylinders Hit - Engine Fires..");
}
getEnergyPastArmor(25.0F, shot);
}
} else if (string.endsWith("sup")
&& getEnergyPastArmor(0.05F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.89F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 0);
debuggunnery("*** Engine" + (i + 1)
+ " Supercharger Out..");
}
}
if (string.startsWith("xxoil")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(0.21F, shot) > 0.0F) {
FM.AS.hitOil(shot.initiator, i);
getEnergyPastArmor(0.42F, shot);
}
}
if (string.startsWith("xxtank")) {
int i = string.charAt(6) - 49;
if (getEnergyPastArmor(0.2F, shot) > 0.0F) {
if (shot.power < 14100.0F) {
if (FM.AS.astateTankStates[i] == 0) {
FM.AS.hitTank(shot.initiator, i, 1);
FM.AS.doSetTankState(shot.initiator, i, 1);
}
if (World.Rnd().nextFloat() < 0.02F)
FM.AS.hitTank(shot.initiator, i, 1);
if (shot.powerType == 3
&& FM.AS.astateTankStates[i] > 2
&& World.Rnd().nextFloat() < 0.4F)
FM.AS.hitTank(shot.initiator, i, 10);
} else
FM.AS.hitTank(shot.initiator, i,
World.Rnd().nextInt(0,
(int) (shot.power
/ 56000.0F)));
}
}
} else {
if (string.startsWith("xoil")) {
if (string.equals("xoil1")) {
FM.AS.hitOil(shot.initiator, 0);
string = "xengine1";
}
if (string.equals("xoil2")) {
FM.AS.hitOil(shot.initiator, 1);
string = "xengine2";
}
}
if (string.startsWith("xcf")) {
if (chunkDamageVisible("CF") < 3)
hitChunk("CF", shot);
} else if (string.startsWith("xnose")) {
if (chunkDamageVisible("Nose1") < 2)
hitChunk("Nose1", shot);
if (shot.power > 200000.0F) {
FM.AS.hitPilot(shot.initiator, 0,
World.Rnd().nextInt(3, 192));
FM.AS.hitPilot(shot.initiator, 1,
World.Rnd().nextInt(3, 192));
}
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x40);
if (point3d.x > 4.505000114440918)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x1);
else if (point3d.y > 0.0) {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x4);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x8);
} else {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x10);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x20);
}
} else if (string.startsWith("xtail")) {
if (chunkDamageVisible("Tail1") < 3)
hitChunk("Tail1", shot);
} else if (string.startsWith("xkeel")) {
if (chunkDamageVisible("Keel1") < 2)
hitChunk("Keel1", shot);
} else if (string.startsWith("xrudder"))
hitChunk("Rudder1", shot);
else if (string.startsWith("xstabl"))
hitChunk("StabL", shot);
else if (string.startsWith("xstabr"))
hitChunk("StabR", shot);
else if (string.startsWith("xvatorl"))
hitChunk("VatorL", shot);
else if (string.startsWith("xvatorr"))
hitChunk("VatorR", shot);
else if (string.startsWith("xwinglin")) {
if (chunkDamageVisible("WingLIn") < 3)
hitChunk("WingLIn", shot);
} else if (string.startsWith("xwingrin")) {
if (chunkDamageVisible("WingRIn") < 3)
hitChunk("WingRIn", shot);
} else if (string.startsWith("xwinglmid")) {
if (chunkDamageVisible("WingLMid") < 3)
hitChunk("WingLMid", shot);
} else if (string.startsWith("xwingrmid")) {
if (chunkDamageVisible("WingRMid") < 3)
hitChunk("WingRMid", shot);
} else if (string.startsWith("xwinglout")) {
if (chunkDamageVisible("WingLOut") < 3)
hitChunk("WingLOut", shot);
} else if (string.startsWith("xwingrout")) {
if (chunkDamageVisible("WingROut") < 3)
hitChunk("WingROut", shot);
} else if (string.startsWith("xaronel"))
hitChunk("AroneL", shot);
else if (string.startsWith("xaroner"))
hitChunk("AroneR", shot);
else if (string.startsWith("xengine1")) {
if (chunkDamageVisible("Engine1") < 2)
hitChunk("Engine1", shot);
} else if (string.startsWith("xengine2")) {
if (chunkDamageVisible("Engine2") < 2)
hitChunk("Engine2", shot);
} else if (string.startsWith("xgear")) {
if (World.Rnd().nextFloat() < 0.1F) {
debuggunnery("*** Gear Hydro Failed..");
FM.Gears.setHydroOperable(false);
}
} else if (string.startsWith("xturret")) {
if (string.startsWith("xturret1"))
FM.AS.setJamBullets(10, 0);
if (string.startsWith("xturret2"))
FM.AS.setJamBullets(11, 0);
if (string.startsWith("xturret3"))
FM.AS.setJamBullets(12, 0);
if (string.startsWith("xturret4"))
FM.AS.setJamBullets(13, 0);
if (string.startsWith("xturret5"))
FM.AS.setJamBullets(14, 0);
} else if (string.startsWith("xpilot")
|| string.startsWith("xhead")) {
int i = 0;
int i_4_;
if (string.endsWith("a")) {
i = 1;
i_4_ = string.charAt(6) - 49;
} else if (string.endsWith("b")) {
i = 2;
i_4_ = string.charAt(6) - 49;
} else
i_4_ = string.charAt(5) - 49;
hitFlesh(i_4_, shot, i);
}
}
}


Почему для сравнения от Не-111?
Потому что от него и взята. Ну одинаковые они по агрегатам потому что, экипаж только разный и размещен по-разному, но в принципе эти самолеты одинаковые - одинаковые двигатели, одинаковое размещение баков в крыльях, одинаковые тяги, рули и пр. агрегаты. Даже размерения почти равны.

/* MGunMG15120MGs - 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 MGunMG15120MGs extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = false;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = "3DO/Effects/GunFire/20mm/mono.sim";
gunproperties.fire = null;
gunproperties.sprite = "3DO/Effects/GunFire/20mm/GunFlare.eff";
gunproperties.smoke = "effects/smokes/MachineGun.eff";
gunproperties.shells = "3DO/Effects/GunShells/GunShells.eff";
gunproperties.sound = "weapon.mgun_20_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 = 3;
gunproperties.maxDeltaAngle = 0.28F;
gunproperties.shotFreq = 11.5F;
gunproperties.traceFreq = 5;
gunproperties.bullets = 250;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= (new BulletProperties[]
{ new BulletProperties(), new BulletProperties(),
new BulletProperties(), new BulletProperties(),
new BulletProperties() });
gunproperties.bullet[0].massa = 0.115F;
gunproperties.bullet[0].kalibr = 3.2000002E-4F;
gunproperties.bullet[0].speed = 710.0F;
gunproperties.bullet[0].power = 0.0036F;
gunproperties.bullet[0].powerType = 0;
gunproperties.bullet[0].powerRadius = 0.0F;
gunproperties.bullet[0].traceMesh
= "3do/effects/tracers/20mmBlue/mono.sim";
gunproperties.bullet[0].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[0].traceColor = -755040256;
gunproperties.bullet[0].timeLife = 3.3F;
gunproperties.bullet[1].massa = 0.115F;
gunproperties.bullet[1].kalibr = 4.0399996E-4F;
gunproperties.bullet[1].speed = 705.0F;
gunproperties.bullet[1].power = 0.0044F;
gunproperties.bullet[1].powerType = 0;
gunproperties.bullet[1].powerRadius = 0.1F;
gunproperties.bullet[1].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[1].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[1].traceColor = -754974976;
gunproperties.bullet[1].timeLife = 3.0F;
gunproperties.bullet[2].massa = 0.092F;
gunproperties.bullet[2].kalibr = 4.0399996E-4F;
gunproperties.bullet[2].speed = 775.0F;
gunproperties.bullet[2].power = 0.01395F;
gunproperties.bullet[2].powerType = 0;
gunproperties.bullet[2].powerRadius = 0.2F;
gunproperties.bullet[2].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[2].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[2].traceColor = -754974976;
gunproperties.bullet[2].timeLife = 2.0F;
gunproperties.bullet[3].massa = 0.092F;
gunproperties.bullet[3].kalibr = 4.0399996E-4F;
gunproperties.bullet[3].speed = 775.0F;
gunproperties.bullet[3].power = 0.01395F;
gunproperties.bullet[3].powerType = 0;
gunproperties.bullet[3].powerRadius = 0.2F;
gunproperties.bullet[3].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[3].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[3].traceColor = -754974976;
gunproperties.bullet[3].timeLife = 2.0F;
gunproperties.bullet[4].massa = 0.092F;
gunproperties.bullet[4].kalibr = 4.0399996E-4F;
gunproperties.bullet[4].speed = 775.0F;
gunproperties.bullet[4].power = 0.01395F;
gunproperties.bullet[4].powerType = 0;
gunproperties.bullet[4].powerRadius = 0.2F;
gunproperties.bullet[4].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[4].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[4].traceColor = -754974976;
gunproperties.bullet[4].timeLife = 2.0F;
return gunproperties;
}
}


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

public class MGunMG15120MGk extends MGunMG15120MGs
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bUseHookAsRel = true;
gunproperties.shells = "3DO/Effects/GunShells/GunShells.eff";
gunproperties.shotFreq = 12.0F;
gunproperties.maxDeltaAngle = 0.28F;
gunproperties.shotFreqDeviation = 0.02F;
return gunproperties;
}
}
Последний раз редактировалось Karabas-Barabas 14 ноя 2011, 18:58, всего редактировалось 1 раз.
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Сообщение TUS_Romeo » 14 ноя 2011, 18:56

Карабас - это трепло с форума Тумана Войны, который не знает, как выглядит джойстик, но козыряет цЫфирьками. Такие есть - некоторые, к примеру, говорят, что вираж в 4.10 у "мерсов" не изменился, ибо они весь код прошерстили. А на деле - лучше изменения видит тот, кто летает.

Поэтому если на форуме АДВ примут весь трёп форумчан Тумана - трындец АДВ. Сцаными тряпками гнать надо, зарегился, чтобы кодом покозырять :disgust:
Аватара пользователя
TUS_Romeo
Обыватель
Обыватель
 
Сообщения: 556
Зарегистрирован:
29 авг 2010, 08:26
Откуда: Томск
Has thanked: 16 times
Have thanks: 39 times

Сообщение fajg » 14 ноя 2011, 18:58

Karabas-Barabas писал(а):[На счет бетонности Ю-88.

public void rareAction(float f, boolean bool) {
super.rareAction(f, bool);
if (bool && World.Rnd().nextFloat() < 0.2F) {
if (FM.AS.astateEngineStates[0] > 3) {
if (World.Rnd().nextFloat() < 0.25F)
FM.AS.hitTank(this, 0, 3);
if (World.Rnd().nextFloat() < 0.12F)
FM.AS.hitTank(this, 1, 3);
}
if (FM.AS.astateEngineStates[1] > 3) {
if (World.Rnd().nextFloat() < 0.12F)
FM.AS.hitTank(this, 2, 3);
if (World.Rnd().nextFloat() < 0.25F)
FM.AS.hitTank(this, 3, 3);
}
if (FM.AS.astateTankStates[0] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[0] + "0", 0, this);
if (FM.AS.astateTankStates[1] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[1] + "0", 0, this);
if (FM.AS.astateTankStates[1] > 4
&& World.Rnd().nextFloat() < 0.11F)
FM.AS.hitTank(this, 2, 3);
if (FM.AS.astateTankStates[2] > 4
&& World.Rnd().nextFloat() < 0.11F)
FM.AS.hitTank(this, 1, 3);
if (FM.AS.astateTankStates[2] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[2] + "0", 0, this);
if (FM.AS.astateTankStates[3] > 4
&& World.Rnd().nextFloat() < 0.11F)
nextDMGLevel(FM.AS.astateEffectChunks[3] + "0", 0, this);
}
if (!(this instanceof JU_88MSTL)) {
for (int i = 1; i < 4; i++) {
if (FM.getAltitude() < 3000.0F)
hierMesh().chunkVisible("HMask" + i + "_D0", false);
else
hierMesh().chunkVisible
("HMask" + i + "_D0",
hierMesh().isChunkVisible("Pilot" + i + "_D0"));
}
}
}


protected void hitBone(String string, Shot shot, Point3d point3d) {
if (string.startsWith("xx")) {
if (string.startsWith("xxarmor")) {
if (string.endsWith("p1")) {
if (Aircraft.v1.z > 0.5)
getEnergyPastArmor(5.0 / Aircraft.v1.z, shot);
else if (Aircraft.v1.x > 0.9396926164627075)
getEnergyPastArmor
((10.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
} else if (string.endsWith("p2"))
getEnergyPastArmor(5.0 / Math.abs(Aircraft.v1.z), shot);
else if (string.endsWith("p5"))
getEnergyPastArmor(5.0 / Math.abs(Aircraft.v1.z), shot);
else if (string.endsWith("p3"))
getEnergyPastArmor((8.0 / Math.abs(Aircraft.v1.x)
* (double) World.Rnd()
.nextFloat(1.0F, 1.2F)),
shot);
else if (string.endsWith("p4")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else if (Aircraft.v1.x > -0.7071067690849304)
getEnergyPastArmor(6.0F, shot);
} else if (string.endsWith("o1") || string.endsWith("o2")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else
getEnergyPastArmor(5.0F, shot);
}
}
if (string.startsWith("xxcontrols")) {
int i = string.charAt(10) - 48;
switch (i) {
default:
break;
case 1:
case 2:
if (getEnergyPastArmor(1.0F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.08F) {
FM.AS.setControlsDamage(shot.initiator, 1);
mydebuggunnery("Evelator Controls Out..");
}
if (World.Rnd().nextFloat() < 0.08F) {
FM.AS.setControlsDamage(shot.initiator, 2);
mydebuggunnery("Rudder Controls Out..");
}
}
break;
case 3:
case 4:
if (getEnergyPastArmor(1.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 0);
mydebuggunnery("Ailerons Controls Out..");
}
break;
case 5:
if (!(getEnergyPastArmor(0.1F, shot) <= 0.0F)) {
if (World.Rnd().nextFloat() < 0.25F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
1);
mydebuggunnery
("*** Engine1 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.15F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
6);
mydebuggunnery("*** Engine1 Prop Controls Out..");
}
}
break;
case 6:
if (!(getEnergyPastArmor(0.1F, shot) <= 0.0F)) {
if (World.Rnd().nextFloat() < 0.15F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
1);
mydebuggunnery
("*** Engine2 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.15F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
6);
mydebuggunnery("*** Engine2 Prop Controls Out..");
}
}
}
}
if (string.startsWith("xxcannon1")) {
debuggunnery("MGFF: Disabled..");
FM.AS.setJamBullets(1, 0);
getEnergyPastArmor(World.Rnd().nextFloat(3.3F, 24.6F), shot);
}
if (string.startsWith("xxspar")) {
getEnergyPastArmor(1.0F, shot);
if ((string.endsWith("cf1") || string.endsWith("cf2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("CF") > 2
&& getEnergyPastArmor((15.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
mydebuggunnery("*** CF Spars Broken in Half..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
msgCollision(this, "WingLIn_D0", "WingLIn_D0");
msgCollision(this, "WingRIn_D0", "WingRIn_D0");
}
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..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
}
if ((string.endsWith("li1") || string.endsWith("li2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLIn") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingLIn Spars Damaged..");
nextDMGLevels(1, 2, "WingLIn_D3", shot.initiator);
}
if ((string.endsWith("ri1") || string.endsWith("ri2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRIn") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingRIn Spars Damaged..");
nextDMGLevels(1, 2, "WingRIn_D3", shot.initiator);
}
if ((string.endsWith("lm1") || string.endsWith("lm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLMid") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingLMid Spars Damaged..");
nextDMGLevels(1, 2, "WingLMid_D3", shot.initiator);
}
if ((string.endsWith("rm1") || string.endsWith("rm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRMid") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingRMid Spars Damaged..");
nextDMGLevels(1, 2, "WingRMid_D3", shot.initiator);
}
if ((string.endsWith("lo1") || string.endsWith("lo2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLOut") > 2
&& getEnergyPastArmor(8.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingLOut Spars Damaged..");
nextDMGLevels(1, 2, "WingLOut_D3", shot.initiator);
}
if ((string.endsWith("ro1") || string.endsWith("ro2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingROut") > 2
&& getEnergyPastArmor(8.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
mydebuggunnery("*** WingROut Spars Damaged..");
nextDMGLevels(1, 2, "WingROut_D3", shot.initiator);
}
if (string.endsWith("e1")
&& (point3d.y > 2.79 || point3d.y < 2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
mydebuggunnery("*** Engine1 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine1_D0", shot.initiator);
}
if (string.endsWith("e2")
&& (point3d.y < -2.79 || point3d.y > -2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
mydebuggunnery("*** Engine2 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine2_D0", shot.initiator);
}
}
if (string.startsWith("xxbomb") && World.Rnd().nextFloat() < 0.01F
&& FM.CT.Weapons[3] != null
&& FM.CT.Weapons[3][0].haveBullets()) {
mydebuggunnery("*** Bomb Payload Detonates..");
FM.AS.hitTank(shot.initiator, 0, 100);
FM.AS.hitTank(shot.initiator, 1, 100);
FM.AS.hitTank(shot.initiator, 2, 100);
FM.AS.hitTank(shot.initiator, 3, 100);
msgCollision(this, "CF_D0", "CF_D0");
}
if (string.startsWith("xxprop")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(2.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.35F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 3);
mydebuggunnery("*** Engine" + (i + 1)
+ " Governor Failed..");
}
}
if (string.startsWith("xxengine")) {
int i = 0;
if (string.startsWith("xxengine2"))
i = 1;
mydebuggunnery("*** Engine " + i + " " + string + " hit");
if (string.endsWith("base")) {
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < shot.power / 120000.0F) {
FM.AS.setEngineStuck(shot.initiator, i);
mydebuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Stucks..");
}
if (World.Rnd().nextFloat() < shot.power / 30000.0F) {
FM.AS.hitEngine(shot.initiator, i, 2);
mydebuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Damaged..");
}
}
} else if (string.endsWith("cyl")) {
mydebuggunnery("*** Engine " + i + " " + string + " hit");
if (getEnergyPastArmor(1.2F, shot) > 0.0F
&& (World.Rnd().nextFloat()
< FM.EI.engines[i].getCylindersRatio() * 1.8F)) {
FM.EI.engines[i].setCyliderKnockOut
(shot.initiator,
World.Rnd().nextInt(1, (int) (shot.power
/ 4800.0F)));
mydebuggunnery("*** Engine" + (i + 1)
+ " Cylinders Hit, "
+ FM.EI.engines[i]
.getCylindersOperable()
+ "/" + FM.EI.engines[i].getCylinders()
+ " Left..");
if (FM.AS.astateEngineStates[i] < 1) {
FM.AS.hitEngine(shot.initiator, i, 1);
FM.AS.doSetEngineState(shot.initiator, i, 1);
}
if (World.Rnd().nextFloat() < shot.power / 960000.0F) {
FM.AS.hitEngine(shot.initiator, i, 3);
mydebuggunnery
("*** Engine" + (i + 1)
+ " Cylinders Hit - Engine Fires..");
}
mydebuggunnery("*** Engine" + (i + 1) + " state "
+ FM.AS.astateEngineStates[i]);
}
} else if (string.endsWith("sup")
&& getEnergyPastArmor(0.05F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.89F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 0);
mydebuggunnery("*** Engine" + (i + 1)
+ " Supercharger Out..");
}
if (World.Rnd().nextFloat(0.0F, 18000.0F) < shot.power)
FM.AS.hitEngine(shot.initiator, i, 1);
FM.AS.hitOil(shot.initiator, i);
}
if (string.startsWith("xxoil")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(0.18F, shot) > 0.0F) {
FM.AS.hitOil(shot.initiator, i);
getEnergyPastArmor(0.42F, shot);
}
}
if (string.startsWith("xxtank")) {
int i = string.charAt(6) - 49;
if (getEnergyPastArmor(0.5F, shot) > 0.0F) {
if (shot.power < 14100.0F) {
if (FM.AS.astateTankStates[i] < 1)
FM.AS.hitTank(shot.initiator, i, 1);
if (FM.AS.astateTankStates[i] < 4
&& World.Rnd().nextFloat() < 0.1F)
FM.AS.hitTank(shot.initiator, i, 1);
if (shot.powerType == 3
&& FM.AS.astateTankStates[i] > 2
&& World.Rnd().nextFloat() < 0.12F)
FM.AS.hitTank(shot.initiator, i, 10);
} else
FM.AS.hitTank(shot.initiator, i,
World.Rnd().nextInt(0,
(int) (shot.power
/ 20000.0F)));
}
mydebuggunnery("*** Tank " + (i + 1) + " state = "
+ FM.AS.astateTankStates[i]);
}
}
if (string.startsWith("xoil")) {
if (string.equals("xoil1")) {
FM.AS.hitOil(shot.initiator, 0);
string = "xengine1";
}
if (string.equals("xoil2")) {
FM.AS.hitOil(shot.initiator, 1);
string = "xengine2";
}
}
if (string.startsWith("xcf")) {
if (chunkDamageVisible("CF") < 3)
hitChunk("CF", shot);
} else if (string.startsWith("xnose")) {
if (chunkDamageVisible("Nose") < 2)
hitChunk("Nose", shot);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x40);
if (point3d.x > 4.505000114440918)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x1);
else if (point3d.y > 0.0) {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x4);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x8);
} else {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x10);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x20);
}
} else if (string.startsWith("xtail")) {
if (chunkDamageVisible("Tail1") < 3)
hitChunk("Tail1", shot);
} else if (string.startsWith("xkeel")) {
if (chunkDamageVisible("Keel1") < 2)
hitChunk("Keel1", shot);
} else if (string.startsWith("xrudder"))
hitChunk("Rudder1", shot);
else if (string.startsWith("xstabl"))
hitChunk("StabL", shot);
else if (string.startsWith("xstabr"))
hitChunk("StabR", shot);
else if (string.startsWith("xvatorl"))
hitChunk("VatorL", shot);
else if (string.startsWith("xvatorr"))
hitChunk("VatorR", shot);
else if (string.startsWith("xwinglin")) {
if (chunkDamageVisible("WingLIn") < 3)
hitChunk("WingLIn", shot);
} else if (string.startsWith("xwingrin")) {
if (chunkDamageVisible("WingRIn") < 3)
hitChunk("WingRIn", shot);
} else if (string.startsWith("xwinglmid")) {
if (chunkDamageVisible("WingLMid") < 3)
hitChunk("WingLMid", shot);
} else if (string.startsWith("xwingrmid")) {
if (chunkDamageVisible("WingRMid") < 3)
hitChunk("WingRMid", shot);
} else if (string.startsWith("xwinglout")) {
if (chunkDamageVisible("WingLOut") < 3)
hitChunk("WingLOut", shot);
} else if (string.startsWith("xwingrout")) {
if (chunkDamageVisible("WingROut") < 3)
hitChunk("WingROut", shot);
} else if (string.startsWith("xaronel"))
hitChunk("AroneL", shot);
else if (string.startsWith("xaroner"))
hitChunk("AroneR", shot);
else if (string.startsWith("xengine1")) {
if (chunkDamageVisible("Engine1") < 2)
hitChunk("Engine1", shot);
} else if (string.startsWith("xengine2")) {
if (chunkDamageVisible("Engine2") < 2)
hitChunk("Engine2", shot);
} else if (string.startsWith("xgear")) {
if (string.endsWith("1") && World.Rnd().nextFloat() < 0.05F) {
debuggunnery("Hydro System: Disabled..");
FM.AS.setInternalDamage(shot.initiator, 0);
}
if (string.endsWith("2")) {
if (World.Rnd().nextFloat() < 0.1F
&& getEnergyPastArmor(World.Rnd().nextFloat(6.8F, 29.35F),
shot) > 0.0F) {
debuggunnery("Undercarriage: Stuck..");
FM.AS.setInternalDamage(shot.initiator, 3);
}
String string_4_ = "" + string.charAt(5);
hitChunk("Gear" + string_4_.toUpperCase() + "2", shot);
}
} else if (string.startsWith("xturret")) {
if (string.startsWith("xturret1"))
FM.AS.setJamBullets(10, 0);
if (string.startsWith("xturret2"))
FM.AS.setJamBullets(11, 0);
if (string.startsWith("xturret3"))
FM.AS.setJamBullets(12, 0);
if (string.startsWith("xturret4"))
FM.AS.setJamBullets(13, 0);
if (string.startsWith("xturret5"))
FM.AS.setJamBullets(14, 0);
} else if (string.startsWith("xpilot") || string.startsWith("xhead")) {
int i = 0;
int i_5_;
if (string.endsWith("a")) {
i = 1;
i_5_ = string.charAt(6) - 49;
} else if (string.endsWith("b")) {
i = 2;
i_5_ = string.charAt(6) - 49;
} else
i_5_ = string.charAt(5) - 49;
hitFlesh(i_5_, shot, i);
}
hierMesh().chunkVisible("fakeNose_D1",
hierMesh().isChunkVisible("Nose_D1"));
hierMesh().chunkVisible("fakeNose_D2",
hierMesh().isChunkVisible("Nose_D2"));
hierMesh().chunkVisible("fakeNose_D3",
hierMesh().isChunkVisible("Nose_D3"));
}


protected void hitBone(String string, Shot shot, Point3d point3d) {
if (string.startsWith("xx")) {
if (string.startsWith("xxarmor")) {
if (string.endsWith("p1")) {
if (Aircraft.v1.z > 0.5)
getEnergyPastArmor(5.0 / Aircraft.v1.z, shot);
else if (Aircraft.v1.x > 0.9396926164627075)
getEnergyPastArmor
((10.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
} else if (string.endsWith("p2"))
getEnergyPastArmor(5.0 / Math.abs(Aircraft.v1.z), shot);
else if (string.endsWith("p3a") || string.endsWith("p3b"))
getEnergyPastArmor((8.0 / Math.abs(Aircraft.v1.x)
* (double) World.Rnd()
.nextFloat(1.0F, 1.2F)),
shot);
else if (string.endsWith("p4")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else if (Aircraft.v1.x > -0.7071067690849304)
getEnergyPastArmor(6.0F, shot);
} else if (string.endsWith("o1") || string.endsWith("o2")) {
if (Aircraft.v1.x > 0.7071067690849304)
getEnergyPastArmor
((8.0 / Aircraft.v1.x
* (double) World.Rnd().nextFloat(1.0F, 1.2F)),
shot);
else
getEnergyPastArmor(5.0F, shot);
}
}
if (string.startsWith("xxcontrols")) {
int i = string.charAt(10) - 48;
switch (i) {
case 1:
case 2:
if (getEnergyPastArmor(1.0F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 1);
debuggunnery("Evelator Controls Out..");
}
if (World.Rnd().nextFloat() < 0.12F) {
FM.AS.setControlsDamage(shot.initiator, 2);
debuggunnery("Rudder Controls Out..");
}
}
break;
case 3:
case 4:
if (getEnergyPastArmor(1.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.25F) {
FM.AS.setControlsDamage(shot.initiator, 0);
debuggunnery("Ailerons Controls Out..");
}
break;
case 5:
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.75F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
1);
debuggunnery
("*** Engine1 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.45F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 0,
6);
debuggunnery("*** Engine1 Prop Controls Out..");
}
}
break;
case 6:
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < 0.75F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
1);
debuggunnery
("*** Engine2 Throttle Controls Out..");
}
if (World.Rnd().nextFloat() < 0.45F) {
FM.AS.setEngineSpecificDamage(shot.initiator, 1,
6);
debuggunnery("*** Engine2 Prop Controls Out..");
}
}
break;
}
}
if (string.startsWith("xxspar")) {
if ((string.endsWith("cf1") || string.endsWith("cf2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("CF") > 2
&& getEnergyPastArmor((19.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
debuggunnery("*** CF Spars Broken in Half..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
msgCollision(this, "WingLIn_D0", "WingLIn_D0");
msgCollision(this, "WingRIn_D0", "WingRIn_D0");
}
if ((string.endsWith("ta1") || string.endsWith("ta2"))
&& World.Rnd().nextFloat() < 0.1F
&& chunkDamageVisible("Tail1") > 2
&& getEnergyPastArmor((19.9F
/ (float) Math.sqrt((Aircraft.v1.y
* (Aircraft.v1
.y))
+ (Aircraft.v1.z
* (Aircraft
.v1.z)))),
shot) > 0.0F) {
debuggunnery("*** Tail1 Spars Broken in Half..");
msgCollision(this, "Tail1_D0", "Tail1_D0");
}
if ((string.endsWith("li1") || string.endsWith("li2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLIn") > 2
&& getEnergyPastArmor(17.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingLIn Spars Damaged..");
nextDMGLevels(1, 2, "WingLIn_D3", shot.initiator);
}
if ((string.endsWith("ri1") || string.endsWith("ri2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.9200000166893005 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRIn") > 2
&& getEnergyPastArmor(17.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingRIn Spars Damaged..");
nextDMGLevels(1, 2, "WingRIn_D3", shot.initiator);
}
if ((string.endsWith("lm1") || string.endsWith("lm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLMid") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingLMid Spars Damaged..");
nextDMGLevels(1, 2, "WingLMid_D3", shot.initiator);
}
if ((string.endsWith("rm1") || string.endsWith("rm2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.8600000143051147 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingRMid") > 2
&& getEnergyPastArmor(13.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingRMid Spars Damaged..");
nextDMGLevels(1, 2, "WingRMid_D3", shot.initiator);
}
if ((string.endsWith("lo1") || string.endsWith("lo2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingLOut") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingLOut Spars Damaged..");
nextDMGLevels(1, 2, "WingLOut_D3", shot.initiator);
}
if ((string.endsWith("ro1") || string.endsWith("ro2"))
&& ((double) World.Rnd().nextFloat()
< 1.0 - 0.7900000214576721 * Math.abs(Aircraft.v1.x))
&& chunkDamageVisible("WingROut") > 2
&& getEnergyPastArmor(10.5F * World.Rnd().nextFloat(1.0F,
2.0F),
shot) > 0.0F) {
debuggunnery("*** WingROut Spars Damaged..");
nextDMGLevels(1, 2, "WingROut_D3", shot.initiator);
}
if (string.endsWith("e1")
&& (point3d.y > 2.79 || point3d.y < 2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
debuggunnery("*** Engine1 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine1_D0", shot.initiator);
}
if (string.endsWith("e2")
&& (point3d.y < -2.79 || point3d.y > -2.32)
&& getEnergyPastArmor(18.0F, shot) > 0.0F) {
debuggunnery("*** Engine2 Suspension Broken in Half..");
nextDMGLevels(3, 2, "Engine2_D0", shot.initiator);
}
}
if (string.startsWith("xxbomb") && World.Rnd().nextFloat() < 0.01F
&& FM.CT.Weapons[3] != null
&& FM.CT.Weapons[3][0].haveBullets()) {
debuggunnery("*** Bomb Payload Detonates..");
FM.AS.hitTank(shot.initiator, 0, 100);
FM.AS.hitTank(shot.initiator, 1, 100);
FM.AS.hitTank(shot.initiator, 2, 100);
FM.AS.hitTank(shot.initiator, 3, 100);
msgCollision(this, "CF_D0", "CF_D0");
}
if (string.startsWith("xxprop")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(2.0F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.35F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 3);
debuggunnery("*** Engine" + (i + 1)
+ " Governor Failed..");
}
}
if (string.startsWith("xxengine")) {
int i = 0;
if (string.startsWith("xxengine2"))
i = 1;
if (string.endsWith("base")) {
if (getEnergyPastArmor(0.1F, shot) > 0.0F) {
if (World.Rnd().nextFloat() < shot.power / 200000.0F) {
FM.AS.setEngineStuck(shot.initiator, i);
debuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Stucks..");
}
if (World.Rnd().nextFloat() < shot.power / 50000.0F) {
FM.AS.hitEngine(shot.initiator, i, 2);
debuggunnery
("*** Engine" + (i + 1)
+ " Crank Case Hit - Engine Damaged..");
}
}
} else if (string.endsWith("cyl")) {
if (getEnergyPastArmor(1.45F, shot) > 0.0F
&& (World.Rnd().nextFloat()
< FM.EI.engines[i].getCylindersRatio() * 0.5F)) {
FM.EI.engines[i].setCyliderKnockOut
(shot.initiator,
World.Rnd().nextInt(1, (int) (shot.power
/ 4800.0F)));
debuggunnery("*** Engine" + (i + 1)
+ " Cylinders Hit, "
+ FM.EI.engines[i].getCylindersOperable()
+ "/" + FM.EI.engines[i].getCylinders()
+ " Left..");
if (FM.AS.astateEngineStates[i] < 1) {
FM.AS.hitEngine(shot.initiator, i, 1);
FM.AS.doSetEngineState(shot.initiator, i, 1);
}
if (World.Rnd().nextFloat() < shot.power / 960000.0F) {
FM.AS.hitEngine(shot.initiator, i, 3);
debuggunnery("*** Engine" + (i + 1)
+ " Cylinders Hit - Engine Fires..");
}
getEnergyPastArmor(25.0F, shot);
}
} else if (string.endsWith("sup")
&& getEnergyPastArmor(0.05F, shot) > 0.0F
&& World.Rnd().nextFloat() < 0.89F) {
FM.AS.setEngineSpecificDamage(shot.initiator, i, 0);
debuggunnery("*** Engine" + (i + 1)
+ " Supercharger Out..");
}
}
if (string.startsWith("xxoil")) {
int i = 0;
if (string.endsWith("2"))
i = 1;
if (getEnergyPastArmor(0.21F, shot) > 0.0F) {
FM.AS.hitOil(shot.initiator, i);
getEnergyPastArmor(0.42F, shot);
}
}
if (string.startsWith("xxtank")) {
int i = string.charAt(6) - 49;
if (getEnergyPastArmor(0.2F, shot) > 0.0F) {
if (shot.power < 14100.0F) {
if (FM.AS.astateTankStates[i] == 0) {
FM.AS.hitTank(shot.initiator, i, 1);
FM.AS.doSetTankState(shot.initiator, i, 1);
}
if (World.Rnd().nextFloat() < 0.02F)
FM.AS.hitTank(shot.initiator, i, 1);
if (shot.powerType == 3
&& FM.AS.astateTankStates[i] > 2
&& World.Rnd().nextFloat() < 0.4F)
FM.AS.hitTank(shot.initiator, i, 10);
} else
FM.AS.hitTank(shot.initiator, i,
World.Rnd().nextInt(0,
(int) (shot.power
/ 56000.0F)));
}
}
} else {
if (string.startsWith("xoil")) {
if (string.equals("xoil1")) {
FM.AS.hitOil(shot.initiator, 0);
string = "xengine1";
}
if (string.equals("xoil2")) {
FM.AS.hitOil(shot.initiator, 1);
string = "xengine2";
}
}
if (string.startsWith("xcf")) {
if (chunkDamageVisible("CF") < 3)
hitChunk("CF", shot);
} else if (string.startsWith("xnose")) {
if (chunkDamageVisible("Nose1") < 2)
hitChunk("Nose1", shot);
if (shot.power > 200000.0F) {
FM.AS.hitPilot(shot.initiator, 0,
World.Rnd().nextInt(3, 192));
FM.AS.hitPilot(shot.initiator, 1,
World.Rnd().nextInt(3, 192));
}
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x40);
if (point3d.x > 4.505000114440918)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x1);
else if (point3d.y > 0.0) {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x4);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x8);
} else {
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x10);
if (World.Rnd().nextFloat() < 0.1F)
FM.AS.setCockpitState(shot.initiator,
FM.AS.astateCockpitState | 0x20);
}
} else if (string.startsWith("xtail")) {
if (chunkDamageVisible("Tail1") < 3)
hitChunk("Tail1", shot);
} else if (string.startsWith("xkeel")) {
if (chunkDamageVisible("Keel1") < 2)
hitChunk("Keel1", shot);
} else if (string.startsWith("xrudder"))
hitChunk("Rudder1", shot);
else if (string.startsWith("xstabl"))
hitChunk("StabL", shot);
else if (string.startsWith("xstabr"))
hitChunk("StabR", shot);
else if (string.startsWith("xvatorl"))
hitChunk("VatorL", shot);
else if (string.startsWith("xvatorr"))
hitChunk("VatorR", shot);
else if (string.startsWith("xwinglin")) {
if (chunkDamageVisible("WingLIn") < 3)
hitChunk("WingLIn", shot);
} else if (string.startsWith("xwingrin")) {
if (chunkDamageVisible("WingRIn") < 3)
hitChunk("WingRIn", shot);
} else if (string.startsWith("xwinglmid")) {
if (chunkDamageVisible("WingLMid") < 3)
hitChunk("WingLMid", shot);
} else if (string.startsWith("xwingrmid")) {
if (chunkDamageVisible("WingRMid") < 3)
hitChunk("WingRMid", shot);
} else if (string.startsWith("xwinglout")) {
if (chunkDamageVisible("WingLOut") < 3)
hitChunk("WingLOut", shot);
} else if (string.startsWith("xwingrout")) {
if (chunkDamageVisible("WingROut") < 3)
hitChunk("WingROut", shot);
} else if (string.startsWith("xaronel"))
hitChunk("AroneL", shot);
else if (string.startsWith("xaroner"))
hitChunk("AroneR", shot);
else if (string.startsWith("xengine1")) {
if (chunkDamageVisible("Engine1") < 2)
hitChunk("Engine1", shot);
} else if (string.startsWith("xengine2")) {
if (chunkDamageVisible("Engine2") < 2)
hitChunk("Engine2", shot);
} else if (string.startsWith("xgear")) {
if (World.Rnd().nextFloat() < 0.1F) {
debuggunnery("*** Gear Hydro Failed..");
FM.Gears.setHydroOperable(false);
}
} else if (string.startsWith("xturret")) {
if (string.startsWith("xturret1"))
FM.AS.setJamBullets(10, 0);
if (string.startsWith("xturret2"))
FM.AS.setJamBullets(11, 0);
if (string.startsWith("xturret3"))
FM.AS.setJamBullets(12, 0);
if (string.startsWith("xturret4"))
FM.AS.setJamBullets(13, 0);
if (string.startsWith("xturret5"))
FM.AS.setJamBullets(14, 0);
} else if (string.startsWith("xpilot")
|| string.startsWith("xhead")) {
int i = 0;
int i_4_;
if (string.endsWith("a")) {
i = 1;
i_4_ = string.charAt(6) - 49;
} else if (string.endsWith("b")) {
i = 2;
i_4_ = string.charAt(6) - 49;
} else
i_4_ = string.charAt(5) - 49;
hitFlesh(i_4_, shot, i);
}
}
}


Почему для сравнения от Не-111?
Потому что от него и взята. Ну одинаковые они по агрегатам потому что, экипаж только разный и размещен по-разному, но в принципе эти самолеты одинаковые - одинаковые двигатели, одинаковое размещение баков в крыльях, одинаковые тяги, рули и пр. агрегаты. Даже размерения почти равны.

/* MGunMG15120MGs - 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 MGunMG15120MGs extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = false;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = "3DO/Effects/GunFire/20mm/mono.sim";
gunproperties.fire = null;
gunproperties.sprite = "3DO/Effects/GunFire/20mm/GunFlare.eff";
gunproperties.smoke = "effects/smokes/MachineGun.eff";
gunproperties.shells = "3DO/Effects/GunShells/GunShells.eff";
gunproperties.sound = "weapon.mgun_20_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 = 3;
gunproperties.maxDeltaAngle = 0.28F;
gunproperties.shotFreq = 11.5F;
gunproperties.traceFreq = 5;
gunproperties.bullets = 250;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= (new BulletProperties[]
{ new BulletProperties(), new BulletProperties(),
new BulletProperties(), new BulletProperties(),
new BulletProperties() });
gunproperties.bullet[0].massa = 0.115F;
gunproperties.bullet[0].kalibr = 3.2000002E-4F;
gunproperties.bullet[0].speed = 710.0F;
gunproperties.bullet[0].power = 0.0036F;
gunproperties.bullet[0].powerType = 0;
gunproperties.bullet[0].powerRadius = 0.0F;
gunproperties.bullet[0].traceMesh
= "3do/effects/tracers/20mmBlue/mono.sim";
gunproperties.bullet[0].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[0].traceColor = -755040256;
gunproperties.bullet[0].timeLife = 3.3F;
gunproperties.bullet[1].massa = 0.115F;
gunproperties.bullet[1].kalibr = 4.0399996E-4F;
gunproperties.bullet[1].speed = 705.0F;
gunproperties.bullet[1].power = 0.0044F;
gunproperties.bullet[1].powerType = 0;
gunproperties.bullet[1].powerRadius = 0.1F;
gunproperties.bullet[1].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[1].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[1].traceColor = -754974976;
gunproperties.bullet[1].timeLife = 3.0F;
gunproperties.bullet[2].massa = 0.092F;
gunproperties.bullet[2].kalibr = 4.0399996E-4F;
gunproperties.bullet[2].speed = 775.0F;
gunproperties.bullet[2].power = 0.01395F;
gunproperties.bullet[2].powerType = 0;
gunproperties.bullet[2].powerRadius = 0.2F;
gunproperties.bullet[2].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[2].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[2].traceColor = -754974976;
gunproperties.bullet[2].timeLife = 2.0F;
gunproperties.bullet[3].massa = 0.092F;
gunproperties.bullet[3].kalibr = 4.0399996E-4F;
gunproperties.bullet[3].speed = 775.0F;
gunproperties.bullet[3].power = 0.01395F;
gunproperties.bullet[3].powerType = 0;
gunproperties.bullet[3].powerRadius = 0.2F;
gunproperties.bullet[3].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[3].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[3].traceColor = -754974976;
gunproperties.bullet[3].timeLife = 2.0F;
gunproperties.bullet[4].massa = 0.092F;
gunproperties.bullet[4].kalibr = 4.0399996E-4F;
gunproperties.bullet[4].speed = 775.0F;
gunproperties.bullet[4].power = 0.01395F;
gunproperties.bullet[4].powerType = 0;
gunproperties.bullet[4].powerRadius = 0.2F;
gunproperties.bullet[4].traceMesh
= "3do/effects/tracers/20mmCyan/mono.sim";
gunproperties.bullet[4].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[4].traceColor = -754974976;
gunproperties.bullet[4].timeLife = 2.0F;
return gunproperties;
}
}


Карабас-Барабас дает сеансы разоблачения вреда религиозного опиума )))))
+100500!!!!
My name is +FA+CAtfish. У меня ОЧЕНЬ хорошая память.
Аватара пользователя
fajg
Обыватель
Обыватель
 
Сообщения: 747
Зарегистрирован:
25 дек 2010, 01:05
Has thanked: 3 times
Have thanks: 4 times
Вернуться к началу

Сообщение fajg » 14 ноя 2011, 19:02

TUS_Romeo писал(а):Карабас - это трепло с форума Тумана Войны, который не знает, как выглядит джойстик, но козыряет цЫфирьками. Такие есть - некоторые, к примеру, говорят, что вираж в 4.10 у "мерсов" не изменился, ибо они весь код прошерстили. А на деле - лучше изменения видит тот, кто летает.

Поэтому если на форуме АДВ примут весь трёп форумчан Тумана - трындец АДВ. Сцаными тряпками гнать надо, зарегился, чтобы кодом покозырять :disgust:


Мляяя!!! А откуда на АДВ ТУМАН появился?? Именно оттуда с этого Тумана войны.
Отмазка Ромео не катит. Не верить цифрам - конкретный религиозный фанатизм в виде крайней формы повреждения мозга.
My name is +FA+CAtfish. У меня ОЧЕНЬ хорошая память.
Аватара пользователя
fajg
Обыватель
Обыватель
 
Сообщения: 747
Зарегистрирован:
25 дек 2010, 01:05
Has thanked: 3 times
Have thanks: 4 times

Сообщение -=RFF=-jet » 14 ноя 2011, 19:03

TUS_Romeo писал(а):Карабас - это трепло с форума Тумана Войны, который не знает, как выглядит джойстик, но козыряет цЫфирьками. Такие есть - некоторые, к примеру, говорят, что вираж в 4.10 у "мерсов" не изменился, ибо они весь код прошерстили. А на деле - лучше изменения видит тот, кто летает.

Поэтому если на форуме АДВ примут весь трёп форумчан Тумана - трындец АДВ. Сцаными тряпками гнать надо, зарегился, чтобы кодом покозырять :disgust:


Код объективен, в отличие от впечатлений отдельных излишне впечатлительных пилотов :D
Аватара пользователя
-=RFF=-jet
Путешественник
Путешественник
 
Сообщения: 320
Зарегистрирован:
12 фев 2008, 02:03
Откуда: Кишинёв
Has thanked: 0 time
Have thanks: 5 times

Сообщение Karabas-Barabas » 14 ноя 2011, 19:03

TUS_Romeo писал(а):Карабас - это трепло с форума Тумана Войны, который не знает, как выглядит джойстик, но козыряет цЫфирьками. Такие есть - некоторые, к примеру, говорят, что вираж в 4.10 у "мерсов" не изменился, ибо они весь код прошерстили. А на деле - лучше изменения видит тот, кто летает.

Поэтому если на форуме АДВ примут весь трёп форумчан Тумана - трындец АДВ. Сцаными тряпками гнать надо, зарегился, чтобы кодом покозырять :disgust:


Я не знаю какую разницу ты там видишь летая "живьем".
Хотя впрочем в медицине такое известно и имеет название: эффект плацебо. :)

Но знаю точно, что компьютер сам ничего не делает, какие ему циферки дают считать, те и считает :)

Хотя, впрочем, есть еще один вариант - у тебя измененный код игры, т.е. ты - читер :)

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

Сообщение TUS_Romeo » 14 ноя 2011, 19:14

Там, на форуме ТВ, карабасы доказывали, что, еще раз повторю, к примеру, вираж "мерсов" не изменился. Однако сравнение компарей дает объективную оценку. А до того, как появился компарь 4.10, подобные карабасы так же снисходительно усмехались на заявы об изменениях. Видимо, не тарят они все цифирки в комплексе, а двигают в массы только то, чО дотумкали, вот и все.

Карабас, хорошо, ответь на конкретный вопрос. ЧТо изменилось в патче 4.10 относительно патча 4.09 у Ф2 и Т34, если в 4.09 я со всего боекомплекта еле-еле, через раз, убивал один Т34, а щас, колупаясь в носу, легко валю по три-четыре Т34 с одного БК? Можно цЫфирьками из кода? - ибо мой уровень точно не менялся.
Аватара пользователя
TUS_Romeo
Обыватель
Обыватель
 
Сообщения: 556
Зарегистрирован:
29 авг 2010, 08:26
Откуда: Томск
Has thanked: 16 times
Have thanks: 39 times

Сообщение -=RedS=-Jag » 14 ноя 2011, 19:21

Ромео, сугубо субъективно у МГ151\20 выросла убойность...уж не знаю за счет чего...

Про Жужу может она и должна такой быть по циферкам, но она точно не была такой какой она является сейчас в патче 4.10.1
Истребятельштурмовик...
Вырос на ADW GT... и пытаюсь расти дальше.

Вяшка - 1 вяк, 1 мес шмяк! :о)
Аватара пользователя
-=RedS=-Jag
Старожил
Старожил
 
Сообщения: 2274
Зарегистрирован:
03 фев 2008, 13:53
Has thanked: 5 times
Have thanks: 55 times

Сообщение Karabas-Barabas » 14 ноя 2011, 19:25

TUS_Romeo писал(а):Карабас, хорошо, ответь на конкретный вопрос. ЧТо изменилось в патче 4.10 относительно патча 4.09 у Ф2 и Т34, если в 4.09 я со всего боекомплекта еле-еле, через раз, убивал один Т34, а щас, колупаясь в носу, легко валю по три-четыре Т34 с одного БК? Можно цЫфирьками из кода? - ибо мой уровень точно не менялся.


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

Сообщение Karabas-Barabas » 14 ноя 2011, 19:31

-=RedS=-Jag писал(а):Ромео, сугубо субъективно у МГ151\20 выросла убойность...уж не знаю за счет чего...

Про Жужу может она и должна такой быть по циферкам, но она точно не была такой какой она является сейчас в патче 4.10.1


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

Сообщение TUS_Romeo » 14 ноя 2011, 19:33

Karabas-Barabas писал(а):
ДТ покрутили не в ту сторону циферки повреждаемости танков, правда для вагончиков в другую, а не как ты думаешь - накрутили МГ-151-15.
Хорошо что не стали крутить циферки вооружения, а то бы вообще все разъехалось нафиг. В 4.11 обещают что-то еще сделать с наземкой, остается надеяться что учтут ошибочный опыт и покрутят обратно :)
Я тебя просил не расплывчатый ответ. Я отлично знаю, где и у кого накрутили с циферками брони - у синих танков. А что изменилось у Т34, раз не накручивали МГ? Конкретный вопрос про циферки.
Аватара пользователя
TUS_Romeo
Обыватель
Обыватель
 
Сообщения: 556
Зарегистрирован:
29 авг 2010, 08:26
Откуда: Томск
Has thanked: 16 times
Have thanks: 39 times

Сообщение Karabas-Barabas » 14 ноя 2011, 19:46

TUS_Romeo писал(а):
Karabas-Barabas писал(а):
ДТ покрутили не в ту сторону циферки повреждаемости танков, правда для вагончиков в другую, а не как ты думаешь - накрутили МГ-151-15.
Хорошо что не стали крутить циферки вооружения, а то бы вообще все разъехалось нафиг. В 4.11 обещают что-то еще сделать с наземкой, остается надеяться что учтут ошибочный опыт и покрутят обратно :)
Я тебя просил не расплывчатый ответ. Я отлично знаю, где и у кого накрутили с циферками брони - у синих танков. А что изменилось у Т34, раз не накручивали МГ? Конкретный вопрос про циферки.


[T34]
Description USSR's tank T-34.
Icon fieldgun // used for 'stacionar' tank only

// Models
MeshSummer 3do/Tanks/T-34/Summer/hier.him
MeshWinter 3do/Tanks/T-34/Winter/hier.him

// Panzer
PanzerSubtype 4
PanzerBodyFront 0.045
PanzerBodyBack 0.040
PanzerBodySide 0.045
PanzerBodyTop 0.020
PanzerHead 0.050 // 0.045 -- good front shape
PanzerHeadTop 0.016

// Weapon
Gun CannonF34
NumShells 77
AttackMaxDistance 1200.0
AttackMaxRadius 1200.0
AttackMaxHeight 1200.0
HeadYawHalfRange 180.0
GunMinPitch -4.0 // ??
GunStdPitch 0.0
GunMaxPitch +29.0 // ??
HeadMaxYawSpeed 30.0 // ??
GunMaxPitchSpeed 5.0 // ??
DelayAfterShoot 10.0 // ??
ChainfireTime 0.0
FastTargetsAngleError 8.0

// Moving
SoundMove models.Tank
StayWhenFire 1
SpeedAverage 14.0
SpeedMax 25.0
SpeedBack 5.0
RotSpeedMax 45.0 // ??
RotInvisAng 36.0
BestSpace 12.0
AfterCollisionDist 5.1
CommandInterval 1.6
StayInterval 1.5


[T34]
Description USSR's tank T-34.
Icon fieldgun // used for 'stacionar' tank only

// Models
MeshSummer 3do/Tanks/T-34/Summer/hier.him
MeshWinter 3do/Tanks/T-34/Winter/hier.him

// Panzer
PanzerSubtype 4
PanzerBodyFront 0.055 // 0.045 -- good front shape
PanzerBodyBack 0.045
PanzerBodySide 0.045
PanzerBodyTop 0.020
PanzerHead 0.060 // 0.050 -- good front shape
PanzerHeadTop 0.020

// Weapon
Gun CannonF34
NumShells 77
AttackMaxDistance 800.0
AttackMaxRadius 800.0
AttackMaxHeight 800.0
HeadYawHalfRange 180.0
GunMinPitch -4.0 // ??
GunStdPitch 0.0
GunMaxPitch +29.0 // ??
HeadMaxYawSpeed 30.0 // ??
GunMaxPitchSpeed 5.0 // ??
DelayAfterShoot 10.0 // ??
ChainfireTime 0.0
FastTargetsAngleError 8.0

// Moving
SoundMove models.Tank
StayWhenFire 1
SpeedAverage 14.0
SpeedMax 25.0
SpeedBack 5.0
RotSpeedMax 45.0 // ??
RotInvisAng 36.0
BestSpace 12.0
AfterCollisionDist 5.1
CommandInterval 1.6
StayInterval 1.5


нельзя пока :)


Ну вот и ответ на твой вопрос - броню уменьшили на 15-20% не везде конечно, вооружение подняли в 1,5 раза :)
Циферки похожи на толщины и они вроде приведены в соответствие с реалом, но... короче, ИМХО МГ настраивали там хоть что-то, а ДТ решили привести к реалу, забыв или неуспев настроить другие параметры у других объектов в игре.
Последний раз редактировалось Karabas-Barabas 14 ноя 2011, 19:56, всего редактировалось 3 раз(а).
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Сообщение fajg » 14 ноя 2011, 19:46

TUS_Romeo писал(а):
Karabas-Barabas писал(а):
ДТ покрутили не в ту сторону циферки повреждаемости танков, правда для вагончиков в другую, а не как ты думаешь - накрутили МГ-151-15.
Хорошо что не стали крутить циферки вооружения, а то бы вообще все разъехалось нафиг. В 4.11 обещают что-то еще сделать с наземкой, остается надеяться что учтут ошибочный опыт и покрутят обратно :)
Я тебя просил не расплывчатый ответ. Я отлично знаю, где и у кого накрутили с циферками брони - у синих танков. А что изменилось у Т34, раз не накручивали МГ? Конкретный вопрос про циферки.


А вот я на Ф2 ни тогда не валил и сейчас не валю по несколько штук Т34. Скил тоже не изменился. Даже может после роликов Р40 vs Пантера - слегка подрос.
My name is +FA+CAtfish. У меня ОЧЕНЬ хорошая память.
Аватара пользователя
fajg
Обыватель
Обыватель
 
Сообщения: 747
Зарегистрирован:
25 дек 2010, 01:05
Has thanked: 3 times
Have thanks: 4 times

Сообщение TUS_Romeo » 14 ноя 2011, 19:54

Ок, Карабас, доказал, я после просмотра данных по броне почему-то был уверен, что у Т34 ничего не изменилось, видимо, спутал с КВ. Кстати, у КВ ничего не менялось, но из дрына ВК он стал браться гораздо легче. Это что, ВК накрутили, или чО?
Аватара пользователя
TUS_Romeo
Обыватель
Обыватель
 
Сообщения: 556
Зарегистрирован:
29 авг 2010, 08:26
Откуда: Томск
Has thanked: 16 times
Have thanks: 39 times

Сообщение Karabas-Barabas » 14 ноя 2011, 19:59

TUS_Romeo писал(а):Ок, Карабас, доказал, я после просмотра данных по броне почему-то был уверен, что у Т34 ничего не изменилось, видимо, спутал с КВ. Кстати, у КВ ничего не менялось, но из дрына ВК он стал браться гораздо легче. Это что, ВК накрутили, или чО?


Давай посмотрим КВ-1:

[KV1]
Description USSR's tank KV-1
Icon fieldgun // used for 'stacionar' tank only

// Models
MeshSummer 3do/Tanks/KV-1/Summer/hier.him
MeshWinter 3do/Tanks/KV-1/Winter/hier.him

// Panzer
PanzerSubtype 5
PanzerBodyFront 0.075
PanzerBodyBack 0.055
PanzerBodySide 0.075
PanzerBodyTop 0.035
PanzerHead 0.105
PanzerHeadTop 0.035

// Weapon
Gun CannonZIS5
NumShells 114
AttackMaxDistance 800.0
AttackMaxRadius 800.0
AttackMaxHeight 800.0
HeadYawHalfRange 180.0
GunMinPitch -5.0
GunStdPitch 0.0
GunMaxPitch +25.0
HeadMaxYawSpeed 27.7
GunMaxPitchSpeed 7.5
DelayAfterShoot 10.0
ChainfireTime 0.0
FastTargetsAngleError 8.0

// Moving
SoundMove models.Tank
StayWhenFire 1
SpeedAverage 14.0
SpeedMax 25.0
SpeedBack 5.0
RotSpeedMax 45.0 // ??
RotInvisAng 35.0
BestSpace 12.0
AfterCollisionDist 5.4
CommandInterval 1.6
StayInterval 1.5


[KV1]
Description USSR's tank KV-1
Icon fieldgun // used for 'stacionar' tank only

// Models
MeshSummer 3do/Tanks/KV-1/Summer/hier.him
MeshWinter 3do/Tanks/KV-1/Winter/hier.him

// Panzer
PanzerSubtype 5
PanzerBodyFront 0.075
PanzerBodyBack 0.075
PanzerBodySide 0.075
PanzerBodyTop 0.035
PanzerHead 0.105
PanzerHeadTop 0.035

// Weapon
Gun CannonZIS5
NumShells 114
AttackMaxDistance 1200.0
AttackMaxRadius 1200.0
AttackMaxHeight 1200.0
HeadYawHalfRange 180.0
GunMinPitch -5.0
GunStdPitch 0.0
GunMaxPitch +25.0
HeadMaxYawSpeed 27.7
GunMaxPitchSpeed 7.5
DelayAfterShoot 10.0
ChainfireTime 0.0
FastTargetsAngleError 8.0

// Moving
SoundMove models.Tank
StayWhenFire 1
SpeedAverage 14.0
SpeedMax 25.0
SpeedBack 5.0
RotSpeedMax 45.0 // ??
RotInvisAng 35.0
BestSpace 12.0
AfterCollisionDist 5.4
CommandInterval 1.6
StayInterval 1.5


VK-37:

/* MGunBK37 - 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 MGunBK37 extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = true;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = null;
gunproperties.fire = "3DO/Effects/GunFire/37mm/GunFire.eff";
gunproperties.sprite = null;
gunproperties.smoke = null;
gunproperties.shells = null;
gunproperties.sound = "weapon.air_cannon_37";
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.11F;
gunproperties.shotFreq = 1.25F;
gunproperties.traceFreq = 1;
gunproperties.bullets = 12;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= new BulletProperties[] { new BulletProperties(),
new BulletProperties(),
new BulletProperties() };
gunproperties.bullet[0].massa = 0.68F;
gunproperties.bullet[0].kalibr = 2.1904E-4F;
gunproperties.bullet[0].speed = 1170.0F;
gunproperties.bullet[0].power = 0.0F;
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
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[0].traceColor = -654299393;
gunproperties.bullet[0].timeLife = 15.0F;
gunproperties.bullet[1].massa = 0.628F;
gunproperties.bullet[1].kalibr = 2.1904E-4F;
gunproperties.bullet[1].speed = 812.0F;
gunproperties.bullet[1].power = 0.096F;
gunproperties.bullet[1].powerType = 0;
gunproperties.bullet[1].powerRadius = 10.0F;
gunproperties.bullet[1].traceMesh
= "3DO/Effects/Tracers/20mmRed/mono.sim";
gunproperties.bullet[1].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[1].traceColor = -654299393;
gunproperties.bullet[1].timeLife = 15.0F;
gunproperties.bullet[2].massa = 0.55F;
gunproperties.bullet[2].kalibr = 2.1904E-4F;
gunproperties.bullet[2].speed = 860.0F;
gunproperties.bullet[2].power = 0.09F;
gunproperties.bullet[2].powerType = 0;
gunproperties.bullet[2].powerRadius = 10.0F;
gunproperties.bullet[2].traceMesh
= "3DO/Effects/Tracers/20mmRed/mono.sim";
gunproperties.bullet[2].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[2].traceColor = -654299393;
gunproperties.bullet[2].timeLife = 15.0F;
return gunproperties;
}

public void setConvDistance(float f, float f_0_) {
super.setConvDistance(f, f_0_ - 1.2F);
}
}


/* MGunBK37 - 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 MGunBK37 extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = true;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = null;
gunproperties.fire = "3DO/Effects/GunFire/37mm/GunFire.eff";
gunproperties.sprite = null;
gunproperties.smoke = null;
gunproperties.shells = null;
gunproperties.sound = "weapon.air_cannon_37";
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.11F;
gunproperties.shotFreq = 1.25F;
gunproperties.traceFreq = 1;
gunproperties.bullets = 12;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= new BulletProperties[] { new BulletProperties(),
new BulletProperties(),
new BulletProperties() };
gunproperties.bullet[0].massa = 0.68F;
gunproperties.bullet[0].kalibr = 2.1904E-4F;
gunproperties.bullet[0].speed = 1170.0F;
gunproperties.bullet[0].power = 0.0F;
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
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[0].traceColor = -654299393;
gunproperties.bullet[0].timeLife = 15.0F;
gunproperties.bullet[1].massa = 0.628F;
gunproperties.bullet[1].kalibr = 2.1904E-4F;
gunproperties.bullet[1].speed = 812.0F;
gunproperties.bullet[1].power = 0.096F;
gunproperties.bullet[1].powerType = 0;
gunproperties.bullet[1].powerRadius = 10.0F;
gunproperties.bullet[1].traceMesh
= "3DO/Effects/Tracers/20mmRed/mono.sim";
gunproperties.bullet[1].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[1].traceColor = -654299393;
gunproperties.bullet[1].timeLife = 15.0F;
gunproperties.bullet[2].massa = 0.55F;
gunproperties.bullet[2].kalibr = 2.1904E-4F;
gunproperties.bullet[2].speed = 860.0F;
gunproperties.bullet[2].power = 0.09F;
gunproperties.bullet[2].powerType = 0;
gunproperties.bullet[2].powerRadius = 10.0F;
gunproperties.bullet[2].traceMesh
= "3DO/Effects/Tracers/20mmRed/mono.sim";
gunproperties.bullet[2].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[2].traceColor = -654299393;
gunproperties.bullet[2].timeLife = 15.0F;
return gunproperties;
}

public void setConvDistance(float f, float f_0_) {
super.setConvDistance(f, f_0_ - 1.2F);
}
}


/* MGunBK37JU87 - 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 MGunBK37JU87 extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = true;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = null;
gunproperties.fire = "3DO/Effects/GunFire/37mm/GunFire.eff";
gunproperties.sprite = null;
gunproperties.smoke = null;
gunproperties.shells = null;
gunproperties.sound = "weapon.air_cannon_37";
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.0F;
gunproperties.shotFreq = 1.25F;
gunproperties.traceFreq = 1;
gunproperties.bullets = 12;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= new BulletProperties[] { new BulletProperties() };
gunproperties.bullet[0].massa = 0.68F;
gunproperties.bullet[0].kalibr = 2.1904E-4F;
gunproperties.bullet[0].speed = 1170.0F;
gunproperties.bullet[0].power = 0.0F;
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
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[0].traceColor = -654299393;
gunproperties.bullet[0].timeLife = 15.0F;
return gunproperties;
}

public void setConvDistance(float f, float f_0_) {
super.setConvDistance(f, f_0_ - 1.22F);
}
}


/* MGunBK37 - 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 MGunBK37 extends MGunAircraftGeneric
{
public GunProperties createProperties() {
GunProperties gunproperties = super.createProperties();
gunproperties.bCannon = true;
gunproperties.bUseHookAsRel = true;
gunproperties.fireMesh = null;
gunproperties.fire = "3DO/Effects/GunFire/37mm/GunFire.eff";
gunproperties.sprite = null;
gunproperties.smoke = null;
gunproperties.shells = null;
gunproperties.sound = "weapon.air_cannon_37";
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.11F;
gunproperties.shotFreq = 1.25F;
gunproperties.traceFreq = 1;
gunproperties.bullets = 12;
gunproperties.bulletsCluster = 1;
gunproperties.bullet
= new BulletProperties[] { new BulletProperties(),
new BulletProperties(),
new BulletProperties() };
gunproperties.bullet[0].massa = 0.68F;
gunproperties.bullet[0].kalibr = 2.1904E-4F;
gunproperties.bullet[0].speed = 1170.0F;
gunproperties.bullet[0].power = 0.0F;
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
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[0].traceColor = -654299393;
gunproperties.bullet[0].timeLife = 15.0F;
gunproperties.bullet[1].massa = 0.628F;
gunproperties.bullet[1].kalibr = 2.1904E-4F;
gunproperties.bullet[1].speed = 812.0F;
gunproperties.bullet[1].power = 0.096F;
gunproperties.bullet[1].powerType = 0;
gunproperties.bullet[1].powerRadius = 10.0F;
gunproperties.bullet[1].traceMesh
= "3DO/Effects/Tracers/20mmRed/mono.sim";
gunproperties.bullet[1].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[1].traceColor = -654299393;
gunproperties.bullet[1].timeLife = 15.0F;
gunproperties.bullet[2].massa = 0.55F;
gunproperties.bullet[2].kalibr = 2.1904E-4F;
gunproperties.bullet[2].speed = 860.0F;
gunproperties.bullet[2].power = 0.09F;
gunproperties.bullet[2].powerType = 0;
gunproperties.bullet[2].powerRadius = 10.0F;
gunproperties.bullet[2].traceMesh
= "3DO/Effects/Tracers/20mmRed/mono.sim";
gunproperties.bullet[2].traceTrail
= "3DO/Effects/Tracers/TrailCurved.eff";
gunproperties.bullet[2].traceColor = -654299393;
gunproperties.bullet[2].timeLife = 15.0F;
return gunproperties;
}

public void setConvDistance(float f, float f_0_) {
super.setConvDistance(f, f_0_ - 1.2F);
}
}


Штуке поменяли раскладку - оставили только бронебойные, ИМХО правильно, почему это не было сделано раньше... И очевидно, что КВ и другие танки стали с неё "браться" легче.
Впрочем 110 и 129 то же так необходимо сделать, сейчас помоему это похоже на раскладку зенитки Flak18_37, лень уже искать, ибо 129 противотанковый по-определению, 110 то же (именно с ВК-37), вопреки общему заблуждению, что Вк на нем против бомберов.
Последний раз редактировалось Karabas-Barabas 14 ноя 2011, 20:31, всего редактировалось 5 раз(а).
Аватара пользователя
Karabas-Barabas
Новичок
Новичок
 
Автор темы
Сообщения: 181
Зарегистрирован:
13 ноя 2011, 22:44
Has thanked: 0 time
Have thanks: 2 times
Вернуться к началу

Пред.След.

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

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

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