public void Fire() { if (fireCounter == -1) { if (FireSalvoMS == 0) { Guns.Items.ForEach(gun => { gun.Enabled = true; TerminalPropertiesHelper.SetValue(gun, "Shoot", true); }); if (WCAPI != null) { WCGuns.Items.ForEach(gun => { gun.Enabled = true; WCAPI.ToggleWeaponFire(gun, true, true); }); } } else { NextSalvoFire = Context.LocalTime; } } fireCounter = 3; if (fireCounter > 0 && Context.LocalTime >= NextSalvoFire) { NextSalvoFire += ScriptTime.FromMilliseconds(FireSalvoMS); var gun = Guns.GetAndAdvance(); if (gun != null) { gun.Enabled = true; TerminalPropertiesHelper.SetValue(gun, "Shoot", true); } if (WCAPI != null) { var wcGun = WCGuns.GetAndAdvance(); if (wcGun != null) { wcGun.Enabled = true; WCAPI.ToggleWeaponFire(wcGun, true, true); } } } }
public void Update(int ticks = 1) { salvoTickCounter -= ticks; fireTicks -= ticks; //statusBuilder.Clear(); if (Weapons.Items.Count == 0) { return; } //statusBuilder.AppendLine("TGTS: " + targets.Count.ToString()); while (Weapons.Items[0].Closed) { Weapons.Items.RemoveAtFast(0); if (Weapons.Items.Count == 0) { return; } } if (fireTicks > 0) { if (salvoTicks <= 0) { foreach (var weapon in Weapons.Items) { if (WCAPI != null) { Weapons.Items.ForEach(gun => { WCAPI.ToggleWeaponFire(gun, true, true); }); } else { Weapons.Items.ForEach(gun => { TerminalPropertiesHelper.SetValue(gun, "Shoot", true); }); } } } else { if (salvoTickCounter < 0) { if (WCAPI != null) { var gun = Weapons.GetAndAdvance(); WCAPI.ToggleWeaponFire(gun, true, true); } else { var gun = Weapons.GetAndAdvance(); TerminalPropertiesHelper.SetValue(gun, "Shoot", true); } salvoTickCounter = salvoTicks; } } } else { foreach (var weapon in Weapons.Items) { if (WCAPI != null) { Weapons.Items.ForEach(gun => { WCAPI.ToggleWeaponFire(gun, false, true); }); } else { Weapons.Items.ForEach(gun => { TerminalPropertiesHelper.SetValue(gun, "Shoot", false); }); } } } }