From 13a688edb3ad1e4ddbe148f1af99f8191e9d4d60 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 28 Aug 2023 20:07:43 +0000 Subject: [PATCH] Update 2 files - /data/scripts/lib/turretgenerator.lua - /data/scripts/lib/weapongenerator.lua --- data/scripts/lib/turretgenerator.lua | 23 +++++++++---- data/scripts/lib/weapongenerator.lua | 51 ++++++++++++++-------------- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/data/scripts/lib/turretgenerator.lua b/data/scripts/lib/turretgenerator.lua index 57e0487..d417571 100644 --- a/data/scripts/lib/turretgenerator.lua +++ b/data/scripts/lib/turretgenerator.lua @@ -310,15 +310,26 @@ function TurretGenerator.generateHiveLauncherTurret(rand, dps, tech, material, r weapon.damage = weapon.damage / numWeapons -- attach weapons to turret - TurretGenerator.attachWeapons(rand, result, weapon, numWeapons) + 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 - local rechargeTime = 4 * rand:getFloat(0.8, 1.2) - local shootingTime = 2 * rand:getFloat(0.8, 1.2) - TurretGenerator.createBatteryChargeCooling(result, rechargeTime, shootingTime) + -- 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.HiveLauncher, tech, 0.75) - local specialties = TurretGenerator.addSpecialties(rand, result, WeaponType.HiveLauncher) + TurretGenerator.scale(rand, result, WeaponType.RocketLauncher, tech, 0.6, coaxialAllowed) + local specialties = TurretGenerator.addSpecialties(rand, result, WeaponType.RocketLauncher) result.slotType = TurretSlotType.Armed result:updateStaticStats() diff --git a/data/scripts/lib/weapongenerator.lua b/data/scripts/lib/weapongenerator.lua index 5a9aecb..d98af46 100644 --- a/data/scripts/lib/weapongenerator.lua +++ b/data/scripts/lib/weapongenerator.lua @@ -46,6 +46,7 @@ end generatorFunction[WeaponType.SmartCannon] = WeaponGenerator.generateSmartCannon + function WeaponGenerator.generateHeavyCannon(rand, dps, tech, material, rarity) local weapon = Weapon() weapon:setProjectile() @@ -91,6 +92,7 @@ end generatorFunction[WeaponType.HeavyCannon] = WeaponGenerator.generateHeavyCannon + function WeaponGenerator.generateDiffuser(rand, dps, tech, material, rarity) local weapon = Weapon() weapon:setBeam() @@ -193,52 +195,51 @@ end generatorFunction[WeaponType.Hookgun] = WeaponGenerator.generateHookgun + + function WeaponGenerator.generateHiveLauncher(rand, dps, tech, material, rarity) local weapon = Weapon() - weapon:setBeam() + weapon:setProjectile() - local fireDelay = rand:getFloat(0.2, 0.5) - local reach = rand:getFloat(500, 900) + 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.appearanceSeed = rand:getInt() weapon.reach = reach - weapon.continuousBeam = true - weapon.appearance = WeaponAppearance.Cannon + 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.blockPenetration = rand:getInt(0, rarity.value) + 2 - - - weapon.otherForce = -500 * dps * rarity.value - weapon.damage = damage weapon.damageType = DamageType.Physical - weapon.impactParticles = ImpactParticles.Physical - weapon.shieldDamageMultiplicator = 0.75 - weapon.stoneDamageMultiplicator = 1.2 - weapon.hullDamageMultiplicator = 1 + weapon.impactParticles = ImpactParticles.Explosion weapon.impactSound = 1 + weapon.impactExplosion = true - weapon.blength = weapon.reach - weapon.bshape = BeamShape.Swirly - weapon.bwidth = 0.5 - weapon.bauraWidth = 3 - weapon.banimationSpeed = 0 - weapon.banimationAcceleration = 0 - weapon.bshapeSize = 13 + 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 - -- shades of blue - weapon.bouterColor = ColorHSV(0, 0, rand:getFloat(0.35, 0.65)) - weapon.binnerColor = ColorHSV(1, 1, rand:getFloat(0.35, 0.65)) + if rand:test(0.05) 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