Compare commits

..

3 Commits

Author SHA1 Message Date
Alex
e90ff8f1e2 Update file weapongenerator.lua 2023-08-28 20:08:13 +00:00
Alex
13a688edb3 Update 2 files
- /data/scripts/lib/turretgenerator.lua
- /data/scripts/lib/weapongenerator.lua
2023-08-28 20:07:43 +00:00
Slava
0880b82677 Update 6 files
- /data/scripts/lib/galaxy.lua
- /data/scripts/lib/inventoryitemprice.lua
- /data/scripts/lib/turretgenerator.lua
- /data/scripts/lib/turretingredients.lua
- /data/scripts/lib/weapongenerator.lua
- /data/scripts/lib/weapontype.lua
2023-08-28 18:50:20 +00:00
6 changed files with 479 additions and 326 deletions

View File

@@ -3,3 +3,4 @@ weaponProbabilities[WeaponType.SmartCannon] = {d = 0.65, p = 2.0}
weaponProbabilities[WeaponType.HeavyCannon] = {d = 0.6, p = 1.0} weaponProbabilities[WeaponType.HeavyCannon] = {d = 0.6, p = 1.0}
weaponProbabilities[WeaponType.Diffuser] = {d = 0.6, p = 1.0} weaponProbabilities[WeaponType.Diffuser] = {d = 0.6, p = 1.0}
weaponProbabilities[WeaponType.Hookgun] = {d = 0.6, p = 1.0} weaponProbabilities[WeaponType.Hookgun] = {d = 0.6, p = 1.0}
weaponProbabilities[WeaponType.HiveLauncher] = {d = 0.6, p = 1.0} -- TODO Подсмотреть у ванильных ракетниц

View File

@@ -3,3 +3,4 @@ valueWeights[WeaponType.SmartCannon ] = 2
valueWeights[WeaponType.HeavyCannon ] = 2.5 valueWeights[WeaponType.HeavyCannon ] = 2.5
valueWeights[WeaponType.Diffuser ] = 1.7 valueWeights[WeaponType.Diffuser ] = 1.7
valueWeights[WeaponType.Hookgun ] = 1.5 valueWeights[WeaponType.Hookgun ] = 1.5
valueWeights[WeaponType.HiveLauncher] = 2

View File

@@ -29,6 +29,13 @@ scales[WeaponType.Hookgun] = {
{from = 51, to = 52, size = 3.0, usedSlots = 6}, {from = 51, to = 52, size = 3.0, usedSlots = 6},
} }
scales[WeaponType.HiveLauncher] = {
{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 if GameVersion() >= Version(0, 31, 0) then
possibleSpecialties[WeaponType.SmartCannon] = { possibleSpecialties[WeaponType.SmartCannon] = {
{specialty = Specialty.HighDamage, probability = 0.2}, {specialty = Specialty.HighDamage, probability = 0.2},
@@ -95,6 +102,20 @@ else
} }
end end
if GameVersion() >= Version(0, 31, 0) then
possibleSpecialties[WeaponType.HiveLauncher] = {
{specialty = Specialty.HighDamage, probability = 0.3},
{specialty = Specialty.HighRange, probability = 0.3},
-- {specialty = Specialty.FasterRechargeTime, probability = 0.6},
}
else
possibleSpecialties[WeaponType.HiveLauncher] = {
Specialty.HighDamage,
Specialty.HighRange,
Specialty.FasterRechargeTime,
}
end
function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, rarity) function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, rarity)
local result = TurretTemplate() local result = TurretTemplate()
@@ -125,14 +146,15 @@ function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, ra
local name = "SmartCannon /* weapon name*/"%_T local name = "SmartCannon /* weapon name*/"%_T
local specType = 1
if specType > 0 then
name = "Ionized SmartCannon/* weapon name*/"%_T
weapon.shieldPenetration = 1
end
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical) local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial], e.g. Enduring Dual Coaxial Plasmatic Tri-R-Mining Laser T-F */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial) result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial], e.g. Enduring Dual Coaxial Plasmatic Tri-R-Mining Laser T-F */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial)
local specType = 1
if specType > 0 then
weapon.prefix = "Ionized /* Weapon Prefix*/"%_t
weapon.shieldPenetration = 1
end
return result return result
end end
@@ -174,7 +196,7 @@ function TurretGenerator.generateHeavyCannonTurret(rand, dps, tech, material, ra
local Pen = rand:getInt(0, rarity.value) local Pen = rand:getInt(0, rarity.value)
if Pen > 0 then if Pen > 0 then
weapon.blockPenetration = Pen weapon.blockPenetration = Pen
weapon.prefix = "Cumulative /* Weapon Prefix*/"%_t name = "Cumulative Heavy Cannon /* weapon name*/"%_T
end end
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical) local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
@@ -257,6 +279,13 @@ function TurretGenerator.generateHookgunTurret(rand, dps, tech, material, rarity
local name = "Hookgun /* weapon name*/"%_T local name = "Hookgun /* weapon name*/"%_T
local specType = 0
if specType >0 then
else
end
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical) local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial], e.g. Enduring Dual Coaxial Plasmatic Tri-R-Mining Laser T-F */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial) result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial], e.g. Enduring Dual Coaxial Plasmatic Tri-R-Mining Laser T-F */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial)
@@ -264,3 +293,60 @@ function TurretGenerator.generateHookgunTurret(rand, dps, tech, material, rarity
end end
generatorFunction[WeaponType.Hookgun] = TurretGenerator.generateHookgunTurret generatorFunction[WeaponType.Hookgun] = TurretGenerator.generateHookgunTurret
function TurretGenerator.generateHiveLauncherTurret(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))
result.crew = crew
-- generate weapons
local numWeapons = rand:getInt(1, 2)
local weapon = WeaponGenerator.generateHiveLauncher(rand, dps, tech, material, rarity)
weapon.damage = weapon.damage / numWeapons
-- attach weapons to turret
local positions = {}
if rand:getBool() then
table.insert(positions, vec3(0, 0.3, 0))
else
table.insert(positions, vec3(0.4, 0.3, 0))
table.insert(positions, vec3(-0.4, 0.3, 0))
end
-- attach
for _, position in pairs(positions) do
weapon.localPosition = position * result.size
result:addWeapon(weapon)
end
local shootingTime = 20 * 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.RocketLauncher, tech, 0.6, coaxialAllowed)
local specialties = TurretGenerator.addSpecialties(rand, result, WeaponType.RocketLauncher)
result.slotType = TurretSlotType.Armed
result:updateStaticStats()
local name = "HiveLauncher /* weapon name*/"%_T
local specType = 0
if specType >0 then
else
end
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial], e.g. Enduring Dual Coaxial Plasmatic Tri-R-Mining Laser T-F */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial)
return result
end
generatorFunction[WeaponType.HiveLauncher] = TurretGenerator.generateHiveLauncherTurret

View File

@@ -43,3 +43,14 @@ TurretIngredients[WeaponType.Hookgun] =
{name = "Silver", amount = 5, investable = 0, minimum = 5,}, {name = "Silver", amount = 5, investable = 0, minimum = 5,},
-- {name = "Targeting System", amount = 0, investable = 2, minimum = 0, turretStat = "automatic", investFactor = 1, changeType = StatChanges.Flat}, -- {name = "Targeting System", amount = 0, investable = 2, minimum = 0, turretStat = "automatic", investFactor = 1, changeType = StatChanges.Flat},
} }
TurretIngredients[WeaponType.HiveLauncher] =
{
{name = "Plasma Cell", amount = 10, investable = 10, minimum = 10, weaponStat = "fireRate", investFactor = 1.0, changeType = StatChanges.Percentage},
{name = "High Capacity Lens", amount = 5, investable = 6, minimum = 1, weaponStat = "reach", },
{name = "Energy Tube", amount = 2, investable = 6, minimum = 1, weaponStat = "damage", },
{name = "Steel", amount = 20, investable = 0, minimum = 20,},
{name = "Copper", amount = 10, investable = 0, minimum = 10,},
{name = "Silver", amount = 5, investable = 0, minimum = 5,},
-- {name = "Targeting System", amount = 0, investable = 2, minimum = 0, turretStat = "automatic", investFactor = 1, changeType = StatChanges.Flat},
}

View File

@@ -46,6 +46,7 @@ end
generatorFunction[WeaponType.SmartCannon] = WeaponGenerator.generateSmartCannon generatorFunction[WeaponType.SmartCannon] = WeaponGenerator.generateSmartCannon
function WeaponGenerator.generateHeavyCannon(rand, dps, tech, material, rarity) function WeaponGenerator.generateHeavyCannon(rand, dps, tech, material, rarity)
local weapon = Weapon() local weapon = Weapon()
weapon:setProjectile() weapon:setProjectile()
@@ -91,6 +92,7 @@ end
generatorFunction[WeaponType.HeavyCannon] = WeaponGenerator.generateHeavyCannon generatorFunction[WeaponType.HeavyCannon] = WeaponGenerator.generateHeavyCannon
function WeaponGenerator.generateDiffuser(rand, dps, tech, material, rarity) function WeaponGenerator.generateDiffuser(rand, dps, tech, material, rarity)
local weapon = Weapon() local weapon = Weapon()
weapon:setBeam() weapon:setBeam()
@@ -192,3 +194,54 @@ function WeaponGenerator.generateHookgun(rand, dps, tech, material, rarity)
end end
generatorFunction[WeaponType.Hookgun] = WeaponGenerator.generateHookgun generatorFunction[WeaponType.Hookgun] = WeaponGenerator.generateHookgun
function WeaponGenerator.generateHiveLauncher(rand, dps, tech, material, rarity)
local weapon = Weapon()
weapon:setProjectile()
local fireDelay = rand:getFloat(0.5, 1.5)
local reach = rand:getFloat(1300, 1800)
local damage = dps * fireDelay
local speed = rand:getFloat(150, 200)
local existingTime = reach / speed
weapon.fireDelay = fireDelay
weapon.reach = reach
weapon.appearanceSeed = rand:getInt()
weapon.seeker = rand:test(1 / 8)
weapon.appearance = WeaponAppearance.RocketLauncher
weapon.name = "HiveLauncher /* Weapon Name*/"%_t
weapon.prefix = "HiveLauncher /* Weapon Prefix*/"%_t
weapon.icon = "data/textures/icons/hivelauncher.png"
weapon.sound = "cannon"
weapon.accuracy = 0.99 - rand:getFloat(0, 0.02)
weapon.damage = damage
weapon.damageType = DamageType.Physical
weapon.impactParticles = ImpactParticles.Explosion
weapon.impactSound = 1
weapon.impactExplosion = true
weapon.psize = rand:getFloat(0.2, 0.4)
weapon.pmaximumTime = existingTime
weapon.pvelocity = speed
weapon.pcolor = ColorHSV(rand:getFloat(10, 60), 0.7, 1)
weapon.pshape = ProjectileShape.Rocket
if rand:test(1) then
local shots = {2, 2, 2, 2, 2, 3, 4}
weapon.shotsFired = shots[rand:getInt(1, #shots)]
weapon.damage = (weapon.damage * 1.5) / weapon.shotsFired
end
WeaponGenerator.adaptWeapon(rand, weapon, tech, material, rarity)
weapon.recoil = weapon.damage * 2
weapon.explosionRadius = math.sqrt(weapon.damage * 5)
return weapon
end
generatorFunction[WeaponType.HiveLauncher] = WeaponGenerator.generateHiveLauncher

View File

@@ -3,3 +3,4 @@ WeaponTypes.addType("SmartCannon", "Smart Сannon /* Weapon Type */"%_t, armed)
WeaponTypes.addType("HeavyCannon", "Heavy Cannon /* Weapon Type */"%_t, armed) WeaponTypes.addType("HeavyCannon", "Heavy Cannon /* Weapon Type */"%_t, armed)
WeaponTypes.addType("Diffuser", "Diffuser /* Weapon Type */"%_t, armed) WeaponTypes.addType("Diffuser", "Diffuser /* Weapon Type */"%_t, armed)
WeaponTypes.addType("Hookgun", "Hookgun /* Weapon Type */"%_t, armed) WeaponTypes.addType("Hookgun", "Hookgun /* Weapon Type */"%_t, armed)
WeaponTypes.addType("HiveLauncher", "HiveLauncher /* Weapon Type */"%_t, armed)