Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29928558d3 | ||
|
|
101d4e1c44 | ||
|
|
314e65c4bc | ||
|
|
577378ae36 | ||
|
|
59c5f2cb36 | ||
|
|
138f510ea2 | ||
|
|
d6ea8f534e | ||
|
|
85889377c9 | ||
|
|
f37108304e | ||
|
|
d72a2b701e | ||
|
|
c0b7a4ef83 | ||
|
|
8e63f249a7 | ||
|
|
9a56e21c2a | ||
|
|
32fc8f43ea |
@@ -1,6 +1,9 @@
|
||||
[](http://gl.beaconborn.ru/bacon/weapon-project-extended/-/commits/main) [](http://gl.beaconborn.ru/bacon/weapon-project-extended/-/releases)
|
||||
# weapon project extended 2.0
|
||||
|
||||

|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
That mod for Avorion original writed [Alive!](https://steamcommunity.com/id/CasKepler2/) for 0.32 and updated by me with him
|
||||
|
||||
@@ -112,6 +112,7 @@ else
|
||||
}
|
||||
end
|
||||
|
||||
-- ===========================================================================================================================================================
|
||||
function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, rarity)
|
||||
local result = TurretTemplate()
|
||||
|
||||
@@ -119,6 +120,7 @@ function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, ra
|
||||
local requiredCrew = TurretGenerator.dpsToRequiredCrew(dps)
|
||||
local crew = Crew()
|
||||
crew:add(requiredCrew, CrewMan(CrewProfessionType.Gunner))
|
||||
crew:add(requiredCrew, CrewMan(CrewProfessionType.Pilot))
|
||||
result.crew = crew
|
||||
|
||||
-- generate weapons
|
||||
@@ -127,16 +129,18 @@ function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, ra
|
||||
local weapon = WeaponGenerator.generateSmartCannon(rand, dps, tech, material, rarity)
|
||||
weapon.fireDelay = weapon.fireDelay * numWeapons
|
||||
|
||||
local name = "Smart-Cannon /* weapon name*/"%_T
|
||||
|
||||
local specType = rand:getInt(0, 2)
|
||||
if specType == 1 then
|
||||
name = "Ionized Smart-Cannon /* weapon name*/"%_T
|
||||
if specType == 1 then
|
||||
weapon.shieldPenetration = 1
|
||||
if rand:getInt(0, 1) then
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(180, 210), 0.8, 0.8)
|
||||
else
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(260, 290), 0.8, 0.8)
|
||||
end
|
||||
elseif specType == 2 then
|
||||
name = "Plasmed Smart-Cannon /* weapon name*/"%_T
|
||||
weapon.damageType = DamageType.Plasma
|
||||
weapon.damage = weapon.damage * 0.9
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(90, 120), 0.7, 1)
|
||||
end
|
||||
|
||||
-- attach weapons to turret
|
||||
@@ -152,8 +156,13 @@ function TurretGenerator.generateSmartCannonTurret(rand, dps, tech, material, ra
|
||||
result.slotType = TurretSlotType.Armed
|
||||
result:updateStaticStats()
|
||||
|
||||
local name = "Smart-Cannon /* weapon name*/"%_T
|
||||
|
||||
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
|
||||
|
||||
if specType == 1 then
|
||||
outerAdjective = "Ionized "%_T
|
||||
end
|
||||
result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial] */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial)
|
||||
|
||||
return result
|
||||
@@ -162,6 +171,7 @@ end
|
||||
generatorFunction[WeaponType.SmartCannon] = TurretGenerator.generateSmartCannonTurret
|
||||
|
||||
|
||||
-- ===========================================================================================================================================================
|
||||
function TurretGenerator.generateHeavyCannonTurret(rand, dps, tech, material, rarity)
|
||||
local result = TurretTemplate()
|
||||
|
||||
@@ -184,6 +194,20 @@ function TurretGenerator.generateHeavyCannonTurret(rand, dps, tech, material, ra
|
||||
outerAdjective = "Cumulative "%_T
|
||||
end
|
||||
|
||||
if result.size >= 4 then
|
||||
weapon.psize = weapon.psize * 1.5
|
||||
weapon.speed = weapon.speed * 2
|
||||
weapon.reach = weapon.reach * 1.2
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(10, 45), 0.7, 0.7)
|
||||
end
|
||||
|
||||
if result.size >= 5 then
|
||||
weapon.psize = weapon.psize * 1.5
|
||||
weapon.speed = weapon.speed * 2
|
||||
weapon.reach = weapon.reach * 1.5
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(10, 45), 0.7, 0.9)
|
||||
end
|
||||
|
||||
-- attach weapons to turret
|
||||
TurretGenerator.attachWeapons(rand, result, weapon, numWeapons)
|
||||
|
||||
@@ -202,11 +226,11 @@ function TurretGenerator.generateHeavyCannonTurret(rand, dps, tech, material, ra
|
||||
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
|
||||
|
||||
if result.size >= 4 then
|
||||
name = "Mons Meg /* weapon name*/"%_T
|
||||
name = "Mass Driver /* weapon name*/"%_T
|
||||
end
|
||||
|
||||
if result.size >= 5 then
|
||||
name = "Dulle Griet /* weapon name*/"%_T
|
||||
name = "Mass Warper /* weapon name*/"%_T
|
||||
end
|
||||
|
||||
result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial] */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial)
|
||||
@@ -217,6 +241,7 @@ end
|
||||
generatorFunction[WeaponType.HeavyCannon] = TurretGenerator.generateHeavyCannonTurret
|
||||
|
||||
|
||||
-- ===========================================================================================================================================================
|
||||
function TurretGenerator.generateDiffuserTurret(rand, dps, tech, material, rarity)
|
||||
local result = TurretTemplate()
|
||||
|
||||
@@ -257,6 +282,7 @@ end
|
||||
generatorFunction[WeaponType.Diffuser] = TurretGenerator.generateDiffuserTurret
|
||||
|
||||
|
||||
-- ===========================================================================================================================================================
|
||||
function TurretGenerator.generateHookgunTurret(rand, dps, tech, material, rarity)
|
||||
local result = TurretTemplate()
|
||||
|
||||
@@ -271,6 +297,13 @@ function TurretGenerator.generateHookgunTurret(rand, dps, tech, material, rarity
|
||||
|
||||
local weapon = WeaponGenerator.generateHookgun(rand, dps, tech, material, rarity)
|
||||
weapon.damage = weapon.damage / numWeapons
|
||||
|
||||
local spec = rand:getInt(0, 1)
|
||||
|
||||
if spec then
|
||||
weapon.holdingForce = weapon.otherForce * 2
|
||||
weapon.otherForce = 0
|
||||
end
|
||||
|
||||
-- attach weapons to turret
|
||||
TurretGenerator.attachWeapons(rand, result, weapon, numWeapons)
|
||||
@@ -289,6 +322,11 @@ function TurretGenerator.generateHookgunTurret(rand, dps, tech, material, rarity
|
||||
local name = "Hookgun /* weapon name*/"%_T
|
||||
|
||||
local dmgAdjective, outerAdjective, barrel, multishot, coax, serial = makeTitleParts(rand, specialties, result, DamageType.Physical)
|
||||
|
||||
if spec then
|
||||
outerAdjective = "Stabilizing"%_T
|
||||
end
|
||||
|
||||
result.title = Format("%1%%2%%3%%4%%5%%6%%7% /* [outer-adjective][barrel][coax][dmg-adjective][multishot][name][serial] */"%_T, outerAdjective, barrel, coax, dmgAdjective, multishot, name, serial)
|
||||
|
||||
return result
|
||||
@@ -297,7 +335,7 @@ end
|
||||
generatorFunction[WeaponType.Hookgun] = TurretGenerator.generateHookgunTurret
|
||||
|
||||
|
||||
|
||||
-- ===========================================================================================================================================================
|
||||
function TurretGenerator.generateHiveLauncherTurret(rand, dps, tech, material, rarity)
|
||||
local result = TurretTemplate()
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
TurretIngredients[WeaponType.SmartCannon] =
|
||||
{
|
||||
{name = "Servo", amount = 15, investable = 10, minimum = 5, weaponStat = "fireRate", investFactor = 1.0, changeType = StatChanges.Percentage},
|
||||
{name = "Warhead", amount = 5, investable = 6, minimum = 1, weaponStat = "damage", },
|
||||
{name = "High Pressure Tube", amount = 2, investable = 6, minimum = 1, weaponStat = "reach", },
|
||||
{name = "Ammunition M", amount = 2, investable = 4, minimum = 1, weaponStat = "damage", investFactor = 0.5,},
|
||||
{name = "Processor", amount = 5, investable = 6, minimum = 1, weaponStat = "damage", },
|
||||
{name = "High Pressure Tube", amount = 2, investable = 6, minimum = 1, weaponStat = "reach", investFactor = 1.5, changeType = StatChanges.Percentage},
|
||||
{name = "Ammunition M", amount = 2, investable = 4, minimum = 1, weaponStat = "damage", investFactor = 1, changeType = StatChanges.Percentage},
|
||||
{name = "Targeting Card", amount = 3, investable = 3, minimum = 0, weaponStat = "seeker", investFactor = 1, changeType = StatChanges.Flat},
|
||||
{name = "Steel", amount = 8, investable = 10, minimum = 3,},
|
||||
{name = "Steel Tube", amount = 5, investable = 10, minimum = 3,},
|
||||
@@ -13,9 +13,9 @@ TurretIngredients[WeaponType.SmartCannon] =
|
||||
TurretIngredients[WeaponType.HeavyCannon] =
|
||||
{
|
||||
{name = "Servo", amount = 8, investable = 8, minimum = 4, weaponStat = "fireRate", investFactor = 1.0, changeType = StatChanges.Percentage},
|
||||
{name = "Warhead", amount = 5, investable = 6, minimum = 1, weaponStat = "damage", },
|
||||
{name = "Explosive Charge", amount = 5, investable = 6, minimum = 1, weaponStat = "damage", },
|
||||
{name = "High Pressure Tube", amount = 2, investable = 6, minimum = 1, weaponStat = "reach", },
|
||||
{name = "Ammunition", amount = 5, investable = 10, minimum = 3, weaponStat = "damage", investFactor = 0.2,},
|
||||
{name = "Ammunition L", amount = 5, investable = 10, minimum = 3, weaponStat = "damage", investFactor = 0.2,},
|
||||
{name = "Steel", amount = 20, investable = 10, minimum = 20,},
|
||||
{name = "Metal Plate", amount = 8, investable = 10, minimum = 10,},
|
||||
}
|
||||
@@ -24,20 +24,19 @@ 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 = "Industrial Tesla Coil",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,},
|
||||
}
|
||||
|
||||
TurretIngredients[WeaponType.Hookgun] = -- TODO Подумать над составляющими
|
||||
TurretIngredients[WeaponType.Hookgun] =
|
||||
{
|
||||
{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 = "Force Generator", amount = 10, investable = 10, minimum = 10, weaponStat = "fireRate", investFactor = 1.0, changeType = StatChanges.Percentage},
|
||||
{name = "Energy Tube", amount = 5, investable = 6, minimum = 1, weaponStat = "reach", },
|
||||
{name = "Power Unit", 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 = "Conductor", amount = 10, investable = 0, minimum = 10,},
|
||||
}
|
||||
|
||||
TurretIngredients[WeaponType.HiveLauncher] =
|
||||
|
||||
@@ -4,7 +4,7 @@ function WeaponGenerator.generateSmartCannon(rand, dps, tech, material, rarity)
|
||||
weapon:setProjectile()
|
||||
|
||||
dps = dps * 0.9
|
||||
local fireDelay = rand:getFloat(1.5, 2.5)*0.5
|
||||
local fireDelay = rand:getFloat(0.6, 1)
|
||||
local reach = rand:getFloat(1100, 1500)*0.7
|
||||
local damage = dps * fireDelay
|
||||
local speed = rand:getFloat(300, 400)*4
|
||||
@@ -32,7 +32,7 @@ function WeaponGenerator.generateSmartCannon(rand, dps, tech, material, rarity)
|
||||
weapon.psize = rand:getFloat(0.2, 0.5)
|
||||
weapon.pmaximumTime = existingTime
|
||||
weapon.pvelocity = speed
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(10, 60), 0.7, 1)
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(20, 45), 0.7, 1)
|
||||
|
||||
WeaponGenerator.adaptWeapon(rand, weapon, tech, material, rarity)
|
||||
|
||||
@@ -53,7 +53,7 @@ function WeaponGenerator.generateHeavyCannon(rand, dps, tech, material, rarity)
|
||||
|
||||
dps = dps * 1.85
|
||||
local fireDelay = rand:getFloat(1.5, 2.0)*1.7
|
||||
local reach = rand:getFloat(1100, 1500)*1.2
|
||||
local reach = rand:getFloat(1100, 1500)*1.5
|
||||
local damage = dps * fireDelay
|
||||
local speed = rand:getFloat(600, 1000)*1.4
|
||||
local existingTime = (reach / speed)*1.1
|
||||
@@ -75,10 +75,10 @@ function WeaponGenerator.generateHeavyCannon(rand, dps, tech, material, rarity)
|
||||
weapon.otherForce = dps*math.max(1, rarity.value)*89*5
|
||||
|
||||
|
||||
weapon.psize = rand:getFloat(0.2, 0.5)
|
||||
weapon.psize = rand:getFloat(1.2, 1.5)
|
||||
weapon.pmaximumTime = existingTime
|
||||
weapon.pvelocity = speed
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(10, 60), 0.7, 1)
|
||||
weapon.pcolor = ColorHSV(rand:getFloat(10, 45), 0.7, 0.4)
|
||||
|
||||
WeaponGenerator.adaptWeapon(rand, weapon, tech, material, rarity)
|
||||
|
||||
@@ -164,7 +164,6 @@ function WeaponGenerator.generateHookgun(rand, dps, tech, material, rarity)
|
||||
|
||||
weapon.blockPenetration = rand:getInt(0, rarity.value) + 2
|
||||
|
||||
|
||||
weapon.otherForce = -500 * dps * rarity.value
|
||||
|
||||
weapon.damage = damage
|
||||
@@ -183,13 +182,11 @@ function WeaponGenerator.generateHookgun(rand, dps, tech, material, rarity)
|
||||
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))
|
||||
weapon.bouterColor = ColorHSV(rand:getInt(255, 260), 0,75, rand:getFloat(0.2, 0.25))
|
||||
weapon.binnerColor = ColorHSV(rand:getInt(255, 260), 0,75, rand:getFloat(0, 0.15))
|
||||
|
||||
WeaponGenerator.adaptWeapon(rand, weapon, tech, material, rarity)
|
||||
|
||||
|
||||
return weapon
|
||||
end
|
||||
|
||||
@@ -204,7 +201,7 @@ function WeaponGenerator.generateHiveLauncher(rand, dps, tech, material, rarity)
|
||||
local fireDelay = rand:getFloat(2.2, 3)
|
||||
local reach = rand:getFloat(1300, 1800)
|
||||
local damage = dps * fireDelay
|
||||
local speed = rand:getFloat(150, 200)
|
||||
local speed = rand:getFloat(200, 250)
|
||||
local existingTime = reach / speed
|
||||
|
||||
weapon.fireDelay = fireDelay
|
||||
@@ -227,7 +224,7 @@ function WeaponGenerator.generateHiveLauncher(rand, dps, tech, material, rarity)
|
||||
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.pcolor = ColorHSV(rand:getFloat(10, 60), 0.8, rand:getFloat(0.25, 0.75))
|
||||
weapon.pshape = ProjectileShape.Rocket
|
||||
|
||||
if rand:test(1) then
|
||||
|
||||
Reference in New Issue
Block a user