Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,303
|
И protected void hitBone(String s, Shot shot, Point3d point3d)
должен быть хоть маленький., в нём обязательно должен быть вот такой кусочек:
Код:
if(s.startsWith("xxcontrols"))
{
int i = s.charAt(10) - 48;
if(s.length() == 12)
i = 10 + (s.charAt(11) - 48);
switch(i)
{
default:
break;
case 1: // '\001'
if(getEnergyPastArmor(3.2F, shot) > 0.0F)
{
debugprintln(this, "*** Control Column: Hit, Controls Destroyed..");
FM.AS.setControlsDamage(shot.initiator, 2);
FM.AS.setControlsDamage(shot.initiator, 1);
FM.AS.setControlsDamage(shot.initiator, 0);
}
break;
case 2: // '\002'
if(getEnergyPastArmor(0.1F, shot) <= 0.0F)
break;
debugprintln(this, "*** Throttle Quadrant: Hit, Engine Controls Disabled..");
FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 8);
if(World.Rnd().nextFloat() < 0.5F)
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
else
FM.AS.setEngineSpecificDamage(shot.initiator, 1, 1);
break;
case 3: // '\003'
if(getEnergyPastArmor(1.0F, shot) > 0.0F)
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
break;
case 7: // '\007'
if(getEnergyPastArmor(1.0F, shot) > 0.0F)
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
break;
case 4: // '\004'
case 6: // '\006'
case 8: // '\b'
case 10: // '\n'
if(getEnergyPastArmor(2.1F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F)
{
debugprintln(this, "*** Aileron Controls: Disabled..");
FM.AS.setControlsDamage(shot.initiator, 0);
}
break;
case 5: // '\005'
case 9: // '\t'
if(getEnergyPastArmor(4.1F, shot) > 0.0F)
{
debugprintln(this, "*** Aileron Controls Crank: Disabled..");
FM.AS.setControlsDamage(shot.initiator, 0);
}
break;
case 11: // '\013'
case 12: // '\f'
if(getEnergyPastArmor(0.3F, shot) > 0.0F)
{
debugprintln(this, "*** Rudder Controls: Disabled / Strings Broken..");
FM.AS.setControlsDamage(shot.initiator, 2);
}
break;
}
return;
}
if(s.startsWith("xxEng"))
{
int j = s.charAt(5) - 49;
if(point3d.x > 0.0D)
{
if(getEnergyPastArmor(0.1F, shot) > 0.0F)
{
debugprintln(this, "*** Engine Module(s): Supercharger Disabled..");
FM.AS.setEngineSpecificDamage(shot.initiator, j, 0);
}
} else
{
if(getEnergyPastArmor(3.2F, shot) > 0.0F)
FM.EI.engines[j].setCyliderKnockOut(shot.initiator, 1);
if(World.Rnd().nextFloat(0.009F, 0.1357F) < shot.mass && FM.EI.engines[j].getStage() == 6)
FM.AS.hitEngine(shot.initiator, j, 1);
getEnergyPastArmor(14.296F, shot);
}
return;
}
.....................
if(s.startsWith("xxTank"))
{
int k = s.charAt(6) - 49;
if(getEnergyPastArmor(0.1F, shot) > 0.0F && World.Rnd().nextFloat() < 0.25F && shot.powerType == 3)
FM.AS.hitTank(shot.initiator, k, 2);
return;
} else
{
return;
}
}
ещё:
Код:
public void update(float f)
{
if(FM.AS.isMaster())
{
for(int i = 0; i < 2; i++)
{
if(curctl[i] == -1F)
{
curctl[i] = oldctl[i] = FM.EI.engines[i].getControlThrottle();
continue;
}
curctl[i] = FM.EI.engines[i].getControlThrottle();
if((curctl[i] - oldctl[i]) / f > 3F && FM.EI.engines[i].getRPM() < 2400F && FM.EI.engines[i].getStage() == 6 && World.Rnd().nextFloat() < 0.25F)
FM.AS.hitEngine(this, i, 100);
if((curctl[i] - oldctl[i]) / f < -3F && FM.EI.engines[i].getRPM() < 2400F && FM.EI.engines[i].getStage() == 6)
{
if(World.Rnd().nextFloat() < 0.25F && (FM instanceof RealFlightModel) && ((RealFlightModel)FM).isRealMode())
FM.EI.engines[i].setEngineStops(this);
if(World.Rnd().nextFloat() < 0.75F && (FM instanceof RealFlightModel) && ((RealFlightModel)FM).isRealMode())
FM.EI.engines[i].setKillCompressor(this);
}
oldctl[i] = curctl[i];
}
if(Config.isUSE_RENDER())
{
if(FM.EI.engines[0].getPowerOutput() > 0.8F && FM.EI.engines[0].getStage() == 6)
{
if(FM.EI.engines[0].getPowerOutput() > 0.95F)
FM.AS.setSootState(this, 0, 3);
else
FM.AS.setSootState(this, 0, 2);
} else
{
FM.AS.setSootState(this, 0, 0);
}
if(FM.EI.engines[1].getPowerOutput() > 0.8F && FM.EI.engines[1].getStage() == 6)
{
if(FM.EI.engines[1].getPowerOutput() > 0.95F)
FM.AS.setSootState(this, 1, 3);
else
FM.AS.setSootState(this, 1, 2);
} else
{
FM.AS.setSootState(this, 1, 0);
}
}
}
super.update(f);
}
И вот это не помешало бы:
Код:
public void rareAction(float f, boolean flag)
{
super.rareAction(f, flag);
if(flag && World.Rnd().nextFloat() < 0.04F)
{
if(FM.AS.astateEngineStates[0] > 3 && World.Rnd().nextFloat() < 0.12F)
{
FM.AS.explodeEngine(this, 0);
msgCollision(this, "WingLIn_D0", "WingLIn_D0");
if(World.Rnd().nextBoolean())
FM.AS.hitTank(this, 0, World.Rnd().nextInt(1, 8));
else
FM.AS.hitTank(this, 1, World.Rnd().nextInt(1, 8));
}
if(FM.AS.astateEngineStates[1] > 3 && World.Rnd().nextFloat() < 0.12F)
{
FM.AS.explodeEngine(this, 1);
msgCollision(this, "WingRIn_D0", "WingRIn_D0");
if(World.Rnd().nextBoolean())
FM.AS.hitTank(this, 0, World.Rnd().nextInt(1, 8));
else
FM.AS.hitTank(this, 1, World.Rnd().nextInt(1, 8));
}
}
if(FM.getAltitude() < 3000F)
hierMesh().chunkVisible("HMask1_D0", false);
else
hierMesh().chunkVisible("HMask1_D0", hierMesh().isChunkVisible("Head1_D0"));
}
|