Code:
class MercedesHull extends KActor
placeable;
var int Health;
//var DynamicLightEnvironmentComponent LightEnvironment;
var ParticleSystem FireEmitter1, Explosion;
var bool Fire1;
var bool Fire2;
var bool Fire3;
var bool ExplosionEm;
var SkeletalMeshComponent Mercedes;
var class<DamageType> dmgType;
var float DefaultImpulse;
auto state Active
{
event TakeDamage(int Damage, Controller EventInstigator, vector HitLocation, vector Momentum, class<DamageType> DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser)
{
dmgType = DamageType;
`log("Damage done "@Damage);
Health -= Damage;
Super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser);
if(!Fire1 && Health<=70)
{
SpawnEffect(1);
Fire1=true;
}
if(!Fire2 && Health<=50)
{
SpawnEffect(2);
Fire2=true;
}
if(!Fire3 && Health<=20)
{
SpawnEffect(3);
Fire3=true;
}
if(Health<=0 && !ExplosionEm)
{
ExplosionEm=true;
ExplodingCar();
HurtRadius
(
75,
128,
dmgType,
0,
Location,
None,
EventInstigator,
false
);
}
}
simulated function Tick(float DeltaTime)
{
super.Tick(DeltaTime);
if(Health<=35 && Health>0)
{
Health-=5;
`log("Self Damage for 5 points, HP left "@Health);
}
if(Health<0 && !ExplosionEm)
{
ExplosionEm=true;
ExplodingCar();
}
}
function ExplodingCar()
{
SpawnEffect(4);
ExplosionEm=true;
ApplyImpulse(vect(0,0,10),DefaultImpulse, vect(0,0,0));
HurtRadius
(
1000,
1000,
dmgType,
0,
Location,
,
,
);
GoToState('Dead');
}
}
state Dead
{
ignores TakeDamage,TakeRadiusDamage;
}
function SpawnEffect(int number)
{
if(number==1){ WorldInfo.MyEmitterPool.SpawnEmitterMeshAttachment(FireEmitter1,Mercedes, 'FireParticle1',true,,);}
if(number==2){ WorldInfo.MyEmitterPool.SpawnEmitterMeshAttachment(FireEmitter1,Mercedes, 'FireParticle2',true,,);}
if(number==3){ WorldInfo.MyEmitterPool.SpawnEmitterMeshAttachment(FireEmitter1,Mercedes, 'FireParticle3',true,,);}
if(number==4){ WorldInfo.MyEmitterPool.SpawnEmitterMeshAttachment(Explosion,Mercedes, 'FireParticle3',true,,);}
}
defaultproperties
{
Fire1=false
Fire2=false
Fire3=false
ExplosionEm=false
Health=100
bBlockActors=true
bCollideWorld=true
bCollideActors=true
bPathColliding=true
DefaultImpulse=20.0
//particlesystems
FireEmitter1=ParticleSystem'Particles.FlameTorch_CARS'
Explosion=ParticleSystem'Particles.Explosion_Mercedes'
//Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment
// bSynthesizeSHLight=true
// bUseBooleanEnvironmentShadowing=false
// End Object
// LightEnvironment=MyLightEnvironment
// Components.Add(MyLightEnvironment)
bWakeOnLevelStart=true
Begin Object class=SkeletalMeshComponent name=MercedesHull
SkeletalMesh=SkeletalMesh'HD_CivilianVehicles.Mercedes_Rigged'
PhysicsAsset=PhysicsAsset'HD_CivilianVehicles.Mercedes_Rigged_Physics'
CollideActors=true
BlockActors=true
BlockNonZeroExtent=true
BlockZeroExtent=true
Scale=10.0
LightingChannels=(Dynamic=TRUE)
AlwaysCheckCollision=TRUE
End Object
Components.Add(MercedesHull);
Mercedes=MercedesHull;
}
The code itself still has a couple of glitches, but I can fix those myself. Im more worried about why it has no physics at all.
Bookmarks