Pseudo Target Lock for Lasers (Guide)
Posted: Sat Dec 23, 2017 7:01 pm
by Samee3
This is the most convincing (and fair) I've been able to make it so far. Feel free to play around with the values if you like.
Anyhow, here goes nothing......
Parent Weapon ODF
Parent Ordnance ODF
FX file: to make it look like a laser. This one's red. Just make an FX file and paste this inside.
Sorry, I won't post any of the files: I have a terrible internet connection.
I'm pretty sure this is everything, so if you have any issues, tell me.
Anyhow, here goes nothing......
Parent Weapon ODF
Hidden/Spoiler:
[code]
[WeaponClass]
ClassLabel = "launcher" // let us use target lock
[Properties]
HUDTag = "hud_vehicle_lasers" // make everyone think it's actually lasers
ShotDelay = "0.14 0.16" // add some randomness
RoundsPerClip = "0"
ReloadTime = "0.0"
SalvoCount = "1"
ShotsPerSalvo = "1"
SalvoDelay = "0"
InitialSavloDelay = "0"
TriggerSingle = "1" // this is purely personal preference
MaxPressedTime = "0.0"
HeatRecoverRate = "0.0"
HeatThreshold = "0.0"
HeatPerShot = "0.0" // you can set up heat values if you want; I just haven't gotten around to it
MinRange = "10"
OptimalRange = "300"
MaxRange = "500" // check the ordnance to understand this one
LockOnRange = "1000" // this section is VERY IMPORTANT. Don't use AutoAimSize: it makes thing go wonky on larger targets (like capital ships)
LockOnAngle = "0.5" // not too big, or it can look wrong
LockOffAngle = "1.0" //
LockTime = "0.1" // this is the only way I could get it to work convincingly
TargetLockMaxDistance = "1000"
TargetLockMaxDistanceLose = "2000"
TargetEnemy = "1"
TargetNeutral = "0"
TargetFriendly = "0"
TargetAll = "1" // Target EVERYTHING!
FireSoundStop = "1"
OverheatSound = "com_weap_energy_depleted"
OverheatSoundPitch = "0.5"
OverheatStopSound = "com_weap_energy_refilled"
[/code]
[WeaponClass]
ClassLabel = "launcher" // let us use target lock
[Properties]
HUDTag = "hud_vehicle_lasers" // make everyone think it's actually lasers
ShotDelay = "0.14 0.16" // add some randomness
RoundsPerClip = "0"
ReloadTime = "0.0"
SalvoCount = "1"
ShotsPerSalvo = "1"
SalvoDelay = "0"
InitialSavloDelay = "0"
TriggerSingle = "1" // this is purely personal preference
MaxPressedTime = "0.0"
HeatRecoverRate = "0.0"
HeatThreshold = "0.0"
HeatPerShot = "0.0" // you can set up heat values if you want; I just haven't gotten around to it
MinRange = "10"
OptimalRange = "300"
MaxRange = "500" // check the ordnance to understand this one
LockOnRange = "1000" // this section is VERY IMPORTANT. Don't use AutoAimSize: it makes thing go wonky on larger targets (like capital ships)
LockOnAngle = "0.5" // not too big, or it can look wrong
LockOffAngle = "1.0" //
LockTime = "0.1" // this is the only way I could get it to work convincingly
TargetLockMaxDistance = "1000"
TargetLockMaxDistanceLose = "2000"
TargetEnemy = "1"
TargetNeutral = "0"
TargetFriendly = "0"
TargetAll = "1" // Target EVERYTHING!
FireSoundStop = "1"
OverheatSound = "com_weap_energy_depleted"
OverheatSoundPitch = "0.5"
OverheatStopSound = "com_weap_energy_refilled"
[/code]
Hidden/Spoiler:
[code]
[OrdnanceClass]
ClassLabel = "missile" // make it obey target lock
[Properties]
LifeSpan = "0.25" // not too long, or it will turn into a missile and come back around. Besides, plasma is the most unstable state of matter.
MinSpeed = "0" // allow the TurnRate to take effect
Acceleration = "10000" // just not for too long
Velocity = "2000"
Gravity = "0.0"
Rebound = "0.0"
MaxDamage = "" // whatever you like
DamageTransitionDelay = "0.175"
DamageTransitionPeriod = "0.125"
DamageFinalDamage = "" // I recommend setting to 1/10th of MaxDamage
PersonScale = "1.0"
AnimalScale = "1.0"
DroidScale = "1.0"
VehicleScale = "0.5"
BuildingScale = "0.5"
// you can set your own damage scales if you want
HealthScale = "1.0"
ArmorScale = "0.5"
ShieldScale = "0.1"
TurnRate = "20.0" // important. Makes the ordnance chase the target momentarily.
WaverRate = "0.0"
WaverTurn = "0.0"
// Visuals ------------------------------------------- You can set your own
ImpactEffectSoft = ""
ImpactEffectRigid = ""
ImpactEffectStatic = ""
ImpactEffectTerrain = ""
ImpactEffectWater = "com_sfx_watersplash_ord_lg"
ImpactEffectShieldSmall = "com_sfx_shieldimpact_sm"
ImpactEffectShieldLarge = "com_sfx_shieldimpact_xl"
// Sounds ---------------------------------------------
OrdnanceSound = "com_weap_inf_ord_hum_lg"
CollisionSound = "com_veh_laser_imp_exp"
[/code]
[OrdnanceClass]
ClassLabel = "missile" // make it obey target lock
[Properties]
LifeSpan = "0.25" // not too long, or it will turn into a missile and come back around. Besides, plasma is the most unstable state of matter.
MinSpeed = "0" // allow the TurnRate to take effect
Acceleration = "10000" // just not for too long
Velocity = "2000"
Gravity = "0.0"
Rebound = "0.0"
MaxDamage = "" // whatever you like
DamageTransitionDelay = "0.175"
DamageTransitionPeriod = "0.125"
DamageFinalDamage = "" // I recommend setting to 1/10th of MaxDamage
PersonScale = "1.0"
AnimalScale = "1.0"
DroidScale = "1.0"
VehicleScale = "0.5"
BuildingScale = "0.5"
// you can set your own damage scales if you want
HealthScale = "1.0"
ArmorScale = "0.5"
ShieldScale = "0.1"
TurnRate = "20.0" // important. Makes the ordnance chase the target momentarily.
WaverRate = "0.0"
WaverTurn = "0.0"
// Visuals ------------------------------------------- You can set your own
ImpactEffectSoft = ""
ImpactEffectRigid = ""
ImpactEffectStatic = ""
ImpactEffectTerrain = ""
ImpactEffectWater = "com_sfx_watersplash_ord_lg"
ImpactEffectShieldSmall = "com_sfx_shieldimpact_sm"
ImpactEffectShieldLarge = "com_sfx_shieldimpact_xl"
// Sounds ---------------------------------------------
OrdnanceSound = "com_weap_inf_ord_hum_lg"
CollisionSound = "com_veh_laser_imp_exp"
[/code]
Hidden/Spoiler:
[code]
ParticleEmitter("Smoke")
{
MaxParticles(-1.0000,-1.0000);
StartDelay(0.0000,0.0000);
BurstDelay(0.0100, 0.0100);
BurstCount(1.0000,1.0000);
MaxLodDist(1000.0000);
MinLodDist(800.0000);
BoundingRadius(30.0);
SoundName("")
Size(1.0000, 1.0000);
Hue(255.0000, 255.0000);
Saturation(255.0000, 255.0000);
Value(255.0000, 255.0000);
Alpha(255.0000, 255.0000);
Spawner()
{
Circle()
{
PositionX(-1.0000,1.0000);
PositionY(-1.0000,1.0000);
PositionZ(-1.0000,1.0000);
}
Offset()
{
PositionX(0.0000,0.0000);
PositionY(0.0000,0.0000);
PositionZ(0.0000,0.0000);
}
PositionScale(0.0000,0.0000);
VelocityScale(0.0000,0.0000);
InheritVelocityFactor(0.0000,0.0000);
Size(0, 0.2000, 0.2500);
Red(0, 255.0000, 255.0000);
Green(0, 50.0000, 50.0000);
Blue(0, 50.0000, 50.0000);
Alpha(0, 255.0000, 255.0000);
StartRotation(0, 90.0000, 90.0000);
RotationVelocity(0, 0.0000, 1.0000);
FadeInTime(0.0000);
}
Transformer()
{
LifeTime(0.0500);
Position()
{
LifeTime(1.5000)
Scale(0.0000);
}
Size(0)
{
LifeTime(1.0000)
Scale(0.1000);
}
Color(0)
{
LifeTime(0.0100)
Move(0.0000,0.0000,0.0000,255.0000);
Next()
{
LifeTime(0.0900)
Move(0.0000,0.0000,0.0000,-255.0000);
}
}
}
Geometry()
{
BlendMode("NORMAL");
Type("STREAK");
Texture("com_sfx_smoketrail");
ParticleEmitter("BlackSmoke")
{
MaxParticles(4.0000,4.0000);
StartDelay(0.0000,0.0000);
BurstDelay(0.0250, 0.0250);
BurstCount(1.0000,1.0000);
MaxLodDist(50.0000);
MinLodDist(10.0000);
BoundingRadius(5.0);
SoundName("")
Size(1.0000, 1.0000);
Hue(255.0000, 255.0000);
Saturation(255.0000, 255.0000);
Value(255.0000, 255.0000);
Alpha(255.0000, 255.0000);
Spawner()
{
Spread()
{
PositionX(-2.6250,2.6250);
PositionY(-2.6250,2.6250);
PositionZ(-2.6250,2.6250);
}
Offset()
{
PositionX(-0.1313,0.1313);
PositionY(-0.1313,0.1313);
PositionZ(-0.1313,0.1313);
}
PositionScale(0.0000,0.0000);
VelocityScale(2.6250,2.6250);
InheritVelocityFactor(0.2000,0.2000);
Size(0, 1.3125, 1.8375);
Hue(0, 12.0000, 20.0000);
Saturation(0, 5.0000, 10.0000);
Value(0, 200.0000, 220.0000);
Alpha(0, 0.0000, 0.0000);
StartRotation(0, -20.0000, 20.0000);
RotationVelocity(0, -20.0000, 20.0000);
FadeInTime(0.0000);
}
Transformer()
{
LifeTime(1.5000);
Position()
{
LifeTime(1.5000)
Scale(0.0000);
}
Size(0)
{
LifeTime(2.0000)
Scale(6.0000);
}
Color(0)
{
LifeTime(0.1000)
Move(0.0000,0.0000,0.0000,255.0000);
Next()
{
LifeTime(1.4000)
Move(0.0000,0.0000,0.0000,-255.0000);
}
}
}
Geometry()
{
BlendMode("NORMAL");
Type("PARTICLE");
Texture("thicksmoke3");
}
}
}
}
[/code]
ParticleEmitter("Smoke")
{
MaxParticles(-1.0000,-1.0000);
StartDelay(0.0000,0.0000);
BurstDelay(0.0100, 0.0100);
BurstCount(1.0000,1.0000);
MaxLodDist(1000.0000);
MinLodDist(800.0000);
BoundingRadius(30.0);
SoundName("")
Size(1.0000, 1.0000);
Hue(255.0000, 255.0000);
Saturation(255.0000, 255.0000);
Value(255.0000, 255.0000);
Alpha(255.0000, 255.0000);
Spawner()
{
Circle()
{
PositionX(-1.0000,1.0000);
PositionY(-1.0000,1.0000);
PositionZ(-1.0000,1.0000);
}
Offset()
{
PositionX(0.0000,0.0000);
PositionY(0.0000,0.0000);
PositionZ(0.0000,0.0000);
}
PositionScale(0.0000,0.0000);
VelocityScale(0.0000,0.0000);
InheritVelocityFactor(0.0000,0.0000);
Size(0, 0.2000, 0.2500);
Red(0, 255.0000, 255.0000);
Green(0, 50.0000, 50.0000);
Blue(0, 50.0000, 50.0000);
Alpha(0, 255.0000, 255.0000);
StartRotation(0, 90.0000, 90.0000);
RotationVelocity(0, 0.0000, 1.0000);
FadeInTime(0.0000);
}
Transformer()
{
LifeTime(0.0500);
Position()
{
LifeTime(1.5000)
Scale(0.0000);
}
Size(0)
{
LifeTime(1.0000)
Scale(0.1000);
}
Color(0)
{
LifeTime(0.0100)
Move(0.0000,0.0000,0.0000,255.0000);
Next()
{
LifeTime(0.0900)
Move(0.0000,0.0000,0.0000,-255.0000);
}
}
}
Geometry()
{
BlendMode("NORMAL");
Type("STREAK");
Texture("com_sfx_smoketrail");
ParticleEmitter("BlackSmoke")
{
MaxParticles(4.0000,4.0000);
StartDelay(0.0000,0.0000);
BurstDelay(0.0250, 0.0250);
BurstCount(1.0000,1.0000);
MaxLodDist(50.0000);
MinLodDist(10.0000);
BoundingRadius(5.0);
SoundName("")
Size(1.0000, 1.0000);
Hue(255.0000, 255.0000);
Saturation(255.0000, 255.0000);
Value(255.0000, 255.0000);
Alpha(255.0000, 255.0000);
Spawner()
{
Spread()
{
PositionX(-2.6250,2.6250);
PositionY(-2.6250,2.6250);
PositionZ(-2.6250,2.6250);
}
Offset()
{
PositionX(-0.1313,0.1313);
PositionY(-0.1313,0.1313);
PositionZ(-0.1313,0.1313);
}
PositionScale(0.0000,0.0000);
VelocityScale(2.6250,2.6250);
InheritVelocityFactor(0.2000,0.2000);
Size(0, 1.3125, 1.8375);
Hue(0, 12.0000, 20.0000);
Saturation(0, 5.0000, 10.0000);
Value(0, 200.0000, 220.0000);
Alpha(0, 0.0000, 0.0000);
StartRotation(0, -20.0000, 20.0000);
RotationVelocity(0, -20.0000, 20.0000);
FadeInTime(0.0000);
}
Transformer()
{
LifeTime(1.5000);
Position()
{
LifeTime(1.5000)
Scale(0.0000);
}
Size(0)
{
LifeTime(2.0000)
Scale(6.0000);
}
Color(0)
{
LifeTime(0.1000)
Move(0.0000,0.0000,0.0000,255.0000);
Next()
{
LifeTime(1.4000)
Move(0.0000,0.0000,0.0000,-255.0000);
}
}
}
Geometry()
{
BlendMode("NORMAL");
Type("PARTICLE");
Texture("thicksmoke3");
}
}
}
}
[/code]
I'm pretty sure this is everything, so if you have any issues, tell me.