Commit Graph

55 Commits

Author SHA1 Message Date
reaperrr
a784081973 Add ReloadingCondition to Armament
Allows to grant condition while reloading.
2018-06-03 12:23:54 +01:00
Arular101
8a60918841 Update copyright notice year to 2018 2018-01-17 00:47:34 +01:00
reaperrr
cefe3d2c8f When Armament has multiple LocalOffsets but weapon has Burst: 1, cycle through offsets 2017-12-29 15:28:34 +00:00
reaperrr
8b7a71685c Remove AmmoPool-awareness from Armament 2017-11-12 19:48:06 +00:00
reaperrr
6f95080aa4 Add ReloadAmmoPool and adapt AmmoPool
Refactored and simplified Rearm activity.
Uses local Reload now.

Removed AmmoPool.SelfReloads.
2017-11-12 19:48:06 +00:00
reaperrr
834a40b18d Refactor BurstDelay to BurstDelays
Allowing to set custom per-burst delays.
2017-08-20 20:48:25 +02:00
reaperrr
8ee742d66a Split MuzzleOffset and MuzzleOrientation calcs to protected methods
To make overriding easier for downstream traits inheriting Armament.
2017-07-29 22:14:58 +02:00
reaperrr
26be2a3e99 Split Burst updating to separate method 2017-07-29 22:14:58 +02:00
reaperrr
e847f49256 Split barrel firing to separate method 2017-07-29 22:14:58 +02:00
reaperrr
514bd12885 Merge some Armament CanFire checks 2017-07-29 22:14:58 +02:00
reaperrr
bdfa8a361b Split Barrel can-fire checks to separate CanFire method 2017-07-29 22:14:58 +02:00
reaperrr
07edf2f7c6 Reset burst counter if ReloadDelay has passed since last shot
This fixes the following issues:
- units like mammoth tanks sometimes at first only fired 1 shot on new encounter because they only depleted 1 burst before previous target was killed
- weapons that use strafing logic would not reset the offset multiplier after passing the target once, leading to wrong offsets on following attacks
2017-07-13 19:12:16 +02:00
reaperrr
afa8d3522c Add strafing support to weapons 2017-07-13 19:12:16 +02:00
reaperrr
edffaa4987 Introduce Weapon.TargetActorCenter and adapt projectiles
This also fixes issues with attackers that don't have their own Attack
trait.
2017-06-24 11:24:17 +01:00
reaperrr
8e9f20cf4b Cache traits implementing INotifyAttack 2017-06-22 04:13:47 -05:00
reaperrr
779218f381 Cache traits implementing modifiers 2017-06-22 04:13:47 -05:00
reaperrr
243ed3d76a Cache traits implementing INotifyBurstComplete 2017-06-22 04:13:47 -05:00
reaperrr
da7433a95f Add plumbing for targeting of target center instead of closest targetable position
Note: Projectiles that can track their target need minor additional changes, but for InstantHit (which already implemented support for this) and unguided projectiles (Bullet, GravityBomb) this commit is already sufficient.
2017-06-15 01:32:37 +02:00
reaperrr
7acc6dacbc Fix armaments/projectiles to aim at closest Target.Positions
Instead of CenterPosition.
TargetablePositions were already used for targeting/attack decisions, but not armaments/projectiles.
2017-06-05 14:22:47 +02:00
reaperrr
b8c251cf41 Add StartBurstReport to WeaponInfo
The FS Juggernaut firing sound already contains 3 shots, so without this, players would hear a total of 9(!) shots per salvo.
2017-05-14 11:49:38 +01:00
Andre Mohren
d68bc48ba5 Added ReloadSound and ReloadSoundDelay to weapon declarations. 2017-04-30 22:43:32 +02:00
Taryn Hill
43317e0f5d Update copyright notice year to 2017 2016-12-31 23:46:13 -06:00
Paul Chote
268ed016ab Rename UpgradableTrait to ConditionalTrait. 2016-12-23 23:28:34 +00:00
Paul Chote
9ddfdc45b3 Introduce SoundType enum. 2016-12-23 11:34:23 +00:00
Paul Chote
3f0b33992c Rewrite UpgradeManager implementation to suit conditions. 2016-11-20 13:55:47 +00:00
Paul Chote
23f4ae5027 Replace UpgradeMinEnabledLevel checks with an EnabledByDefault shim. 2016-11-19 17:19:25 +00:00
reaperrr
3fca63e9a2 Make Armament implement interfaces explicitly 2016-10-30 19:17:45 +01:00
reaperrr
19c3e7c9e3 Make Armament elements as overridable as possible
To allow downstream mods to ship customised Armament-derivatives.
2016-08-20 15:06:18 +02:00
reaperrr
75c49620d1 Introduce INotifyAttack.PreparingAttack
And use it to allow triggering attack animations/overlays at a different point
than the actual weapon firing.
2016-07-02 16:02:00 +02:00
reaperrr
4f55b088eb Check if weapon without self-reloading is out of ammo when deciding validity
This should prevent attacking helicopters (or other actors) staying at the range to target of a weapon that is out of ammo and needs manual reloading at a RearmBuilding or via upgrades.
2016-06-23 14:47:41 +02:00
teees
524bc3d45f Added INotifyBurstComplete trait interface to notify when a full salvo has been fired 2016-06-04 22:33:28 +02:00
teees
3c4d9b4c84 Fix barrel recoil being set immediately, not when actually firing 2016-04-15 14:06:21 +02:00
RoosterDragon
163688fc39 Prevent turrets from firing until they are aligned with the target. 2016-03-12 20:42:10 +00:00
Paul Chote
e71225496b Clarify GPL version. 2016-02-21 16:30:48 +00:00
Paul Chote
b396965fd9 Update licence header year. 2016-02-21 16:27:31 +00:00
Taryn Hill
4f798ede3c Add an explicit YamlException to ArmamentInfo
Throw a more descriptive exception when the current weapon ruleset
doesn't contain an entry for the referenced weapon.
2016-02-13 09:15:16 -06:00
Paul Chote
fe60f5a77f Introduce Turreted.WorldOrientation. 2016-01-27 21:32:21 +00:00
reaperrr
2d55bbdedf Cache trait look-ups and range modifiers directly in Armament
Avoid the performance impact of accessing Lazy.Value by caching them
when the actor is created and accessing the references directly when needed.
2015-12-14 04:34:58 +01:00
Paul Chote
03693a06eb Add CurrentSource parameter to ProjectileArgs. 2015-12-01 07:47:39 +02:00
Matija Hustić
d94c645046 First step in the attack mechanism's refactor.
Enabled firing multiple armaments at a target simultaneously.
Each armament defines own cursor for targeting.
The force attack modifier influences armament choice for target.
Autotargeting modified to handle firing multiple armaments simultaneously.
As a consequence, healers (medics) no longer require separate Heal
activity and AttackMedic and AutoHeal traits.
2015-10-06 01:46:55 +02:00
atlimit8
74a9dc6793 Added IRangeMultiplier 2015-09-24 16:37:43 -05:00
Paul Chote
ef55d646f7 Unstatic the Sound class. 2015-09-20 14:11:06 +01:00
atlimit8
45112cfa76 Remove redundant IBodyOrientation[Info] & replace with BodyOrientation[Info] 2015-09-15 22:57:08 -05:00
Matthias Mailänder
118782a85e check palette references 2015-08-17 21:36:45 +02:00
atlimit8
1bcc07ce69 Add property requirements to safe traits 2015-07-12 12:44:30 -05:00
Matthias Mailänder
413baf9d8b rename WDist.Range to WDist.Length 2015-07-09 10:55:38 +02:00
Matthias Mailänder
7447e0bf93 rename WRange to WDist 2015-07-09 10:55:38 +02:00
atlimit8
a9908bffb4 UpgradeManager after IUpgradables 2015-06-28 10:24:00 -05:00
RoosterDragon
fb0cab7481 Cache results of TraitsImplementing calls.
If a class is caching the TraitsImplementing enumerable, instead cache the results of enumerating it to an array. The avoids having to enumerate the sequence each time it is needed.
2015-04-25 20:42:27 +01:00
reaperrr
38d5163062 Refactors LimitedAmmo to AmmoPool.
Removes Reloads trait.

This enables adding multiple AmmoPools via @ differentiators and
Name which adds the possibility to assign each armament to a specific
ammo pool.

Furthermore, this moves all Reloads functionality onto AmmoPool.

Now a combination of all three is possible on a single actor: no limited
ammo, limited ammo that can reload on its own, and limited ammo which
needs to be reloaded at a rearm actor.

Additionally moves RearmSound from Minelayer to AmmoPool.
2015-03-26 23:21:01 +01:00