[General Purpose] Enhanced Straight trajectory#1294
[General Purpose] Enhanced Straight trajectory#1294CrimRecya merged 74 commits intoPhobos-developers:developfrom
Conversation
|
Nightly build for this pull request:
This comment is automatic and is meant to allow guests to get latest nightly builds for this pull request without registering. It is updated on every successful build. |
|
Changes: In Trajectory.Straight.ProximityDirect=false ; boolean
Trajectory.Straight.ProximityAllies=false ; booleanthen separate the allies damage multiplier to a more comprehensive function in #1307 . |
|
It is a small code style thing but it is consistent across all of the code you write, so figured I'll mention it when it is on top of my mind. Phobos code should use camelCase (first letter of the first word is uncapitalized) for local variables names, not PascalCase (caps). Pointers specifically are prefixed with |
Get it. I will check them all out these days :) . |
…ugh buildings or vehicles
|
Currently (in this branch) any |
Thx for testing, I will ty to fix it later. :o |
Fix: If the projectile has an extremely fast velocity and is blocked by an obstacle midway, although it will be detonated early, its `ProximityImpact` will still penetrate the obstacle and damage the technos behind.
This is a sequel of #1246, which makes use of logic and tag standard from the other trajectory pull requests (#1293, #1294, #1295 and #1374), and also utilizes the generic random anim function from (#1380). Many thanks to @CrimRecya for making these projectiles as well as helping with improvement of enhanced Bombard trajectory. Also thanks **NaotoYuuki** for providing the prototypes of vertical and meteor projectiles, which are used as the base of these additions. 1 - Bombard Trajectory now support `Inaccurate=true, BallisticScatter.Max and BallisticScatter.Min` keys, which allows them to scatter when picking targets. 2 - Bombard Trajectory, instead of simply flying to the top of the target and free fall, is now extended into a series of trajectories which flying to a 'turning point' first, and then turning to the targets or respawning on their top. The behaviors of the projectile and the position of the turning point could be customized by the following tags: - `Trajectory.Bombard.Height` controls the height of the turning point. - `Trajectory.Bombard.FallPercent` controls the distance of the turning point by its percentage of the total distance between attacker and intended target. If set to 0%, then it'll fly up vertically. If set to 100%, then it'll travel to the top of the intended target. - For each launch the turning point percentage could add or minus a random value, which is not greater than `Trajectory.Bombard.FallPercentShift`. If set to 0%, random shift will be disabled. - You can also makes the turning point scatter randomly in a circle with `Trajectory.Bombard.FallScatter.Max` as its radius. If set to 0, random scatter will be disabled. `Trajectory.Bombard.FallScatter.Min` can be used to determine the minimum radius of the circle. If `Trajectory.Bombard.FallScatter.Linear` set to true, the random scatter will be limited to the line that is vertical to the original direction of the projectile. - `Trajectory.Bombard.FreeFallOnTarget` controls how it'll hit the intended target. If set to true, the projectile will be respawned above the intended target and free fall. If set to false, the projectile will travel to the intended target from the turning point. - `Trajectory.Bombard.NoLaunch` controls whether the attacker will fire the projectile by itself. If set to true, projectile will directly fall from the turning point. - `Trajectory.Bombard.FallSpeed` controls the initial speed of the projectile after it turns. If set to 0.0, then it'll use `Trajectory.Speed`. Can't work when `Trajectory.Bombard.FreeFallOnTarget` set to true. - `Trajectory.Bombard.DetonationDistance` controls the maximum distance in cells from intended target (checked at start of each game frame, before the projectile moves) at which the projectile will be forced to detonate. Set to 0 to disable forced detonation (note that this can cause the projectile to overshoot the target). - `Trajectory.Bombard.DetonationHeight` controls when the projectile is in a descending state and below the height of the launch position plus this value, it will detonate prematurely. Taking effect when it is set to non negative value. If `Trajectory.Bombard.EarlyDetonation` is set to true, it'll take effect during the ascending stage instead, which makes it detonate when its height is above the launch position plus this value. - `Trajectory.Bombard.TargetSnapDistance` controls the maximum distance in cells from intended target the projectile can be at moment of detonation to make the projectile 'snap' on the intended target. Set to 0 to disable snapping. - `Trajectory.Bombard.TurningPointAnims`, if set, will play an anim when the projectile reaches the turning point. If `Trajectory.Bombard.FreeFallOnTarget` is set to true, it'll be spawned above the target with the projectile together. If `Trajectory.Bombard.NoLaunch` is set to true, it'll be played at where the projectile falls, no matter if it's free fall or not. If more than one animation is listed, a random one is selected. - `Trajectory.Bombard.LeadTimeCalculate` controls whether the projectile need to calculate the lead time of the target when firing. Note that this will not affect the facing of the turret. - The following tags further customize the projectile's descending behaviors when `Trajectory.Bombard.FreeFallOnTarget` set to false. - `Trajectory.Bombard.OffsetCoord` controls the offsets of the target. Projectile will aim at this position to attack. It also supports `Inaccurate=yes` and `Trajectory.Bombard.LeadTimeCalculate=true` on this basis. - `Trajectory.Bombard.RotateCoord` controls whether to rotate the projectile's firing direction within the angle bisector of `Trajectory.Bombard.OffsetCoord` according to the weapon's `Burst`. Set to 0 to disable this function. - `Trajectory.Bombard.MirrorCoord` controls whether `Trajectory.Bombard.OffsetCoord` need to mirror the lateral value to adapt to the current burst index. At the same time, the rotation direction calculated by `Trajectory.Bombard.RotateCoord` will also be reversed, and the rotation angle between each adjacent projectile on each side will not change as a result. - `Trajectory.Bombard.UseDisperseBurst` controls whether the calculation of `Trajectory.Bombard.RotateCoord` is based on its superior's `Trajectory.Disperse.WeaponBurst` of the dispersed trajectory, rather than `Burst` of the weapon. If this value is not appropriate, it will result in unsatisfactory visual displays. - `Trajectory.Bombard.AxisOfRotation` controls the rotation axis when calculating `Trajectory.Bombard.RotateCoord`. The axis will rotates with the unit orientation or the vector that from target position to the source position. - `Trajectory.Bombard.SubjectToGround` controls whether the projectile should explode when it hits the ground. Note that this will not make AI search for suitable attack locations. In `rulesmd.ini`: ```ini [SOMEPROJECTILE] ; Projectile Trajectory=Bombard ; Trajectory type Trajectory.Bombard.Height=0.0 ; double Trajectory.Bombard.FallPercent=1.0 ; double Trajectory.Bombard.FallPercentShift=0.0 ; double Trajectory.Bombard.FallScatter.Max=0.0 ; floating point value Trajectory.Bombard.FallScatter.Min=0.0 ; floating point value Trajectory.Bombard.FallScatter.Linear=false ; boolean Trajectory.Bombard.FreeFallOnTarget=true ; boolean Trajectory.Bombard.NoLaunch=false ; boolean Trajectory.Bombard.FallSpeed=0.0 ; double Trajectory.Bombard.DetonationDistance=0.4 ; floating point value Trajectory.Bombard.DetonationHeight=-1 ; integer Trajectory.Bombard.EarlyDetonation=false ; boolean Trajectory.Bombard.TargetSnapDistance=0.5 ; floating point value Trajectory.Bombard.TurningPointAnims= ; list of Animation Trajectory.Bombard.LeadTimeCalculate=false ; boolean Trajectory.Bombard.OffsetCoord=0,0,0 ; integer - Forward,Lateral,Height Trajectory.Bombard.RotateCoord=0 ; floating point value Trajectory.Bombard.MirrorCoord=true ; boolean Trajectory.Bombard.UseDisperseBurst=false ; boolean Trajectory.Bombard.AxisOfRotation=0,0,1 ; integer - Forward,Lateral,Height Trajectory.Bombard.SubjectToGround=false ; boolean ``` If all values are set to default, it'll perform as the old Bombard Trajectory. **NOTE:** Both the old and new Bombard trajectories might trigger a fatal error when firing a Voxel=true projectile (EIP: 007564B4), which is unresolved yet. Avoid using it for now, and if someone could make it work I'll be really grateful. --------- Co-authored-by: CrimRecya <335958461@qq.com>
- Self-explanatory, is a straight-shot trajectory.
- `Trajectory.Straight.DetonationDistance` controls the maximum distance
in cells from intended target (checked at start of each game frame,
before the projectile moves) at which the projectile will be forced to
detonate. Set to 0 to disable forced detonation (note that this can
cause the projectile to overshoot the target). If
`Trajectory.Straight.ApplyRangeModifiers` is set to true, any applicable
weapon range modifiers from the firer are applied here as well. By
setting `Trajectory.Straight.PassThrough=true`, it refers to the
distance that projectile should travel from itself when it above 0, and
the distance that projectile should move behind the target when it below
0 (use the absolute value).
- `Trajectory.Straight.TargetSnapDistance` controls the maximum distance
in cells from intended target the projectile can be at moment of
detonation to make the projectile 'snap' on the intended target. Set to
0 to disable snapping.
- `Trajectory.Straight.PassThrough` enables special case logic where the
projectile does not detonate in contact with the target but instead
travels up to a distance defined by
`Trajectory.Straight.DetonationDistance`. Note that the firing angle of
the projectile is adjusted with this in mind, making it fire straight
ahead if the target is on same elevation.
- `Trajectory.Straight.PassDetonate` enables extra detonations when the
projectile is traveling.
- `Trajectory.Straight.PassDetonateWarhead` defined the warhead
detonated by `Trajectory.Straight.PassDetonate`, and
`Trajectory.Straight.PassDetonateDamage` defined the damage caused by
`Trajectory.Straight.PassDetonateWarhead`.
- `Trajectory.Straight.PassDetonateDelay` controls the delay for
detonating the warhead defined by `Trajectory.Straight.Warhead`.
- `Trajectory.Straight.PassDetonateInitialDelay` controls the initial
delay for detonating the warhead defined by
`Trajectory.Straight.Warhead`.
- `Trajectory.Straight.PassDetonateLocal` controls whether
`Trajectory.Straight.PassDetonateWarhead` and weapon's `Warhead` are
always detonate at ground level. It will also no longer restrict
vertical velocity of the projectile when using
`Trajectory.Straight.ConfineAtHeight`.
- `Trajectory.Straight.LeadTimeCalculate` controls whether the
projectile need to calculate the lead time of the target when firing.
Note that this will not affect the facing of the turret.
- `Trajectory.Straight.OffsetCoord` controls the offsets of the target.
Projectile will aim at this position to attack. It also supports
`Inaccurate=yes` and `Trajectory.Straight.LeadTimeCalculate=true` on
this basis.
- `Trajectory.Straight.RotateCoord` controls whether to rotate the
projectile's firing direction within the angle bisector of
`Trajectory.Straight.OffsetCoord` according to the weapon's `Burst`. Set
to 0 to disable this function.
- `Trajectory.Straight.MirrorCoord` controls whether
`Trajectory.Straight.OffsetCoord` need to mirror the lateral value to
adapt to the current burst index. At the same time, the rotation
direction calculated by `Trajectory.Straight.RotateCoord` will also be
reversed, and the rotation angle between each adjacent projectile on
each side will not change as a result.
- `Trajectory.Straight.UseDisperseBurst` controls whether the
calculation of `Trajectory.Straight.RotateCoord` is based on its
superior's `Trajectory.Disperse.WeaponBurst` of the dispersed
trajectory, rather than `Burst` of the weapon. If this value is not
appropriate, it will result in unsatisfactory visual displays.
- `Trajectory.Straight.AxisOfRotation` controls the rotation axis when
calculating `Trajectory.Straight.RotateCoord`. The axis will rotates
with the unit orientation or the vector that from target position to the
source position.
- `Trajectory.Straight.ProximityImpact` controls the initial proximity
fuse times. When there are enough remaining times and the projectile
approaches another valid target, it will detonate a warhead defined by
`Trajectory.Straight.Warhead` on it. If the times is about to run out,
it will also detonate itself at its location. This function can be
cancelled by setting to 0. A negative integer means unlimited times. By
the way, you can use the weapon's `Warhead` with low versus only to aim
at the target, and use the `Trajectory.Straight.ProximityWarhead` to
causing actual harm.
- `Trajectory.Straight.ProximityWarhead` defined the warhead detonated
by `Trajectory.Straight.ProximityImpact`, and
`Trajectory.Straight.ProximityDamage` defined the damage caused by
`Trajectory.Straight.ProximityWarhead`.
- `Trajectory.Straight.ProximityRadius` controls the range of proximity
fuse. It can NOT be set as a negative integer.
- `Trajectory.Straight.ProximityDirect` controls whether let the target
receive damage instead of detonating the warhead.
- `Trajectory.Straight.ProximityAllies` controls whether allies will
also trigger the proximity fuse.
- `Trajectory.Straight.ProximityFlight` controls whether to count units
in the air.
- `Trajectory.Straight.ThroughVehicles` controls whether the projectile
will not be obstructed by vehicles or aircrafts on the ground. When it
is obstructed, it will be directly detonated at its location. If it
still have `Trajectory.Straight.ProximityImpact` times, it will also
detonate a `Trajectory.Straight.ProximityImpact` at the location of the
obstacle.
- `Trajectory.Straight.ThroughBuilding` controls whether the projectile
will not be obstructed by buildings. When it is obstructed, it will be
directly detonated at its location. If it still have
`Trajectory.Straight.ProximityImpact` times, it will also detonate a
`Trajectory.Straight.ProximityImpact` at the location of the obstacle.
- `Trajectory.Straight.EdgeAttenuation` controls the edge attenuation
ratio of projectile damage, includes `Trajectory.Straight.Damage`. Can
NOT be set to a negative integer.
- `Trajectory.Straight.SubjectToGround` controls whether the projectile
should explode when it hits the ground. Note that this will not make AI
search for suitable attack locations.
- `Trajectory.Straight.ConfineAtHeight` controls the height above ground
that projectile will try to travel as it can. It can not move down from
the cliff by setting `SubjectToCliffs=yes`. It can be cancelled by
setting as a non positive integer. It will be forcibly cancelled by
setting `Trajectory.Speed` above 256.
In `rulesmd.ini`:
```ini
[SOMEPROJECTILE] ; Projectile
Trajectory=Straight ; Trajectory type
Trajectory.Straight.ApplyRangeModifiers=false ; boolean
Trajectory.Straight.DetonationDistance=0.4 ; floating point value
Trajectory.Straight.TargetSnapDistance=0.5 ; floating point value
Trajectory.Straight.PassThrough=false ; boolean
Trajectory.Straight.PassDetonate=false ; boolean
Trajectory.Straight.PassDetonateWarhead= ; WarheadType
Trajectory.Straight.PassDetonateDamage=0 ; integer
Trajectory.Straight.PassDetonateDelay=1 ; integer
Trajectory.Straight.PassDetonateInitialDelay=0 ; integer
Trajectory.Straight.PassDetonateLocal=false ; boolean
Trajectory.Straight.LeadTimeCalculate=false ; boolean
Trajectory.Straight.OffsetCoord=0,0,0 ; integer - Forward,Lateral,Height
Trajectory.Straight.RotateCoord=0 ; floating point value
Trajectory.Straight.MirrorCoord=true ; boolean
Trajectory.Straight.UseDisperseBurst=false ; boolean
Trajectory.Straight.AxisOfRotation=0,0,1 ; integer - Forward,Lateral,Height
Trajectory.Straight.ProximityImpact=0 ; integer
Trajectory.Straight.ProximityWarhead= ; WarheadType
Trajectory.Straight.ProximityDamage=0 ; integer
Trajectory.Straight.ProximityRadius=0.7 ; floating point value
Trajectory.Straight.ProximityDirect=false ; boolean
Trajectory.Straight.ProximityAllies=false ; boolean
Trajectory.Straight.ProximityFlight=false ; boolean
Trajectory.Straight.ThroughVehicles=true ; boolean
Trajectory.Straight.ThroughBuilding=true ; boolean
Trajectory.Straight.EdgeAttenuation=1.0 ; floating point value
Trajectory.Straight.SubjectToGround=false ; boolean
Trajectory.Straight.ConfineAtHeight=0 ; integer
```
```{note}
- Make sure you set a low `Trajectory.Straight.ProximityRadius` value unless necessary.
- Note that if `Trajectory.Straight.ProximityFlight` is true, it will consume more CPU performance.
- Note that the listed Warheads in `Trajectory.Straight.PassDetonateWarhead` and `Trajectory.Straight.ProximityWarhead` must be listed in `[Warheads]` for them to work.
```
This is a sequel of Phobos-developers#1246, which makes use of logic and tag standard from the other trajectory pull requests (Phobos-developers#1293, Phobos-developers#1294, Phobos-developers#1295 and Phobos-developers#1374), and also utilizes the generic random anim function from (Phobos-developers#1380). Many thanks to @CrimRecya for making these projectiles as well as helping with improvement of enhanced Bombard trajectory. Also thanks **NaotoYuuki** for providing the prototypes of vertical and meteor projectiles, which are used as the base of these additions. 1 - Bombard Trajectory now support `Inaccurate=true, BallisticScatter.Max and BallisticScatter.Min` keys, which allows them to scatter when picking targets. 2 - Bombard Trajectory, instead of simply flying to the top of the target and free fall, is now extended into a series of trajectories which flying to a 'turning point' first, and then turning to the targets or respawning on their top. The behaviors of the projectile and the position of the turning point could be customized by the following tags: - `Trajectory.Bombard.Height` controls the height of the turning point. - `Trajectory.Bombard.FallPercent` controls the distance of the turning point by its percentage of the total distance between attacker and intended target. If set to 0%, then it'll fly up vertically. If set to 100%, then it'll travel to the top of the intended target. - For each launch the turning point percentage could add or minus a random value, which is not greater than `Trajectory.Bombard.FallPercentShift`. If set to 0%, random shift will be disabled. - You can also makes the turning point scatter randomly in a circle with `Trajectory.Bombard.FallScatter.Max` as its radius. If set to 0, random scatter will be disabled. `Trajectory.Bombard.FallScatter.Min` can be used to determine the minimum radius of the circle. If `Trajectory.Bombard.FallScatter.Linear` set to true, the random scatter will be limited to the line that is vertical to the original direction of the projectile. - `Trajectory.Bombard.FreeFallOnTarget` controls how it'll hit the intended target. If set to true, the projectile will be respawned above the intended target and free fall. If set to false, the projectile will travel to the intended target from the turning point. - `Trajectory.Bombard.NoLaunch` controls whether the attacker will fire the projectile by itself. If set to true, projectile will directly fall from the turning point. - `Trajectory.Bombard.FallSpeed` controls the initial speed of the projectile after it turns. If set to 0.0, then it'll use `Trajectory.Speed`. Can't work when `Trajectory.Bombard.FreeFallOnTarget` set to true. - `Trajectory.Bombard.DetonationDistance` controls the maximum distance in cells from intended target (checked at start of each game frame, before the projectile moves) at which the projectile will be forced to detonate. Set to 0 to disable forced detonation (note that this can cause the projectile to overshoot the target). - `Trajectory.Bombard.DetonationHeight` controls when the projectile is in a descending state and below the height of the launch position plus this value, it will detonate prematurely. Taking effect when it is set to non negative value. If `Trajectory.Bombard.EarlyDetonation` is set to true, it'll take effect during the ascending stage instead, which makes it detonate when its height is above the launch position plus this value. - `Trajectory.Bombard.TargetSnapDistance` controls the maximum distance in cells from intended target the projectile can be at moment of detonation to make the projectile 'snap' on the intended target. Set to 0 to disable snapping. - `Trajectory.Bombard.TurningPointAnims`, if set, will play an anim when the projectile reaches the turning point. If `Trajectory.Bombard.FreeFallOnTarget` is set to true, it'll be spawned above the target with the projectile together. If `Trajectory.Bombard.NoLaunch` is set to true, it'll be played at where the projectile falls, no matter if it's free fall or not. If more than one animation is listed, a random one is selected. - `Trajectory.Bombard.LeadTimeCalculate` controls whether the projectile need to calculate the lead time of the target when firing. Note that this will not affect the facing of the turret. - The following tags further customize the projectile's descending behaviors when `Trajectory.Bombard.FreeFallOnTarget` set to false. - `Trajectory.Bombard.OffsetCoord` controls the offsets of the target. Projectile will aim at this position to attack. It also supports `Inaccurate=yes` and `Trajectory.Bombard.LeadTimeCalculate=true` on this basis. - `Trajectory.Bombard.RotateCoord` controls whether to rotate the projectile's firing direction within the angle bisector of `Trajectory.Bombard.OffsetCoord` according to the weapon's `Burst`. Set to 0 to disable this function. - `Trajectory.Bombard.MirrorCoord` controls whether `Trajectory.Bombard.OffsetCoord` need to mirror the lateral value to adapt to the current burst index. At the same time, the rotation direction calculated by `Trajectory.Bombard.RotateCoord` will also be reversed, and the rotation angle between each adjacent projectile on each side will not change as a result. - `Trajectory.Bombard.UseDisperseBurst` controls whether the calculation of `Trajectory.Bombard.RotateCoord` is based on its superior's `Trajectory.Disperse.WeaponBurst` of the dispersed trajectory, rather than `Burst` of the weapon. If this value is not appropriate, it will result in unsatisfactory visual displays. - `Trajectory.Bombard.AxisOfRotation` controls the rotation axis when calculating `Trajectory.Bombard.RotateCoord`. The axis will rotates with the unit orientation or the vector that from target position to the source position. - `Trajectory.Bombard.SubjectToGround` controls whether the projectile should explode when it hits the ground. Note that this will not make AI search for suitable attack locations. In `rulesmd.ini`: ```ini [SOMEPROJECTILE] ; Projectile Trajectory=Bombard ; Trajectory type Trajectory.Bombard.Height=0.0 ; double Trajectory.Bombard.FallPercent=1.0 ; double Trajectory.Bombard.FallPercentShift=0.0 ; double Trajectory.Bombard.FallScatter.Max=0.0 ; floating point value Trajectory.Bombard.FallScatter.Min=0.0 ; floating point value Trajectory.Bombard.FallScatter.Linear=false ; boolean Trajectory.Bombard.FreeFallOnTarget=true ; boolean Trajectory.Bombard.NoLaunch=false ; boolean Trajectory.Bombard.FallSpeed=0.0 ; double Trajectory.Bombard.DetonationDistance=0.4 ; floating point value Trajectory.Bombard.DetonationHeight=-1 ; integer Trajectory.Bombard.EarlyDetonation=false ; boolean Trajectory.Bombard.TargetSnapDistance=0.5 ; floating point value Trajectory.Bombard.TurningPointAnims= ; list of Animation Trajectory.Bombard.LeadTimeCalculate=false ; boolean Trajectory.Bombard.OffsetCoord=0,0,0 ; integer - Forward,Lateral,Height Trajectory.Bombard.RotateCoord=0 ; floating point value Trajectory.Bombard.MirrorCoord=true ; boolean Trajectory.Bombard.UseDisperseBurst=false ; boolean Trajectory.Bombard.AxisOfRotation=0,0,1 ; integer - Forward,Lateral,Height Trajectory.Bombard.SubjectToGround=false ; boolean ``` If all values are set to default, it'll perform as the old Bombard Trajectory. **NOTE:** Both the old and new Bombard trajectories might trigger a fatal error when firing a Voxel=true projectile (EIP: 007564B4), which is unresolved yet. Avoid using it for now, and if someone could make it work I'll be really grateful. --------- Co-authored-by: CrimRecya <335958461@qq.com>
This is a feature split from #1261 .
It may have similarities with other parts.
Trajectory.Straight.DetonationDistancecontrols the maximum distance in cells from intended target (checked at start of each game frame, before the projectile moves) at which the projectile will be forced to detonate. Set to 0 to disable forced detonation (note that this can cause the projectile to overshoot the target). IfTrajectory.Straight.ApplyRangeModifiersis set to true, any applicable weapon range modifiers from the firer are applied here as well. By settingTrajectory.Straight.PassThrough=true, it refers to the distance that projectile should travel from itself when it above 0, and the distance that projectile should move behind the target when it below 0 (use the absolute value).Trajectory.Straight.TargetSnapDistancecontrols the maximum distance in cells from intended target the projectile can be at moment of detonation to make the projectile 'snap' on the intended target. Set to 0 to disable snapping.Trajectory.Straight.PassThroughenables special case logic where the projectile does not detonate in contact with the target but instead travels up to a distance defined byTrajectory.Straight.DetonationDistance. Note that the firing angle of the projectile is adjusted with this in mind, making it fire straight ahead if the target is on same elevation.Trajectory.Straight.PassDetonateenables extra detonations when the projectile is traveling.Trajectory.Straight.PassDetonateWarheaddefined the warhead detonated byTrajectory.Straight.PassDetonate, andTrajectory.Straight.PassDetonateDamagedefined the damage caused byTrajectory.Straight.PassDetonateWarhead.Trajectory.Straight.PassDetonateDelaycontrols the delay for detonating the warhead defined byTrajectory.Straight.Warhead.Trajectory.Straight.PassDetonateInitialDelaycontrols the initial delay for detonating the warhead defined byTrajectory.Straight.Warhead.Trajectory.Straight.PassDetonateLocalcontrols whetherTrajectory.Straight.PassDetonateWarheadand weapon'sWarheadare always detonate at ground level. It will also no longer restrict vertical velocity of the projectile when usingTrajectory.Straight.ConfineAtHeight.Trajectory.Straight.LeadTimeCalculatecontrols whether the projectile need to calculate the lead time of the target when firing. Note that this will not affect the facing of the turret.Trajectory.Straight.OffsetCoordcontrols the offsets of the target. Projectile will aim at this position to attack. It also supportsInaccurate=yesandTrajectory.Straight.LeadTimeCalculate=trueon this basis.Trajectory.Straight.RotateCoordcontrols whether to rotate the projectile's firing direction within the angle bisector ofTrajectory.Straight.OffsetCoordaccording to the weapon'sBurst. Set to 0 to disable this function.Trajectory.Straight.MirrorCoordcontrols whetherTrajectory.Straight.OffsetCoordneed to mirror the lateral value to adapt to the current burst index. At the same time, the rotation direction calculated byTrajectory.Straight.RotateCoordwill also be reversed, and the rotation angle between each adjacent projectile on each side will not change as a result.Trajectory.Straight.UseDisperseBurstcontrols whether the calculation ofTrajectory.Straight.RotateCoordis based on its superior'sTrajectory.Disperse.WeaponBurstof the dispersed trajectory, rather thanBurstof the weapon. If this value is not appropriate, it will result in unsatisfactory visual displays.Trajectory.Straight.AxisOfRotationcontrols the rotation axis when calculatingTrajectory.Straight.RotateCoord. The axis will rotates with the unit orientation or the vector that from target position to the source position.Trajectory.Straight.ProximityImpactcontrols the initial proximity fuse times. When there are enough remaining times and the projectile approaches another valid target, it will detonate a warhead defined byTrajectory.Straight.Warheadon it. If the times is about to run out, it will also detonate itself at its location. This function can be cancelled by setting to 0. A negative integer means unlimited times. By the way, you can use the weapon'sWarheadwith low versus only to aim at the target, and use theTrajectory.Straight.ProximityWarheadto causing actual harm.Trajectory.Straight.ProximityWarheaddefined the warhead detonated byTrajectory.Straight.ProximityImpact, andTrajectory.Straight.ProximityDamagedefined the damage caused byTrajectory.Straight.ProximityWarhead.Trajectory.Straight.ProximityRadiuscontrols the range of proximity fuse. It can NOT be set as a negative integer.Trajectory.Straight.ProximityDirectcontrols whether let the target receive damage instead of detonating the warhead.Trajectory.Straight.ProximityAlliescontrols whether allies will also trigger the proximity fuse.Trajectory.Straight.ProximityFlightcontrols whether to count units in the air.Trajectory.Straight.ThroughVehiclescontrols whether the projectile will not be obstructed by vehicles or aircrafts on the ground. When it is obstructed, it will be directly detonated at its location. If it still haveTrajectory.Straight.ProximityImpacttimes, it will also detonate aTrajectory.Straight.ProximityImpactat the location of the obstacle.Trajectory.Straight.ThroughBuildingcontrols whether the projectile will not be obstructed by buildings. When it is obstructed, it will be directly detonated at its location. If it still haveTrajectory.Straight.ProximityImpacttimes, it will also detonate aTrajectory.Straight.ProximityImpactat the location of the obstacle.Trajectory.Straight.EdgeAttenuationcontrols the edge attenuation ratio of projectile damage, includesTrajectory.Straight.Damage. Can NOT be set to a negative integer.Trajectory.Straight.SubjectToGroundcontrols whether the projectile should explode when it hits the ground. Note that this will not make AI search for suitable attack locations.Trajectory.Straight.ConfineAtHeightcontrols the height above ground that projectile will try to travel as it can. It can not move down from the cliff by settingSubjectToCliffs=yes. It can be cancelled by setting as a non positive integer. It will be forcibly cancelled by settingTrajectory.Speedabove 256.In
rulesmd.ini: