class SmokeMachineController extends BasicDistractionDeviceController
{

	public const override function GetPS() : SmokeMachineControllerPS
	{
		return ( ( SmokeMachineControllerPS )( GetBasePS() ) );
	}

}

class SmokeMachineControllerPS extends BasicDistractionDeviceControllerPS
{
	default m_deviceName = "LocKey#146";
	default m_tweakDBRecord = T"Devices.SmokeMachine";
	default m_tweakDBDescriptionRecord = T"device_descriptions.SmokeMachine";

	protected event OnInstantiated()
	{
		super.OnInstantiated();
	}

	protected override function Initialize()
	{
		super.Initialize();
	}

	protected const override function CanCreateAnyQuickHackActions() : Bool
	{
		return true;
	}

	protected override function GetQuickHackActions( out actions : array< DeviceAction >, const context : ref< GetActionsContext > )
	{
		var currentAction : ScriptableDeviceAction;
		currentAction = ActionOverloadDevice();
		currentAction.SetObjectActionID( T"DeviceAction.OverloadClassHack" );
		actions.PushBack( currentAction );
		super.GetQuickHackActions( actions, context );
	}

	protected override function ActionOverloadDevice() : OverloadDevice
	{
		var action : OverloadDevice;
		action = new OverloadDevice;
		action.SetUp( this );
		action.SetProperties();
		action.AddDeviceName( m_deviceName );
		action.CreateInteraction( , "ObscureVision" );
		action.SetDurationValue( 5.0 );
		return action;
	}

	protected override function OnOverloadDevice( evt : OverloadDevice ) : EntityNotificationType
	{
		if( evt.IsStarted() )
		{
			ExecutePSActionWithDelay( evt, this, evt.GetDurationValue() );
			ForceDisableDevice();
		}
		UseNotifier( evt );
		return EntityNotificationType.SendThisEventToEntity;
	}

}

