1
0
mirror of https://github.com/veden/Rampant.git synced 2025-03-17 20:58:35 +02:00

FACTO-286: Missed some code for command timeouts

This commit is contained in:
Aaron Veden 2023-04-04 22:43:07 -07:00
parent 63eed3e08b
commit 71ebda55a7
No known key found for this signature in database
GPG Key ID: FF5990B1C6DD3F84

View File

@ -42,6 +42,7 @@ local BASE_AI_STATE_RAIDING = Constants.BASE_AI_STATE_RAIDING
local MAGIC_MAXIMUM_NUMBER = Constants.MAGIC_MAXIMUM_NUMBER
local MINIMUM_EXPANSION_DISTANCE = Constants.MINIMUM_EXPANSION_DISTANCE
local COMMAND_TIMEOUT = Constants.COMMAND_TIMEOUT
local BUILD_COMMAND_TIMEOUT = Constants.BUILD_COMMAND_TIMEOUT
local PLAYER_PHEROMONE = Constants.PLAYER_PHEROMONE
local BASE_PHEROMONE = Constants.BASE_PHEROMONE
local ENEMY_PHEROMONE = Constants.ENEMY_PHEROMONE
@ -493,6 +494,7 @@ local function settleMove(squad)
setPositionInCommand(cmd, position)
squad.status = SQUAD_BUILDING
squad.commandTick = tick + BUILD_COMMAND_TIMEOUT
group.set_command(cmd)
return
@ -554,7 +556,7 @@ local function settleMove(squad)
if lastChunk ~= 4 then
cmd = Queries.settleCommand
squad.status = SQUAD_BUILDING
Squad.decompressSquad(squad)
squad.commandTick = tick + BUILD_COMMAND_TIMEOUT
if squad.kamikaze then
cmd.distraction = DEFINES_DISTRACTION_NONE
else
@ -665,16 +667,16 @@ local function attackMove(squad)
group.set_command(cmd)
end
local function buildMove(map, squad)
local function buildMove(squad, tick)
local group = squad.group
local groupPosition = group.position
local position = findMovementPosition(map.surface, groupPosition) or groupPosition
local position = findMovementPosition(squad.map.surface, groupPosition) or groupPosition
setPositionInCommand(Queries.settleCommand, position)
Squad.decompressSquad(squad)
group.set_command(Queries.compoundSettleCommand)
group.set_command(Queries.settleCommand)
end
function Squad.cleanSquads(tick)
@ -721,53 +723,57 @@ function Squad.cleanSquads(tick)
squads[groupId] = nil
elseif (group.state == 4) then
squad.wanders = 0
Squad.squadDispatch(squad.map, squad, tick)
Squad.squadDispatch(squad, tick)
elseif (squad.commandTick and (squad.commandTick < tick)) then
if squad.wanders > 5 then
squad.group.destroy()
else
squad.wanders = squad.wanders + 1
local cmd = Queries.wander2Command
squad.commandTick = tick + COMMAND_TIMEOUT
group.set_command(cmd)
group.start_moving()
if squad.status == SQUAD_BUILDING then
squad.commandTick = tick + BUILD_COMMAND_TIMEOUT
else
squad.commandTick = tick + COMMAND_TIMEOUT
end
end
end
end
end
function Squad.squadDispatch(map, squad, tick)
function Squad.squadDispatch(squad, tick)
local group = squad.group
if group and group.valid then
local status = squad.status
if (status == SQUAD_RAIDING) then
squad.commandTick = tick + COMMAND_TIMEOUT
attackMove(squad)
elseif (status == SQUAD_SETTLING) then
squad.commandTick = tick + COMMAND_TIMEOUT
settleMove(squad)
elseif (status == SQUAD_RETREATING) then
squad.commandTick = tick + COMMAND_TIMEOUT
if squad.settlers then
squad.status = SQUAD_SETTLING
settleMove(squad)
else
squad.status = SQUAD_RAIDING
attackMove(squad)
end
elseif (status == SQUAD_BUILDING) then
squad.commandTick = tick + COMMAND_TIMEOUT
removeSquadFromChunk(squad)
buildMove(map, squad)
elseif (status == SQUAD_GUARDING) then
squad.commandTick = tick + COMMAND_TIMEOUT
if squad.settlers then
squad.status = SQUAD_SETTLING
settleMove(squad)
else
squad.status = SQUAD_RAIDING
attackMove(squad)
end
if not (group and group.valid) then
return
end
compressSquad(squad)
local status = squad.status
if (status == SQUAD_RAIDING) then
squad.commandTick = tick + COMMAND_TIMEOUT
attackMove(squad, tick)
elseif (status == SQUAD_SETTLING) then
squad.commandTick = tick + COMMAND_TIMEOUT
settleMove(squad, tick)
elseif (status == SQUAD_RETREATING) then
squad.commandTick = tick + COMMAND_TIMEOUT
if squad.settlers then
squad.status = SQUAD_SETTLING
settleMove(squad, tick)
else
squad.status = SQUAD_RAIDING
attackMove(squad, tick)
end
elseif (status == SQUAD_BUILDING) then
squad.commandTick = tick + BUILD_COMMAND_TIMEOUT
removeSquadFromChunk(squad)
buildMove(squad, tick)
elseif (status == SQUAD_GUARDING) then
squad.commandTick = tick + COMMAND_TIMEOUT
if squad.settlers then
squad.status = SQUAD_SETTLING
settleMove(squad, tick)
else
squad.status = SQUAD_RAIDING
attackMove(squad, tick)
end
end
end
@ -1228,8 +1234,6 @@ local function deploySquad(name, chunk, cost, vengence, attacker)
squad.rabid = Universe.random() < 0.03
Squad.compressSquad(squad)
Universe.groupNumberToSquad[squad.groupNumber] = squad
modifyBaseUnitPoints(base, -cost, name, squadPosition.x, squadPosition.y)
end