Skip to content
Snippets Groups Projects
Commit 3aec972a authored by dg's avatar dg
Browse files

Fix dual shot to only use 2 arrows

Random tree layout will try to place lower trees on top


git-svn-id: http://svn.net-core.org/repos/t-engine4@867 51575b47-30f0-44d4-a5cc-537603b46e54
parent a8680a64
No related branches found
No related tags found
No related merge requests found
......@@ -93,13 +93,16 @@ function _M:makeTrees(base, max)
end
local v = rng.range(0, 100)
local tbl
if v < 33 then
return { makeTree(3, 16), makeTree(3, 17), makeTree(3, 18), }
tbl = { makeTree(3, 16), makeTree(3, 17), makeTree(3, 18), }
elseif v < 66 then
return { makeTree(2, 16), makeTree(2, 17), }
tbl = { makeTree(2, 16), makeTree(2, 17), }
else
return { makeTree(1, 16), }
tbl = { makeTree(1, 16), }
end
table.sort(tbl, function(a,b) return a.display_y < b.display_y end)
return tbl
end
--- Generate sub entities to make translucent water
......
......@@ -28,20 +28,9 @@ function _M:init(zone, map, level, data)
self.grid_list = zone.grid_list
end
function _M:resolve(c)
local res = self.data[c]
if type(res) == "function" then
return res()
elseif type(res) == "table" then
return res[rng.range(1, #res)]
else
return res
end
end
function _M:generate(lev, old_lev)
for i = 0, self.map.w - 1 do for j = 0, self.map.h - 1 do
self.map(i, j, Map.TERRAIN, self.grid_list[self:resolve("#")])
self.map(i, j, Map.TERRAIN, self:resolve("#"))
end end
local ln = 0
......@@ -53,7 +42,7 @@ function _M:generate(lev, old_lev)
for j = 0, self.map.h - 1 do
local wd = widness:fbm_perlin(20 * j / self.map.h, 4)
wd = math.ceil(((wd + 1) / 2) * 4)
for ii = i - wd, i + wd do if self.map:isBound(ii, j) then self.map(ii, j, Map.TERRAIN, self.grid_list[self:resolve(".")]) end end
for ii = i - wd, i + wd do if self.map:isBound(ii, j) then self.map(ii, j, Map.TERRAIN, self:resolve(".")) end end
if j < self.map.h - 10 then
local n = path:fbm_perlin(150 * j / self.map.h, 4)
......
......@@ -158,6 +158,9 @@ function _M:archeryShoot(damtype, mult, on_hit, tg, params)
if not x or not y then return nil end
self:project(tg, x, y, function(tx, ty)
for i = 1, params.multishots or 1 do
local target = game.level.map(tx, ty, game.level.map.ACTOR)
if not target then return end
local ammo = ammo
if not params.one_shot then
ammo = self:removeObject(self:getInven("QUIVER"), 1)
......@@ -165,8 +168,6 @@ function _M:archeryShoot(damtype, mult, on_hit, tg, params)
end
if params.limit_shots then if params.limit_shots <= 0 then return end end
local target = game.level.map(tx, ty, game.level.map.ACTOR)
if not target then return end
ret.firsttarget = ret.firsttarget or target
ammo = ammo.combat
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment