Skip to content

Commit 7ecab6c

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into origin/ae-attach-discard-by-health-3
# Conflicts: # docs/Whats-New.md
2 parents 3a25891 + c8c2554 commit 7ecab6c

19 files changed

+3567
-3067
lines changed

CREDITS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ This page lists all the individual contributions to the project by their author.
354354
- Fix `Hospital=yes` building can't kick out infantry after loading a save
355355
- `Edit/Clear Hate-Value` Trigger Action
356356
- `Set Force Enemy` Trigger Action
357-
- Fixed the issue where computer players did not search for new enemies after defeating them or forming alliances with them
357+
- Fix the issue where computer players did not search for new enemies after defeating them or forming alliances with them
358358
- **NetsuNegi**:
359359
- Forbidding parallel AI queues by type
360360
- Jumpjet crash speed fix when crashing onto building
@@ -385,7 +385,7 @@ This page lists all the individual contributions to the project by their author.
385385
- Customize airstrike targets
386386
- Separate the AirstrikeClass pointer between the attacker/aircraft and the target to avoid erroneous overwriting issues
387387
- Fix the bug that buildings will always be tinted as airstrike owner
388-
- Fix the bug that 'AllowAirstrike=no' cannot completely prevent air strikes from being launched against it
388+
- Fix the bug that `AllowAirstrike=no` cannot completely prevent air strikes from being launched against it
389389
- **Apollo** - Translucent SHP drawing patches
390390
- **ststl**:
391391
- Customizable `ShowTimer` priority of superweapons

docs/Fixed-or-Improved-Logics.md

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,15 @@ This page describes all ingame logics that are fixed or improved in Phobos witho
213213
- Fixed an issue that units on the slope tilted at an excessive angle.
214214
- Fixed an issue that impassable invisible barrier generated by the behavior of infantry continuously entering vehicles.
215215
- Fixed an issue that teleport units board transport vehicles on the bridge will create an impassable invisible barrier, which may cause the game to freeze or even crash.
216-
- Fixed an issue that MCV will self-destruct when using trigger 107 to teleport.
217216
- Fixed an issue that moving MCV with Teleport locomotion will cause reconnection error.
218217
- Fixed wrong shadow when a vehicle has hover locomotor and is being lifted by `IsLocomotor=yes` warhead.
219218
- Fixed the bug that a unit can overlap with `Teleport` units after it's been damaged by a fallen unit lifted by `IsLocomotor=yes` warheads.
220219
- Fixed an issue that game crashes (EIP:7FB178) when infantry are about to enter an occupiable building that has been removed and is not real dead.
221220
- Fixed an issue that game crashes when spawnee has been removed and is not real dead.
222221
- Separated the AirstrikeClass pointer between the attacker/aircraft and the target to avoid erroneous overwriting issues.
223222
- Fixed the bug that buildings will always be tinted as airstrike owner.
224-
- Fixed the bug that 'AllowAirstrike=no' cannot completely prevent air strikes from being launched against it.
223+
- Fixed the bug that `AllowAirstrike=no` cannot completely prevent air strikes from being launched against it.
225224
- Fixed the issue where computer players did not search for new enemies after defeating them or forming alliances with them.
226-
- Fixed an issue that spawned `Strafe` aircraft on aircraft carriers may not be able to return normally if aircraft carriers moved a short distance when the aircraft is landing.
227225

228226
## Fixes / interactions with other extensions
229227

@@ -703,6 +701,22 @@ BallisticScatter.Max= ; floating point value, distance in cells
703701

704702
## Technos
705703

704+
### Airstrike target eligibility
705+
706+
- By default whether or not a building can be targeted by airstrikes depends on value of `CanC4`, which also affects other things. This can now be changed independently by setting `AllowAirstrike`. If not set, defaults to value of `CanC4`.
707+
- For non building situations, the default value is true.
708+
- Now it is possible to designate air strikes against non building targets.
709+
- The airstrike aircraft will now aim at the target itself rather than the cell beneath its feet.
710+
711+
In `rulesmd.ini`:
712+
```ini
713+
[SOMETECHNO] ; TechnoType
714+
AllowAirstrike= ; boolean
715+
716+
[SOMEWARHEAD] ; WarheadType
717+
AirstrikeTargets=building ; List of Affected Target Enumeration (none|infantry|units|buildings|all)
718+
```
719+
706720
### Alternate FLH customizations
707721

708722
- `AlternateFLH.OnTurret` can be used to customize whether or not `AlternateFLHN` used for `OpenTopped` transport firing coordinates, multiple mind control link offsets etc. is calculated relative to the unit's turret if available or body.
@@ -717,8 +731,8 @@ AlternateFLH.OnTurret=true ; boolean
717731

718732
- It is now possible to set a global cap for the effects of `InfantryGainSelfHeal` and `UnitsGainSelfHeal` by setting `InfantryGainSelfHealCap` & `UnitsGainSelfHealCap` under `[General]`, respectively.
719733
- Whether or not `MultiplayPassive=true` houses benefit from these effects can be controlled via `GainSelfHealAllowMultiplayPassive`.
720-
- It is also possible to change the pip frames displayed from `pips.shp` individually for infantry, units and buildings by setting the frames for infantry & unit self-healing on `Pips.SelfHeal.Infantry/Units/Buildings` under `[AudioVisual]`, respectively.
721-
- `Pips.SelfHeal.Infantry/Units/Buildings.Offset` can be used to customize the pixel offsets for the displayed pips, individually for infantry, units and buildings.
734+
- It is also possible to change the pip frames displayed from `pips.shp` individually for infantry, units and buildings by setting the frames for infantry & unit self-healing on `Pips.SelfHeal.(Infantry/Units/Buildings)` under `[AudioVisual]`, respectively.
735+
- `Pips.SelfHeal.(Infantry/Units/Buildings).Offset` can be used to customize the pixel offsets for the displayed pips, individually for infantry, units and buildings.
722736
- Whether or not a TechnoType benefits from effects of `InfantryGainSelfHeal` or `UnitsGainSelfHeal` buildings or neither can now be controlled by setting `SelfHealGainType`.
723737
- If `SelfHealGainType` is not set, InfantryTypes and VehicleTypes with `Organic` set to true gain self-healing from `InfantryGainSelfHeal`, other VehicleTypes from `UnitsGainSelfHeal` and AircraftTypes & BuildingTypes never gain self-healing.
724738

@@ -744,9 +758,9 @@ SelfHealGainType= ; Self-Heal Gain Type Enumeration (nohea
744758
### Chrono sparkle animation customization & improvements
745759

746760
- It is now possible to customize the frame delay between instances of `[General] -> ChronoSparkle1` animations created on objects being warped by setting `[General] -> ChronoSparkleDisplayDelay`.
747-
- By default on buildings with `MaxOccupants` higher than 0, chrono sparkle animation would be shown at each of the `MuzzleFlashX` coordinates. This behaviour is now customizable, and supports `MuzzleFlashX` indices higher than 10.
761+
- By default on buildings with `MaxNumberOccupants` higher than 0, chrono sparkle animation would be shown at each of the `MuzzleFlashX` coordinates. This behaviour is now customizable, and supports `MuzzleFlashX` indices higher than 10.
748762
- `[General] -> ChronoSparkleBuildingDisplayPositions` can be set to show the sparkle animation on the building (`building`), muzzle flash coordinates of current occupants (`occupants`), muzzle flash coordinates of all occupant slots (`occupantslots`) or any combination of these.
749-
- If `occupants` or `occupantslots` is listed without `building`, a single chrono sparkle animation is still displayed on building if it doesn't have any occupants or it has `MaxOccupants` value less than 1, respectively.
763+
- If `occupants` or `occupantslots` is listed without `building`, a single chrono sparkle animation is still displayed on building if it doesn't have any occupants or it has `MaxNumberOccupants` value less than 1, respectively.
750764
- The chrono sparkle animation that is displayed on building itself is also now displayed at the center of it rather than at center of its topmost cell.
751765

752766
In `rulesmd.ini`:
@@ -840,22 +854,6 @@ In `artmd.ini`:
840854
Image= ; name of the file that will be used as image, without extension
841855
```
842856

843-
### Airstrike target eligibility
844-
845-
- By default whether or not a building can be targeted by airstrikes depends on value of `CanC4`, which also affects other things. This can now be changed independently by setting `AllowAirstrike`. If not set, defaults to value of `CanC4`.
846-
- For non building situations, the default value is true.
847-
- Now it is possible to designate air strikes against non building targets.
848-
- The airstrike aircraft will now aim at the target itself rather than the cell beneath its feet.
849-
850-
In `rulesmd.ini`:
851-
```ini
852-
[SOMETECHNO]
853-
AllowAirstrike= ; boolean
854-
855-
[SOMEWARHEAD]
856-
AirstrikeTargets=building ; List of Affected Target Enumeration (none|infantry|units|buildings|all)
857-
```
858-
859857
### Customizable veterancy insignias
860858

861859
- You can now customize veterancy insignia of TechnoTypes.

docs/New-or-Enhanced-Logics.md

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ This page describes all the engine features that are either new and introduced b
5050
- `AuxWeapon.Retarget.AroundFirer` determines whether the original target or the firer will be the center of the retargeting. `AuxWeapon.Retarget.Range` determines the radius of the retargeting, default to the auxiliary weapon's `Range` if the center is the firer, and 0 if the center is the original target.
5151
- `AuxWeapon.Retarget.Accuracy` defines the probability that the auxiliary weapon is fired to the original target.
5252
- `FeedbackWeapon` is fired at the firer.
53-
- `FireInTransport` setting of the feedback weapon is respected to determine if it can be fired when the original weapon is fired from inside `OpenTopped=true` transport. If feedback weapon is fired, it is fired on the transport. `OpenToppedDamageMultiplier` is not applied on feedback weapons.
5453
- `Tint.Color` & `Tint.Intensity` can be used to set a color tint effect and additive lighting increase/decrease on the object the effect is attached to, respectively.
5554
- `Tint.VisibleToHouses` can be used to control which houses can see the tint effect.
5655
- `FirepowerMultiplier`, `ArmorMultiplier`, `SpeedMultiplier` and `ROFMultiplier` can be used to modify the object's firepower, armor strength, movement speed and weapon reload rate, respectively.
@@ -80,7 +79,7 @@ This page describes all the engine features that are either new and introduced b
8079
- `AttachEffect.InitialDelays` can be used to set the delays before first creating the effects on TechnoType. Defaults to 0 (immediately). Delay matching the position in `AttachTypes` is used for that type, or the last listed delay if not available.
8180
- `AttachEffect.RecreationDelays` is used to determine if the effect can be recreated if it is removed completely (e.g `AttachEffect.RemoveTypes`), and if yes, how long this takes. Defaults to -1, meaning no recreation. Delay matching the position in `AttachTypes` is used for that type, or the last listed delay if not available.
8281
- Note that neither `InitialDelays` or `RecreationDelays` count down if the effect cannot currently be active due to `DiscardOn` condition.
83-
82+
8483
- AttachEffectTypes can be attached to objects via Warheads using `AttachEffect.AttachTypes`.
8584
- `AttachEffect.DurationOverrides` can be used to override the default durations. Duration matching the position in `AttachTypes` is used for that type, or the last listed duration if not available.
8685
- `AttachEffect.CumulativeRefreshAll` if set to true makes it so that trying to attach `Cumulative=true` effect to a target that already has `Cumulative.MaxCount` amount of effects will refresh duration of all attached effects of the same type instead of only the one with shortest remaining duration. If `AttachEffect.CumulativeRefreshAll.OnAttach` is also set to true, this refresh applies even if the target does not have maximum allowed amount of effects of same type.
@@ -137,10 +136,10 @@ AuxWeapon= ; WeaponType
137136
AuxWeapon.Offset=0,0,0 ; integer - Forward,Lateral,Height
138137
AuxWeapon.FireOnTurret=false ; boolean
139138
AuxWeapon.AllowZeroDamage=true ; boolean
140-
AuxWeapon.ApplyFirepowerMult=false ; boolean
139+
AuxWeapon.ApplyFirepowerMult=true ; boolean
141140
AuxWeapon.Retarget=false ; boolean
142-
AuxWeapon.Retarget.Range= ; floating point value
143-
AuxWeapon.Retarget.Accuracy= ; floating point value, percents or absolute (0.0-1.0)
141+
AuxWeapon.Retarget.Range= ; integer
142+
AuxWeapon.Retarget.Accuracy=1.0 ; floating point value, percents or absolute (0.0-1.0)
144143
AuxWeapon.Retarget.AroundFirer=false ; boolean
145144
FeedbackWeapon= ; WeaponType
146145
Tint.Color= ; integer - R,G,B
@@ -1176,6 +1175,22 @@ Detonate.AtFirer=false ; boolean
11761175

11771176
## Technos
11781177

1178+
### Aggressive attack move mission
1179+
1180+
- `AttackMove.Aggressive` allows your technos to attack the enemy's unarmed buildings more aggressively when in attack move mission (Ctrl+Shift).
1181+
- `AttackMove.UpdateTarget` allows your technos to automatically change and select a higher threat target when in attack move mission (Ctrl+Shift).
1182+
1183+
In `rulesmd.ini`:
1184+
```ini
1185+
[General]
1186+
AttackMove.Aggressive=false ; boolean
1187+
AttackMove.UpdateTarget=false ; boolean
1188+
1189+
[SOMETECHNO] ; TechnoType
1190+
AttackMove.Aggressive= ; boolean, default to [General] -> AttackMove.Aggressive
1191+
AttackMove.UpdateTarget= ; boolean, default to [General] -> AttackMove.UpdateTarget
1192+
```
1193+
11791194
### Aircraft spawner customizations
11801195

11811196
![image](_static/images/spawnrange-01.gif)
@@ -1766,67 +1781,36 @@ WarpInWeapon.UseDistanceAsDamage=false ; boolean
17661781
WarpOutWeapon= ; WeaponType
17671782
```
17681783

1769-
### Fast access vehicle
1770-
1771-
- Now you can let infantry or vehicle passengers quickly enter or leave the transport vehicles without queuing.
1772-
1773-
In `rulesmd.ini`:
1774-
```ini
1775-
[General]
1776-
NoQueueUpToEnter=false ; boolean
1777-
NoQueueUpToUnload=false ; boolean
1778-
1779-
[SOMEVEHICLE] ; VehicleType
1780-
NoQueueUpToEnter= ; boolean, default to [General] -> NoQueueUpToEnter
1781-
NoQueueUpToUnload= ; boolean, default to [General] -> NoQueueUpToUnload
1782-
```
1784+
## Terrain
17831785

1784-
### Aggressive attack move mission
1786+
### Destroy animation & sound
17851787

1786-
- `AttackMove.Aggressive` allows your technos to attack the enemy's unarmed buildings more aggressively when in attack move mission (Ctrl+Shift).
1787-
- `AttackMove.UpdateTarget` allows your technos to automatically change and select a higher threat target when in attack move mission (Ctrl+Shift).
1788+
- You can now specify a destroy animation and sound for a TerrainType that are played when it is destroyed.
17881789

17891790
In `rulesmd.ini`:
17901791
```ini
1791-
[General]
1792-
AttackMove.Aggressive=false ; boolean
1793-
AttackMove.UpdateTarget=false ; boolean
1794-
1795-
[SOMETECHNO]
1796-
AttackMove.Aggressive= ; boolean, default to [General] -> AttackMove.Aggressive
1797-
AttackMove.UpdateTarget= ; boolean, default to [General] -> AttackMove.UpdateTarget
1792+
[SOMETERRAINTYPE] ; TerrainType
1793+
DestroyAnim= ; AnimationType
1794+
DestroySound= ; Sound entry
17981795
```
17991796

1797+
## Vehicles
1798+
18001799
### Amphibious access vehicle
18011800

1802-
- Now you can let amphibious infantry or vehicle passengers enter or leave amphibious transport vehicles on water surface. Defaults to `[General]->AmphibiousEnter` or `[General]->AmphibiousUnload`.
1801+
- Now you can let amphibious infantry or vehicle passengers enter or leave amphibious transport vehicles on water surface.
18031802

18041803
In `rulesmd.ini`:
18051804
```ini
18061805
[General]
18071806
AmphibiousEnter=false ; boolean
18081807
AmphibiousUnload=false ; boolean
18091808

1810-
[SOMEVEHICLE] ; VehicleType
1811-
AmphibiousEnter= ; boolean
1812-
AmphibiousUnload= ; boolean
1813-
```
1814-
1815-
## Terrain
1816-
1817-
### Destroy animation & sound
1818-
1819-
- You can now specify a destroy animation and sound for a TerrainType that are played when it is destroyed.
1820-
1821-
In `rulesmd.ini`:
1822-
```ini
1823-
[SOMETERRAINTYPE] ; TerrainType
1824-
DestroyAnim= ; AnimationType
1825-
DestroySound= ; Sound entry
1809+
[SOMEVEHICLE] ; VehicleType, transport
1810+
AmphibiousEnter= ; boolean, default to [General] -> AmphibiousEnter
1811+
AmphibiousUnload= ; boolean, default to [General] -> AmphibiousUnload
18261812
```
18271813

1828-
## Vehicles
1829-
18301814
### Damaged unit image changes
18311815

18321816
- When a unit is damaged (health points percentage is lower than `[AudioVisual] -> ConditionYellow` percentage), it now may use different image set by `Image.ConditionYellow` VehicleType.
@@ -1846,6 +1830,21 @@ WaterImage.ConditionRed= ; VehicleType entry
18461830
Note that the VehicleTypes had to be defined under [VehicleTypes] and use same image type (SHP/VXL) for vanilla/damaged states.
18471831
```
18481832

1833+
### Fast access vehicle
1834+
1835+
- Now you can let infantry or vehicle passengers quickly enter or leave the transport vehicles without queuing.
1836+
1837+
In `rulesmd.ini`:
1838+
```ini
1839+
[General]
1840+
NoQueueUpToEnter=false ; boolean
1841+
NoQueueUpToUnload=false ; boolean
1842+
1843+
[SOMEVEHICLE] ; VehicleType, transport
1844+
NoQueueUpToEnter= ; boolean, default to [General] -> NoQueueUpToEnter
1845+
NoQueueUpToUnload= ; boolean, default to [General] -> NoQueueUpToUnload
1846+
```
1847+
18491848
### Jumpjet Tilts While Moving
18501849

18511850
![image](_static/images/jumpjet-tilt.gif)
@@ -2019,7 +2018,7 @@ DamageEnemiesMultiplier= ; floating point value
20192018

20202019
### Detonate Warhead on all objects on map
20212020

2022-
- Setting `DetonateOnAllMapObjects` to true allows a Warhead that is detonated by a projectile (for an example, this excludes things like animation `Warhead` and Ares' GenericWarhead superweapon but includes `Crit.Warhead` and animation `Weapon`) and consequently any `Airburst/ShrapnelWeapon` that may follow to detonate on each object currently alive and existing on the map regardless of its actual target, with optional filters. Note that this is done immediately prior Warhead detonation so after `PreImpactAnim` *(Ares feature)* has been displayed.
2021+
- Setting `DetonateOnAllMapObjects` to true allows a Warhead that is detonated by a projectile (for an example, this excludes things like animation `Warhead` and Ares' GenericWarhead superweapon but includes `Crit.Warhead` and animation `Weapon`) and consequently any `AirburstWeapon/ShrapnelWeapon` that may follow to detonate on each object currently alive and existing on the map regardless of its actual target, with optional filters. Note that this is done immediately prior Warhead detonation so after `PreImpactAnim` *(Ares feature)* has been displayed.
20232022
- `DetonateOnAllMapObjects.Full` customizes whether or not the Warhead is detonated fully on the targets (as part of a dummy weapon) or simply deals area damage and applies Phobos' Warhead effects.
20242023
- `DetonateOnAllMapObjects.AffectTargets` is used to filter which types of targets (TechnoTypes) are considered valid and must be set to a valid value other than `none` for this feature to work. Only `none`, `all`, `aircraft`, `buildings`, `infantry` and `units` are valid values. This is set to `none` by default as inclusion of all object types can be performance-heavy.
20252024
- `DetonateOnAllMapObjects.AffectHouses` is used to filter which houses targets can belong to be considered valid and must be set to a valid value other than `none` for this feature to work. Only applicable if the house that fired the projectile is known. This is set to `none` by default as inclusion of all houses can be performance-heavy.
@@ -2283,10 +2282,10 @@ AuxWeapon= ; WeaponType
22832282
AuxWeapon.Offset=0,0,0 ; integer - Forward,Lateral,Height
22842283
AuxWeapon.FireOnTurret=false ; boolean
22852284
AuxWeapon.AllowZeroDamage=true ; boolean
2286-
AuxWeapon.ApplyFirepowerMult=false ; boolean
2285+
AuxWeapon.ApplyFirepowerMult=true ; boolean
22872286
AuxWeapon.Retarget=false ; boolean
2288-
AuxWeapon.Retarget.Range= ; floating point value
2289-
AuxWeapon.Retarget.Accuracy= ; floating point value, percents or absolute (0.0-1.0)
2287+
AuxWeapon.Retarget.Range= ; integer
2288+
AuxWeapon.Retarget.Accuracy=1.0 ; floating point value, percents or absolute (0.0-1.0)
22902289
AuxWeapon.Retarget.AroundFirer=false ; boolean
22912290
FeedbackWeapon= ; WeaponType
22922291
```

0 commit comments

Comments
 (0)