231 lines
8.0 KiB
Lua
231 lines
8.0 KiB
Lua
|
|
scales[WeaponType.SmartCannon] = {
|
|
{from = 0, to = 28, size = 1.0, usedSlots = 2},
|
|
{from = 29, to = 38, size = 2.0, usedSlots = 3},
|
|
{from = 39, to = 49, size = 3.0, usedSlots = 4},
|
|
--dummy for cooaxial, add 1 to size and level
|
|
{from = 50, to = 52, size = 4.0, usedSlots = 5},
|
|
}
|
|
|
|
scales[WeaponType.HeavyCannon] = {
|
|
{from = 0, to = 28, size = 3.0, usedSlots = 4},
|
|
{from = 29, to = 38, size = 4.0, usedSlots = 5},
|
|
{from = 39, to = 49, size = 5.0, usedSlots = 6},
|
|
--dummy for cooaxial, add 1 to size and level
|
|
{from = 50, to = 52, size = 5, usedSlots = 6},
|
|
}
|
|
|
|
scales[WeaponType.Diffuser] = {
|
|
{from = 0, to = 46, size = 1.0, usedSlots = 2},
|
|
{from = 47, to = 50, size = 2.0, usedSlots = 4},
|
|
--dummy for cooaxial, add 1 to size and level
|
|
{from = 51, to = 52, size = 3.0, usedSlots = 6},
|
|
}
|
|
|
|
scales[WeaponType.Hookgun] = {
|
|
{from = 0, to = 46, size = 1.0, usedSlots = 2},
|
|
{from = 47, to = 50, size = 2.0, usedSlots = 4},
|
|
--dummy for cooaxial, add 1 to size and level
|
|
{from = 51, to = 52, size = 3.0, usedSlots = 6},
|
|
}
|
|
|
|
if GameVersion() >= Version(0, 31, 0) then
|
|
possibleSpecialties[WeaponType.SmartCannon] = {
|
|
{specialty = Specialty.HighDamage, probability = 0.2},
|
|
{specialty = Specialty.HighFireRate, probability = 0.3},
|
|
{specialty = Specialty.HighRange, probability = 0.7},
|
|
-- {specialty = Specialty.HighHullDamage, probability = 0.5},
|
|
-- {specialty = Specialty.LessCoolingTime, probability = 0.4},
|
|
}
|
|
else
|
|
possibleSpecialties[WeaponType.SmartCannon] = {
|
|
Specialty.HighDamage,
|
|
Specialty.HighFireRate,
|
|
Specialty.HighRange,
|
|
Specialty.HighHullDamage,
|
|
Specialty.LessCoolingTime,
|
|
}
|
|
end
|
|
|
|
if GameVersion() >= Version(0, 31, 0) then
|
|
possibleSpecialties[WeaponType.HeavyCannon] = {
|
|
{specialty = Specialty.HighDamage, probability = 0.2},
|
|
{specialty = Specialty.HighRange, probability = 0.35},
|
|
{specialty = Specialty.HighFireRate, probability = 0.3},
|
|
-- {specialty = Specialty.HighHullDamage, probability = 0.2},
|
|
-- {specialty = Specialty.HighShieldDamage, probability = 0.2},
|
|
-- {specialty = Specialty.LessCoolingTime, probability = 0.2}
|
|
}
|
|
else
|
|
possibleSpecialties[WeaponType.HeavyCannon] = {
|
|
Specialty.HighDamage,
|
|
Specialty.HighFireRate,
|
|
Specialty.HighRange,
|
|
Specialty.HighHullDamage,
|
|
Specialty.HighShieldDamage,
|
|
Specialty.LessCoolingTime,
|
|
}
|
|
end
|
|
|
|
if GameVersion() >= Version(0, 31, 0) then
|
|
possibleSpecialties[WeaponType.Diffuser] = {
|
|
{specialty = Specialty.HighDamage, probability = 0.3},
|
|
{specialty = Specialty.HighRange, probability = 0.3},
|
|
-- {specialty = Specialty.FasterRechargeTime, probability = 0.6},
|
|
}
|
|
else
|
|
possibleSpecialties[WeaponType.Diffuser] = {
|
|
Specialty.HighDamage,
|
|
Specialty.HighRange,
|
|
Specialty.FasterRechargeTime,
|
|
}
|
|
end
|
|
|
|
if GameVersion() >= Version(0, 31, 0) then
|
|
possibleSpecialties[WeaponType.Hookgun] = {
|
|
{specialty = Specialty.HighDamage, probability = 0.3},
|
|
{specialty = Specialty.HighRange, probability = 0.3},
|
|
-- {specialty = Specialty.FasterRechargeTime, probability = 0.6},
|
|
}
|
|
else
|
|
possibleSpecialties[WeaponType.Hookgun] = {
|
|
Specialty.HighDamage,
|
|
Specialty.HighRange,
|
|
Specialty.FasterRechargeTime,
|
|
}
|
|
end
|
|
|
|
function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, rarity)
|
|
local result = TurretTemplate()
|
|
|
|
-- generate turret
|
|
local requiredCrew = TurretGenerator.dpsToRequiredCrew(dps)
|
|
local crew = Crew()
|
|
crew:add(requiredCrew, CrewMan(CrewProfessionType.Gunner))
|
|
result.crew = crew
|
|
|
|
-- generate weapons
|
|
local numWeapons = rand:getInt(1, 4)
|
|
|
|
local weapon = WeaponGenerator.generateSmartCannon(rand, dps, tech, material, rarity)
|
|
weapon.fireDelay = weapon.fireDelay * numWeapons
|
|
|
|
-- attach weapons to turret
|
|
TurretGenerator.attachWeapons(rand, result, weapon, numWeapons)
|
|
|
|
local shootingTime = 25 * rand:getFloat(0.8, 1.2)
|
|
local coolingTime = 15 * rand:getFloat(0.8, 1.2)
|
|
TurretGenerator.createStandardCooling(result, coolingTime, shootingTime)
|
|
|
|
TurretGenerator.scale(rand, result, WeaponType.SmartCannon, tech, 0.6)
|
|
TurretGenerator.addSpecialties(rand, result, WeaponType.SmartCannon)
|
|
|
|
result:updateStaticStats()
|
|
|
|
return result
|
|
end
|
|
|
|
generatorFunction[WeaponType.SmartCannon] = TurretGenerator.generateSmartCannonTurret
|
|
|
|
|
|
function TurretGenerator.generateHeavyCannonTurret(rand, dps, tech, material, rarity)
|
|
local result = TurretTemplate()
|
|
|
|
-- generate turret
|
|
local requiredCrew = TurretGenerator.dpsToRequiredCrew(dps)
|
|
local crew = Crew()
|
|
crew:add(requiredCrew*2, CrewMan(CrewProfessionType.Gunner))
|
|
crew:add(requiredCrew, CrewMan(CrewProfessionType.Repair))
|
|
result.crew = crew
|
|
|
|
-- generate weapons
|
|
local numWeapons = rand:getInt(1, 4)
|
|
|
|
local weapon = WeaponGenerator.generateHeavyCannon(rand, dps, tech, material, rarity)
|
|
weapon.fireDelay = weapon.fireDelay * numWeapons
|
|
|
|
-- attach weapons to turret
|
|
TurretGenerator.attachWeapons(rand, result, weapon, numWeapons)
|
|
|
|
local shootingTime = 25 * rand:getFloat(0.8, 1.2)
|
|
local coolingTime = 20 * rand:getFloat(0.8, 1.2)
|
|
TurretGenerator.createStandardCooling(result, coolingTime, shootingTime)
|
|
|
|
TurretGenerator.scale(rand, result, WeaponType.HeavyCannon, tech, 0.6)
|
|
TurretGenerator.addSpecialties(rand, result, WeaponType.HeavyCannon)
|
|
|
|
result:updateStaticStats()
|
|
|
|
return result
|
|
end
|
|
|
|
generatorFunction[WeaponType.HeavyCannon] = TurretGenerator.generateHeavyCannonTurret
|
|
|
|
|
|
function TurretGenerator.generateDiffuserTurret(rand, dps, tech, material, rarity)
|
|
local result = TurretTemplate()
|
|
|
|
-- generate turret
|
|
local requiredCrew = TurretGenerator.dpsToRequiredCrew(dps)
|
|
local crew = Crew()
|
|
crew:add(requiredCrew, CrewMan(CrewProfessionType.Gunner))
|
|
result.crew = crew
|
|
|
|
-- generate weapons
|
|
local numWeapons = rand:getInt(1, 2)
|
|
|
|
local weapon = WeaponGenerator.generateDiffuser(rand, dps, tech, material, rarity)
|
|
weapon.damage = weapon.damage / numWeapons
|
|
|
|
-- attach weapons to turret
|
|
TurretGenerator.attachWeapons(rand, result, weapon, numWeapons)
|
|
|
|
local rechargeTime = 20 * rand:getFloat(0.8, 1.2)
|
|
local shootingTime = 15 * rand:getFloat(0.8, 1.2)
|
|
TurretGenerator.createBatteryChargeCooling(result, rechargeTime, shootingTime)
|
|
|
|
|
|
TurretGenerator.scale(rand, result, WeaponType.Diffuser, tech, 0.75)
|
|
TurretGenerator.addSpecialties(rand, result, WeaponType.Diffuser)
|
|
|
|
result:updateStaticStats()
|
|
|
|
return result
|
|
end
|
|
|
|
generatorFunction[WeaponType.Diffuser] = TurretGenerator.generateDiffuserTurret
|
|
|
|
|
|
function TurretGenerator.generateHookgunTurret(rand, dps, tech, material, rarity)
|
|
local result = TurretTemplate()
|
|
|
|
-- generate turret
|
|
local requiredCrew = TurretGenerator.dpsToRequiredCrew(dps)
|
|
local crew = Crew()
|
|
crew:add(requiredCrew, CrewMan(CrewProfessionType.Gunner))
|
|
result.crew = crew
|
|
|
|
-- generate weapons
|
|
local numWeapons = rand:getInt(1, 2)
|
|
|
|
local weapon = WeaponGenerator.generateHookgun(rand, dps, tech, material, rarity)
|
|
weapon.damage = weapon.damage / numWeapons
|
|
|
|
-- attach weapons to turret
|
|
TurretGenerator.attachWeapons(rand, result, weapon, numWeapons)
|
|
|
|
local rechargeTime = 4 * rand:getFloat(0.8, 1.2)
|
|
local shootingTime = 2 * rand:getFloat(0.8, 1.2)
|
|
TurretGenerator.createBatteryChargeCooling(result, rechargeTime, shootingTime)
|
|
|
|
|
|
TurretGenerator.scale(rand, result, WeaponType.Hookgun, tech, 0.75)
|
|
TurretGenerator.addSpecialties(rand, result, WeaponType.Hookgun)
|
|
|
|
result:updateStaticStats()
|
|
|
|
return result
|
|
end
|
|
|
|
generatorFunction[WeaponType.Hookgun] = TurretGenerator.generateHookgunTurret
|