private void UpdateElectrocution(Wire wire) { var allCut = AllWiresCut(wire.Owner); var activePulse = false; if (WiresSystem.TryGetData(wire.Owner, PowerWireActionKey.Pulsed, out bool pulsed)) { activePulse = pulsed; } // if this is actively pulsed, // and there's not already an electrification cancel occurring, // we need to start that timer immediately if (!WiresSystem.HasData(wire.Owner, PowerWireActionKey.ElectrifiedCancel) && activePulse && IsPowered(wire.Owner) && !allCut) { WiresSystem.StartWireAction(wire.Owner, _pulseTimeout, PowerWireActionKey.ElectrifiedCancel, new TimedWireEvent(AwaitElectrifiedCancel, wire)); } else { if (!activePulse && allCut || AllWiresMended(wire.Owner)) { SetElectrified(wire.Owner, false); } } }
// This should add a wire into the entity's state, whether it be // in WiresComponent or ApcPowerReceiverComponent. public override bool AddWire(Wire wire, int count) { if (!WiresSystem.HasData(wire.Owner, PowerWireActionKey.CutWires)) { WiresSystem.SetData(wire.Owner, PowerWireActionKey.CutWires, 0); } if (count == 1) { WiresSystem.SetData(wire.Owner, PowerWireActionKey.MainWire, wire.Id); } WiresSystem.SetData(wire.Owner, PowerWireActionKey.WireCount, count); return(true); }