1
0
mirror of https://github.com/veden/Rampant.git synced 2024-12-28 21:08:22 +02:00

almost there

This commit is contained in:
Aaron Veden 2018-02-06 00:01:20 -08:00
parent a2c0adec14
commit 46af062667
25 changed files with 890 additions and 778 deletions

View File

@ -20,16 +20,24 @@ if settings.startup["rampant-newEnemies"].value then
for _, unitSpawner in pairs(data.raw["unit-spawner"]) do
if (unitSpawner.name ~= "biter-spawner") then
unitSpawner.autoplace = nil
unitSpawner.autoplace = nil
end
end
for _, unitSpawner in pairs(data.raw["turret"]) do
if (unitSpawner.name ~= "small-worm-turret") then
unitSpawner.autoplace = nil
unitSpawner.autoplace = nil
end
end
end
-- for k, wall in pairs(data.raw["wall"]) do
-- if not wall.collision_mask then
-- wall.collision_mask = {"player-layer", "item-layer", "object-layer" }
-- end
-- wall.collision_mask[#wall.collision_mask+1] = "layer-11"
-- print(serpent.dump(wall.collision_mask))
-- end
if settings.startup["rampant-enableSwarm"] then
for k, unit in pairs(data.raw["unit"]) do
if (string.find(k, "biter") or string.find(k, "spitter")) and unit.collision_box then

View File

@ -13,8 +13,10 @@ end
if settings.startup["rampant-useDumbProjectiles"].value then
vanillaUpdates.useDumbProjectiles()
local option = settings.startup["bobmods-enemies-enableartifacts"]
if option and option.value then
require("prototypes/utils/AttackBobs")
bobsUpdates.useDumbProjectiles()
end
@ -22,7 +24,7 @@ if settings.startup["rampant-useDumbProjectiles"].value then
option = settings.startup["NE_Difficulty"]
if option and option.value then
require("prototypes/utils/AttackNE")
NEUpdates.useDumbProjectiles()
NEUpdates.useDumbProjectiles()
if settings.startup["rampant-useNEUnitLaunchers"].value then
NEUpdates.useNEUnitLaunchers()
end

View File

@ -10841,6 +10841,7 @@ rampant-enableNEUnits=World: Enable NE as a faction
rampant-disallowFriendlyFire=Safety: Disallow Friendly Fire Splash Damage
rampant-tierStart=World: Beginning enemy level
rampant-tierEnd=World: Ending enemy level
rampant-forceOldProjectiles=Force non-blockable projectiles
[mod-setting-description]
rampant-useDumbProjectiles=Turns off homing projectiles for worms and spitters
@ -10880,4 +10881,5 @@ rampant-enableBobsUnits=Adds bobs spawners, units, and worms to the base upgrade
rampant-enableNEUnits=Adds NE spawners, units, and worms to the base upgrade and placement list
rampant-disallowFriendlyFire=Prevents enemy spitters and worms from damaging units or buildings from the same force through splash damage
rampant-tierStart=This is the starting tier level and increases linearly to the end tier for as many tiers selected. min 1, max 10
rampant-tierEnd=This is the ending tier level that is reached after increasing linearly from the start tier for as many tiers selected. min 1, max 10
rampant-tierEnd=This is the ending tier level that is reached after increasing linearly from the start tier for as many tiers selected. min 1, max 10
rampant-forceOldProjectiles=This causes projectiles to no longer impact into other entities

View File

@ -23,7 +23,7 @@ local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createMeleeAttack = biterUtils.createMeleeAttack
local softSmoke = "the-soft-smoke-rampant"
@ -577,6 +577,7 @@ buildUnitSpawner(
explosion = "blood-explosion-small"
},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1173,7 +1174,10 @@ buildUnitSpawner(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -1195,6 +1199,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1524,7 +1529,8 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
ACID_WORM_VARIATIONS,

View File

@ -25,7 +25,7 @@ local buildWorm = swarmUtils.buildWorm
local createElectricAttack = biterUtils.createElectricAttack
local createAttackBall = attackBall.createAttackBall
local makeLaser = beamUtils.makeLaser
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local makeBeam = beamUtils.makeBeam
local makeBubble = beamUtils.makeBubble
@ -633,6 +633,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
bubble = electricBubble,
damageType = "electric",
softSmokeName = softSmoke,
@ -1033,7 +1034,7 @@ buildWorm(
function (attributes)
attributes.laserName = makeLaser(attributes)
return createStreamAttack(attributes,
return createRangedAttack(attributes,
createAttackBall(attributes))
end,

View File

@ -22,7 +22,7 @@ local FAST_WORM_VARIATIONS = constants.FAST_WORM_VARIATIONS
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createMeleeAttack = biterUtils.createMeleeAttack
local softSmoke = "the-soft-smoke-rampant"
@ -542,6 +542,7 @@ buildUnitSpawner(
explosion = "blood-explosion-small"
},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1033,7 +1034,10 @@ buildUnitSpawner(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -1055,6 +1059,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1350,7 +1355,8 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
FAST_WORM_VARIATIONS,

View File

@ -22,7 +22,7 @@ local FIRE_WORM_VARIATIONS = constants.FIRE_WORM_VARIATIONS
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createMeleeAttack = biterUtils.createMeleeAttack
local softSmoke = "the-soft-smoke-rampant"
@ -605,6 +605,7 @@ buildUnitSpawner(
},
loot = biterLoot,
attack = {
type = "projectile",
damageType = "acid",
softSmokeName = softSmoke
},
@ -1190,7 +1191,10 @@ buildUnitSpawner(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -1212,6 +1216,7 @@ buildWorm(
attributes = {},
loot = wormLoot,
attack = {
type = "projectile",
damageType = "acid",
softSmokeName = softSmoke
},
@ -1539,7 +1544,8 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
FIRE_WORM_VARIATIONS,

View File

@ -23,7 +23,7 @@ local INFERNO_WORM_VARIATIONS = constants.INFERNO_WORM_VARIATIONS
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackFlame = attackFlame.createAttackFlame
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local softSmoke = "the-soft-smoke-rampant"
local smokeGlow = "the-glow-smoke-rampant"
@ -51,6 +51,7 @@ buildUnitSpawner(
explosion = "blood-explosion-small"
},
attack = {
type = "stream",
damageType = "acid",
fireDamagePerTickType = "acid",
softSmokeName = softSmoke,
@ -690,7 +691,10 @@ buildUnitSpawner(
},
function (attributes)
return createStreamAttack(attributes, createAttackFlame(attributes))
return createRangedAttack(attributes,
createAttackFlame(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -712,6 +716,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "stream",
damageType = "acid",
fireDamagePerTickType = "acid",
softSmokeName = softSmoke,
@ -1147,7 +1152,8 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackFlame(attributes))
return createRangedAttack(attributes,
createAttackFlame(attributes))
end,
INFERNO_WORM_VARIATIONS,

View File

@ -24,8 +24,7 @@ local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local makeLaser = beamUtils.makeLaser
local createStreamAttack = biterUtils.createStreamAttack
local makeBeam = beamUtils.makeBeam
local createRangedAttack = biterUtils.createRangedAttack
local makeBubble = beamUtils.makeBubble
local createMeleeAttack = biterUtils.createMeleeAttack
@ -590,6 +589,7 @@ buildUnitSpawner(
explosion = "blood-explosion-small"
},
attack = {
type = "projectile",
bubble = laserBubble,
softSmokeName = softSmoke,
damageType = "laser",
@ -1192,8 +1192,10 @@ buildUnitSpawner(
function (attributes)
attributes.laserName = makeLaser(attributes)
return createStreamAttack(attributes,
createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -1215,6 +1217,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
bubble = laserBubble,
softSmokeName = softSmoke,
damageType = "laser",
@ -1615,7 +1618,7 @@ buildWorm(
function (attributes)
attributes.laserName = makeLaser(attributes)
return createStreamAttack(attributes,
return createRangedAttack(attributes,
createAttackBall(attributes))
end,

View File

@ -22,7 +22,9 @@ local NEUTRAL_WORM_VARIATIONS = constants.NEUTRAL_WORM_VARIATIONS
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createMeleeAttack = biterUtils.createMeleeAttack
local softSmoke = "the-soft-smoke-rampant"
@ -518,6 +520,7 @@ buildUnitSpawner(
explosion = "blood-explosion-small"
},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -988,7 +991,10 @@ buildUnitSpawner(
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -1010,6 +1016,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1305,7 +1312,8 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
NEUTRAL_WORM_VARIATIONS,

View File

@ -24,7 +24,7 @@ local makeSticker = stickerUtils.makeSticker
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createSuicideAttack = biterUtils.createSuicideAttack
local softSmoke = "the-soft-smoke-rampant"
@ -571,6 +571,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
stickerAnimation = {
filename = "__base__/graphics/entity/slowdown-sticker/slowdown-sticker.png",
priority = "extra-high",
@ -917,7 +918,8 @@ buildWorm(
function (attributes)
makeSticker(attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
NUCLEAR_WORM_VARIATIONS,

View File

@ -22,7 +22,7 @@ local PHYSICAL_WORM_VARIATIONS = constants.PHYSICAL_WORM_VARIATIONS
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = physicalBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createMeleeAttack = biterUtils.createMeleeAttack
local softSmoke = "the-soft-smoke-rampant"
@ -519,6 +519,7 @@ buildWorm(
attributes = {
},
attack = {
type = "projectile",
damageType = "physical",
pointEffects = function (attributes)
return {
@ -853,7 +854,8 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
PHYSICAL_WORM_VARIATIONS,

View File

@ -25,7 +25,7 @@ local buildWorm = swarmUtils.buildWorm
local buildUnits = swarmUtils.buildUnits
local createAttackBall = acidBall.createAttackBall
local createMeleeAttack = biterUtils.createMeleeAttack
local createCapsuleAttack = biterUtils.createCapsuleAttack
local createProjectileAttack = biterUtils.createProjectileAttack
local biterAttackSounds = biterUtils.biterAttackSounds
@ -134,7 +134,7 @@ buildUnits(
[10] = 140
},
{
{
type = "attack",
name = "startingSpeed",
[1] = 0.25,
@ -1073,11 +1073,11 @@ buildUnitSpawner(
},
function (attributes)
return createCapsuleAttack(attributes,
createCapsuleProjectile(attributes.name,
attributes,
attributes.name .. "-drone-rampant"),
spitterattackanimation(attributes.scale, attributes.tint))
return createProjectileAttack(attributes,
createCapsuleProjectile(attributes.name,
attributes,
attributes.name .. "-drone-rampant"),
spitterattackanimation(attributes.scale, attributes.tint))
end,
{
@ -1395,10 +1395,10 @@ buildWorm(
},
function (attributes)
return createCapsuleAttack(attributes,
createCapsuleProjectile(attributes.name,
attributes,
attributes.name .. "-drone-rampant"))
return createProjectileAttack(attributes,
createCapsuleProjectile(attributes.name,
attributes,
attributes.name .. "-drone-rampant"))
end,
SPAWNER_WORM_VARIATIONS,

View File

@ -24,7 +24,7 @@ local makeSticker = stickerUtils.makeSticker
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createSuicideAttack = biterUtils.createSuicideAttack
local softSmoke = "the-soft-smoke-rampant"
@ -600,6 +600,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
stickerAnimation = {
filename = "__base__/graphics/entity/slowdown-sticker/slowdown-sticker.png",
priority = "extra-high",
@ -946,7 +947,7 @@ buildWorm(
function (attributes)
makeSticker(attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes, createAttackBall(attributes))
end,
SUICIDE_WORM_VARIATIONS,

View File

@ -22,7 +22,7 @@ local TROLL_WORM_VARIATIONS = constants.TROLL_WORM_VARIATIONS
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createAttackBall = acidBall.createAttackBall
local createStreamAttack = biterUtils.createStreamAttack
local createRangedAttack = biterUtils.createRangedAttack
local createMeleeAttack = biterUtils.createMeleeAttack
local softSmoke = "the-soft-smoke-rampant"
@ -549,6 +549,7 @@ buildUnitSpawner(
explosion = "blood-explosion-small"
},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1050,7 +1051,10 @@ buildUnitSpawner(
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes,
createAttackBall(attributes),
spitterattackanimation(attributes.scale,
attributes.tint))
end,
{
@ -1072,6 +1076,7 @@ buildWorm(
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
softSmokeName = softSmoke
},
resistances = {},
@ -1367,7 +1372,7 @@ buildWorm(
},
function (attributes)
return createStreamAttack(attributes, createAttackBall(attributes))
return createRangedAttack(attributes, createAttackBall(attributes))
end,
TROLL_WORM_VARIATIONS,

View File

@ -24,7 +24,7 @@ local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local buildUnits = swarmUtils.buildUnits
local createAttackBall = acidBall.createAttackBall
local createCapsuleAttack = biterUtils.createCapsuleAttack
local createProjectileAttack = biterUtils.createProjectileAttack
local biterAttackSounds = biterUtils.biterAttackSounds
@ -49,6 +49,7 @@ buildUnits(
followsPlayer = true
},
attack = {
type = "stream",
softSmokeName = softSmoke
},
death = function (attributes)
@ -318,6 +319,7 @@ buildUnits(
attributes = {
},
attack = {
type = "stream",
softSmokeName = softSmoke
},
death = function (attributes)
@ -1061,7 +1063,7 @@ buildUnitSpawner(
},
function (attributes)
return createCapsuleAttack(attributes,
return createProjectileAttack(attributes,
createCapsuleProjectile(attributes.name,
attributes,
attributes.name .. "-drone-rampant"),
@ -1383,7 +1385,7 @@ buildWorm(
},
function (attributes)
return createCapsuleAttack(attributes,
return createProjectileAttack(attributes,
createCapsuleProjectile(attributes.name,
attributes,
attributes.name .. "-drone-rampant"))

View File

@ -1,14 +1,17 @@
-- import
local streamUtils = require("StreamUtils")
local projectileUtils = require("ProjectileUtils")
-- constants
local FORCE_OLD_PROJECTILES = settings.startup["rampant-forceOldProjectiles"].value
local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant-disallowFriendlyFire"].value
-- imported functions
local makeStream = streamUtils.makeStream
local makeProjectile = projectileUtils.makeProjectile
-- dumb acid projectiles
local AttackBall = {}
@ -50,30 +53,46 @@ function AttackBall.createAttackBall(attributes)
}
}
local template = {
name = attributes.name,
particleTint = attributes.pTint,
spineAnimationTint = attributes.sTint,
softSmokeTint = attributes.smTint,
softSmokeName = attributes.softSmokeName,
particleVertialAcceleration = attributes.particleVertialAcceleration,
particleHoizontalSpeed = attributes.particleHoizontalSpeed,
particleHoizontalSpeedDeviation = attributes.particleHoizontalSpeedDeviation,
actions = templateActions
}
return makeStream(template)
local name
local template
if (attributes.type == "stream") or FORCE_OLD_PROJECTILES then
template = {
name = attributes.name,
particleTint = attributes.pTint,
spineAnimationTint = attributes.sTint,
softSmokeName = attributes.softSmokeName,
particleVertialAcceleration = attributes.particleVertialAcceleration,
particleHoizontalSpeed = attributes.particleHoizontalSpeed,
particleHoizontalSpeedDeviation = attributes.particleHoizontalSpeedDeviation,
actions = templateActions
}
name = makeStream(template)
elseif (attributes.type == "projectile") then
template = {
aTint = attributes.pTint,
collisionMask = attributes.collisionMask,
directionOnly = true,
acceleration = attributes.acceleration,
piercingDamage = attributes.piercingDamage
}
name = makeProjectile(attributes.name,
template,
templateActions)
end
return name
end
function AttackBall.generateLegacy()
AttackBall.createAttackBall({name="acid-ball", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=4, radius=1.2})
AttackBall.createAttackBall({name="acid-ball-1", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=9, radius=1.3})
AttackBall.createAttackBall({name="acid-ball-2", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=14, radius=1.4})
AttackBall.createAttackBall({name="acid-ball-3", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=23, radius=1.5})
AttackBall.createAttackBall({name="wide-acid-ball", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=18, radius=3})
AttackBall.createAttackBall({name="acid-ball-4", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=25, radius=1.75})
AttackBall.createAttackBall({name="acid-ball-5", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=50, radius=2})
AttackBall.createAttackBall({name="acid-ball-6", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=70, radius=2.5})
AttackBall.createAttackBall({name="acid-ball", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=4, radius=1.2})
AttackBall.createAttackBall({name="acid-ball-1", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=9, radius=1.3})
AttackBall.createAttackBall({name="acid-ball-2", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=14, radius=1.4})
AttackBall.createAttackBall({name="acid-ball-3", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=23, radius=1.5})
AttackBall.createAttackBall({name="wide-acid-ball", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=18, radius=3})
AttackBall.createAttackBall({name="acid-ball-4", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=25, radius=1.75})
AttackBall.createAttackBall({name="acid-ball-5", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=50, radius=2})
AttackBall.createAttackBall({name="acid-ball-6", type="projectile", pTint={r=0, g=1, b=1, a=0.5}, sTint={r=0, g=1, b=1, a=0.5}, softSmokeName="the-soft-smoke-rampant", damage=70, radius=2.5})
end
return AttackBall

View File

@ -2,9 +2,9 @@
-- import
local streamUtils = require("StreamUtils")
local fireUtils = require("FireUtils")
local stickerUtils = require("StickerUtils")
local attackBall = require("AttackBall")
-- constants
@ -12,11 +12,12 @@ local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant-disallowFriendlyFire"].
-- imported functions
local makeStream = streamUtils.makeStream
local makeSpreadEffect = fireUtils.makeSpreadEffect
local makeFire = fireUtils.makeFire
local makeSticker = stickerUtils.makeSticker
local createAttackBall = attackBall.createAttackBall
-- module code
local softSmoke = "the-soft-smoke-rampant"
@ -24,54 +25,44 @@ local smokeGlow = "the-glow-smoke-rampant"
local smokeWithoutGlow = "the-without-glow-smoke-rampant"
local smokeFuel = "the-adding-fuel-rampant"
makeStream({
createAttackBall(
{
name = "bob-explosive-ball",
particleTint = {r=1, g=0.97, b=0.34, a=0.5},
spineAnimationTint = {r=1, g=0.97, b=0.34, a=0.5},
pTint = {r=1, g=0.97, b=0.34, a=0.5},
sTint = {r=1, g=0.97, b=0.34, a=0.5},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "small-scorchmark",
check_buildability = true
},
{
type = "create-entity",
entity_name = "big-explosion",
check_buildability = true
},
{
type = "create-entity",
entity_name = "small-fire-cloud"
}
}
}
},
{
type = "area",
radius = 3,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 25, type = "explosion" }
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-entity",
entity_name = "small-scorchmark",
check_buildability = true
},
{
type = "create-entity",
entity_name = "big-explosion",
check_buildability = true
},
{
type = "create-entity",
entity_name = "small-fire-cloud"
}
}
}
})
end,
radius = 3,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 25, type = "explosion" }
}
}
end
}
)
--
@ -91,89 +82,67 @@ local stickerName = makeSticker({
name = name,
spawnEntityName = spawnEntityName
})
makeStream({
createAttackBall(
{
name = name,
particleTint = {r=1, g=0.17, b=0.17, a=0.5},
spineAnimationTint = {r=1, g=0.43, b=0.17, a=0.5},
pTint = {r=1, g=0.17, b=0.17, a=0.5},
sTint = {r=1, g=0.43, b=0.17, a=0.5},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-fire",
entity_name = fireName
}
}
}
},
{
type = "area",
radius = 2,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-sticker",
sticker = stickerName,
},
{
type = "damage",
damage = { amount = 20, type = "fire" }
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-fire",
entity_name = fireName
}
}
}
})
end,
radius = 2,
areaEffects = function (attributes)
return
{
{
type = "create-sticker",
sticker = stickerName,
},
{
type = "damage",
damage = { amount = 20, type = "fire" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "bob-poison-ball",
particleTint = {r=0.1, g=0.5, b=1, a=0.5},
spineAnimationTint = {r=0, g=0, b=1, a=0.5},
pTint = {r=0.1, g=0.5, b=1, a=0.5},
sTint = {r=0, g=0, b=1, a=0.5},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "small-poison-cloud"
}
}
}
},
{
type = "area",
radius = 2,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 20, type = "poison" }
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-entity",
entity_name = "small-poison-cloud"
}
}
}
})
end,
radius = 2,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 20, type = "poison" }
}
}
end
}
)
-- piercing
@ -209,44 +178,45 @@ data:extend({
}
})
makeStream({
createAttackBall(
{
name = "bob-piercing-ball",
particleTint = {r=0.1, g=0.1, b=0.1, a=0.8},
spineAnimationTint = {r=0.1, g=0.1, b=0.1, a=0.8},
pTint = {r=0.1, g=0.1, b=0.1, a=0.8},
sTint = {r=0.1, g=0.1, b=0.1, a=0.8},
softSmokeName = softSmoke,
actions = {
{
type = "cluster",
cluster_count = 10,
distance = 4,
distance_deviation = 3,
action_delivery =
{
type = "projectile",
projectile = "piercing-spike-rampant",
direction_deviation = 0.6,
starting_speed = 1,
starting_speed_deviation = 0.0
}
},
{
type = "area",
radius = 3,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
type = "projectile",
pointEffects = function (attributes)
return
{
type = "nested-result",
action = {
type = "cluster",
cluster_count = 10,
distance = 4,
distance_deviation = 3,
action_delivery =
{
{
type = "damage",
damage = { amount = 30, type = "bob-pierce" }
}
type = "projectile",
projectile = "piercing-spike-rampant",
direction_deviation = 0.6,
starting_speed = 1,
starting_speed_deviation = 0.0
}
}
}
}
})
}
end,
radius = 3,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 30, type = "bob-pierce" }
}
}
end
}
)
--
@ -292,232 +262,199 @@ data:extend({
}
})
makeStream({
createAttackBall(
{
name = "bob-electric-ball",
particleTint = {r=0, g=0.1, b=1, a=1},
spineAnimationTint = {r=0, g=0.1, b=1, a=1},
pTint = {r=0, g=0.1, b=1, a=1},
sTint = {r=0, g=0.1, b=1, a=1},
softSmokeName = softSmoke,
actions = {
{
type = "cluster",
cluster_count = 5,
distance = 2,
distance_deviation = 2,
action_delivery =
{
type = "projectile",
projectile = "electric-spike-rampant",
direction_deviation = 0.6,
starting_speed = 0.65,
starting_speed_deviation = 0.0
}
},
{
type = "area",
radius = 3,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
type = "projectile",
pointEffects = function (attributes)
return
{
type = "nested-result",
action = {
type = "cluster",
cluster_count = 5,
distance = 2,
distance_deviation = 2,
action_delivery =
{
{
type = "damage",
damage = { amount = 25, type = "electric" }
}
type = "projectile",
projectile = "electric-spike-rampant",
direction_deviation = 0.6,
starting_speed = 0.65,
starting_speed_deviation = 0.0
}
}
}
}
})
}
end,
radius = 3,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 25, type = "electric" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "bob-titan-ball",
particleTint = {r=0, g=0.1, b=1, a=1},
spineAnimationTint = {r=0, g=0.1, b=1, a=1},
pTint = {r=0, g=0.1, b=1, a=1},
sTint = {r=0, g=0.1, b=1, a=1},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
type = "projectile",
pointEffects = function (attributes)
return
{
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "small-fire-cloud"
},
{
type = "create-entity",
entity_name = "big-explosion"
}
}
}
},
{
type = "area",
radius = 3,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
type = "create-entity",
entity_name = "small-fire-cloud"
},
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 10, type = "electric" }
},
{
type = "damage",
damage = { amount = 10, type = "explosion" }
},
{
type = "damage",
damage = { amount = 10, type = "fire" }
}
}
type = "create-entity",
entity_name = "big-explosion"
}
}
}
})
}
end,
radius = 3,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 10, type = "electric" }
},
{
type = "damage",
damage = { amount = 10, type = "explosion" }
},
{
type = "damage",
damage = { amount = 10, type = "fire" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "bob-behemoth-ball",
particleTint = {r=0, g=0.1, b=1, a=1},
spineAnimationTint = {r=0, g=0.1, b=1, a=1},
pTint = {r=0, g=0.1, b=1, a=1},
sTint = {r=0, g=0.1, b=1, a=1},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
type = "projectile",
pointEffects = function (attributes)
return
{
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "small-poison-cloud"
},
{
type = "create-entity",
entity_name = "big-explosion"
}
}
}
},
{
type = "area",
radius = 3,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
type = "create-entity",
entity_name = "small-poison-cloud"
},
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 15, type = "electric" }
},
{
type = "damage",
damage = { amount = 15, type = "explosion" }
},
{
type = "damage",
damage = { amount = 15, type = "fire" }
},
{
type = "damage",
damage = { amount = 15, type = "poison" }
}
}
type = "create-entity",
entity_name = "big-explosion"
}
}
}
})
}
end,
radius = 3,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 15, type = "electric" }
},
{
type = "damage",
damage = { amount = 15, type = "explosion" }
},
{
type = "damage",
damage = { amount = 15, type = "fire" }
},
{
type = "damage",
damage = { amount = 15, type = "poison" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "bob-leviathan-ball",
particleTint = {r=0, g=0.1, b=1, a=1},
spineAnimationTint = {r=0, g=0.1, b=1, a=1},
pTint = {r=0, g=0.1, b=1, a=1},
sTint = {r=0, g=0.1, b=1, a=1},
softSmokeName = softSmoke,
actions = {
{
type = "cluster",
cluster_count = 4,
distance = 3,
distance_deviation = 1,
action_delivery ={
type = "instant",
target_effects = {
type = "projectile",
pointEffects = function (attributes)
return
{
type = "nested-result",
action =
{
type = "create-entity",
entity_name = "big-explosion",
direction_deviation = 0.6,
starting_speed = 1,
starting_speed_deviation = 0.0
}
}
}
},
{
type = "direct",
action_delivery = {
type = "instant",
target_effects = {
{
type = "create-entity",
entity_name = "big-explosion",
direction_deviation = 0.6,
starting_speed = 1,
starting_speed_deviation = 0.0
}
}
}
},
{
type = "area",
radius = 3,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 15, type = "electric" }
},
{
type = "damage",
damage = { amount = 15, type = "explosion" }
},
{
type = "damage",
damage = { amount = 15, type = "fire" }
},
{
type = "damage",
damage = { amount = 15, type = "poison" }
},
{
type = "damage",
damage = { amount = 15, type = "bob-pierce" }
},
{
type = "damage",
damage = { amount = 15, type = "acid" }
type = "cluster",
cluster_count = 4,
distance = 3,
distance_deviation = 1,
action_delivery ={
type = "instant",
target_effects = {
{
type = "create-entity",
entity_name = "big-explosion",
direction_deviation = 0.6,
starting_speed = 1,
starting_speed_deviation = 0.0
}
}
}
}
}
end,
radius = 3,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 15, type = "electric" }
},
{
type = "damage",
damage = { amount = 15, type = "explosion" }
},
{
type = "damage",
damage = { amount = 15, type = "fire" }
},
{
type = "damage",
damage = { amount = 15, type = "poison" }
},
{
type = "damage",
damage = { amount = 15, type = "bob-pierce" }
},
{
type = "damage",
damage = { amount = 15, type = "acid" }
}
}
}
})
}
end
}
)

View File

@ -1,203 +1,165 @@
-- import
local streamUtils = require("StreamUtils")
-- constants
local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant-disallowFriendlyFire"].value
-- imported functions
local makeStream = streamUtils.makeStream
local attackBall = require("AttackBall")
-- module code
local softSmoke = "the-soft-smoke-rampant"
local createAttackBall = attackBall.createAttackBall
makeStream({
createAttackBall(
{
name = "ne-infected-unit-ball",
particleTint = {r=0, g=0.97, b=0.34, a=0.5},
spineAnimationTint = {r=0, g=0.1, b=1, a=1},
pTint = {r=0, g=0.97, b=0.34, a=0.5},
sTint = {r=0, g=0.1, b=1, a=1},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "unit-cluster",
trigger_created_entity = "true"
},
{
type = "create-sticker",
sticker = "slowdown-sticker",
},
{
type = "create-entity",
entity_name = "Infected-Poison-Cloud"
},
{
type = "damage",
damage = {amount = 10, type = "explosion"}
},
{
type = "damage",
damage = {amount = 24, type = "poison"}
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-entity",
entity_name = "unit-cluster",
trigger_created_entity = "true"
},
{
type = "create-sticker",
sticker = "slowdown-sticker",
},
{
type = "create-entity",
entity_name = "Infected-Poison-Cloud"
},
{
type = "damage",
damage = {amount = 10, type = "explosion"}
},
{
type = "damage",
damage = {amount = 24, type = "poison"}
}
}
}
})
end,
radius = 1,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 0, type = "explosion" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "ne-mutated-unit-ball",
particleTint = {r=0.5, g=0.7, b=0.34, a=0.5},
spineAnimationTint = {r=0.5, g=0.97, b=0.34, a=0.5},
pTint = {r=0.5, g=0.7, b=0.34, a=0.5},
sTint = {r=0.5, g=0.97, b=0.34, a=0.5},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "unit-cluster",
trigger_created_entity = "true"
},
{
type = "create-sticker",
sticker = "slowdown-sticker",
},
{
type = "create-entity",
entity_name = "acid-splash-purple"
}
}
}
},
{
type = "area",
radius = 2,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 8, type = "explosion" }
},
{
type = "damage",
damage = { amount = 18, type = "acid" }
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-entity",
entity_name = "unit-cluster",
trigger_created_entity = "true"
},
{
type = "create-sticker",
sticker = "slowdown-sticker",
},
{
type = "create-entity",
entity_name = "acid-splash-purple"
}
}
}
})
end,
radius = 2,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 8, type = "explosion" }
},
{
type = "damage",
damage = { amount = 18, type = "acid" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "ne-infected-ball",
particleTint = {r=0.5, g=0.7, b=0.34, a=0.5},
spineAnimationTint = {r=0.5, g=0.97, b=0.34, a=0.5},
pTint = {r=0.5, g=0.7, b=0.34, a=0.5},
sTint = {r=0.5, g=0.97, b=0.34, a=0.5},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "Infected-Poison-Cloud"
}
}
}
},
{
type = "area",
radius = 1.5,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 5, type = "explosion" }
},
{
type = "damage",
damage = { amount = 12, type = "poison" }
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-entity",
entity_name = "Infected-Poison-Cloud"
}
}
}
})
end,
radius = 1.5,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 5, type = "explosion" }
},
{
type = "damage",
damage = { amount = 12, type = "poison" }
}
}
end
}
)
--
makeStream({
createAttackBall(
{
name = "ne-mutated-ball",
particleTint = {r=0.5, g=0.7, b=0.34, a=0.5},
spineAnimationTint = {r=0.5, g=0.97, b=0.34, a=0.5},
pTint = {r=0.5, g=0.7, b=0.34, a=0.5},
sTint = {r=0.5, g=0.97, b=0.34, a=0.5},
softSmokeName = softSmoke,
actions = {
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "acid-splash-purple"
},
{
type = "create-entity",
entity_name = "acid-splash-mutated"
}
}
}
},
{
type = "area",
radius = 2,
force = (DISALLOW_FRIENDLY_FIRE and "enemy") or nil,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 5, type = "explosion" }
},
{
type = "damage",
damage = { amount = 12, type = "acid" }
}
}
}
type = "projectile",
pointEffects = function (attributes)
return {
{
type = "create-entity",
entity_name = "acid-splash-purple"
}
}
}
})
end,
radius = 1.5,
areaEffects = function (attributes)
return
{
{
type = "damage",
damage = { amount = 5, type = "explosion" }
},
{
type = "damage",
damage = { amount = 12, type = "acid" }
}
}
end
}
)

View File

@ -1,5 +1,7 @@
local biterFunctions = {}
local FORCE_OLD_PROJECTILES = settings.startup["rampant-forceOldProjectiles"].value
function biterFunctions.makeSpitterCorpse(attributes)
local name = attributes.name .. "-corpse-rampant"
data:extend(
@ -603,6 +605,31 @@ function biterFunctions.findTint(entity)
return entity.run_animation.layers[2].tint
end
function biterFunctions.acidSplashSounds()
return {
type = "play-sound",
sound =
{
{
filename = "__base__/sound/creatures/projectile-acid-burn-1.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-2.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-long-1.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-long-2.ogg",
volume = 0.8
}
}
}
end
function biterFunctions.createElectricAttack(attributes, electricBeam, animation)
return
{
@ -631,7 +658,7 @@ function biterFunctions.createElectricAttack(attributes, electricBeam, animation
}
end
function biterFunctions.createCapsuleAttack(attributes, capsule, animation)
function biterFunctions.createProjectileAttack(attributes, projectile, animation)
return {
type = "projectile",
ammo_category = "capsule",
@ -645,10 +672,12 @@ function biterFunctions.createCapsuleAttack(attributes, capsule, animation)
action =
{
type = "direct",
entity_flags = { "player-creation" },
action_delivery =
{
type = "projectile",
projectile = capsule or "defender-capsule",
projectile = projectile or "defender-capsule",
entity_flags = { "player-creation" },
starting_speed = attributes.startingSpeed or 0.3,
max_range = attributes.maxRange or 20
}
@ -724,7 +753,15 @@ function biterFunctions.biterAttackSounds()
}
end
function biterFunctions.createStreamAttack(attributes, fireAttack)
function biterFunctions.createRangedAttack(attributes, attack, animation)
if (attributes.type == "stream") or FORCE_OLD_PROJECTILES then
return biterFunctions.createStreamAttack(attributes, attack, animation)
elseif (attributes.type == "projectile") then
return biterFunctions.createProjectileAttack(attributes, attack, animation)
end
end
function biterFunctions.createStreamAttack(attributes, fireAttack, animation)
local attack = {
type = "stream",
ammo_category = "flamethrower",
@ -778,14 +815,10 @@ function biterFunctions.createStreamAttack(attributes, fireAttack)
volume = 0.5
}
}
}
},
animation = animation
}
if (attributes.tint ~= nil) then
attack.animation = spitterattackanimation(attributes.scale,
attributes.tint)
end
return attack
end

View File

@ -0,0 +1,42 @@
local projectileUtils = {}
function projectileUtils.makeProjectile(name, attributes, attack)
local n = name .. "-projectile-rampant"
data:extend({{
type = "projectile",
name = n,
flags = {"not-on-map"},
collision_box = {{-0.3, -1.1}, {0.3, 1.1}},
collision_mask = attributes.collisionMask or { "water-tile" },
direction_only = attributes.directionOnly,
piercing_damage = attributes.piercingDamage or 0,
acceleration = attributes.acceleration or 0.005,
action = attack,
animation =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple.png",
line_length = 5,
tint = attributes.aTint,
width = 16,
height = 18,
frame_count = 33,
priority = "high"
},
shadow =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple-shadow.png",
line_length = 5,
tint = attributes.aTint,
width = 28,
height = 16,
frame_count = 33,
priority = "high",
shift = {-0.09, 0.395}
},
rotatable = false
}})
return n
end
return projectileUtils

View File

@ -1,217 +1,246 @@
local bobsUpdates = {}
local FORCE_OLD_PROJECTILES = settings.startup["rampant-forceOldProjectiles"].value
local biterUtils = require("BiterUtils")
function bobsUpdates.useDumbProjectiles()
local turrets = data.raw["turret"];
turrets["bob-big-explosive-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
scale = 1.2
},
"bob-explosive-ball-stream-rampant")
turrets["bob-big-fire-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
scale = 1.2
},
"bob-fire-ball-stream-rampant")
turrets["bob-big-poison-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
scale = 1.2
},
"bob-poison-ball-stream-rampant")
turrets["bob-big-piercing-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
scale = 1.2
},
"bob-piercing-ball-stream-rampant")
local attackType = (FORCE_OLD_PROJECTILES and "stream") or "projectile"
turrets["bob-big-electric-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["bob-big-explosive-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 1.2
},
"bob-electric-ball-stream-rampant")
"bob-explosive-ball-" .. attackType .. "-rampant")
turrets["bob-giant-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["bob-big-fire-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 1.2
},
"bob-fire-ball-" .. attackType .. "-rampant")
turrets["bob-big-poison-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 1.2
},
"bob-poison-ball-" .. attackType .. "-rampant")
turrets["bob-big-piercing-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 1.2
},
"bob-piercing-ball-" .. attackType .. "-rampant")
turrets["bob-big-electric-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 1.2
},
"bob-electric-ball-" .. attackType .. "-rampant")
turrets["bob-giant-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 28,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 1.6
},
"acid-ball-5-stream-rampant")
"acid-ball-5-" .. attackType .. "-rampant")
turrets["bob-behemoth-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["bob-behemoth-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 30,
min_range = 3,
turn_range = 1,
fire_penalty = 0,
type = "projectile",
scale = 2
},
"acid-ball-6-stream-rampant")
"acid-ball-6-" .. attackType .. "-rampant")
local units = data.raw["unit"]
local unit = units["behemoth-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
turn_range = 1,
warmup = 30,
type = "projectile",
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"acid-ball-3-stream-rampant")
"acid-ball-3-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-big-electric-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 15,
min_range = 3,
turn_range = 1,
damageModifier = 0.6,
type = "projectile",
warmup = 30,
fire_penalty = 0,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"bob-electric-ball-stream-rampant")
"bob-electric-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-huge-explosive-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
type = "projectile",
warmup = 30,
turn_range = 1,
damageModifier = 0.8,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"bob-explosive-ball-stream-rampant")
"bob-explosive-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-huge-acid-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
turn_range = 1,
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
type = "projectile",
turn_range = 1,
warmup = 30,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"wide-acid-ball-stream-rampant")
fire_penalty = 15,
scale = biterUtils.findRunScale(unit)
},
"wide-acid-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-giant-fire-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
turn_range = 1,
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
type = "projectile",
min_range = 3,
turn_range = 1,
warmup = 30,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"bob-fire-ball-stream-rampant")
fire_penalty = 15,
scale = biterUtils.findRunScale(unit)
},
"bob-fire-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-giant-poison-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
turn_range = 1,
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
type = "projectile",
min_range = 3,
turn_range = 1,
warmup = 30,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"bob-poison-ball-stream-rampant")
fire_penalty = 15,
scale = biterUtils.findRunScale(unit)
},
"bob-poison-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-titan-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
turn_range = 1,
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
type = "projectile",
min_range = 3,
turn_range = 1,
warmup = 30,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"bob-titan-ball-stream-rampant")
fire_penalty = 15,
scale = biterUtils.findRunScale(unit)
},
"bob-titan-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-behemoth-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
turn_range = 1,
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
type = "projectile",
min_range = 3,
turn_range = 1,
warmup = 30,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"bob-behemoth-ball-stream-rampant")
fire_penalty = 15,
scale = biterUtils.findRunScale(unit)
},
"bob-behemoth-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["bob-leviathan-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
{
cooldown = 90,
range = 17,
min_range = 3,
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
type = "projectile",
range = 17,
min_range = 3,
warmup = 30,
turn_range = 1,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"bob-leviathan-ball-stream-rampant")
turn_range = 1,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit)
},
"bob-leviathan-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
end
return bobsUpdates

View File

@ -1,11 +1,15 @@
local NEUpdates = {}
local FORCE_OLD_PROJECTILES = settings.startup["rampant-forceOldProjectiles"].value
local biterUtils = require("BiterUtils")
function NEUpdates.useNEUnitLaunchers ()
local turrets = data.raw["turret"];
local attackType = (FORCE_OLD_PROJECTILES and "stream") or "projectile"
turrets["medium-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["medium-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 25,
@ -15,9 +19,9 @@ function NEUpdates.useNEUnitLaunchers ()
damageModifier = 2.5,
scale = 1.2
},
"ne-infected-unit-ball-stream-rampant")
"ne-infected-unit-ball-" .. attackType .. "-rampant")
turrets["big-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["big-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 30,
@ -27,18 +31,20 @@ function NEUpdates.useNEUnitLaunchers ()
damageModifier = 3,
scale = 1.6
},
"ne-mutated-unit-ball-stream-rampant")
"ne-mutated-unit-ball-" .. attackType .. "-rampant")
end
function NEUpdates.useDumbProjectiles()
local turrets = data.raw["turret"];
local attackType = (FORCE_OLD_PROJECTILES and "stream") or "projectile"
local turret = turrets["small-worm-turret"]
turret["attack_parameters"].range = 19
turret = turrets["medium-worm-turret"]
turret["attack_parameters"].range = 22
turret["attack_parameters"] = biterUtils.createStreamAttack(
turret["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 25,
@ -48,11 +54,11 @@ function NEUpdates.useDumbProjectiles()
damageModifier = 4.5,
scale = 1.2
},
"ne-infected-ball-stream-rampant")
"ne-infected-ball-" .. attackType .. "-rampant")
turret = turrets["big-worm-turret"]
turret["attack_parameters"].range = 27
turret["attack_parameters"] = biterUtils.createStreamAttack(
turret["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 30,
@ -62,12 +68,12 @@ function NEUpdates.useDumbProjectiles()
damageModifier = 5.5,
scale = 1.6
},
"ne-mutated-ball-stream-rampant")
"ne-mutated-ball-" .. attackType .. "-rampant")
local units = data.raw["unit"]
local unit = units["small-spitter-Mk2"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 13,
@ -79,10 +85,10 @@ function NEUpdates.useDumbProjectiles()
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"ne-infected-ball-stream-rampant")
"ne-infected-ball-" .. attackType .. "-rampant")
unit = units["small-spitter-Mk3"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 13,
@ -94,11 +100,11 @@ function NEUpdates.useDumbProjectiles()
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"ne-mutated-ball-stream-rampant")
"ne-mutated-ball-" .. attackType .. "-rampant")
unit = units["medium-spitter-Mk2"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 14,
@ -110,10 +116,10 @@ function NEUpdates.useDumbProjectiles()
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"ne-infected-ball-stream-rampant")
"ne-infected-ball-" .. attackType .. "-rampant")
unit = units["medium-spitter-Mk3"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 14,
@ -125,10 +131,10 @@ function NEUpdates.useDumbProjectiles()
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"ne-mutated-ball-stream-rampant")
"ne-mutated-ball-" .. attackType .. "-rampant")
unit = units["big-spitter-Mk2"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 15,
@ -140,11 +146,11 @@ function NEUpdates.useDumbProjectiles()
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"ne-infected-ball-stream-rampant")
"ne-infected-ball-" .. attackType .. "-rampant")
unit = units["big-spitter-Mk3"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 15,
@ -156,7 +162,7 @@ function NEUpdates.useDumbProjectiles()
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
},
"ne-mutated-ball-stream-rampant")
"ne-mutated-ball-" .. attackType .. "-rampant")
end

View File

@ -1,103 +1,118 @@
local vanillaUpdates = {}
local FORCE_OLD_PROJECTILES = settings.startup["rampant-forceOldProjectiles"].value
local biterUtils = require("BiterUtils")
function vanillaUpdates.useDumbProjectiles()
local turrets = data.raw["turret"];
turrets["small-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
local attackType = (FORCE_OLD_PROJECTILES and "stream") or "projectile"
turrets["small-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 21,
min_range = 5,
turn_range = 1,
type = "projectile",
fire_penalty = 0,
damageModifier = 0.9,
scale = 0.8
},
"acid-ball-2-stream-rampant")
"acid-ball-2-" .. attackType .. "-rampant")
turrets["medium-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["medium-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 25,
min_range = 3,
turn_range = 1,
type = "projectile",
fire_penalty = 0,
damageModifier = 0.87,
scale = 1
},
"acid-ball-3-stream-rampant")
"acid-ball-3-" .. attackType .. "-rampant")
turrets["big-worm-turret"]["attack_parameters"] = biterUtils.createStreamAttack(
turrets["big-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 60,
range = 26,
min_range = 3,
type = "projectile",
turn_range = 1,
fire_penalty = 0,
scale = 1.2
},
"acid-ball-4-stream-rampant")
"acid-ball-4-" .. attackType .. "-rampant")
local units = data.raw["unit"];
local unit = units["small-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 100,
range = 13,
warmup = 30,
min_range = 3,
turn_range = 1,
type = "projectile",
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"acid-ball-stream-rampant")
"acid-ball-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["medium-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 95,
range = 14,
min_range = 3,
type = "projectile",
warmup = 30,
turn_range = 1,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"acid-ball-1-stream-rampant")
"acid-ball-1-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["big-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 15,
min_range = 3,
type = "projectile",
warmup = 30,
turn_range = 1,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"acid-ball-2-stream-rampant")
"acid-ball-2-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
unit = units["behemoth-spitter"]
unit["attack_parameters"] = biterUtils.createStreamAttack(
unit["attack_parameters"] = biterUtils.createRangedAttack(
{
cooldown = 90,
range = 16,
min_range = 3,
warmup = 30,
type = "projectile",
turn_range = 1,
fire_penalty = 15,
scale = biterUtils.findRunScale(unit),
tint = biterUtils.findTint(unit)
scale = biterUtils.findRunScale(unit)
},
"acid-ball-3-stream-rampant")
"acid-ball-3-" .. attackType .. "-rampant",
spitterattackanimation(biterUtils.findRunScale(unit),
biterUtils.findTint(unit)))
end
return vanillaUpdates

View File

@ -18,6 +18,15 @@ data:extend({
order = "a[modifier]-b[projectiles]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-forceOldProjectiles",
setting_type = "startup",
default_value = false,
order = "a[modifier]-b[projectiles]",
per_user = false
},
{
type = "bool-setting",