server/scripts/e3a/build.lua

194 lines
4.3 KiB
Lua

function size()
return 16
end
function make_island(pl, x, y, a, b)
if b==nil then b = a/3 end
local nx, ny = plane.normalize(pl, x, y)
gmtool.make_island(nx, ny, a, b)
end
function make_block(pl, x, y, r)
local nx, ny = plane.normalize(pl, x, y)
gmtool.make_block(nx, ny, r)
end
function find(email)
for f in factions() do if f.email==email then return f end end
return nil
end
function give_item(email, id, uname, iname)
f = find(email)
for u in f.units do
u.id=atoi36(id)
u.name=uname
u:add_item(iname, 1)
break
end
end
function give_items()
give_item("hongeldongel@web.de", "boss", "Drollitz", "rpg_item_1")
give_item("zangerl.helmut@chello.at", "holb", "Holbard", "rpg_item_2")
give_item("r.lang@chello.at", "brtL", "Bertl", "rpg_item_2")
give_item("schlaustauch@gmx.de", "bert", "Bertram", "rpg_item_3")
end
function island(pl, x, y, r)
make_block(pl, x, y, r)
make_island(pl, x+r/2+2, y+r/2, size() * 3)
make_island(pl, x-r-2, y+r/2, size() * 3)
make_island(pl, x-r/2-2, y-r/2, size() * 3)
make_island(pl, x+r+2, y-r/2, size() * 3)
make_island(pl, x+r/2+2, y-r-2, size() * 3)
make_island(pl, x-r/2-2, y+r+2, size() * 3)
end
function cross(pl, x, y, r)
make_block(pl, x-r, y+r*2, r)
make_block(pl, x+r*4/3, y, r)
make_block(pl, x-r*4/3, y, r)
make_block(pl, x+r, y-r*2, r)
make_island(pl, x, y, size() * 3)
make_island(pl, x, y-r*4/3, size() * 3)
make_island(pl, x, y+r*4/3, size() * 3)
make_island(pl, x+r*4/3, y-r*4/3, size() * 3)
make_island(pl, x-r*4/3, y+r*4/3, size() * 3)
end
function clean()
for r in regions() do
if r.terrain=="ocean" then
region.destroy(r)
end
end
end
function count()
local i = 0
for f in factions() do i = i + 1 end
print(i)
end
function line(pl)
local m = 0
local i = 0
local x, y = plane.normalize(pl, 0, i)
local r = get_region(x, y)
while true do
if r==nil then
if m==0 and (i>=0 or i<-10) then
local s = size()
gmtool.make_island(x, y, s*3, s)
else
gmtool.make_block(x, y, 6)
end
r = get_region(x, y)
if r==nil then
r = region.create(x, y, "ocean")
end
m = 1 - m
end
i = r.y + 1
x, y = plane.normalize(pl, 0, i)
r = get_region(x, y)
if r~=nil and r.y==0 then break end
end
end
function build(pl)
local d = 28
local h = 20
line(pl)
island(pl, d+15, -6, 11)
island(pl, -d, -h-10, 11)
cross(pl, -d, h-10, 6)
island(pl, d, 2*h, 11)
end
function fill(pl, w, h)
local x, y
for x=0,w do
for y=0,h do
local nx, ny = plane.normalize(pl, x, y)
local r = get_region(nx, ny)
if r==nil then
r = region.create(nx, ny, "ocean")
end
end
end
end
function seed()
local input = io.open(config.basepath .. "/parteien.txt")
for f in factions() do
if f.race=="vampunicorn" then
local str = input:read("*line")
if str==nil then break end
local race, lang, email = str:match("([^ ]*) ([^ ]*) ([^ ]*)")
f.race = race:lower()
f.options = f.options + 4096
f.email = email
f.locale = lang
for u in f.units do
u.race = race:lower()
u.hp = u.hp_max
local b = building.create(u.region, "castle")
if lang=="de" then
u.name = "Entdecker"
b.name = "Heimat"
else
u.name = "Explorer"
b.name = "Home"
end
b.size = 10
u.building = b
end
end
end
for r in regions() do
r:set_resource("sapling", r:get_resource("tree")/4)
r:set_resource("seed", 0)
end
update_owners()
end
function select()
for f in factions() do
if f.email=="enno@eressea.de" then
for u in f.units do
gmtool.select(u.region, true)
u.number = 0
end
end
end
end
function justWords(str)
local t = {}
local function helper(word) table.insert(t, word) return "" end
if not str:gsub("%w+", helper):find"%S" then return t end
end
function rebuild()
free_game()
local w = 110
local h = 80
local pl = plane.create(0, -w/2, -h/2, w+1, h+1)
build(pl)
fill(pl, w, h)
write_map("export.cr")
end
function testwelt()
free_game()
local w = 10
local h = 10
local pl = plane.create(0, -w/2, -h/2, w+1, h+1)
gmtool.make_island(0, 0, 30, 3)
fill(pl, w, h)
write_map("export.cr")
end