raze-gles/polymer/eduke32/source/lunatic/util/colenemy.lua

105 lines
2.7 KiB
Lua

-- Search for enemies with nonzero pal.
-- foreachmap module.
local build = require("build")
local D = build.readdefs("../../names.h") or error("Need ../../names.h")
local assert = assert
local print = print
local string = require("string")
local io = require("io")
local function printf(fmt, ...)
print(string.format(fmt, ...))
end
module(...)
local ENEMY_NAME = {
--[[
[D.BOSS1] = "BOSS1",
[D.BOSS1STAYPUT] = "BOSS1STAYPUT",
--]]
[D.BOSS2] = "BOSS2",
[D.BOSS3] = "BOSS3",
[D.BOSS4] = "BOSS4",
[D.BOSS4STAYPUT] = "BOSS4STAYPUT",
[D.COMMANDER] = "COMMANDER",
[D.COMMANDERSTAYPUT] = "COMMANDERSTAYPUT",
[D.DRONE] = "DRONE",
[D.GREENSLIME] = "GREENSLIME",
[D.LIZMAN] = "LIZMAN",
[D.LIZMANFEEDING] = "LIZMANFEEDING",
[D.LIZMANJUMP] = "LIZMANJUMP",
[D.LIZMANSPITTING] = "LIZMANSPITTING",
[D.LIZMANSTAYPUT] = "LIZMANSTAYPUT",
[D.LIZTROOP] = "LIZTROOP",
[D.LIZTROOPDUCKING] = "LIZTROOPDUCKING",
[D.LIZTROOPJETPACK] = "LIZTROOPJETPACK",
[D.LIZTROOPJUSTSIT] = "LIZTROOPJUSTSIT",
[D.LIZTROOPONTOILET] = "LIZTROOPONTOILET",
[D.LIZTROOPRUNNING] = "LIZTROOPRUNNING",
[D.LIZTROOPSHOOT] = "LIZTROOPSHOOT",
[D.LIZTROOPSTAYPUT] = "LIZTROOPSTAYPUT",
[D.OCTABRAIN] = "OCTABRAIN",
[D.OCTABRAINSTAYPUT] = "OCTABRAINSTAYPUT",
[D.ORGANTIC] = "ORGANTIC",
[D.PIGCOP] = "PIGCOP",
[D.PIGCOPDIVE] = "PIGCOPDIVE",
[D.PIGCOPSTAYPUT] = "PIGCOPSTAYPUT",
[D.RAT] = "RAT",
[D.ROTATEGUN] = "ROTATEGUN",
[D.SHARK] = "SHARK",
}
local uniq = false
function init(args)
if (#args == 1) then
local wr = function(s) io.stderr:write(s) end
wr("Usage: "..args[0].." "..args[1].." [-u] *.map ...\n")
wr(" -u: print only one pal-x-tilenum combination\n")
end
if (args[2]:sub(1,1)=="-") then
assert(args[2]=="-u", "Unknown option "..args[2])
uniq = true
return 3
end
end
function success(map, fn)
-- Have one at all?
local haveone = false
-- Have pal-x-tile combination?
-- [tile*256 + pal] = true
local havept = {}
for i=0,map.numsprites-1 do
local spr = map.sprite[i]
local picnum, pal = spr.picnum, spr.pal
local name = ENEMY_NAME[picnum]
if (name and pal~=0) then
if (not (name:match("^LIZTROOP") and pal==21)) then -- those are handled by CON
if (not uniq or not havept[picnum*256 + pal]) then
if (not haveone) then
printf("%s:", fn)
haveone = true
end
printf("%5d %3d %s", i, pal, name)
havept[picnum*256 + pal] = true
end
end
end
end
if (haveone) then
print("")
end
end