forked from github/server
Rewrote the gates, and used them for hse05
This commit is contained in:
parent
fa9d731fc5
commit
f56a7d8ae7
|
@ -1,31 +1,13 @@
|
||||||
if gate_exchange==nil then
|
if gate_travel==nil then
|
||||||
dofile("gates.lua")
|
dofile("gates.lua")
|
||||||
end
|
end
|
||||||
|
|
||||||
local function eternath_travellers(b, maxsize)
|
|
||||||
local size = maxsize
|
|
||||||
local units = {}
|
|
||||||
local u
|
|
||||||
local first = true
|
|
||||||
|
|
||||||
for u in b.units do
|
|
||||||
if first then
|
|
||||||
first = false
|
|
||||||
else
|
|
||||||
if u.number<=size and u.weight<=u.capacity then
|
|
||||||
units[u] = u
|
|
||||||
size = size - u.number
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return units
|
|
||||||
end
|
|
||||||
|
|
||||||
local function eternath_exchange(b1, b2, size)
|
local function eternath_exchange(b1, b2, size)
|
||||||
local units1 = eternath_travellers(b1, size)
|
local units1 = gate_units(b1, size)
|
||||||
local units2 = eternath_travellers(b2, size)
|
local units2 = gate_units(b2, size)
|
||||||
|
|
||||||
gate_exchange(b1, units1, b2, units2)
|
gate_travel(b2, units1)
|
||||||
|
gate_travel(b1, units2)
|
||||||
end
|
end
|
||||||
|
|
||||||
function eternathgate_action(b)
|
function eternathgate_action(b)
|
||||||
|
|
|
@ -1,12 +1,27 @@
|
||||||
function gate_exchange(b1, units1, b2, units2)
|
function gate_travel(b, units)
|
||||||
-- we've found which units we want to exchange, now swap them:
|
-- we've found which units we want to exchange, now swap them:
|
||||||
local u
|
local u
|
||||||
for u in units1 do
|
for u in units do
|
||||||
u.region = b2.region
|
u.region = b.region
|
||||||
u.building = b2
|
u.building = b
|
||||||
end
|
|
||||||
for u in units2 do
|
|
||||||
u.region = b1.region
|
|
||||||
u.building = b1
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function gate_units(b, maxsize)
|
||||||
|
local size = maxsize
|
||||||
|
local units = {}
|
||||||
|
local u
|
||||||
|
local first = true
|
||||||
|
|
||||||
|
for u in b.units do
|
||||||
|
if first then
|
||||||
|
first = false
|
||||||
|
else
|
||||||
|
if u.number<=size and u.weight<=u.capacity then
|
||||||
|
units[u] = u
|
||||||
|
size = size - u.number
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return units
|
||||||
|
end
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
function run_scripts()
|
function run_scripts()
|
||||||
scripts = {
|
scripts = {
|
||||||
|
"hse05-portals.lua"
|
||||||
}
|
}
|
||||||
for index in scripts do
|
for index in scripts do
|
||||||
local script = scriptpath .. "/" .. scripts[index]
|
local script = scriptpath .. "/" .. scripts[index]
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
if gate_travel==nil then
|
||||||
|
dofile("gates.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
buildings = {}
|
||||||
|
|
||||||
|
function portal_exchange(b1, param)
|
||||||
|
b2 = buildings[param]
|
||||||
|
if buildings[param] == nil then
|
||||||
|
buildings[param] = b1
|
||||||
|
else
|
||||||
|
u1 = gate_units(b1, 100)
|
||||||
|
u2 = gate_units(b2, 100)
|
||||||
|
gate_travel(b1, u2)
|
||||||
|
gate_travel(b2, u1)
|
||||||
|
end
|
||||||
|
return 1
|
||||||
|
end
|
|
@ -2,7 +2,7 @@
|
||||||
-- used on the jadee/wildente wedding island. the two _action functions
|
-- used on the jadee/wildente wedding island. the two _action functions
|
||||||
-- are used as age() functions for a building_action with b:addaction("name")
|
-- are used as age() functions for a building_action with b:addaction("name")
|
||||||
|
|
||||||
if gate_exchange==nil then
|
if gate_travel==nil then
|
||||||
dofile("gates.lua")
|
dofile("gates.lua")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -24,7 +24,8 @@ local function wedding_exchange(b1, b2)
|
||||||
local units1 = wedding_travellers(b1)
|
local units1 = wedding_travellers(b1)
|
||||||
local units2 = wedding_travellers(b2)
|
local units2 = wedding_travellers(b2)
|
||||||
|
|
||||||
gate_exchange(b1, units1, b2, units2)
|
gate_travel(b2, units1)
|
||||||
|
gate_travel(b1, units2)
|
||||||
end
|
end
|
||||||
|
|
||||||
function hellgate_action(b)
|
function hellgate_action(b)
|
||||||
|
|
Loading…
Reference in New Issue