OrderType = { HALT = -1, ATTACK = 0, BUILD = 1, MOVE = 2, GARRISON = 3, EJECT = 4, PATROL = 5, LAUNCH = 6, SUPPLY = 7, LOAD = 8, UNLOAD = 9, HACK = 10, FREEZE = 11 } UnitId = { WAR_MECH = 0, TANK = 1, ARTILLERY = 2, ENGINEER = 3, SCOUT_TRANSPORT = 4, HOVER_TRANSPORT = 5, RESOURCE_ROVER = 6, TACTICAL_CRUISER = 7, DEFENSIVE_CRUISER = 8, CHEAP_CRUISER = 9, TRANSPORT_CRUISER = 10, HEAVY_CARRIER = 11, CHAMPION_CARRIER = 12, MISSILE_SUBMARINE = 13, STEALTH_SUBMARINE = 14, ICEBREAKER = 15, FREEZER = 16, EMP_BOAT = 17, LAND_FACTORY = 18, NAVAL_FACTORY = 19, TRADE_CENTER = 20, LAB = 21, POINT_DEFENSE = 22, EXTRACTOR = 23, REFINERY = 24, FORT = 25, ICE_SHEET = 26 } WeaponClass = {FREEZE = 1} UnitClass = { WAR_MECH = 0, TANK = 1, ARTILLERY = 2, ENGINEER = 3, TRANSPORT = 4, RESOURCE_ROVER = 5, CRUISER = 6, CARRIER = 7, SUBMARINE = 8, ICEBREAKER = 9, FREEZER = 10, EMP_BOAT = 11, LAND_FACTORY = 12, NAVAL_FACTORY = 13, TRADE_CENTER = 14, LAB = 15, POINT_DEFENSE = 16, EXTRACTOR = 17, REFINERY = 18, FORT = 19, ICE_SHEET = 20 } UnitType = {UNDERWATER = 0, SEA_LEVEL = 1, HOVER = 2, LAND = 3, AIR = 4} ArmorType = {CAST = 0, COMBINED = 1, MECHANIC = 2, SHELL = 3, STEEL = 4} vfxPrefix = "Models/VFX/" gameObjPrefix = "Models/GameObjects/" vehiclePrefix = gameObjPrefix .. "Units/Vehicles/" structurePrefix = gameObjPrefix .. "Units/Structures/" explosionVfx = { vfx = true, duration = 1, offset = 100, mesh = { numParticles = 1, texture = PATH .. 'Textures/Explosion/explosion07.png', lowLife = 3, highLife = 3, size = {x = 10, y = 10}, } } explosionSfx = { vfx = false, offset = 100, path = PATH .. 'Sounds/SFX/Explosions/explosion00.ogg', duration = 2500 } units = { { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 100, maxRange = 14, damage = 50, fireFx = { { vfx = true, duration = 50, mesh = { path = PATH .. vfxPrefix .. 'muzzleFlash.xml', color = {x = 1, y = 1, z = 0, a = 1}, }, pos = {x = 0.428, y = 5.484, z = 3.08}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 500, path = PATH .. 'Sounds/Units/WarMechs/fire.ogg' }, }, unitHitFx = { { vfx = false, duration = 500, path = PATH .. 'Sounds/Units/WarMechs/unitHit.ogg' }, }, landHitFx = { { vfx = false, duration = 500, path = PATH .. 'Sounds/Units/WarMechs/landHit.ogg' }, }, waterHitFx = { { vfx = false, duration = 500, path = PATH .. 'Sounds/Units/WarMechs/waterHit.ogg' }, }, } }, unitClass = UnitClass.WAR_MECH, unitType = UnitType.LAND, armor = {ArmorType.MECHANIC}, maxUnevenness = .5, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 6, y = 9.22, z = 2.42}, hitboxOffset = {x = 0, y = 4.5, z = 0}, lineOfSight = 25, name = 'War mech', basePath = PATH .. vehiclePrefix .. 'WarMechs/', meshPath = 'warMech.xml', albedoPath = 'mech.jpg', colorNodes = {'WarRobotTemplate.001'}, selectionSfx = PATH .. 'Sounds/Units/WarMechs/selection.ogg', speed = .3, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 1, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 1000, damage = 200, maxRange = 50, nodes = {{name = 'Turret', rotationSpeed = .05, maxFireAngle = .1}}, projectile = {id = ProjectileId.HE_SHELL, parent = 'Turret', pos = {x = 0.06, y = 5.82, z = 11.4}, rot = {w = 1, x = 0, y = 0, z = 0}}, fireFx = { { vfx = false, duration = 300, path = PATH .. 'Sounds/Units/Tanks/attack.ogg', }, { vfx = true, duration = 50, mesh = { path = PATH .. vfxPrefix .. 'muzzleFlash.xml', color = {x = 1, y = 1, z = 0, a = 1}, }, parent = 'CannonBarrel', pos = {x = 0.06, y = 5.82, z = 11.4}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 } }, --landHitFx = {explosionVfx, explosionSfx}, --unitHitFx = {explosionVfx, explosionSfx} } }, unitClass = UnitClass.TANK, unitType = UnitType.LAND, armor = {ArmorType.STEEL}, maxUnevenness = .5, isVehicle = true, alignToSurface = true, health = 500, buildTime = 1000, cost = 500, size = {x = 9.57, y = 7, z = 20.1}, hitboxOffset = {x = 0, y = 3, z = 1.06}, lineOfSight = 25, name = 'Tank', basePath = PATH .. vehiclePrefix .. 'Tanks/', meshPath = 'tank2.xml', albedoPath = 'tank.jpg', colorNodes = {'Antenna_S', 'Antenna_L', 'Hatch'}, selectionSfx = PATH .. 'Sounds/Units/Tanks/selection.ogg', speed = .4, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 2, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 2000, damage = 5000, maxRange = 70, nodes = { {name = 'turret', rotationSpeed = .05, maxFireAngle = .1}, {name = 'tubes', rotationSpeed = .05, maxFireAngle = .1} }, projectile = {id = ProjectileId.MISSILE, parent = 'tubes', pos = {x = 0.95, y = 2.16, z = 4.11}, rot = {w = 1, x = 0, y = 0, z = 0}}, fireFx = { { vfx = true, duration = 50, parent = 'tubes', pos = {x = 0.95, y = 2.16, z = 4.11}, rot = {w = 1, x = 0, y = 0, z = 0}, mesh = { path = PATH .. vfxPrefix .. 'muzzleFlash.xml', color = {x = 1, y = 1, z = 0, a = 1}, }, --scale = .5 }, { vfx = false, duration = 2500, path = PATH .. 'Sounds/Units/Submarines/missile.ogg', } }, } }, unitClass = UnitClass.ARTILLERY, unitType = UnitType.LAND, armor = {ArmorType.MECHANIC}, maxUnevenness = .5, alignToSurface = true, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 6.8, y = 6.8, z = 15.2}, hitboxOffset = {x = 0, y = 1, z = 0}, lineOfSight = 30, name = 'Artillery', basePath = PATH .. vehiclePrefix .. 'Artillery/', meshPath = 'artillery.xml', albedoPath = 'artillery.jpg', colorNodes = {'turret'}, selectionSfx = PATH .. 'Sounds/Units/Tanks/selection.ogg', speed = .3, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 2, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.HACK, rateOfFire = 100, maxRange = 150, damage = 0, } }, buildableUnits = { {id = UnitId.LAND_FACTORY, buildable = true, trigger = 76}, {id = UnitId.NAVAL_FACTORY, buildable = true, trigger = 78}, {id = UnitId.TRADE_CENTER, buildable = true, trigger = 77}, {id = UnitId.LAB, buildable = true, trigger = 84}, {id = UnitId.POINT_DEFENSE, buildable = true, trigger = 80}, {id = UnitId.FORT, buildable = true, trigger = 70}, {id = UnitId.EXTRACTOR, buildable = true, trigger = 69}, {id = UnitId.REFINERY, buildable = true, trigger = 82}, }, abilityButtons = {{buttonType = ButtonType.ORDER, name = 'Hack', orderType = OrderType.HACK}}, unitClass = UnitClass.ENGINEER, unitType = UnitType.HOVER, armor = {ArmorType.MECHANIC}, maxUnevenness = .5, isVehicle = true, health = 500, hackRange = 200, buildTime = 1000, hackTime = 1000, cost = 500, size = {x = 1, y = 8, z = 1}, hitboxOffset = {x = 0, y = 0, z = 0}, lineOfSight = 200, name = 'Engineer', basePath = PATH .. vehiclePrefix .. 'Engineers/', albedoPath = 'engineer.jpg', colorNodes = {'Cube.008'}, meshPath = 'engineer2.xml', selectionSfx = PATH .. 'Sounds/Units/Engineers/selection.ogg', speed = .5, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.TRANSPORT, unitType = UnitType.HOVER, maxUnevenness = .5, alignToSurface = true, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 21, y = 17.5, z = 56.6}, garrisonCapacity = {2, 2, 2}, hitboxOffset = {x = 0, y = 0, z = 0}, lineOfSight = 5, colorNodes = {'TransportTemplateOBJ.001'}, albedoPath = 'transport.jpg', name = 'Scout transport', basePath = PATH .. vehiclePrefix .. 'Transports/', meshPath = 'scoutTransport.xml', selectionSfx = PATH .. 'Sounds/Units/Transports/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = {{orderType = OrderType.ATTACK, rateOfFire = 2000, fireSfx = PATH .. 'Sounds/Units/Tanks/attack.ogg', damage = 100, maxRange = 25}}, unitClass = UnitClass.TRANSPORT, unitType = UnitType.HOVER, armor = {ArmorType.MECHANIC}, maxUnevenness = .5, alignToSurface = true, isVehicle = true, health = 500, buildTime = 1000, cost = 500, garrisonCapacity = {2, 2, 2}, size = {x = 17.5, y = 16.5, z = 63.5}, hitboxOffset = {x = 0, y = 0, z = 0}, lineOfSight = 5, colorNodes = {'Cube.002'}, name = 'Hover transport', basePath = PATH .. vehiclePrefix .. 'Transports/', meshPath = 'hoverTransport.xml', albedoPath = 'transport.jpg', selectionSfx = PATH .. 'Sounds/Units/Transports/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = {}, abilityButtons = { {buttonType = ButtonType.ORDER, name = 'Supply', orderType = OrderType.SUPPLY}, {buttonType = ButtonType.ORDER, name = 'Load', orderType = OrderType.LOAD}, {buttonType = ButtonType.ORDER, name = 'Unload', orderType = OrderType.UNLOAD}, }, unitClass = UnitClass.RESOURCE_ROVER, unitType = UnitType.HOVER, armor = {ArmorType.CAST}, maxUnevenness = .5, alignToSurface = true, capacity = 3000, loadRate = 1, loadSpeed = 5, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 3.29, y = 2.23, z = 9.5}, hitboxOffset = {x = 0, y = .37, z = 0}, lineOfSight = 5, name = 'Cargo ship', colorNodes = {'CargoshipTemplateOBJ.001'}, basePath = PATH .. vehiclePrefix .. 'Cargoships/', meshPath = 'cargoship.xml', albedoPath = 'cargoship.jpg', selectionSfx = PATH .. 'Sounds/Units/Cargoships/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 200, damage = 10, maxRange = 50, fireFx = { { vfx = true, duration = 50, mesh = { size = {x = .16, y = .16}, color = {x = 1, y = 0, z = 0, a = 1}, }, pos = {x = 0., y = 2.8, z = -.1}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 50, path = PATH .. 'Sounds/Units/Cruisers/fire.ogg', } }, hitFx = {} } }, unitClass = UnitClass.CRUISER, unitType = UnitType.SEA_LEVEL, armor = {ArmorType.STEEL}, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 18.8, y = 17.5, z = 52.6}, hitboxOffset = {x = 0, y = 1.9, z = 0}, lineOfSight = 5, colorNodes = {'tacticalCruiser.001'}, name = 'Tactical cruiser', basePath = PATH .. vehiclePrefix .. 'Cruisers/', meshPath = 'tacticalCruiser.xml', albedoPath = 'cruiser.jpg', selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 200, fireFx = { { vfx = true, duration = 50, mesh = { size = {x = .16, y = .16}, color = {x = 1, y = 0, z = 0, a = 1}, }, pos = {x = 0., y = 2.8, z = -.1}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 50, path = PATH .. 'Sounds/Units/Cruisers/fire.ogg', } }, damage = 300, maxRange = 15 } }, unitClass = UnitClass.CRUISER, unitType = UnitType.SEA_LEVEL, armor = {ArmorType.CAST}, isVehicle = true, health = 500, buildTime = 1000, cost = 500, garrisonCapacity = {2, 2, 2}, size = {x = 17, y = 17, z = 45.1}, hitboxOffset = {x = 0, y = 3.78, z = 0}, lineOfSight = 5, colorNodes = {'defensiveCruiser.001'}, name = 'Defensive cruiser', basePath = PATH .. vehiclePrefix .. 'Cruisers/', meshPath = 'defensiveCruiser.xml', albedoPath = 'cruiser.jpg', selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 200, damage = 300, maxRange = 15, fireFx = { { vfx = true, duration = 50, mesh = { size = {x = .16, y = .16}, color = {x = 1, y = 0, z = 0, a = 1}, }, pos = {x = 0., y = 2.8, z = -.1}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 50, path = PATH .. 'Sounds/Units/Cruisers/fire.ogg', } }, } }, unitClass = UnitClass.CRUISER, unitType = UnitType.SEA_LEVEL, armor = {ArmorType.CAST}, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 21.1, y = 18.1, z = 28.6}, hitboxOffset = {x = 0, y = 4.19, z = 0}, lineOfSight = 5, colorNodes = {'cheapCruiser.001'}, name = 'Cheap cruiser', basePath = PATH .. vehiclePrefix .. 'Cruisers/', meshPath = 'cheapCruiser.xml', albedoPath = 'cruiser.jpg', selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 200, fireSfx = PATH .. 'Sounds/Units/Cruisers/fire.ogg', damage = 300, maxRange = 15, fireFx = { { vfx = true, duration = 50, mesh = { size = {x = .16, y = .16}, color = {x = 1, y = 0, z = 0, a = 1}, }, pos = {x = 0., y = 2.8, z = -.1}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 50, path = PATH .. 'Sounds/Units/Cruisers/fire.ogg', } } } }, unitClass = UnitClass.CRUISER, unitType = UnitType.SEA_LEVEL, armor = {ArmorType.STEEL, ArmorType.COMBINED}, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 17.9, y = 14.9, z = 45.6}, hitboxOffset = {x = 0, y = 2.98, z = 1.21}, lineOfSight = 5, colorNodes = {'transportCruiser.001'}, name = 'Transport cruiser', basePath = PATH .. vehiclePrefix .. 'Cruisers/', meshPath = 'transportCruiser.xml', albedoPath = 'cruiser.jpg', selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 100, damage = 80, maxRange = 100, fireFx = { { vfx = true, duration = 50, mesh = { size = {x = .16, y = .16}, color = {x = 1, y = 0, z = 0, a = 1}, }, pos = {x = 0., y = 2.8, z = -.1}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 50, path = PATH .. 'Sounds/Units/Cruisers/fire.ogg', } } } }, unitClass = UnitClass.CARRIER, unitType = UnitType.SEA_LEVEL, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 37.8, y = 16.7, z = 87}, hitboxOffset = {x = 0, y = 6.38, z = 0}, lineOfSight = 5, name = 'Heavy carrier', colorNodes = {'heavyCarrier.001'}, basePath = PATH .. vehiclePrefix .. 'Carriers/', meshPath = 'heavyCarrier.xml', albedoPath = 'carrier.jpg', selectionSfx = PATH .. 'Sounds/Units/Carriers/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 450, damage = 500, maxRange = 100, fireFx = { { vfx = true, duration = 50, mesh = { path = PATH .. vfxPrefix .. 'muzzleFlash.xml', color = {x = 1, y = 1, z = 0, a = 1}, }, pos = {x = 0, y = 3.17, z = -1.5}, rot = {w = 1, x = 0, y = 0, z = 0}, --scale = .5 }, { vfx = false, duration = 300, path = PATH .. 'Sounds/Units/Tanks/attack.ogg', } }, unitHitFx = {explosionVfx, explosionSfx}, waterHitFx = {explosionVfx, explosionSfx} }, { orderType = OrderType.LAUNCH, projectile = {id = ProjectileId.CRUISE_MISSILE, pos = {x = 0, y = 15, z = 0}, rot = {w = .707, x = -.707, y = 0, z = 0}}, rateOfFire = 500, maxRange = 30, fireFx = { { vfx = false, duration = 2500, path = PATH .. 'Sounds/Units/Submarines/missile.ogg', } }, } }, unitClass = UnitClass.CARRIER, unitType = UnitType.SEA_LEVEL, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 26, y = 21.1, z = 81.8}, hitboxOffset = {x = 0, y = 4.13, z = 0}, lineOfSight = 5, name = 'Champion carrier', colorNodes = {'Models4.001'}, basePath = PATH .. vehiclePrefix .. 'Carriers/', meshPath = 'championCarrier.xml', albedoPath = 'carrier.jpg', selectionSfx = PATH .. 'Sounds/Units/Carriers/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 1000, fireFx = { { vfx = false, duration = 2500, path = PATH .. 'Sounds/Units/Submarines/fire.ogg', } }, damage = 200, maxRange = 20, projectile = {id = ProjectileId.TORPEDO, pos = {x = 0, y = -.27, z = 4.6}, rot = {w = 1, x = 0, y = 0, z = 0}} }, { orderType = OrderType.LAUNCH, rateOfFire = 500, maxRange = 30, fireFx = { { vfx = false, duration = 2500, path = PATH .. 'Sounds/Units/Submarines/missile.ogg', } }, projectile = {id = ProjectileId.CRUISE_MISSILE, pos = {x = 0, y = 15, z = -3.5}, rot = {w = .707, x = -.707, y = 0, z = 0}} }, }, unitClass = UnitClass.SUBMARINE, unitType = UnitType.UNDERWATER, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 14.1, y = 29.2, z = 59.5}, hitboxOffset = {x = 0, y = 6.7, z = 0}, lineOfSight = 50, name = 'Missile submarine', basePath = PATH .. vehiclePrefix .. 'Submarines/', meshPath = 'missileSubmarine.xml', albedoPath = 'submarine.jpg', colorNodes = {'missileSubmarine.001'}, selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, projectile = {id = ProjectileId.TORPEDO, pos = {x = 0, y = -.27, z = 4.6}, rot = {w = 1, x = 0, y = 0, z = 0}}, damage = 200, maxRange = 20, rateOfFire = 500, fireFx = { { vfx = false, duration = 2500, path = PATH .. 'Sounds/Units/Submarines/fire.ogg', } }, } }, unitClass = UnitClass.SUBMARINE, unitType = UnitType.UNDERWATER, isVehicle = true, health = 500, buildTime = 1000, cost = 500, hitboxOffset = {x = 0, y = 1.25, z = 0}, size = {x = 10.7, y = 15.4, z = 50}, lineOfSight = 5, name = 'Stealth submarine', colorNodes = {'stealthSubmarine.001'}, basePath = PATH .. vehiclePrefix .. 'Submarines/', meshPath = 'stealthSubmarine.xml', albedoPath = 'submarine.jpg', selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.ICEBREAKER, unitType = UnitType.SEA_LEVEL, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 12.6, y = 8.5, z = 32.8}, hitboxOffset = {x = 0, y = 2.07, z = .8}, lineOfSight = 25, name = 'Icebreaker', --colorNodes = {'stealthSubmarine.001'}, basePath = PATH .. vehiclePrefix .. 'Icebreakers/', meshPath = 'icebreaker.xml', albedoPath = 'icebreaker.jpg', selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { type = WeaponClass.FREEZE, orderType = OrderType.ATTACK, rateOfFire = 100, maxRange = 10, damage = 0, fireFx = { { vfx = false, duration = 500, path = PATH .. 'Sounds/SFX/Freezing/freeze.ogg' }, }, unitHitFx = {}, landHitFx = {}, waterHitFx = {}, } }, buildableUnits = {{id = UnitId.ICE_SHEET, buildable = true, trigger = 83}}, unitClass = UnitClass.FREEZER, unitType = UnitType.SEA_LEVEL, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 8.5, y = 6.3, z = 17.6}, hitboxOffset = {x = 0, y = 1.6, z = 0}, lineOfSight = 25, name = 'Freezer', --colorNodes = {'stealthSubmarine.001'}, basePath = PATH .. vehiclePrefix .. 'Freezers/', meshPath = 'freezer.xml', albedoPath = 'freezer.jpg', selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 1000, damage = 0, maxRange = 25, nodes = {{name = 'turret', rotationSpeed = .05, maxFireAngle = .1}}, projectile = {id = ProjectileId.EMP_SHELL, parent = 'turret', pos = {x = 0.06, y = 5.82, z = 11.4}, rot = {w = .998, x = -.066, y = 0, z = 0}}, fireFx = { { vfx = false, duration = 300, path = PATH .. 'Sounds/Units/Tanks/attack.ogg', }, }, } }, unitClass = UnitClass.EMP_BOAT, unitType = UnitType.SEA_LEVEL, isVehicle = true, health = 500, buildTime = 1000, cost = 500, size = {x = 4.75, y = 5.15, z = 19.55}, hitboxOffset = {x = 0, y = .18, z = .25}, lineOfSight = 25, name = 'EMP boat', --colorNodes = {'stealthSubmarine.001'}, basePath = PATH .. vehiclePrefix .. 'EMPShips/', meshPath = 'empShip.xml', albedoPath = 'empShip.jpg', selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg', speed = .1, destinationOffset = .1, anglePrecision = .1, maxTurnAngle = .1, garrisonCategory = 3, deathFx = {explosionVfx, explosionSfx}, }, { buildableUnits = { {id = UnitId.WAR_MECH, buildable = true, trigger = 87}, {id = UnitId.TANK, buildable = true, trigger = 84}, {id = UnitId.ARTILLERY, buildable = true, trigger = 65}, {id = UnitId.RESOURCE_ROVER, buildable = true, trigger = 82} }, unitClass = UnitClass.LAND_FACTORY, unitType = UnitType.LAND, maxUnevenness = .5, isVehicle = false, health = 500, buildTime = 1000, cost = 500, size = {x = 21.6, y = 11.9, z = 25.4}, hitboxOffset = {x = 0, y = 1.02, z = .95}, lineOfSight = 5, colorNodes = {'Cube.001'}, name = 'Land factory', albedoPath = 'factory.jpg', basePath = PATH .. structurePrefix .. 'LandFactories/', meshPath = 'landFactory.xml', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.NAVAL_FACTORY, unitType = UnitType.SEA_LEVEL, isVehicle = false, health = 500, buildTime = 1000, cost = 500, size = {x = 1, y = 1.15, z = 2}, hitboxOffset = {x = 0, y = 0, z = 0}, lineOfSight = 5, name = 'Naval factory', basePath = PATH .. structurePrefix .. 'NavalFactories/', meshPath = 'navalFactory.xml', albedoPath = 'factory.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.TRADE_CENTER, unitType = UnitType.LAND, abilityButtons = { {buttonType = ButtonType.BUY_REFINEDS, name = 'Buy ref', trigger = 73}, {buttonType = ButtonType.SELL_REFINEDS, name = 'Sell ref', trigger = 79}, {buttonType = ButtonType.BUY_RESEARCH, name = 'Buy rsch', trigger = 75}, {buttonType = ButtonType.SELL_RESEARCH, name = 'Sell rsch', trigger = 76} }, maxUnevenness = .5, isVehicle = false, health = 500, buildTime = 1000, cost = 500, size = {x = 8.53, y = 51.9, z = 8.53}, hitboxOffset = {x = 0, y = .97, z = 0}, lineOfSight = 5, colorNodes = {'Cube.001'}, name = 'Trade center', basePath = PATH .. structurePrefix .. 'TradeCenters/', meshPath = 'tradeCenter.xml', albedoPath = 'tradeCenter.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.LAB, unitType = UnitType.LAND, maxUnevenness = .5, abilityButtons = {{buttonType = ButtonType.ACTIVE_GAME_STATE, name = 'Tech tree', guiScreen = 'techTree.lua'}}, isVehicle = false, health = 500, buildTime = 1000, cost = 500, size = {x = 40, y = 26.2, z = 40}, hitboxOffset = {x = 0, y = 14, z = 0}, lineOfSight = 50, generationRate = 100, generationSpeed = 10, researchCost = 1, name = 'Lab', colorNodes = {'Cube.008'}, basePath = PATH .. structurePrefix .. 'Labs/', meshPath = 'lab2.xml', albedoPath = 'lab.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { weapons = { { orderType = OrderType.ATTACK, rateOfFire = 100, damage = 50, maxRange = 50, nodes = { {name = 'TurretBody', rotationSpeed = .05, maxFireAngle = .1}, {name = 'TurretArms', rotationSpeed = .05, maxFireAngle = .1} }, fireFx = { { vfx = true, duration = 50, mesh = { path = PATH .. vfxPrefix .. 'muzzleFlash.xml', color = {x = 1, y = 1, z = 0, a = 1}, }, pos = {x = 1.4, y = -.18, z = 5.4}, rot = {w = 1, x = 0, y = 0, z = 0}, parent = 'LeftBarrel' --scale = .5 }, { vfx = true, duration = 50, mesh = { path = PATH .. vfxPrefix .. 'muzzleFlash.xml', color = {x = 1, y = 1, z = 0, a = 1}, }, pos = {x = -1.4, y = -.18, z = 5.4}, rot = {w = 1, x = 0, y = 0, z = 0}, parent = 'RightBarrel' --scale = .5 }, { vfx = false, duration = 500, path = PATH .. 'Sounds/Units/WarMechs/fire.ogg', }, }, hitFx = {} } }, unitClass = UnitClass.POINT_DEFENSE, unitType = UnitType.LAND, maxUnevenness = .5, isVehicle = false, health = 500, buildTime = 1000, cost = 500, size = {x = 5, y = 8, z = 5}, hitboxOffset = {x = 0, y = 4, z = 0}, lineOfSight = 55, name = 'Point defense', colorNodes = {'Hoses', 'Hoses.001'}, turretNode = 'TurretBody', basePath = PATH .. structurePrefix .. 'PointDefenses/', meshPath = 'pointDefense2.xml', albedoPath = 'pointDefense.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.EXTRACTOR, unitType = UnitType.LAND, maxUnevenness = .5, isVehicle = false, health = 500, buildTime = 1000, drawRate = 1, drawSpeed = 5, cost = 500, colorNodes = {'Cube.001'}, hitboxOffset = {x = 0, y = 1, z = 0}, size = {x = 3.24, y = 3.38, z = 3.24}, lineOfSight = 5, name = 'Extractor', basePath = PATH .. structurePrefix .. 'Extractors/', meshPath = 'extractor.xml', albedoPath = 'extractor.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.REFINERY, unitType = UnitType.LAND, maxUnevenness = .5, isVehicle = false, health = 500, buildTime = 1000, cost = 500, colorNodes = {'Cube.001'}, size = {x = 15.1, y = 13.5, z = 25}, hitboxOffset = {x = 0, y = 1.05, z = 1.85}, lineOfSight = 5, name = 'Refinery', basePath = PATH .. structurePrefix .. 'Refineries/', meshPath = 'refinery.xml', albedoPath = 'refinery.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { buildableUnits = {{id = UnitId.ENGINEER, buildable = true, trigger = 69}}, unitClass = UnitClass.FORT, unitType = UnitType.LAND, maxUnevenness = .5, isVehicle = false, health = 1000, buildTime = 1000, cost = 1000, size = {x = 43.3, y = 50, z = 43.3}, hitboxOffset = {x = 0, y = .8, z = 0}, lineOfSight = 5, name = 'Fort', basePath = PATH .. structurePrefix .. 'Forts/', meshPath = 'fort2.xml', colorNodes = {'Cube.004'}, albedoPath = 'fort.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, { unitClass = UnitClass.ICE_SHEET, unitType = UnitType.SEA_LEVEL, isVehicle = false, health = 1000, size = {x = 7, y = 1.5, z = 7}, hitboxOffset = {x = 0, y = 0, z = 0}, lineOfSight = 5, name = 'Ice sheet', basePath = PATH .. structurePrefix .. 'IceSheets/', meshPath = 'iceSheet.xml', albedoPath = 'iceSheet.jpg', selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathFx = {explosionVfx, explosionSfx}, }, }