mirror of
https://github.com/veden/Rampant.git
synced 2025-01-28 03:29:34 +02:00
see changelog
This commit is contained in:
parent
05ca2126e9
commit
8cede89337
19
Upgrade.lua
19
Upgrade.lua
@ -7,6 +7,8 @@ local mathUtils = require("libs/MathUtils")
|
||||
|
||||
-- constants
|
||||
|
||||
local CONVERSION_TABLE = constants.CONVERSION_TABLE
|
||||
|
||||
local BASE_AI_STATE_DORMANT = constants.BASE_AI_STATE_DORMANT
|
||||
|
||||
local INTERVAL_LOGIC = constants.INTERVAL_LOGIC
|
||||
@ -269,7 +271,7 @@ function upgrade.attempt(natives, setNewSurface)
|
||||
|
||||
global.version = 95
|
||||
end
|
||||
if (global.version < 99) then
|
||||
if (global.version < 100) then
|
||||
|
||||
game.map_settings.unit_group.min_group_radius = constants.UNIT_GROUP_MAX_RADIUS * 0.5
|
||||
game.map_settings.unit_group.max_group_radius = constants.UNIT_GROUP_MAX_RADIUS
|
||||
@ -291,6 +293,19 @@ function upgrade.attempt(natives, setNewSurface)
|
||||
end
|
||||
end
|
||||
|
||||
for i=#natives.bases,1,-1 do
|
||||
local base = natives.bases[i]
|
||||
|
||||
for x=1,#base.alignment do
|
||||
local c = CONVERSION_TABLE[base.alignment[x]]
|
||||
if (x == 1) and not c then
|
||||
base.alignment = {}
|
||||
else
|
||||
base.alignment[x] = c
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
natives.ENEMY_VARIATIONS = settings.startup["rampant-newEnemyVariations"].value
|
||||
|
||||
natives.nextChunkSort = nil
|
||||
@ -321,7 +336,7 @@ function upgrade.attempt(natives, setNewSurface)
|
||||
if not setNewSurface then
|
||||
game.surfaces[natives.activeSurface].print("Rampant - Version 0.17.29")
|
||||
end
|
||||
global.version = 99
|
||||
global.version = 100
|
||||
end
|
||||
|
||||
return starting ~= global.version, natives
|
||||
|
@ -1,6 +1,6 @@
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 0.17.29
|
||||
Date: 07. 12. 2019
|
||||
Date: 15. 12. 2019
|
||||
Optional Graphics:
|
||||
- New Hi and Low resolution graphics for Troll and Physical Factions biters, armored biters (Thanks to CybranM, requires downloading separate mod Armoured Biters)
|
||||
Features:
|
||||
@ -12,7 +12,11 @@ Date: 07. 12. 2019
|
||||
- Collision checker for squads and squad movement from a container to a unit
|
||||
- Attack waves should generate more localized squad formations, so that biters appear to attack from all sides less
|
||||
- New AI temperament system
|
||||
- Spawner pollution coverage detection
|
||||
- Acid biter melee attack now leaves acid puddle
|
||||
Tweaks:
|
||||
- Reduced size of new enemy lower tiers
|
||||
- Onslaught AI setting and aiAggressiveness setting removed
|
||||
- Increased minimum unit count for a retreat from 3 to 6
|
||||
- Biters and Spitters now are affected by tile modifiers
|
||||
- Nerfed inferno spitter fire damage and duration to reasonable levels
|
||||
@ -25,10 +29,10 @@ Date: 07. 12. 2019
|
||||
- Reduced sticker damage and duration everywhere
|
||||
- Switched general spit projectile from direction only to positional targeting
|
||||
- Added spit projectile stickers to tooltip
|
||||
- Default for new enemies spit projectile stickers no longer do damage only slow
|
||||
- Default for new enemies spit projectile stickers damage reduced by half
|
||||
- Spawner spitter and worm eggs now damage the immediate area around the egg
|
||||
- Acid pools no longer cause friendly fire
|
||||
- Prioritize settler group creation of attack squads
|
||||
- Prioritize settler group creation over attack squads
|
||||
- Biter faction color should match map color now
|
||||
- Increased unit spawner spawning time by 3x
|
||||
Optimizations:
|
||||
@ -37,6 +41,7 @@ Date: 07. 12. 2019
|
||||
- Regrouping squads and builder clean up put onto separate intervals
|
||||
- Reusing chunk scanner tables
|
||||
Bugfixes:
|
||||
- Fixed spawner egg and wasp size being larger than intended
|
||||
- Fixed old savegames penalties having nil chunk index
|
||||
- Fixed that mining a resource by hand unregister all remaining resource on a tile
|
||||
- Fixed pheromone dispersal not following pathing restrictions
|
||||
|
22
control.lua
22
control.lua
@ -476,16 +476,12 @@ local function onModSettingsChange(event)
|
||||
|
||||
upgrade.compareTable(natives, "deadZoneFrequency", settings.global["rampant-deadZoneFrequency"].value)
|
||||
upgrade.compareTable(natives, "raidAIToggle", settings.global["rampant-raidAIToggle"].value)
|
||||
upgrade.compareTable(natives, "siegeAIToggle", settings.global["rampant-siegeAIToggle"].value)
|
||||
upgrade.compareTable(natives, "onslaughtAIToggle", settings.global["rampant-onslaughtAIToggle"].value)
|
||||
|
||||
upgrade.compareTable(natives, "attackWaveMaxSize", settings.global["rampant-attackWaveMaxSize"].value)
|
||||
upgrade.compareTable(natives, "attackPlayerThreshold", settings.global["rampant-attackPlayerThreshold"].value)
|
||||
upgrade.compareTable(natives, "aiNocturnalMode", settings.global["rampant-permanentNocturnal"].value)
|
||||
upgrade.compareTable(natives, "aiPointsScaler", settings.global["rampant-aiPointsScaler"].value)
|
||||
|
||||
upgrade.compareTable(natives, "aiAggressiveness", settings.global["rampant-aiAggressiveness"].value)
|
||||
|
||||
upgrade.compareTable(natives, "newEnemies", settings.startup["rampant-newEnemies"].value)
|
||||
upgrade.compareTable(natives, "enemySeed", settings.startup["rampant-enemySeed"].value)
|
||||
|
||||
@ -557,10 +553,9 @@ local function prepWorld(rebuild, surfaceIndex)
|
||||
end
|
||||
end
|
||||
|
||||
-- UNCOMMENT ME
|
||||
-- if natives.newEnemies and rebuild then
|
||||
-- game.forces.enemy.kill_all_units()
|
||||
-- end
|
||||
if natives.newEnemies and rebuild then
|
||||
game.forces.enemy.kill_all_units()
|
||||
end
|
||||
|
||||
processPendingChunks(map, surface, pendingChunks, tick, rebuild)
|
||||
end
|
||||
@ -619,10 +614,9 @@ script.on_nth_tick(INTERVAL_LOGIC,
|
||||
end
|
||||
end)
|
||||
|
||||
script.on_nth_tick(-- INTERVAL_TEMPERAMENT
|
||||
61,
|
||||
function (event)
|
||||
temperamentPlanner(natives)
|
||||
script.on_nth_tick(INTERVAL_TEMPERAMENT,
|
||||
function (event)
|
||||
temperamentPlanner(natives)
|
||||
end)
|
||||
|
||||
script.on_nth_tick(INTERVAL_SQUAD,
|
||||
@ -835,7 +829,7 @@ local function onEnemyBaseBuild(event)
|
||||
true)
|
||||
end
|
||||
if entity and entity.valid then
|
||||
event.entity = registerEnemyBaseStructure(map, entity, base)
|
||||
event.entity = registerEnemyBaseStructure(map, entity, base, surface)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -962,7 +956,7 @@ local function onEntitySpawned(event)
|
||||
natives,
|
||||
disPos)
|
||||
if entity and entity.valid then
|
||||
event.entity = registerEnemyBaseStructure(map, entity, base)
|
||||
event.entity = registerEnemyBaseStructure(map, entity, base, surface)
|
||||
end
|
||||
else
|
||||
entity.destroy()
|
||||
|
@ -6,5 +6,5 @@
|
||||
"author" : "Veden",
|
||||
"homepage" : "https://forums.factorio.com/viewtopic.php?f=94&t=31445",
|
||||
"description" : "Improves the enemies tactics by using potential fields/pheromones allowing probing of defenses, retreats, reinforcements, counterattacking, breaching, raids, rallying death cry, and player hunting. Uses blockable biter projectiles. Adds new Enemies (disabled by default). Can completely replace the vanilla AI. Difficulty setting in mod options menu.",
|
||||
"dependencies" : ["base >= 0.17.12", "? bobenemies", "? Natural_Evolution_Enemies >= 0.17.0", "? Clockwork", "? Orbital Ion Cannon", "? RampantArsenal"]
|
||||
"dependencies" : ["base >= 0.17.12", "? bobenemies", "? Natural_Evolution_Enemies >= 0.17.0", "? Clockwork", "? Orbital Ion Cannon", "? RampantArsenal", "? ArmouredBiters"]
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ local mMin = math.min
|
||||
|
||||
function aiPlanning.planning(natives, evolution_factor, tick)
|
||||
natives.evolutionLevel = evolution_factor
|
||||
|
||||
|
||||
local maxPoints = AI_MAX_POINTS * evolution_factor
|
||||
|
||||
if not natives.ranIncompatibleMessage and natives.newEnemies and (game.active_mods["bobenemies"] or game.active_mods["Natural_Evolution_Enemies"]) then
|
||||
@ -95,7 +95,7 @@ function aiPlanning.planning(natives, evolution_factor, tick)
|
||||
natives.baseIncrement = points
|
||||
|
||||
local currentPoints = natives.points
|
||||
|
||||
|
||||
if (currentPoints < maxPoints) then
|
||||
natives.points = currentPoints + points
|
||||
end
|
||||
@ -104,88 +104,146 @@ function aiPlanning.planning(natives, evolution_factor, tick)
|
||||
natives.points = maxOverflowPoints
|
||||
end
|
||||
|
||||
-- if (natives.temperamentTick <= tick) then
|
||||
-- natives.temperament = mRandom()
|
||||
-- natives.temperamentTick = randomTickEvent(tick, AI_MIN_TEMPERAMENT_DURATION, AI_MAX_TEMPERAMENT_DURATION)
|
||||
-- end
|
||||
|
||||
if (natives.stateTick <= tick) then
|
||||
-- local roll = mRandom() * mMax(1 - evolution_factor, 0.15) * natives.aiAggressiveness
|
||||
-- if (roll > natives.temperament) then
|
||||
-- natives.state = AI_STATE_PEACEFUL
|
||||
-- else
|
||||
-- roll = mRandom()
|
||||
-- if (roll < 0.65) then
|
||||
-- natives.state = AI_STATE_AGGRESSIVE
|
||||
-- natives.canAttackTick = randomTickEvent(tick,
|
||||
-- AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
-- AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
-- elseif ((natives.enabledMigration) and (natives.expansion) and (roll < 0.75)) then
|
||||
-- natives.state = AI_STATE_MIGRATING
|
||||
-- elseif ((natives.siegeAIToggle) and (natives.expansion) and (roll < 0.80)) then
|
||||
-- natives.state = AI_STATE_SIEGE
|
||||
-- elseif ((natives.onslaughtAIToggle) and (roll < 0.85)) then
|
||||
-- natives.state = AI_STATE_ONSLAUGHT
|
||||
-- elseif ((natives.raidAIToggle) and (evolution_factor >= 0.04)) then
|
||||
-- natives.state = AI_STATE_RAIDING
|
||||
|
||||
-- natives.points = natives.points + 1000
|
||||
-- else
|
||||
-- natives.state = AI_STATE_AGGRESSIVE
|
||||
-- end
|
||||
-- end
|
||||
|
||||
local roll = mRandom()
|
||||
if (natives.temperament < 1) then -- 0 - 0.05
|
||||
if natives.expansion then
|
||||
if (natives.temperament < 0.05) then -- 0 - 0.05
|
||||
if natives.enabledMigration then
|
||||
natives.state = AI_STATE_SIEGE
|
||||
else
|
||||
if natives.raidAIToggle then
|
||||
natives.state = AI_STATE_RAIDING
|
||||
if (roll < 0.85) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
else
|
||||
natives.state = AI_STATE_RAIDING
|
||||
end
|
||||
else
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
end
|
||||
end
|
||||
elseif (natives.temperament < 0.20) then -- 0.05 - 0.2
|
||||
if (roll < 0.2) then
|
||||
natives.state = AI_STATE_SIEGE
|
||||
elseif (roll < 0.8) then
|
||||
natives.state = AI_STATE_MIGRATING
|
||||
if (natives.enabledMigration) then
|
||||
if (roll < 0.4) then
|
||||
natives.state = AI_STATE_SIEGE
|
||||
else
|
||||
natives.state = AI_STATE_MIGRATING
|
||||
end
|
||||
else
|
||||
if natives.raidAIToggle then
|
||||
if (roll < 0.95) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
else
|
||||
natives.state = AI_STATE_RAIDING
|
||||
end
|
||||
else
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
end
|
||||
end
|
||||
elseif (natives.temperament < 0.4) then -- 0.2 - 0.4
|
||||
if (roll < 0.2) then
|
||||
if (natives.enabledMigration) then
|
||||
if (roll < 0.2) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
elseif (roll < 0.8) then
|
||||
natives.state = AI_STATE_MIGRATING
|
||||
else
|
||||
natives.state = AI_STATE_PEACEFUL
|
||||
end
|
||||
else
|
||||
if (roll < 0.6) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
else
|
||||
natives.state = AI_STATE_PEACEFUL
|
||||
end
|
||||
end
|
||||
elseif (natives.temperament < 0.6) then -- 0.4 - 0.6
|
||||
if (roll < 0.5) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
elseif (roll < 0.8) then
|
||||
natives.state = AI_STATE_MIGRATING
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
else
|
||||
natives.state = AI_STATE_PEACEFUL
|
||||
end
|
||||
elseif (natives.temperament < 0.6) then -- 0.4 - 0.6
|
||||
if (roll < 0.6) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
else
|
||||
natives.state = AI_STATE_PEACEFUL
|
||||
end
|
||||
elseif (natives.temperament < 0.8) then -- 0.6 - 0.8
|
||||
if (roll < 0.6) then
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
elseif (roll < 0.8) then
|
||||
natives.state = AI_STATE_ONSLAUGHT
|
||||
else
|
||||
natives.state = AI_STATE_PEACEFUL
|
||||
end
|
||||
end
|
||||
else -- 0.8 - 1
|
||||
if (roll < 0.2) then
|
||||
natives.state = AI_STATE_SIEGE
|
||||
elseif (roll < 0.8) then
|
||||
natives.state = AI_STATE_ONSLAUGHT
|
||||
elseif (roll < 0.9) then
|
||||
natives.state = AI_STATE_RAIDING
|
||||
if (natives.enabledMigration and natives.raidAIToggle) then
|
||||
if (roll < 0.3) then
|
||||
natives.state = AI_STATE_SIEGE
|
||||
elseif (roll < 0.6) then
|
||||
natives.state = AI_STATE_ONSLAUGHT
|
||||
elseif (roll < 0.8) then
|
||||
natives.state = AI_STATE_RAIDING
|
||||
else
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
end
|
||||
elseif (natives.enabledMigration) then
|
||||
if (roll < 0.3) then
|
||||
natives.state = AI_STATE_SIEGE
|
||||
elseif (roll < 0.7) then
|
||||
natives.state = AI_STATE_ONSLAUGHT
|
||||
else
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
end
|
||||
elseif (natives.raidAIToggle) then
|
||||
if (roll < 0.4) then
|
||||
natives.state = AI_STATE_ONSLAUGHT
|
||||
elseif (roll < 0.7) then
|
||||
natives.state = AI_STATE_RAIDING
|
||||
else
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
end
|
||||
else
|
||||
if (roll < 0.6) then
|
||||
natives.state = AI_STATE_ONSLAUGHT
|
||||
else
|
||||
natives.state = AI_STATE_AGGRESSIVE
|
||||
natives.canAttackTick = randomTickEvent(tick,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION,
|
||||
AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("changing state", natives.state)
|
||||
|
||||
-- print("changing state", natives.state)
|
||||
|
||||
natives.stateTick = randomTickEvent(tick, AI_MIN_STATE_DURATION, AI_MAX_STATE_DURATION)
|
||||
end
|
||||
|
||||
@ -207,87 +265,75 @@ function aiPlanning.temperamentPlanner(natives)
|
||||
local delta = 0
|
||||
|
||||
if activeNests > 0 then
|
||||
local val = (1 * activeNests)
|
||||
local val = (1.5 * activeNests)
|
||||
delta = delta + val
|
||||
|
||||
if destroyPlayerBuildings > 0 then
|
||||
delta = delta - (1 * destroyPlayerBuildings)
|
||||
else
|
||||
delta = delta + val
|
||||
delta = delta - (200 * destroyPlayerBuildings)
|
||||
end
|
||||
|
||||
else
|
||||
delta = delta - 1
|
||||
|
||||
if destroyPlayerBuildings > 0 then
|
||||
delta = delta - (1 * destroyPlayerBuildings)
|
||||
else
|
||||
delta = delta - 1
|
||||
if (currentTemperament > 0) then
|
||||
delta = delta - (200 * destroyPlayerBuildings)
|
||||
else
|
||||
delta = delta + (200 * destroyPlayerBuildings)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if activeRaidNests > 0 then
|
||||
local val = (0.01 * activeRaidNests)
|
||||
local val = (0.008 * activeRaidNests)
|
||||
delta = delta - val
|
||||
else
|
||||
delta = delta - 1
|
||||
delta = delta - 0.5
|
||||
end
|
||||
|
||||
if lostEnemyUnits > 0 then
|
||||
local val = (0.001 * lostEnemyUnits)
|
||||
local val = (0.04 * lostEnemyUnits)
|
||||
if (currentTemperament > 0) then
|
||||
delta = delta - val
|
||||
else
|
||||
delta = delta + val
|
||||
end
|
||||
else
|
||||
if (currentTemperament < 0) then
|
||||
delta = delta - 1
|
||||
else
|
||||
delta = delta + 1
|
||||
end
|
||||
end
|
||||
|
||||
if lostEnemyBuilding > 0 then
|
||||
delta = delta + (1 * lostEnemyBuilding)
|
||||
else
|
||||
if (currentTemperament < 0) then
|
||||
delta = delta - 1
|
||||
else
|
||||
delta = delta + 1
|
||||
end
|
||||
delta = delta + (20 * lostEnemyBuilding)
|
||||
end
|
||||
|
||||
if (builtEnemyBuilding > 0) then
|
||||
local val = (1 * builtEnemyBuilding)
|
||||
local val = (50 * builtEnemyBuilding)
|
||||
if (currentTemperament > 0) then
|
||||
delta = delta - val
|
||||
else
|
||||
delta = delta + val
|
||||
end
|
||||
else
|
||||
delta = delta - 1
|
||||
delta = delta - 0.5
|
||||
end
|
||||
|
||||
if (rocketLaunched > 0) then
|
||||
local val = (1 * rocketLaunched)
|
||||
local val = (100 * rocketLaunched)
|
||||
delta = delta + val
|
||||
end
|
||||
|
||||
if (ionCannonBlasts > 0) then
|
||||
local val = (1 * ionCannonBlasts)
|
||||
local val = (50 * ionCannonBlasts)
|
||||
delta = delta + val
|
||||
end
|
||||
|
||||
if (artilleryBlasts > 0) then
|
||||
local val = (1 * artilleryBlasts)
|
||||
local val = (50 * artilleryBlasts)
|
||||
delta = delta + val
|
||||
end
|
||||
|
||||
print(natives.activeNests, natives.activeRaidNests, natives.destroyPlayerBuildings, natives.lostEnemyUnits,
|
||||
natives.lostEnemyBuilding, natives.rocketLaunched, natives.builtEnemyBuilding, natives.ionCannonBlasts,
|
||||
natives.artilleryBlasts)
|
||||
|
||||
-- print(natives.activeNests, natives.activeRaidNests, natives.destroyPlayerBuildings, natives.lostEnemyUnits,
|
||||
-- natives.lostEnemyBuilding, natives.rocketLaunched, natives.builtEnemyBuilding, natives.ionCannonBlasts,
|
||||
-- natives.artilleryBlasts)
|
||||
|
||||
natives.destroyPlayerBuildings = 0
|
||||
natives.lostEnemyUnits = 0
|
||||
natives.lostEnemyBuilding = 0
|
||||
@ -296,10 +342,10 @@ function aiPlanning.temperamentPlanner(natives)
|
||||
natives.ionCannonBlasts = 0
|
||||
natives.artilleryBlasts = 0
|
||||
|
||||
natives.temperamentScore = mMin(1000, mMax(-1000, currentTemperament + delta))
|
||||
natives.temperament = (natives.temperamentScore + 1000) * 0.0005
|
||||
print(natives.temperament, natives.temperamentScore)
|
||||
print("--")
|
||||
natives.temperamentScore = mMin(10000, mMax(-10000, currentTemperament + (natives.evolutionLevel * delta)))
|
||||
natives.temperament = ((natives.temperamentScore + 10000) * 0.00005)
|
||||
-- print(natives.temperament, natives.temperamentScore)
|
||||
-- print("--")
|
||||
end
|
||||
|
||||
aiPlanningG = aiPlanning
|
||||
|
@ -82,7 +82,7 @@ local mRandom = math.random
|
||||
|
||||
local function evoToTier(natives, evolutionFactor)
|
||||
local v
|
||||
for i=10,1,-1 do
|
||||
for i=10,1,-1 do
|
||||
if natives.evoToTierMapping[i] <= evolutionFactor then
|
||||
v = i
|
||||
if mRandom() <= 0.65 then
|
||||
@ -136,40 +136,48 @@ end
|
||||
local function initialEntityUpgrade(baseAlignment, tier, maxTier, natives, useHiveType)
|
||||
local evolutionTable = natives.buildingEvolveLookup
|
||||
local entity
|
||||
|
||||
for t=maxTier,tier,-1 do
|
||||
local upgrades = evolutionTable[baseAlignment][t]
|
||||
|
||||
if upgrades then
|
||||
if useHiveType then
|
||||
for ui=1,#upgrades do
|
||||
local upgrade = upgrades[ui]
|
||||
if upgrade[3] == useHiveType then
|
||||
entity = upgrade[2][mRandom(#upgrade[2])]
|
||||
if mRandom() < 0.45 then
|
||||
break
|
||||
end
|
||||
end
|
||||
local useTier
|
||||
|
||||
local tierRoll = mRandom()
|
||||
if (tierRoll < 0.4) then
|
||||
useTier = maxTier
|
||||
elseif (tierRoll < 0.7) then
|
||||
useTier = mMax(maxTier - 1, tier)
|
||||
elseif (tierRoll < 0.9) then
|
||||
useTier = mMax(maxTier - 2, tier)
|
||||
else
|
||||
useTier = mMax(maxTier - 3, tier)
|
||||
end
|
||||
|
||||
local upgrades = evolutionTable[baseAlignment][useTier]
|
||||
|
||||
if upgrades then
|
||||
if useHiveType then
|
||||
for ui=1,#upgrades do
|
||||
local upgrade = upgrades[ui]
|
||||
if upgrade[3] == useHiveType then
|
||||
entity = upgrade[2][mRandom(#upgrade[2])]
|
||||
break
|
||||
end
|
||||
else
|
||||
local roll = mRandom()
|
||||
end
|
||||
else
|
||||
local roll = mRandom()
|
||||
local initial = roll
|
||||
|
||||
for ui=1,#upgrades do
|
||||
local upgrade = upgrades[ui]
|
||||
for ui=1,#upgrades do
|
||||
local upgrade = upgrades[ui]
|
||||
|
||||
roll = roll - upgrade[1]
|
||||
roll = roll - upgrade[1]
|
||||
|
||||
if (roll <= 0) then
|
||||
entity = upgrade[2][mRandom(#upgrade[2])]
|
||||
if mRandom() < 0.45 then
|
||||
break
|
||||
end
|
||||
end
|
||||
if (roll <= 0) then
|
||||
entity = upgrade[2][mRandom(#upgrade[2])]
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return entity
|
||||
end
|
||||
|
||||
@ -181,9 +189,9 @@ local function entityUpgrade(baseAlignment, tier, maxTier, originalEntity, nativ
|
||||
for t=maxTier,tier,-1 do
|
||||
local upgrades = evolutionTable[baseAlignment][t][buildingHiveTypeLookup[originalEntity.name]]
|
||||
|
||||
if upgrades then
|
||||
if upgrades and (#upgrades > 0) then
|
||||
entity = upgrades[mRandom(#upgrades)]
|
||||
if mRandom() < 0.45 then
|
||||
if mRandom() < 0.55 then
|
||||
break
|
||||
end
|
||||
end
|
||||
@ -204,15 +212,15 @@ local function findEntityUpgrade(baseAlignment, currentEvo, evoIndex, originalEn
|
||||
if (tier > maxTier) then
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
if evolve then
|
||||
local chunk = getChunkByPosition(natives.map, originalEntity.position)
|
||||
local makeHive = (chunk ~= SENTINEL_IMPASSABLE_CHUNK) and (getResourceGenerator(natives.map, chunk) > 0) and (mRandom() < 0.3)
|
||||
local makeHive = (chunk ~= SENTINEL_IMPASSABLE_CHUNK) and (getResourceGenerator(natives.map, chunk) > 0) and (mRandom() < 0.2)
|
||||
|
||||
return initialEntityUpgrade(baseAlignment, tier, maxTier, natives, (makeHive and "hive"))
|
||||
else
|
||||
return entityUpgrade(baseAlignment, tier, maxTier, originalEntity, natives)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function findBaseInitialAlignment(natives, evoIndex)
|
||||
@ -266,8 +274,8 @@ function baseUtils.upgradeEntity(entity, surface, baseAlignment, natives, disPos
|
||||
evoIndex,
|
||||
entity,
|
||||
natives,
|
||||
evolve)
|
||||
|
||||
evolve)
|
||||
|
||||
if spawnerName then
|
||||
entity.destroy()
|
||||
local name = natives.buildingSpaceLookup[spawnerName] or spawnerName
|
||||
@ -490,7 +498,7 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
|
||||
to pick given an evolution level.
|
||||
|
||||
evolutionTable is a table that given a faction allows the selection of a building
|
||||
type based on the propabilities given. Once the the building type is selected given
|
||||
type based on the propabilities given. Once the the building type is selected given
|
||||
a faction, then the evolution decides what level of building to select
|
||||
--]]
|
||||
local factionAcceptRate = faction.acceptRate
|
||||
@ -583,6 +591,7 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
baseUtilsG = baseUtils
|
||||
|
@ -5,13 +5,23 @@ local chunkPropertyUtils = {}
|
||||
|
||||
local constants = require("Constants")
|
||||
|
||||
local tRemove = table.remove
|
||||
-- constants
|
||||
|
||||
-- imported functions
|
||||
local RAIDING_MINIMUM_BASE_THRESHOLD = constants.RAIDING_MINIMUM_BASE_THRESHOLD
|
||||
|
||||
local PLAYER_PHEROMONE = constants.PLAYER_PHEROMONE
|
||||
local BASE_PHEROMONE = constants.BASE_PHEROMONE
|
||||
|
||||
local MOVEMENT_GENERATOR_PERSISTANCE = constants.MOVEMENT_GENERATOR_PERSISTANCE
|
||||
local CHUNK_ALL_DIRECTIONS = constants.CHUNK_ALL_DIRECTIONS
|
||||
|
||||
-- imported functions
|
||||
|
||||
local tRemove = table.remove
|
||||
|
||||
local mMin = math.min
|
||||
local mMax = math.max
|
||||
|
||||
-- module code
|
||||
|
||||
function chunkPropertyUtils.getNestCount(map, chunk)
|
||||
@ -271,5 +281,59 @@ function chunkPropertyUtils.addPlayerBaseGenerator(map, chunk, playerGenerator)
|
||||
map.chunkToPlayerBase[chunk] = (map.chunkToPlayerBase[chunk] or 0) + playerGenerator
|
||||
end
|
||||
|
||||
function chunkPropertyUtils.processNestActiveness(map, chunk, natives, surface)
|
||||
local nests = chunkPropertyUtils.getNestCount(map, chunk)
|
||||
if (nests > 0) then
|
||||
local activeness = chunkPropertyUtils.getNestActiveness(map, chunk)
|
||||
local raidActiveness = chunkPropertyUtils.getRaidNestActiveness(map, chunk)
|
||||
if natives.attackUsePlayer and (chunk[PLAYER_PHEROMONE] > natives.attackPlayerThreshold) then
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
elseif (chunk[BASE_PHEROMONE] > 0) then
|
||||
local position = map.position
|
||||
if (surface.get_pollution(chunk) > 0) then
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
else
|
||||
local x = chunk.x
|
||||
local y = chunk.y
|
||||
position.x = x + 32
|
||||
position.y = y
|
||||
if (surface.get_pollution(position) > 0) then
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
else
|
||||
position.x = x - 32
|
||||
if (surface.get_pollution(position) > 0) then
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
else
|
||||
position.x = x
|
||||
position.y = y - 32
|
||||
if (surface.get_pollution(position) > 0) then
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
else
|
||||
position.y = y + 32
|
||||
if (surface.get_pollution(position) > 0) then
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
else
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, activeness - 2)
|
||||
if (chunk[BASE_PHEROMONE] > RAIDING_MINIMUM_BASE_THRESHOLD) then
|
||||
chunkPropertyUtils.setRaidNestActiveness(map, chunk, mMin(raidActiveness + 3, 20))
|
||||
else
|
||||
chunkPropertyUtils.setRaidNestActiveness(map, chunk, raidActiveness - 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, activeness - 5)
|
||||
chunkPropertyUtils.setRaidNestActiveness(map, chunk, raidActiveness - 5)
|
||||
end
|
||||
else
|
||||
chunkPropertyUtils.setNestActiveness(map, chunk, 0)
|
||||
chunkPropertyUtils.setRaidNestActiveness(map, chunk, 0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
chunkPropertyUtilsG = chunkPropertyUtils
|
||||
return chunkPropertyUtils
|
||||
|
@ -72,6 +72,8 @@ local getTurretCount = chunkPropertyUtils.getTurretCount
|
||||
local setRaidNestActiveness = chunkPropertyUtils.setRaidNestActiveness
|
||||
local setNestActiveness = chunkPropertyUtils.setNestActiveness
|
||||
|
||||
local processNestActiveness = chunkPropertyUtils.processNestActiveness
|
||||
|
||||
local getEnemyStructureCount = chunkPropertyUtils.getEnemyStructureCount
|
||||
|
||||
local findNearbyBase = baseUtils.findNearbyBase
|
||||
@ -409,7 +411,7 @@ function chunkUtils.colorChunk(x, y, tileType, surface)
|
||||
surface.set_tiles(tiles, false)
|
||||
end
|
||||
|
||||
function chunkUtils.registerEnemyBaseStructure(map, entity, base)
|
||||
function chunkUtils.registerEnemyBaseStructure(map, entity, base, surface)
|
||||
local entityType = entity.type
|
||||
if ((entityType == "unit-spawner") or (entityType == "turret")) and (entity.force.name == "enemy") then
|
||||
local overlapArray = getEntityOverlapChunks(map, entity)
|
||||
@ -455,6 +457,7 @@ function chunkUtils.registerEnemyBaseStructure(map, entity, base)
|
||||
if (chunk ~= SENTINEL_IMPASSABLE_CHUNK) then
|
||||
setFunc(map, chunk, getFunc(map, chunk) + 1)
|
||||
setChunkBase(map, chunk, base)
|
||||
processNestActiveness(map, chunk, natives, surface)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -60,7 +60,7 @@ constants.INTERVAL_MAP_PROCESS = (settings.startup["rampant-liteMode"].value and
|
||||
constants.INTERVAL_SCAN = (settings.startup["rampant-liteMode"].value and 42) or 21
|
||||
constants.INTERVAL_CHUNK = 17
|
||||
constants.INTERVAL_LOGIC = 60
|
||||
constants.INTERVAL_TEMPERAMENT = 60 * 360
|
||||
constants.INTERVAL_TEMPERAMENT = 121
|
||||
constants.INTERVAL_SQUAD = 41
|
||||
constants.INTERVAL_RESQUAD = 101
|
||||
constants.INTERVAL_BUILDERS = 300
|
||||
@ -140,10 +140,10 @@ constants.BASE_AI_STATE_MUTATE = 3
|
||||
constants.AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION = 0.5
|
||||
constants.AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION = 3
|
||||
|
||||
-- constants.AI_MIN_STATE_DURATION = 7
|
||||
-- constants.AI_MAX_STATE_DURATION = 17
|
||||
constants.AI_MIN_STATE_DURATION = 0.2
|
||||
constants.AI_MAX_STATE_DURATION = 0.2
|
||||
constants.AI_MIN_STATE_DURATION = 7
|
||||
constants.AI_MAX_STATE_DURATION = 17
|
||||
-- constants.AI_MIN_STATE_DURATION = 0.2
|
||||
-- constants.AI_MAX_STATE_DURATION = 0.2
|
||||
|
||||
constants.AI_MIN_TEMPERAMENT_DURATION = 25
|
||||
constants.AI_MAX_TEMPERAMENT_DURATION = 32
|
||||
@ -326,6 +326,66 @@ constants.UNIT_GROUP_MAX_SPEED_UP = 2
|
||||
constants.UNIT_GROUP_MAX_SLOWDOWN = 1.0
|
||||
constants.UNIT_GROUP_SLOWDOWN_FACTOR = 1.0
|
||||
|
||||
constants.CONVERSION_TABLE = {
|
||||
"neutral",
|
||||
"fire",
|
||||
"nuclear",
|
||||
"suicide",
|
||||
"neutral",
|
||||
"acid",
|
||||
"fire",
|
||||
"physical",
|
||||
"laser",
|
||||
"inferno",
|
||||
"poison",
|
||||
"troll",
|
||||
"fast",
|
||||
"neutral",
|
||||
"neutral",
|
||||
"neutral",
|
||||
"energy-thief",
|
||||
"electric",
|
||||
"wasp",
|
||||
nil,
|
||||
"acid",
|
||||
"acid",
|
||||
"spawner",
|
||||
"laser",
|
||||
"inferno",
|
||||
"suicide",
|
||||
"acid",
|
||||
"spawner"
|
||||
}
|
||||
|
||||
constants.BASE_ALIGNMENT_NEUTRAL = 1
|
||||
constants.BASE_ALIGNMENT_FIRE = 2
|
||||
constants.BASE_ALIGNMENT_NUCLEAR = 3
|
||||
constants.BASE_ALIGNMENT_SUICIDE = 4
|
||||
constants.BASE_ALIGNMENT_INFEST = 5
|
||||
constants.BASE_ALIGNMENT_ACID = 6
|
||||
constants.BASE_ALIGNMENT_FIRE = 7
|
||||
constants.BASE_ALIGNMENT_PHYSICAL = 8
|
||||
constants.BASE_ALIGNMENT_LASER = 9
|
||||
constants.BASE_ALIGNMENT_INFERNO = 10
|
||||
constants.BASE_ALIGNMENT_POISON = 11
|
||||
constants.BASE_ALIGNMENT_TROLL = 12
|
||||
constants.BASE_ALIGNMENT_FAST = 13
|
||||
constants.BASE_ALIGNMENT_WEB = 14
|
||||
constants.BASE_ALIGNMENT_DECAYING = 15
|
||||
constants.BASE_ALIGNMENT_UNDYING = 16
|
||||
constants.BASE_ALIGNMENT_ENERGY_THIEF = 17
|
||||
constants.BASE_ALIGNMENT_ELECTRIC = 18
|
||||
constants.BASE_ALIGNMENT_WASP = 19
|
||||
constants.BASE_ALIGNMENT_DEADZONE = 20
|
||||
constants.BASE_ALIGNMENT_NE = 21
|
||||
constants.BASE_ALIGNMENT_BOBS = 22
|
||||
constants.BASE_ALIGNMENT_SPAWNER = 23
|
||||
constants.BASE_ALIGNMENT_NE_BLUE = 24
|
||||
constants.BASE_ALIGNMENT_NE_RED = 25
|
||||
constants.BASE_ALIGNMENT_NE_YELLOW = 26
|
||||
constants.BASE_ALIGNMENT_NE_GREEN = 27
|
||||
constants.BASE_ALIGNMENT_NE_PINK = 28
|
||||
|
||||
-- sentinels
|
||||
|
||||
constants.SENTINEL_IMPASSABLE_CHUNK = {}
|
||||
@ -484,13 +544,13 @@ constants.FACTION_SET[#constants.FACTION_SET+1] = {
|
||||
majorResistances = {},
|
||||
minorResistances = {},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"nilArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -506,7 +566,7 @@ if settings.startup["rampant-acidEnemy"].value then
|
||||
units = {
|
||||
{
|
||||
type = "biter",
|
||||
attackAttributes = {"melee"},
|
||||
attackAttributes = {"melee", "acidPool"},
|
||||
name = "biter",
|
||||
majorResistances = {"acid"},
|
||||
minorResistances = {"poison"},
|
||||
@ -563,14 +623,14 @@ if settings.startup["rampant-acidEnemy"].value then
|
||||
name = "hive",
|
||||
majorResistances = {"acid"},
|
||||
minorResistances = {"poison"},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
attributes = {},
|
||||
drops = {"greenArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -639,13 +699,13 @@ if settings.startup["rampant-laserEnemy"].value then
|
||||
name = "hive",
|
||||
majorResistances = {"laser", "electric"},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.003},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"blueArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -720,13 +780,13 @@ if settings.startup["rampant-fireEnemy"].value then
|
||||
majorResistances = {"fire", "acid"},
|
||||
minorResistances = {},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"redArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -757,7 +817,7 @@ if settings.startup["rampant-infernoEnemy"].value then
|
||||
name = "spitter-spawner",
|
||||
majorResistances = {"acid", "fire"},
|
||||
minorWeaknesses = {"poison"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
attributes = {},
|
||||
drops = {"orangeArtifact"},
|
||||
buildSets = {
|
||||
@ -780,12 +840,12 @@ if settings.startup["rampant-infernoEnemy"].value then
|
||||
majorResistances = {"fire", "acid"},
|
||||
minorResistances = {},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"orangeArtifact"},
|
||||
buildSets = {
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -795,7 +855,7 @@ end
|
||||
if settings.startup["rampant-waspEnemy"].value then
|
||||
constants.FACTION_SET[#constants.FACTION_SET+1] = {
|
||||
type = "wasp",
|
||||
tint = {r=0.9, g=0.8, b=0.9, a=1},
|
||||
tint = {r=0.6, g=0.9, b=0.9, a=1},
|
||||
tint2 = {r=0.85, g=0.85, b=0, a=1},
|
||||
acceptRate = {3, 10, 0.1, 0.125},
|
||||
evo = 0.2,
|
||||
@ -827,7 +887,7 @@ if settings.startup["rampant-waspEnemy"].value then
|
||||
type = "spitter-spawner",
|
||||
name = "spitter-spawner",
|
||||
attributes = {},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
drops = {"purpleArtifact"},
|
||||
buildSets = {
|
||||
{"spitter", 1, 10}
|
||||
@ -845,12 +905,12 @@ if settings.startup["rampant-waspEnemy"].value then
|
||||
type = "hive",
|
||||
name = "hive",
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"purpleArtifact"},
|
||||
buildSets = {
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -876,14 +936,14 @@ if settings.startup["rampant-spawnerEnemy"].value then
|
||||
type = "drone",
|
||||
attackAttributes = {"touch", "acid"},
|
||||
name = "egg",
|
||||
attributes = {"stationary", {"clusterDeath", "spawn"}},
|
||||
attributes = {"stationary", "bigger", {"clusterDeath", "spawn"}},
|
||||
drops = {}
|
||||
},
|
||||
{
|
||||
type = "drone",
|
||||
attackAttributes = {"touch", "acid"},
|
||||
name = "worm-egg",
|
||||
attributes = {"stationary", {"clusterDeath", "spawn"}},
|
||||
attributes = {"stationary", "bigger", {"clusterDeath", "spawn"}},
|
||||
drops = {}
|
||||
},
|
||||
{
|
||||
@ -900,7 +960,7 @@ if settings.startup["rampant-spawnerEnemy"].value then
|
||||
name = "spitter-spawner",
|
||||
attributes = {},
|
||||
drops = {"orangeArtifact"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
buildSets = {
|
||||
{"spitter", 1, 10}
|
||||
}
|
||||
@ -917,12 +977,12 @@ if settings.startup["rampant-spawnerEnemy"].value then
|
||||
type = "hive",
|
||||
name = "hive",
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"orangeArtifact"},
|
||||
buildSets = {
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -953,7 +1013,7 @@ if settings.startup["rampant-electricEnemy"].value then
|
||||
name = "biter-spawner",
|
||||
majorResistances = {"electric"},
|
||||
minorResistances = {"laser"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
attributes = {},
|
||||
drops = {"blueArtifact"},
|
||||
buildSets = {
|
||||
@ -976,12 +1036,12 @@ if settings.startup["rampant-electricEnemy"].value then
|
||||
majorResistances = {"electric"},
|
||||
minorResistances = {"laser"},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"blueArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1013,7 +1073,7 @@ if settings.startup["rampant-physicalEnemy"].value then
|
||||
majorResistances = {"physical", "explosion"},
|
||||
minorWeaknesses = {"laser", "electric"},
|
||||
attributes = {"highHealth", "bigger"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
drops = {"redArtifact"},
|
||||
buildSets = {
|
||||
{"biter", 1, 10}
|
||||
@ -1035,12 +1095,12 @@ if settings.startup["rampant-physicalEnemy"].value then
|
||||
majorResistances = {"physical", "explosion"},
|
||||
minorResistances = {"laser", "electric"},
|
||||
attributes = {"highHealth", "bigger"},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"redArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1071,7 +1131,7 @@ if settings.startup["rampant-trollEnemy"].value then
|
||||
name = "biter-spawner",
|
||||
minorResistances = {"physical", "explosion"},
|
||||
majorWeaknesses = {"fire"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
attributes = {"highestHealth", "bigger", "highestRegen"},
|
||||
drops = {"greenArtifact"},
|
||||
buildSets = {
|
||||
@ -1094,12 +1154,12 @@ if settings.startup["rampant-trollEnemy"].value then
|
||||
minorResistances = {"physical", "explosion"},
|
||||
majorWeaknesses = {"fire"},
|
||||
attributes = {"highestHealth", "bigger", "highRegen"},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"greenArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1133,7 +1193,7 @@ if settings.startup["rampant-poisonEnemy"].value then
|
||||
majorResistances = {"poison"},
|
||||
minorWeaknesses = {"electric", "explosion", "laser"},
|
||||
attributes = {"poisonDeathCloud"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
drops = {"greenArtifact"},
|
||||
buildSets = {
|
||||
{"biter", 1, 10}
|
||||
@ -1157,12 +1217,12 @@ if settings.startup["rampant-poisonEnemy"].value then
|
||||
minorResistances = {"fire"},
|
||||
minorWeaknesses = {"electric", "explosion", "laser"},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"greenArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1172,8 +1232,8 @@ end
|
||||
if settings.startup["rampant-suicideEnemy"].value then
|
||||
constants.FACTION_SET[#constants.FACTION_SET+1] = {
|
||||
type = "suicide",
|
||||
tint = {r=1, g=1, b=1, a=1},
|
||||
tint2 = {r=0.85, g=0.85, b=0, a=1},
|
||||
tint = {r=0.8, g=0.8, b=0.8, a=1},
|
||||
tint2 = {r=0.95, g=0.95, b=0, a=1},
|
||||
acceptRate = {1, 10, 0.05, 0.15},
|
||||
evo = 0.12,
|
||||
units = {
|
||||
@ -1193,7 +1253,7 @@ if settings.startup["rampant-suicideEnemy"].value then
|
||||
name = "biter-spawner",
|
||||
majorResistances = {"explosion"},
|
||||
minorResistances = {"poison"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
attributes = {},
|
||||
drops = {"yellowArtifact", "quickSpawning", "lowUnits"},
|
||||
buildSets = {
|
||||
@ -1216,12 +1276,12 @@ if settings.startup["rampant-suicideEnemy"].value then
|
||||
majorResistances = {"explosion"},
|
||||
minorResistances = {"poison"},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"yellowArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1251,7 +1311,7 @@ if settings.startup["rampant-nuclearEnemy"].value then
|
||||
name = "biter-spawner",
|
||||
majorResistances = {"explosion"},
|
||||
minorResistances = {"fire"},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
attributes = {},
|
||||
drops = {"yellowArtifact", "quickSpawning", "lowUnits"},
|
||||
buildSets = {
|
||||
@ -1274,12 +1334,12 @@ if settings.startup["rampant-nuclearEnemy"].value then
|
||||
majorResistances = {"explosion"},
|
||||
minorResistances = {"fire"},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"yellowArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1310,7 +1370,7 @@ if settings.startup["rampant-energyThiefEnemy"].value then
|
||||
name = "biter-spawner",
|
||||
majorResistances = {"electric", "laser"},
|
||||
minorResistances = {},
|
||||
acceptRate = {1, 10, 0.3, 0.5},
|
||||
acceptRate = {1, 10, 0.4, 0.6},
|
||||
attributes = {},
|
||||
drops = {"blueArtifact"},
|
||||
buildSets = {
|
||||
@ -1332,12 +1392,12 @@ if settings.startup["rampant-energyThiefEnemy"].value then
|
||||
name = "hive",
|
||||
majorResistances = {"electric", "laser"},
|
||||
attributes = {},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"blueArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1412,13 +1472,13 @@ if settings.startup["rampant-fastEnemy"].value then
|
||||
majorResistances = {},
|
||||
minorResistances = {"explosion"},
|
||||
attributes = {"quickSpawning"},
|
||||
acceptRate = {2, 10, 0.005, 0.03},
|
||||
acceptRate = {2, 10, 0.001, 0.0175},
|
||||
drops = {"purpleArtifact"},
|
||||
buildSets = {
|
||||
{"biter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"spitter-spawner", 1, 10, 0.15, 0.3},
|
||||
{"turret", 1, 10, 0.8, 0.57},
|
||||
{"hive", 4, 10, 0.005, 0.03}
|
||||
{"hive", 2, 10, 0.002, 0.02}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ local AI_VENGENCE_SQUAD_COST = constants.AI_VENGENCE_SQUAD_COST
|
||||
local AI_SETTLER_COST = constants.AI_SETTLER_COST
|
||||
local AI_STATE_AGGRESSIVE = constants.AI_STATE_AGGRESSIVE
|
||||
|
||||
local RAIDING_MINIMUM_BASE_THRESHOLD = constants.RAIDING_MINIMUM_BASE_THRESHOLD
|
||||
local processNestActiveness = chunkPropertyUtils.processNestActiveness
|
||||
|
||||
local MOVEMENT_PHEROMONE = constants.MOVEMENT_PHEROMONE
|
||||
local PLAYER_PHEROMONE = constants.PLAYER_PHEROMONE
|
||||
@ -161,34 +161,6 @@ function mapProcessor.processMap(map, surface, tick)
|
||||
end
|
||||
end
|
||||
|
||||
local function processNestActiveness(map, chunk, natives, surface)
|
||||
local nests = getNestCount(map, chunk)
|
||||
if (nests > 0) then
|
||||
local activeness = getNestActiveness(map, chunk)
|
||||
local raidActiveness = getRaidNestActiveness(map, chunk)
|
||||
if natives.attackUsePlayer and (chunk[PLAYER_PHEROMONE] > natives.attackPlayerThreshold) then
|
||||
setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
elseif (chunk[BASE_PHEROMONE] > 0) then
|
||||
if (surface.get_pollution(chunk) > 0) then
|
||||
setNestActiveness(map, chunk, mMin(activeness + 5, 20))
|
||||
else
|
||||
setNestActiveness(map, chunk, activeness - 2)
|
||||
if (chunk[BASE_PHEROMONE] > RAIDING_MINIMUM_BASE_THRESHOLD) then
|
||||
setRaidNestActiveness(map, chunk, mMin(raidActiveness + 3, 20))
|
||||
else
|
||||
setRaidNestActiveness(map, chunk, raidActiveness - 1)
|
||||
end
|
||||
end
|
||||
else
|
||||
setNestActiveness(map, chunk, activeness - 5)
|
||||
setRaidNestActiveness(map, chunk, raidActiveness - 5)
|
||||
end
|
||||
else
|
||||
setNestActiveness(map, chunk, 0)
|
||||
setRaidNestActiveness(map, chunk, 0)
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
Localized player radius were processing takes place in realtime, doesn't store state
|
||||
between calls.
|
||||
|
5472
locale/en/locale.cfg
5472
locale/en/locale.cfg
File diff suppressed because it is too large
Load Diff
@ -13,6 +13,7 @@ local biterUtils = require("utils/BiterUtils")
|
||||
local particleUtils = require("utils/ParticleUtils")
|
||||
local stickerUtils = require("utils/StickerUtils")
|
||||
local unitUtils = require("utils/UnitUtils")
|
||||
local fireUtils = require("utils/FireUtils")
|
||||
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
local mathUtils = require("__Rampant__/libs/MathUtils")
|
||||
@ -47,6 +48,7 @@ local createAttackBall = acidBall.createAttackBall
|
||||
local createRangedAttack = biterUtils.createRangedAttack
|
||||
local createMeleeAttack = biterUtils.createMeleeAttack
|
||||
local makeUnitAlienLootTable = biterUtils.makeUnitAlienLootTabl
|
||||
local makeAcidSplashFire = fireUtils.makeAcidSplashFire
|
||||
|
||||
local makeWormAlienLootTable = biterUtils.makeWormAlienLootTable
|
||||
local makeUnitAlienLootTable = biterUtils.makeUnitAlienLootTable
|
||||
@ -154,37 +156,44 @@ local biterAttributeNumeric = {
|
||||
["radius"] = { 0.5, 0.65, 0.75, 0.85, 0.95, 1.1, 1.2, 1.3, 1.4, 1.5 },
|
||||
["cooldown"] = { 40, 41, 42, 44, 46, 48, 50, 52, 55, 57 },
|
||||
["damage"] = { 7, 15, 22.5, 35, 45, 60, 75, 90, 150, 200 },
|
||||
["scale"] = { 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8 },
|
||||
["scale"] = { 0.25, 0.40, 0.60, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8 },
|
||||
["healing"] = { 0.01, 0.01, 0.015, 0.02, 0.05, 0.075, 0.1, 0.12, 0.14, 0.16 },
|
||||
["physicalDecrease"] = { 0, 0, 4, 5, 6, 8, 11, 13, 16, 17 },
|
||||
["physicalPercent"] = { 0, 0, 0, 10, 12, 12, 14, 16, 18, 20 },
|
||||
["explosionDecrease"] = { 0, 0, 0, 0, 0, 10, 12, 14, 16, 20 },
|
||||
["explosionPercent"] = { 0, 0, 0, 10, 12, 13, 15, 16, 17, 20 },
|
||||
["distancePerFrame"] = { 0.1, 0.125, 0.15, 0.19, 0.195, 0.2, 0.2, 0.2, 0.2, 0.2 },
|
||||
-- ["distancePerFrame"] = { 0.1, 0.125, 0.15, 0.19, 0.195, 0.2, 0.2, 0.2, 0.2, 0.2 },
|
||||
["distancePerFrame"] = { 0.08, 0.10, 0.125, 0.15, 0.18, 0.195, 0.2, 0.2, 0.2, 0.2 },
|
||||
["movement"] = { 0.2, 0.19, 0.185, 0.18, 0.175, 0.17, 0.17, 0.17, 0.17, 0.17 },
|
||||
["health"] = { 15, 75, 150, 250, 1000, 2000, 3500, 7500, 15000, 30000 },
|
||||
["pollutionToAttack"] = { 200, 750, 1200, 1750, 2500, 5000, 10000, 12500, 15000, 20000 },
|
||||
["spawningTimeModifer"] = { 1, 1, 1, 2, 3, 7, 10, 10, 12, 12 }
|
||||
}
|
||||
|
||||
local acidPuddleAttributeNumeric = {
|
||||
["damagePerTick"] = { 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 },
|
||||
["stickerDamagePerTick"] = { 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 },
|
||||
["stickerDuration"] = { 600, 610, 620, 630, 640, 650, 660, 670, 680, 690 }
|
||||
}
|
||||
|
||||
local spitterAttributeNumeric = {
|
||||
["range"] = { 13, 13, 14, 14, 15, 15, 16, 16, 17, 17 },
|
||||
["radius"] = { 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.5 },
|
||||
["cooldown"] = { 100, 100, 97, 97, 95, 95, 93, 93, 90, 90 },
|
||||
["stickerDuration"] = { 600, 610, 620, 630, 640, 650, 660, 670, 680, 690 },
|
||||
["damagePerTick"] = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 },
|
||||
-- ["stickerDamagePerTick"] = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 },
|
||||
["stickerDamagePerTick"] = { 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 },
|
||||
["stickerMovementModifier"] = { 0.8, 0.7, 0.6, 0.55, 0.50, 0.45, 0.40, 0.35, 0.30, 0.25 },
|
||||
["damage"] = { 16, 30, 45, 60, 90, 110, 130, 150, 170, 190 },
|
||||
["particleVerticalAcceleration"] = { 0.01, 0.01, 0.02, 0.02, 0.03, 0.03, 0.04, 0.04, 0.05, 0.05 },
|
||||
["particleHoizontalSpeed"] = { 0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.9, 0.9, 1, 1 },
|
||||
["particleHoizontalSpeedDeviation"] = { 0.0025, 0.0025, 0.0024, 0.0024, 0.0023, 0.0023, 0.0022, 0.0022, 0.0021, 0.0021 },
|
||||
["scale"] = { 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8 },
|
||||
["scale"] = { 0.25, 0.40, 0.60, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8 },
|
||||
["healing"] = { 0.01, 0.01, 0.015, 0.02, 0.05, 0.075, 0.1, 0.12, 0.14, 0.16 },
|
||||
["physicalDecrease"] = { 0, 0, 0, 0, 2, 4, 6, 8, 10, 12 },
|
||||
["physicalPercent"] = { 0, 0, 0, 10, 12, 12, 14, 14, 15, 15 },
|
||||
["explosionPercent"] = { 0, 0, 10, 10, 20, 20, 30, 30, 40, 40 },
|
||||
["distancePerFrame"] = { 0.04, 0.045, 0.050, 0.055, 0.060, 0.065, 0.070, 0.075, 0.08, 0.084 },
|
||||
["distancePerFrame"] = { 0.04, 0.045, 0.050, 0.055, 0.060, 0.065, 0.067, 0.069, 0.071, 0.073 },
|
||||
["movement"] = { 0.185, 0.18, 0.18, 0.17, 0.17, 0.16, 0.16, 0.15, 0.15, 0.14 },
|
||||
["health"] = { 10, 50, 200, 350, 1250, 2250, 3250, 6500, 12500, 25000 },
|
||||
["pollutionToAttack"] = { 200, 750, 1200, 1750, 2500, 5000, 10000, 12500, 15000, 20000 },
|
||||
@ -192,7 +201,7 @@ local spitterAttributeNumeric = {
|
||||
}
|
||||
|
||||
local droneAttributeNumeric = {
|
||||
["scale"] = { 0.5, 0.5, 0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.9, 0.9 },
|
||||
["scale"] = { 0.3, 0.32, 0.34, 0.36, 0.4, 0.42, 0.44, 0.5, 0.52, 0.54 },
|
||||
["particleVerticalAcceleration"] = { 0.01, 0.01, 0.02, 0.02, 0.03, 0.03, 0.04, 0.04, 0.05, 0.05 },
|
||||
["particleHoizontalSpeed"] = { 0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.9, 0.9, 1, 1 },
|
||||
["particleHoizontalSpeedDeviation"] = { 0.0025, 0.0025, 0.0024, 0.0024, 0.0023, 0.0023, 0.0022, 0.0022, 0.0021, 0.0021 },
|
||||
@ -203,7 +212,7 @@ local droneAttributeNumeric = {
|
||||
["ttl"] = { 300, 300, 350, 350, 400, 400, 450, 450, 500, 500 },
|
||||
["damage"] = { 2, 4, 7, 13, 15, 18, 22, 28, 35, 40 },
|
||||
["movement"] = { 0.06, 0.06, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.1 },
|
||||
["distancePerFrame"] = { 0.08, 0.08, 0.085, 0.085, 0.09, 0.09, 0.092, 0.092, 0.094, 0.094 },
|
||||
["distancePerFrame"] = { 0.1, 0.1, 0.105, 0.105, 0.110, 0.110, 0.112, 0.112, 0.114, 0.114 },
|
||||
["rangeFromPlayer"] = { 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 },
|
||||
["range"] = { 10, 10, 11, 11, 12, 12, 13, 13, 14, 14 },
|
||||
["radius"] = { 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.5 },
|
||||
@ -258,8 +267,9 @@ local wormAttributeNumeric = {
|
||||
["range"] = { 25, 27, 31, 33, 35, 36, 37, 38, 39, 40 },
|
||||
["cooldown"] = { 70, 70, 68, 66, 64, 62, 60, 58, 56, 54 },
|
||||
["damage"] = { 36, 45, 85, 135, 155, 175, 195, 215, 235, 255 },
|
||||
["scale"] = { 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8 },
|
||||
["scale"] = { 0.25, 0.40, 0.60, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8 },
|
||||
["radius"] = { 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.3, 2.5, 3.0 },
|
||||
["stickerDamagePerTick"] = { 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 },
|
||||
["particleVerticalAcceleration"] = { 0.01, 0.01, 0.02, 0.02, 0.03, 0.03, 0.04, 0.04, 0.05, 0.05 },
|
||||
["particleHoizontalSpeed"] = { 0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.9, 0.9, 1, 1 },
|
||||
["particleHoizontalSpeedDeviation"] = { 0.0025, 0.0025, 0.0024, 0.0024, 0.0023, 0.0023, 0.0022, 0.0022, 0.0021, 0.0021 },
|
||||
@ -530,7 +540,7 @@ local function fillEntityTemplate(entity)
|
||||
entity["cooldown"] = entity["cooldown"] * 0.85
|
||||
elseif (attribute == "slowMovement") then
|
||||
entity["movement"] = entity["movement"] * 0.35
|
||||
entity["distancePerFrame"] = entity["distancePerFrame"] * 0.85
|
||||
entity["distancePerFrame"] = entity["distancePerFrame"] * 0.65
|
||||
elseif (attribute == "quickMovement") then
|
||||
entity["movement"] = entity["movement"] * 1.05
|
||||
entity["distancePerFrame"] = entity["distancePerFrame"] * 1.15
|
||||
@ -694,7 +704,7 @@ function swarmUtils.buildUnits(template)
|
||||
target_effects =
|
||||
{
|
||||
type = "create-entity",
|
||||
entity_name = unit.explosion
|
||||
entity_name = "massive-explosion"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -856,6 +866,18 @@ local function buildAttack(faction, template)
|
||||
local attack = template.attackAttributes[i]
|
||||
if (attack == "melee") then
|
||||
template.attackGenerator = createMeleeAttack
|
||||
elseif (attack == "acidPool") then
|
||||
template.addon[#template.addon+1] = acidPuddleAttributeNumeric
|
||||
template.meleePuddleGenerator = function (attributes)
|
||||
attributes.stickerDamagePerTickType = "acid"
|
||||
return {
|
||||
type="create-fire",
|
||||
entity_name = makeAcidSplashFire(attributes, attributes.stickerName or makeSticker(attributes)),
|
||||
check_buildability = true,
|
||||
initial_ground_flame_count = 2,
|
||||
show_in_tooltip = true
|
||||
}
|
||||
end
|
||||
elseif (attack == "spit") then
|
||||
template.attackType = "projectile"
|
||||
-- template.attackDirectionOnly = true
|
||||
|
@ -100,14 +100,17 @@ function generateLocal()
|
||||
for i=1,#HIVE_BUILDINGS_TYPES do
|
||||
print("entity-proxy-" .. HIVE_BUILDINGS_TYPES[i] .. "-t" .. t .. "-rampant=" .. HIVE_BUILDINGS_NAMES[i] .. ": " .. sizes[t] .. " class")
|
||||
end
|
||||
|
||||
local size = sizes[t]
|
||||
|
||||
local size = sizes[t]
|
||||
for v = 1, 20 do
|
||||
print("neutral-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("neutral-spitter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter: " .. size .. " class")
|
||||
print("neutral-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
|
||||
print("neutral-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
|
||||
print("neutral-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("neutral-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("neutral-spitter-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("neutral-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -116,11 +119,6 @@ function generateLocal()
|
||||
for t = 1, 10 do
|
||||
local size = sizes[t]
|
||||
|
||||
for i=1,#HIVE_BUILDINGS_TYPES do
|
||||
local hbt = HIVE_BUILDINGS_TYPES[i]
|
||||
print("entity-proxy-acid-" .. hbt .. "-t" .. t .. "-rampant=" .. name .. " " .. HIVE_BUILDING_NAME_MAP[hbt] .. ": " .. size .. " class")
|
||||
end
|
||||
|
||||
for v = 1, 20 do
|
||||
print("acid-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("acid-spitter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter: " .. size .. " class")
|
||||
@ -128,6 +126,9 @@ function generateLocal()
|
||||
print("acid-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("acid-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
|
||||
print("acid-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("acid-spitter-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("acid-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("acid-biter-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -152,7 +153,6 @@ function generateLocal()
|
||||
print("electric-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("electric-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
|
||||
print("electric-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@ -161,10 +161,11 @@ function generateLocal()
|
||||
for t = 1, 10 do
|
||||
local size = sizes[t]
|
||||
for v = 1, 20 do
|
||||
print("suicide-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("suicide-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("suicide-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
|
||||
print("suicide-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("suicide-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("suicide-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -173,10 +174,11 @@ function generateLocal()
|
||||
for t = 1, 10 do
|
||||
local size = sizes[t]
|
||||
for v = 1, 20 do
|
||||
print("nuclear-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("nuclear-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("nuclear-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
|
||||
print("nuclear-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("nuclear-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("nuclear-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -185,12 +187,13 @@ function generateLocal()
|
||||
for t = 1, 10 do
|
||||
local size = sizes[t]
|
||||
for v = 1, 20 do
|
||||
print("fire-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("fire-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("fire-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("fire-spitter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter: " .. size .. " class")
|
||||
print("fire-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
|
||||
print("fire-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
|
||||
print("fire-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("fire-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -231,6 +234,8 @@ function generateLocal()
|
||||
print("fast-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
|
||||
print("fast-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
|
||||
print("fast-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("fast-spitter-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("fast-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -254,11 +259,13 @@ function generateLocal()
|
||||
local size = sizes[t]
|
||||
for v = 1, 20 do
|
||||
print("wasp-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("wasp-drone-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. ": " .. size .. " class")
|
||||
print("wasp-wasp-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. ": " .. size .. " class")
|
||||
print("wasp-spitter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter: " .. size .. " class")
|
||||
print("wasp-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
|
||||
print("wasp-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("wasp-worm-drone-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. ": " .. size .. " class")
|
||||
print("wasp-wasp-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("wasp-worm-wasp-v" .. v .. "-t" .. t .. "-drone-rampant=Wasp: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
@ -267,13 +274,17 @@ function generateLocal()
|
||||
for t = 1, 10 do
|
||||
local size = sizes[t]
|
||||
for v = 1, 20 do
|
||||
print("spawner-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("spawner-hive-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " hive: " .. size .. " class")
|
||||
print("spawner-drone-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. " eggs: " .. size .. " class")
|
||||
print("spawner-spitter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter: " .. size .. " class")
|
||||
print("spawner-worm-drone-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. " eggs: " .. size .. " class")
|
||||
print("spawner-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("spawner-worm-egg-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. " eggs: " .. size .. " class")
|
||||
print("spawner-worm-egg-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("spawner-spawn-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
|
||||
print("spawner-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
|
||||
print("spawner-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
|
||||
print("spawner-spitter-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("spawner-egg-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
|
||||
print("spawner-egg-v" .. v .. "-t" .. t .. "-drone-rampant=" .. name .. " egg: " .. size .. " class")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -299,7 +299,7 @@ function biterFunctions.makeSpitter(attributes)
|
||||
alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence(),
|
||||
corpse = makeSpitterCorpse(attributes),
|
||||
dying_explosion = attributes.explosion,
|
||||
enemy_map_color = attributes.tint2,
|
||||
enemy_map_color = attributes.tint2,
|
||||
dying_trigger_effect = attributes.dyingEffect,
|
||||
dying_sound = make_spitter_dying_sounds(0.3 + (0.05 * attributes.effectiveLevel)),
|
||||
working_sound = make_biter_calls(0.2 + (0.05 * attributes.effectiveLevel)),
|
||||
@ -319,7 +319,7 @@ function biterFunctions.makeUnitSpawner(attributes)
|
||||
v.type = k
|
||||
resistances[#resistances+1] = v
|
||||
end
|
||||
-- print(attributes.name)
|
||||
-- print(attributes.name)
|
||||
local o = {
|
||||
type = "unit-spawner",
|
||||
name = attributes.name .. "-rampant",
|
||||
@ -860,6 +860,18 @@ function biterFunctions.createProjectileAttack(attributes, projectile, animation
|
||||
end
|
||||
|
||||
function biterFunctions.createMeleeAttack(attackAttributes)
|
||||
local meleeAttackEffects = {
|
||||
type = "damage",
|
||||
damage = { amount = attackAttributes.damage * 0.25, type = attackAttributes.damageType or "physical" }
|
||||
}
|
||||
|
||||
if attackAttributes.meleePuddleGenerator then
|
||||
local o = {}
|
||||
o[1] = meleeAttackEffects
|
||||
o[2] = attackAttributes.meleePuddleGenerator(attackAttributes)
|
||||
meleeAttackEffects = o
|
||||
end
|
||||
|
||||
return {
|
||||
type = "projectile",
|
||||
range = attackAttributes.range or 0.5,
|
||||
@ -890,11 +902,7 @@ function biterFunctions.createMeleeAttack(attackAttributes)
|
||||
action_delivery =
|
||||
{
|
||||
type = "instant",
|
||||
target_effects =
|
||||
{
|
||||
type = "damage",
|
||||
damage = { amount = attackAttributes.damage * 0.25, type = attackAttributes.damageType or "physical" }
|
||||
}
|
||||
target_effects = meleeAttackEffects
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ function droneUtils.makeDrone(attributes)
|
||||
resistances[#resistances+1] = v
|
||||
end
|
||||
-- attributes.name = name
|
||||
|
||||
|
||||
local drone = {
|
||||
type = "combat-robot",
|
||||
name = n,
|
||||
@ -41,22 +41,23 @@ function droneUtils.makeDrone(attributes)
|
||||
priority = "high",
|
||||
line_length = 16,
|
||||
width = 32,
|
||||
tint = attributes.tint or {r=1.0, g=0.0, b=0.0},
|
||||
tint = attributes.tint2,
|
||||
height = 33,
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = {0, 0.015625},
|
||||
scale = attributes.scale,
|
||||
hr_version = {
|
||||
filename = "__base__/graphics/entity/defender-robot/hr-defender-robot.png",
|
||||
priority = "high",
|
||||
line_length = 16,
|
||||
width = 56,
|
||||
height = 59,
|
||||
tint = attributes.tint or {r=1.0, g=0.0, b=0.0},
|
||||
tint = attributes.tint2,
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = util.by_pixel(0, 0.25),
|
||||
scale = 0.5
|
||||
scale = attributes.scale * 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -65,23 +66,24 @@ function droneUtils.makeDrone(attributes)
|
||||
line_length = 16,
|
||||
width = 18,
|
||||
height = 16,
|
||||
tint = attributes.tint2 or {r=1.0, g=0.0, b=0.0},
|
||||
tint = attributes.tint2,
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = {0, -0.125},
|
||||
apply_runtime_tint = true,
|
||||
-- apply_runtime_tint = true,
|
||||
scale = attributes.scale,
|
||||
hr_version = {
|
||||
filename = "__base__/graphics/entity/defender-robot/hr-defender-robot-mask.png",
|
||||
priority = "high",
|
||||
line_length = 16,
|
||||
width = 28,
|
||||
height = 21,
|
||||
tint = attributes.tint2 or {r=1.0, g=0.0, b=0.0},
|
||||
tint = attributes.tint2,
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = util.by_pixel(0, -4.75),
|
||||
apply_runtime_tint = true,
|
||||
scale = 0.5
|
||||
-- apply_runtime_tint = true,
|
||||
scale = attributes.scale * 0.5
|
||||
}
|
||||
},
|
||||
}
|
||||
@ -96,6 +98,7 @@ function droneUtils.makeDrone(attributes)
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = {0.859375, 0.609375},
|
||||
scale = attributes.scale,
|
||||
hr_version = {
|
||||
filename = "__base__/graphics/entity/defender-robot/hr-defender-robot-shadow.png",
|
||||
priority = "high",
|
||||
@ -105,7 +108,7 @@ function droneUtils.makeDrone(attributes)
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = util.by_pixel(25.5, 19),
|
||||
scale = 0.5
|
||||
scale = attributes.scale * 0.5
|
||||
}
|
||||
},
|
||||
in_motion =
|
||||
@ -117,26 +120,25 @@ function droneUtils.makeDrone(attributes)
|
||||
priority = "high",
|
||||
line_length = 16,
|
||||
width = 32,
|
||||
tint = attributes.tint or {r=1.0, g=0.0, b=0.0},
|
||||
tint = attributes.tint,
|
||||
height = 33,
|
||||
frame_count = 1,
|
||||
tint = attributes.tint,
|
||||
direction_count = 16,
|
||||
shift = {0, 0.015625},
|
||||
y = 33,
|
||||
scale = attributes.scale,
|
||||
hr_version = {
|
||||
filename = "__base__/graphics/entity/defender-robot/hr-defender-robot.png",
|
||||
priority = "high",
|
||||
line_length = 16,
|
||||
width = 56,
|
||||
tint = attributes.tint or {r=1.0, g=0.0, b=0.0},
|
||||
tint = attributes.tint,
|
||||
height = 59,
|
||||
frame_count = 1,
|
||||
tint = attributes.tint,
|
||||
direction_count = 16,
|
||||
shift = util.by_pixel(0, 0.25),
|
||||
y = 59,
|
||||
scale = 0.5
|
||||
scale = attributes.scale * 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -149,8 +151,8 @@ function droneUtils.makeDrone(attributes)
|
||||
direction_count = 16,
|
||||
tint = attributes.tint2,
|
||||
shift = {0, -0.125},
|
||||
apply_runtime_tint = true,
|
||||
y = 16,
|
||||
scale = attributes.scale,
|
||||
hr_version = {
|
||||
filename = "__base__/graphics/entity/defender-robot/hr-defender-robot-mask.png",
|
||||
priority = "high",
|
||||
@ -161,9 +163,8 @@ function droneUtils.makeDrone(attributes)
|
||||
direction_count = 16,
|
||||
tint = attributes.tint2,
|
||||
shift = util.by_pixel(0, -4.75),
|
||||
apply_runtime_tint = true,
|
||||
y = 21,
|
||||
scale = 0.5
|
||||
scale = attributes.scale * 0.5
|
||||
}
|
||||
},
|
||||
}
|
||||
@ -176,20 +177,19 @@ function droneUtils.makeDrone(attributes)
|
||||
width = 43,
|
||||
height = 23,
|
||||
frame_count = 1,
|
||||
tint = attributes.tint,
|
||||
direction_count = 16,
|
||||
shift = {0.859375, 0.609375},
|
||||
scale = attributes.scale,
|
||||
hr_version = {
|
||||
filename = "__base__/graphics/entity/defender-robot/hr-defender-robot-shadow.png",
|
||||
priority = "high",
|
||||
line_length = 16,
|
||||
width = 88,
|
||||
height = 50,
|
||||
tint = attributes.tint,
|
||||
frame_count = 1,
|
||||
direction_count = 16,
|
||||
shift = util.by_pixel(25.5, 19),
|
||||
scale = 0.5
|
||||
scale = attributes.scale * 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -249,7 +249,8 @@ function droneUtils.createCapsuleProjectile(attributes, entityName)
|
||||
frame_count = 1,
|
||||
width = 28,
|
||||
height = 20,
|
||||
tint = attributes.tint,
|
||||
tint = attributes.tint2,
|
||||
scale = attributes.scale,
|
||||
priority = "high"
|
||||
},
|
||||
{
|
||||
@ -259,8 +260,8 @@ function droneUtils.createCapsuleProjectile(attributes, entityName)
|
||||
width = 28,
|
||||
height = 20,
|
||||
tint = attributes.tint2,
|
||||
scale = attributes.scale,
|
||||
priority = "high",
|
||||
apply_runtime_tint = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -271,6 +272,7 @@ function droneUtils.createCapsuleProjectile(attributes, entityName)
|
||||
frame_count = 1,
|
||||
width = 26,
|
||||
height = 20,
|
||||
scale = attributes.scale,
|
||||
priority = "high"
|
||||
},
|
||||
smoke = {
|
||||
|
@ -32,9 +32,9 @@ function stickerUtils.makeSticker(attributes)
|
||||
},
|
||||
|
||||
duration_in_ticks = attributes.stickerDuration or (30 * 60),
|
||||
target_movement_modifier_from = attributes.stickerMovementModifier,
|
||||
target_movement_modifier_from = attributes.stickerMovementModifier or 1,
|
||||
target_movement_modifier_to = 1,
|
||||
vehicle_speed_modifier_from = attributes.stickerMovementModifier,
|
||||
vehicle_speed_modifier_from = attributes.stickerMovementModifier or 1,
|
||||
vehicle_speed_modifier_to = 1,
|
||||
vehicle_friction_modifier_from = 1.5,
|
||||
vehicle_friction_modifier_to = 1,
|
||||
|
@ -292,28 +292,28 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
line_length = 4,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
direction_count = 16,
|
||||
shift= {0,0},
|
||||
@ -323,28 +323,28 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
line_length = 4,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -354,29 +354,29 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask1-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
flags = { "mask" },
|
||||
line_length = 4,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
direction_count = 16,
|
||||
shift = {0,0},
|
||||
@ -386,28 +386,28 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask1-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
line_length = 4,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -418,29 +418,29 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-mask2-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
flags = { "mask" },
|
||||
line_length = 4,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
direction_count = 16,
|
||||
shift = {0,0},
|
||||
@ -450,28 +450,28 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-mask2-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
line_length = 4,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -482,28 +482,28 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-die-shadow-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
line_length = 4,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -513,28 +513,28 @@ local function armoredDieBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-04.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-05.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-06.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-07.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-08.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-09.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-10.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-11.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-12.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-13.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-14.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-15.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-16.png"
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-05.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-06.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-07.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-08.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-09.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-10.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-11.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-12.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-13.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-14.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-15.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-die-shadow-16.png"
|
||||
},
|
||||
slice = 4,
|
||||
lines_per_file = 4,
|
||||
line_length = 4,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -727,16 +727,16 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
line_length = 16,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 11,
|
||||
direction_count = 16,
|
||||
animation_speed = 0.4,
|
||||
@ -747,16 +747,16 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
line_length = 16,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 11,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -767,17 +767,17 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask1-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
flags = { "mask" },
|
||||
line_length = 16,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 11,
|
||||
direction_count = 16,
|
||||
animation_speed = 0.4,
|
||||
@ -788,16 +788,16 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask1-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
line_length = 16,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 11,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -809,17 +809,17 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-mask2-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
flags = { "mask" },
|
||||
line_length = 16,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 11,
|
||||
direction_count = 16,
|
||||
animation_speed = 0.4,
|
||||
@ -830,16 +830,16 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-mask2-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
line_length = 16,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 11,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -851,16 +851,16 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-attack-shadow-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
line_length = 16,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 11,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -871,16 +871,16 @@ local function armoredAttackBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-attack-shadow-04.png",
|
||||
},
|
||||
slice = 11,
|
||||
lines_per_file = 4,
|
||||
line_length = 16,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 11,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -901,16 +901,16 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
line_length = 8,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
direction_count = 16,
|
||||
shift = {0,0},
|
||||
@ -920,16 +920,16 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
line_length = 8,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -939,17 +939,17 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask1-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
flags = { "mask" },
|
||||
line_length = 8,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
direction_count = 16,
|
||||
shift = {0,0},
|
||||
@ -959,16 +959,16 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask1-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
line_length = 8,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -979,17 +979,17 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-mask2-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
flags = { "mask" },
|
||||
line_length = 8,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
direction_count = 16,
|
||||
shift = {0,0},
|
||||
@ -999,16 +999,16 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-mask2-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
line_length = 8,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -1019,16 +1019,16 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/LowRes/armoured-biter-run-shadow-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
line_length = 8,
|
||||
width = 280,
|
||||
height = 200,
|
||||
width = 238,
|
||||
height = 170,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -1038,16 +1038,16 @@ local function armoredRunBiter(scale, tint1, tint2)
|
||||
{
|
||||
filenames =
|
||||
{
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-01.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-02.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-03.png",
|
||||
"__CybranM_ArmouredBiter__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-04.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-01.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-02.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-03.png",
|
||||
"__ArmouredBiters__/graphics/armoured-biter/HighRes/hr-armoured-biter-run-shadow-04.png",
|
||||
},
|
||||
slice = 8,
|
||||
lines_per_file = 8,
|
||||
line_length = 8,
|
||||
width = 560,
|
||||
height = 400,
|
||||
width = 476,
|
||||
height = 340,
|
||||
frame_count = 16,
|
||||
shift = {0,0},
|
||||
direction_count = 16,
|
||||
@ -1225,7 +1225,7 @@ local function vanillaRunBiter(scale, tint1, tint2)
|
||||
end
|
||||
|
||||
function unitUtils.biterdieanimation(scale, tint1, tint2, altBiter)
|
||||
if (altBiter == "armored") and mods["CybranM_ArmouredBiter"] then
|
||||
if (altBiter == "armored") and mods["ArmouredBiters"] then
|
||||
return armoredDieBiter(scale, tint1, tint2)
|
||||
else
|
||||
return vanillaDieBiter(scale, tint1, tint2)
|
||||
@ -1233,7 +1233,7 @@ function unitUtils.biterdieanimation(scale, tint1, tint2, altBiter)
|
||||
end
|
||||
|
||||
function unitUtils.biterattackanimation(scale, tint1, tint2, altBiter)
|
||||
if (altBiter == "armored") and mods["CybranM_ArmouredBiter"] then
|
||||
if (altBiter == "armored") and mods["ArmouredBiters"] then
|
||||
return armoredAttackBiter(scale, tint1, tint2)
|
||||
else
|
||||
return vanillaAttackBiter(scale, tint1, tint2)
|
||||
@ -1242,7 +1242,7 @@ end
|
||||
|
||||
|
||||
function unitUtils.biterrunanimation(scale, tint1, tint2, altBiter)
|
||||
if (altBiter == "armored") and mods["CybranM_ArmouredBiter"] then
|
||||
if (altBiter == "armored") and mods["ArmouredBiters"] then
|
||||
return armoredRunBiter(scale, tint1, tint2)
|
||||
else
|
||||
return vanillaRunBiter(scale, tint1, tint2)
|
||||
|
30
settings.lua
30
settings.lua
@ -423,36 +423,6 @@ data:extend({
|
||||
per_user = false
|
||||
},
|
||||
|
||||
{
|
||||
type = "bool-setting",
|
||||
name = "rampant-siegeAIToggle",
|
||||
setting_type = "runtime-global",
|
||||
default_value = true,
|
||||
order = "m[total]-d[ai]",
|
||||
per_user = false
|
||||
},
|
||||
|
||||
{
|
||||
type = "bool-setting",
|
||||
name = "rampant-onslaughtAIToggle",
|
||||
setting_type = "runtime-global",
|
||||
default_value = true,
|
||||
order = "m[total]-e[ai]",
|
||||
per_user = false
|
||||
},
|
||||
|
||||
{
|
||||
type = "double-setting",
|
||||
name = "rampant-aiAggressiveness",
|
||||
description = "rampant-aiAggressiveness",
|
||||
setting_type = "runtime-global",
|
||||
default_value = 1.0,
|
||||
minimum_value = 0.0,
|
||||
maximum_value = 2.0,
|
||||
order = "m[total]-f[ai]",
|
||||
per_user = false
|
||||
},
|
||||
|
||||
{
|
||||
type = "bool-setting",
|
||||
name = "rampant-removeBloodParticles",
|
||||
|
Loading…
x
Reference in New Issue
Block a user