diff --git a/data/scripts/lib/galaxy.lua b/data/scripts/lib/galaxy.lua index 4f2a38c..00367dd 100644 --- a/data/scripts/lib/galaxy.lua +++ b/data/scripts/lib/galaxy.lua @@ -1,4 +1,5 @@ weaponProbabilities[WeaponType.AutoCannon] = {d = 0.65, p = 2.0} weaponProbabilities[WeaponType.HeavyCannon] = {d = 0.6, p = 1.0} -weaponProbabilities[WeaponType.Diffuser] = {d = 0.6, p = 1.0} \ No newline at end of file +weaponProbabilities[WeaponType.Diffuser] = {d = 0.6, p = 1.0} +weaponProbabilities[WeaponType.Harpoon] = {d = 0.6, p = 1.0} \ No newline at end of file diff --git a/data/scripts/lib/inventoryitemprice.lua b/data/scripts/lib/inventoryitemprice.lua index ad0af2c..fd1372b 100644 --- a/data/scripts/lib/inventoryitemprice.lua +++ b/data/scripts/lib/inventoryitemprice.lua @@ -2,3 +2,4 @@ valueWeights[WeaponType.AutoCannon ] = 2 valueWeights[WeaponType.HeavyCannon ] = 1.7 valueWeights[WeaponType.Diffuser ] = 2.1 +valueWeights[WeaponType.Harpoon ] = 2.1 diff --git a/data/scripts/lib/turretgenerator.lua b/data/scripts/lib/turretgenerator.lua index 420118a..4b45cba 100644 --- a/data/scripts/lib/turretgenerator.lua +++ b/data/scripts/lib/turretgenerator.lua @@ -22,6 +22,13 @@ scales[WeaponType.Diffuser] = { {from = 51, to = 52, size = 3.0, usedSlots = 6}, } +scales[WeaponType.Harpoon] = { + {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.AutoCannon] = { {specialty = Specialty.HighDamage, probability = 0.2}, @@ -74,6 +81,19 @@ else } end +if GameVersion() >= Version(0, 31, 0) then + possibleSpecialties[WeaponType.Harpoon] = { + {specialty = Specialty.HighDamage, probability = 0.3}, + {specialty = Specialty.HighRange, probability = 0.3}, + -- {specialty = Specialty.FasterRechargeTime, probability = 0.6}, + } +else + possibleSpecialties[WeaponType.Harpoon] = { + Specialty.HighDamage, + Specialty.HighRange, + Specialty.FasterRechargeTime, + } +end function TurretGenerator.generateAutoCannonTurret(rand, dps, tech, material, rarity) local result = TurretTemplate() @@ -174,3 +194,37 @@ function TurretGenerator.generateDiffuserTurret(rand, dps, tech, material, rarit end generatorFunction[WeaponType.Diffuser] = TurretGenerator.generateDiffuserTurret + + +function TurretGenerator.generateHarpoonTurret(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.generateHarpoon(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.Harpoon, tech, 0.75) + TurretGenerator.addSpecialties(rand, result, WeaponType.Harpoon) + + result:updateStaticStats() + + return result +end + +generatorFunction[WeaponType.Harpoon] = TurretGenerator.generateHarpoonTurret diff --git a/data/scripts/lib/turretingredients.lua b/data/scripts/lib/turretingredients.lua index 84278d2..f48ab5b 100644 --- a/data/scripts/lib/turretingredients.lua +++ b/data/scripts/lib/turretingredients.lua @@ -23,6 +23,17 @@ TurretIngredients[WeaponType.HeavyCannon] = } TurretIngredients[WeaponType.Diffuser] = +{ + {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}, +} + +TurretIngredients[WeaponType.Harpoon] = { {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", }, diff --git a/data/scripts/lib/weapongenerator.lua b/data/scripts/lib/weapongenerator.lua index f522aed..455337f 100644 --- a/data/scripts/lib/weapongenerator.lua +++ b/data/scripts/lib/weapongenerator.lua @@ -146,3 +146,55 @@ function WeaponGenerator.generateDiffuser(rand, dps, tech, material, rarity) end generatorFunction[WeaponType.Diffuser] = WeaponGenerator.generateDiffuser + + + +function WeaponGenerator.generateHarpoon(rand, dps, tech, material, rarity) + local weapon = Weapon() + weapon:setBeam() + + local fireDelay = rand:getFloat(0.2, 0.5) + local reach = rand:getFloat(500, 900) + local damage = dps * fireDelay + + weapon.fireDelay = fireDelay + weapon.appearanceSeed = rand:getInt() + weapon.reach = reach + weapon.continuousBeam = true + weapon.appearance = WeaponAppearance.Cannon + weapon.name = "Harpoon /* Weapon Name*/"%_t + weapon.prefix = "Harpoon /* Weapon Prefix*/"%_t + weapon.icon = "data/textures/icons/harpoon.png" + weapon.sound = "cannon" + weapon.accuracy = 0.99 - rand:getFloat(0, 0.02) + + + weapon.otherForce = -400 * 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.impactSound = 1 + + weapon.blength = weapon.reach + weapon.bshape = BeamShape.Swirly + weapon.bwidth = 0.5 + weapon.bauraWidth = 3 + weapon.banimationSpeed = 0 + weapon.banimationAcceleration = 0 + weapon.bshapeSize = 13 + + -- 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)) + + WeaponGenerator.adaptWeapon(rand, weapon, tech, material, rarity) + + + return weapon +end + +generatorFunction[WeaponType.Harpoon] = WeaponGenerator.generateHarpoon diff --git a/data/scripts/lib/weapontype.lua b/data/scripts/lib/weapontype.lua index 1620cb1..46c2532 100644 --- a/data/scripts/lib/weapontype.lua +++ b/data/scripts/lib/weapontype.lua @@ -1,4 +1,5 @@ WeaponTypes.addType("AutoCannon", "Auto Сannon /* Weapon Type */"%_t, armed) WeaponTypes.addType("HeavyCannon", "Heavy Cannon /* Weapon Type */"%_t, armed) -WeaponTypes.addType("Diffuser", "Diffuser /* Weapon Type */"%_t, armed) \ No newline at end of file +WeaponTypes.addType("Diffuser", "Diffuser /* Weapon Type */"%_t, armed) +WeaponTypes.addType("Harpoon", "Harpoon /* Weapon Type */"%_t, armed) \ No newline at end of file diff --git a/data/textures/icons/harpoon.png b/data/textures/icons/harpoon.png new file mode 100644 index 0000000..a70d78e Binary files /dev/null and b/data/textures/icons/harpoon.png differ