package Devices
using RTDB

AccessPoint : Device
{
	string deviceType = "masterAccessPoint";
}

Computer : Device
{
	string deviceType = "masterComputer";
	statModifiers += 
	[
	];
}

Fuse : Device
{
}

FuseBox : Device
{
	string deviceType = "masterFuseBox";
}

SmartHouse : Device
{
	statModifiers += 
	[
	];
}

SmartWindow : Device
{
	statModifiers += 
	[
	];
}

SimpleSwitch : Device
{
	string deviceType = "masterSimpleSwitch";
}

SecurityAlarm : Device
{
	statModifiers += 
	[
	];
}

SecurityArea : Device
{
	statModifiers += 
	[
	];
}

SecuritySystem : Device
{
	statModifiers += 
	[
	];
}

LcdScreen : Device
{
}

SecurityTurret : Device
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Additive";
			id = "puppet_powerLevelToHealth";
			column = "puppet_powerLevelToHealth_base";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.BonusHealth";
			modifierType = "Additive";
			id = "puppet_powerLevelToHealth";
			column = "puppet_subdermalarmor_health_medium";
			refObject = "Root";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.Health";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.BonusHealth";
			opSymbol = "*";
			value = 1.f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 0.83333f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Armor";
			modifierType = "Additive";
			id = "puppet_powerLevelToHealth";
			column = "puppet_subdermalarmor_armor_medium";
			refObject = "Root";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.PoisonImmunity";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanPlayerPiercePoisonImmunity";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PoisonImmunity";
			modifierType = "Additive";
			refStat = "BaseStats.CanPlayerPiercePoisonImmunity";
			opSymbol = "*";
			value = -1f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Accuracy";
			modifierType = "Additive";
			id = "puppet_accuracy";
			column = "elite_puppet_accuracy";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.Accuracy";
			modifierType = "AdditiveMultiplier";
			value = 0.2;
		} : ConstantStatModifier, 
		"AttackModifier.TurretMinTBH", "AttackModifier.TurretMinLineOfSight", {
			statType = "BaseStats.DPS";
			modifierType = "AdditiveMultiplier";
			value = -0.4;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "AdditiveMultiplier";
			value = -0.24;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "turret_quality_to_dps_mult";
			refStat = "BaseStats.Quality";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "puppet_intrinsic_levelToDPS";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "difficulty_to_turret_dps_mult";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.Detection";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		"BaseStats.DeviceAudioStimRangeMultiplier", "BaseStats.DeviceVisualStimRangeMultiplier", {
			statType = "BaseStats.SmartGunTimeToLockWeakSpotComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockHeadComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockChestComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockLegComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockBreachComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockVehicleComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BlindImmunity";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
}

SecurityTurret_Weak : SecurityTurret
{
	statModifiers += 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 0.2;
		} : ConstantStatModifier
	];
}

SecurityTurret_Fragile : SecurityTurret
{
	statModifiers += 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 0.5;
		} : ConstantStatModifier
	];
}

SecurityTurret_AlmostIndestructible : SecurityTurret
{
	statModifiers += 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 20;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Armor";
			modifierType = "Additive";
			value = 200;
		} : ConstantStatModifier
	];
}

SecurityTurret_Prevention : SecurityTurret
{
	statModifiers += 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 20;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Armor";
			modifierType = "Additive";
			value = 200;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CycleTime";
			modifierType = "Additive";
			value = -0.05;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 2;
		} : ConstantStatModifier
	];
}

SecurityTurretMaxLevel : SecurityTurret
{
	statModifiers = 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 50.f;
		} : ConstantStatModifier
	];
}

SecurityTurret_Smasher : SecurityTurret
{
	statModifiers += 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 0.1f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Multiplier";
			value = 0.1f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 0.2f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Accuracy";
			modifierType = "Multiplier";
			value = 0.25f;
		} : ConstantStatModifier
	];
}

SecurityTurret_Q305_Ambush : SecurityTurret
{
	statModifiers += 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Accuracy";
			modifierType = "Multiplier";
			value = 0.3;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PhysicalDamageAdditiveMultiplier";
			modifierType = "Additive";
			value = -0.8f;
		} : ConstantStatModifier
	];
}

SecurityTurret_Q306_Chopper : SecurityTurret
{
	statModifiers = 
	[
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Additive";
			refStat = "BaseStats.DPS";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Accuracy";
			modifierType = "Additive";
			id = "puppet_accuracy";
			column = "elite_puppet_accuracy";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.Accuracy";
			modifierType = "Multiplier";
			value = 2.5;
		} : ConstantStatModifier, 
		"AttackModifier.ChopperMinTBH", "AttackModifier.TurretMinLineOfSight", {
			statType = "BaseStats.DPS";
			modifierType = "AdditiveMultiplier";
			value = -0.4;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "AdditiveMultiplier";
			value = -0.24;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 0.275;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "turret_quality_to_dps_mult";
			refStat = "BaseStats.Quality";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "puppet_intrinsic_levelToDPS";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.Detection";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		"BaseStats.DeviceAudioStimRangeMultiplier", "BaseStats.DeviceVisualStimRangeMultiplier"
	];
}

SniperNest : SecurityTurret_AlmostIndestructible
{
}

SurveillanceCamera : Device
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Detection";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		"BaseStats.DeviceAudioStimRangeMultiplier", "BaseStats.DeviceVisualStimRangeMultiplier", {
			statType = "BaseStats.SmartGunTimeToLockWeakSpotComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockHeadComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockChestComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockLegComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockBreachComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartGunTimeToLockVehicleComponentMultiplier";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
}

ArcadeMachine : Device
{
}

NcartTimetable : Device
{
}

SurveillanceSystem : Device
{
}

Terminal : Device
{
	string deviceType = "masterTerminal";
}

RoadBlock : Device
{
	statModifiers += 
	[
	];
}

MetalDetector : Device
{
	statModifiers += 
	[
	];
}

PersonnelSystem : Device
{
	statModifiers += 
	[
	];
}

TrafficZebra : Device
{
	statModifiers += 
	[
	];
}

TrafficLight : Device
{
}

CrossingLight : Device
{
}

ElectricLight : Device
{
}

InteractiveAd : Device
{
}

VendingMachine : Device
{
}

WeaponVendingMachine : Device
{
}

Activator : Device
{
	string deviceType = "masterActivator";
}

TechieConsole : Device
{
	string deviceType = "masterTechieConsole";
}

VentilationArea : Device
{
}

VentilationEffector : Device
{
}

Fan : Device
{
}

Fridge : Device
{
}

Freezer : Device
{
}

MovableWallScreen : Device
{
}

Radio : Device
{
}

ConfessionBooth : Device
{
	statModifiers += 
	[
	];
}

TV : TVBase
{
	fk< ChannelData >[] channels = 
	[
		"Channels.CH1", "Channels.CH2", "Channels.CH3", "Channels.CH4", "Channels.CH5"
	];
}

ArasakaTV : TVBase
{
	fk< ChannelData >[] channels = 
	[
		"Channels.CH6"
	];
}

ElevatorTV : TVBase
{
	fk< ChannelData >[] channels = 
	[
		"Channels.CH7"
	];
}

Screen : TVBase
{
}

WallScreen : Device
{
}

WindowBlinders : Device
{
}

Window : Device
{
}

HoloDevice : Device
{
}

HoloTable : Device
{
}

LiftDevice : Device
{
	float UI_PlayerScanningTime = 1.0;
}

ElevatorFloorTerminal : Device
{
}

Door : Device
{
}

GenericDevice : Device
{
}

ActivatedDeviceTrap : Device
{
}

StackOfCrates : ActivatedDeviceTrap
{
}

CarLift : ActivatedDeviceTrap
{
}

CatwalkTrap : ActivatedDeviceTrap
{
}

ActivatedDeviceTransformAnim : Device
{
}

ExplosiveDevice : Device
{
}

AntennaBaseExplosive : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 2f;
		} : ConstantStatModifier
	];
}

Boiler : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

DrugProductionStation : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

Server : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 4f;
		} : ConstantStatModifier
	];
}

[ EP1 ]
ServerQ305 : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Health";
			modifierType = "Additive";
			value = 500f;
		} : ConstantStatModifier
	];
}

TankMedium : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 2f;
		} : ConstantStatModifier
	];
}

TankSmall : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

FireExtinguisher : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

FuelDispenser : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 3f;
		} : ConstantStatModifier
	];
}

FuelTank : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 4f;
		} : ConstantStatModifier
	];
}

Furnace : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 2f;
		} : ConstantStatModifier
	];
}

GasBottle : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 2f;
		} : ConstantStatModifier
	];
}

GasPipe : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 2f;
		} : ConstantStatModifier
	];
}

HoloSphere : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

LaserTripMine : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

Microwave : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

MinesCrate : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 2f;
		} : ConstantStatModifier
	];
}

ProximityMine : ExplosiveDevice
{
	statModifiers += 
	[
		{
			statType = "BaseStats.PenetrationHealth";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

LaserDetector : Device
{
}

DisposalDevice : Device
{
}

Wardrobe : DisposalDevice
{
}

BrokenCar : DisposalDevice
{
}

DisposalDumpster : DisposalDevice
{
}

MovableDevice : Device
{
}

MovableDumpster : MovableDevice
{
}

MovableRack : MovableDevice
{
}

C4 : Device
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		"BaseStats.DeviceAudioStimRangeMultiplier", "BaseStats.DeviceVisualStimRangeMultiplier"
	];
}

Billboard : Device
{
}

BaseDistractor : Device
{
}

CoffeeMachine : BaseDistractor
{
}

Aquarium : BaseDistractor
{
}

PlateAntenna : BaseDistractor
{
}

WheelBalancer : BaseDistractor
{
}

FerrisWheel : BaseDistractor
{
}

WaterSprinkler : BaseDistractor
{
}

ACVentilation : BaseDistractor
{
}

Crane : BaseDistractor
{
}

IndustrialArm : BaseDistractor
{
}

Grill : BaseDistractor
{
}

ControlPanelDistractor : BaseDistractor
{
}

IndustrialCleaningMachine : BaseDistractor
{
}

ChestPressMachine : Device
{
}

DisplayGlass : Device
{
}

Hatch : Device
{
}

CementContainer : Device
{
}

IceMachine : Device
{
}

Intercom : Device
{
}

Jukebox : Device
{
}

RetractableAd : Device
{
}

SmokeMachine : Device
{
}

Speaker : Device
{
}

MetroLights : Device
{
}

BraindanceHeadset : Device
{
	statModifiers += 
	[
	];
}

NetrunnerChair : Device
{
	statModifiers += 
	[
	];
}

Shutters : Device
{
}

Ladder : Device
{
}

SlidingLadder : Device
{
}

DataTerm : Device
{
}

PachinkoMachine : Device
{
	statModifiers += 
	[
	];
}

WeakFence : Device
{
}

Forklift : Device
{
}

AOE_Area : Device
{
}

AOE_Effector : Device
{
}

Antenna_AP : AccessPoint
{
}

Router : AccessPoint
{
	statModifiers += 
	[
	];
}

WeaponLocker : Device
{
	statModifiers += 
	[
	];
}

BodyScanner : Device
{
	statModifiers += 
	[
	];
}

SecurityHolotape : Device
{
	statModifiers += 
	[
	];
}

ControlPanel : Device
{
}

DropPoint : Device
{
}

