To use with the TAS bot: http://tasvideos.org/userfiles/info/21819933019508761
local CONames = {
[0] = 'None',
[1] = 'Nell',
[2] = 'Andy',
[3] = 'Max',
[4] = 'Olaf',
[5] = 'Sami',
[6] = 'Grit',
[7] = 'Kanbei',
[8] = 'Sonja',
[9] = 'Eagle',
[10] = 'Drake',
[11] = 'Von Bolt',
[12] = 'Jugger',
[13] = 'Lash',
[14] = 'Koal',
[15] = 'Hawke',
[16] = 'Hachi',
[17] = 'Colin',
[18] = 'Jess',
[19] = 'Sensei',
[20] = 'Jake',
[21] = 'Rachel',
[22] = 'Sasha',
[23] = 'Javier',
[24] = 'Grimm',
[25] = 'Kindle',
[26] = 'Flak',
[27] = 'Adder'
}
function getCOName(id)
return CONames[id]
end
local COPCosts = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 3,
[5] = 3,
[6] = 3,
[7] = 4,
[8] = 3,
[9] = 3,
[10] = 4,
[11] = -1,
[12] = 3,
[13] = 4,
[14] = 3,
[15] = 5,
[16] = 3,
[17] = 2,
[18] = 3,
[19] = 2,
[20] = 3,
[21] = 3,
[22] = 2,
[23] = 3,
[24] = 3,
[25] = 3,
[26] = 3,
[27] = 2
}
function getCOPCost(id)
return COPCosts[id]
end
local SCOPCosts = {
[1] = 6,
[2] = 6,
[3] = 6,
[4] = 7,
[5] = 8,
[6] = 6,
[7] = 7,
[8] = 5,
[9] = 9,
[10] = 7,
[11] = 10,
[12] = 7,
[13] = 7,
[14] = 5,
[15] = 9,
[16] = 5,
[17] = 6,
[18] = 6,
[19] = 6,
[20] = 6,
[21] = 6,
[22] = 6,
[23] = 6,
[24] = 6,
[25] = 6,
[26] = 6,
[27] = 5
}
function getSCOPCost(id)
return SCOPCosts[id]
end
local UnitNames = {
[0] = 'None',
[1] = 'Inf',
[2] = 'Mech',
[3] = 'MD',
[4] = 'Mega',
[5] = 'Tank',
[6] = 'Recon',
[7] = 'APC',
[8] = 'Neo',
[9] = 'Piperunner',
[10] = 'Art',
[11] = 'Rockets',
[12] = 'Stealth',
[13] = 'Black Bomb',
[14] = 'AA',
[15] = 'Missiles',
[16] = 'Fighter',
[17] = 'Bomber',
[18] = 'BB',
[19] = 'B-Cop',
[20] = 'T-Cop',
[21] = 'BS',
[22] = 'Cruiser',
[23] = 'Lander',
[24] = 'Sub',
[25] = 'Carrier',
[26] = 'Oozium'
}
local function getUnitName(id)
return UnitNames[id]
end
--[[
-- COs
-- P1 CO1 0x218936C
-- P1 CO2 0x2189370
-- P2 CO1 0x2189404
-- P2 CO2 0x2189408
-- CO ID +0
-- PowersInfo +1 Bit 1-6
-- TimesPowersUsed +1 Bit 7-8 and +2 Bit 1-2
-- Stars +2 Bit 3-8 and +3
-- Unit 1
-- P1 0x2188472
-- P2 0x21887F2
-- P3 0x2188A72
-- P4 0x2188D72
-- Type +0
-- Status* +1
-- X +2
-- Y +3
-- LoadedUnit1 +4
-- LoadedUnit2 +5
-- HP +6 Bit 1-7
-- Ammo +6 Bit 8 and +7 Bit 1-3
-- Capture +7 Bit 4-8
-- Fuel +8 Bit 1-7
-- Next unit at + 14
*Status bitfield:
0x1: Wait
0x2: Unit Transported?
0x4: Unit Unselectable
0x8:
0x10: Transporting
0x20: Dived
0x40: Stunned
0x80
]]
function printMapStatus()
for Army = 1, 2 do
if Army == 1 then
COBaseAddr = 0x218936C
UnitBaseAddr = 0x2188472
else
COBaseAddr = 0x2189404
UnitBaseAddr = 0x21887F2
end
-- CO Info
for iCO = 1, 2 do
local COAddr = COBaseAddr + (iCO - 1) * 4
local COID = memory.readbyte(COAddr)
if COID ~= 0 then
local COStars = memory.readword(COAddr + 2)
print(getCOName(COID) .. ' (' .. (COStars / 1600) .. ')')
end
end
-- Unit Info
for iUnit = 1, 50 do
local UnitAddr = UnitBaseAddr + (iUnit - 1) * 14
local UnitType = memory.readbyte(UnitAddr)
if UnitType ~= 0 then
local UnitX = memory.readbyte(UnitAddr + 2)
local UnitY = memory.readbyte(UnitAddr + 3)
local UnitHP = memory.readbyte(UnitAddr + 6) % 128
print('#' .. iUnit .. ' ' .. getUnitName(UnitType) .. ' (' .. UnitX .. ',' .. UnitY .. ') ' .. UnitHP)
end
end
print()
end
end