Files
PlanetFleet/Assets/Scripts/GameObjects/Units/unitData.lua
T
devZoGok 3fda274bb1 aligning different units to hilly surfaces
code refactoring
bugfix for units moving by terrain along Z axis
code cleanup
2025-10-21 20:33:37 +03:00

1144 lines
29 KiB
Lua

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},
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,
horizontalNode = {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},
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,
horizontalNode = {name = 'turret', rotationSpeed = .05, maxFireAngle = .1},
verticalNode = {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},
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},
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,
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},
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},
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,
horizontalNode = {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,
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}
},
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,
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,
horizontalNode = {name = 'TurretBody', rotationSpeed = .05, maxFireAngle = .1},
--verticalNode = {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,
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,
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,
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,
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},
},
}