Skip to content
Snippets Groups Projects
Commit 003de8ce authored by dg's avatar dg
Browse files

New slime tileset

git-svn-id: http://svn.net-core.org/repos/t-engine4@3926 51575b47-30f0-44d4-a5cc-537603b46e54
parent 4c354eb3
No related branches found
No related tags found
No related merge requests found
Showing
with 148 additions and 3 deletions
......@@ -56,6 +56,7 @@ function _M:replace(i, j, g)
end
function _M:edit(i, j, id, e)
if not e then return end
self.edits[i] = self.edits[i] or {}
self.edits[i][j] = self.edits[i][j] or {}
local ee = self.edits[i][j]
......@@ -122,6 +123,7 @@ function _M:replaceAll(level)
g.add_displays = g.add_displays or {}
for i = 1, #e.add_displays do
g.add_displays[#g.add_displays+1] = require(g.__CLASSNAME).new(e.add_displays[i])
g.add_displays[#g.add_displays].image = g.add_displays[#g.add_displays].image:format(rng.range(e.min, e.max))
end
end
if e.image then g.image = e.image end
......@@ -434,6 +436,35 @@ lava = { method="borders", type="lava",
default7i={add_mos={{image="terrain/lava/lava_floor_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=4},
default9i={add_mos={{image="terrain/lava/lava_floor_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=4},
},
slime_wall = { method="borders", type="slime_wall", forbid={}, use_type=true,
default8={add_displays={{image="terrain/slime/slime_wall_V2_top_01.png", display_y=-1, z=18}}, min=1, max=1},
default2={image="terrain/slime/slime_wall_V2_8_01.png", min=1, max=2, add_displays={{image="terrain/slime/floor_wall_slime_%02d.png", display_y=1}}},
default4={add_mos={{image="terrain/slime/slime_edge_vertical_left_01.png", display_x=-0.03125}}, min=1, max=1},
default6={add_mos={{image="terrain/slime/slime_edge_vertical_right_01.png", display_x=0.03125}}, min=1, max=1},
default6i={add_mos={{image="terrain/slime/slime_corner_topleft_going_right_01.png", display_y=-1, display_x=0.03125}, {image="terrain/slime/slime_corner_bottomleft_going_right_01.png", display_x=0.03125}}, min=1, max=1},
default4i={add_mos={{image="terrain/slime/slime_corner_topright_going_left_01.png", display_y=-1, display_x=-0.03125}, {image="terrain/slime/slime_corner_bottomright_going_left_01.png", display_x=-0.03125}}, min=1, max=1},
default3={add_mos={{image="terrain/slime/slime_corner_topleft_going_right_01.png", display_y=-1, display_x=0.03125}, {image="terrain/slime/slime_edge_vertical_right_01.png", display_x=0.03125}}, min=1, max=1},
default1={add_mos={{image="terrain/slime/slime_corner_topright_going_left_01.png", display_y=-1, display_x=-0.03125}, {image="terrain/slime/slime_edge_vertical_left_01.png", display_x=-0.03125}}, min=1, max=1},
default9={add_mos={{image="terrain/slime/slime_corner_bottomleft_going_right_01.png", display_x=0.03125}}, min=1, max=1},
default7={add_mos={{image="terrain/slime/slime_corner_bottomright_going_left_01.png", display_x=-0.03125}}, min=1, max=1},
default7i={add_mos={{image="terrain/slime/slime_edge_upper_left_01.png", display_y=-1, display_x=-0.03125}}, min=1, max=1},
default9i={add_mos={{image="terrain/slime/slime_edge_upper_right_01.png", display_y=-1, display_x=0.03125}}, min=1, max=1},
--[[
default1={add_mos={{image="terrain/mountain9i.png", display_x=-1, display_y=1}}, min=1, max=1},
default3={add_mos={{image="terrain/mountain7i.png", display_x=1, display_y=1}}, min=1, max=1},
default7={add_mos={{image="terrain/mountain3i.png", display_x=-1, display_y=-1}}, min=1, max=1},
default9={add_mos={{image="terrain/mountain1i.png", display_x=1, display_y=-1}}, min=1, max=1},
default1i={add_mos={{image="terrain/mountain1.png", display_x=-1, display_y=1}}, min=1, max=1},
default3i={add_mos={{image="terrain/mountain3.png", display_x=1, display_y=1}}, min=1, max=1},
default7i={add_displays={{image="terrain/mountain7.png", display_x=-1, display_y=-1, z=17}}, min=1, max=1},
default9i={add_displays={{image="terrain/mountain9.png", display_x=1, display_y=-1, z=18}}, min=1, max=1},
]]
},
}
......@@ -461,7 +492,7 @@ function _M:editTileGenericBorders(level, i, j, g, nt, type)
if nt.forbid[g9] then g9 = type end
end
local id = table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
local id = "genbord:"..table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
-- Sides
if g5 ~= g8 then self:edit(i, j, id, nt[g8.."8"] or nt["default8"]) end
......@@ -480,12 +511,62 @@ function _M:editTileGenericBorders(level, i, j, g, nt, type)
if g5 ~= g3 and g5 ~= g6 and g5 ~= g2 then self:edit(i, j, id, nt[g3.."3i"] or nt["default3i"]) end
end
--- Make water have nice transition to other stuff
function _M:editTileGenericWalls(level, i, j, g, nt, type)
local kind = nt.use_type and "type" or "subtype"
local g5 = level.map:checkEntity(i, j, Map.TERRAIN, kind) or type
local g8 = level.map:checkEntity(i, j-1, Map.TERRAIN, kind) or type
local g2 = level.map:checkEntity(i, j+1, Map.TERRAIN, kind) or type
local g4 = level.map:checkEntity(i-1, j, Map.TERRAIN, kind) or type
local g6 = level.map:checkEntity(i+1, j, Map.TERRAIN, kind) or type
local g7 = level.map:checkEntity(i-1, j-1, Map.TERRAIN, kind) or type
local g9 = level.map:checkEntity(i+1, j-1, Map.TERRAIN, kind) or type
local g1 = level.map:checkEntity(i-1, j+1, Map.TERRAIN, kind) or type
local g3 = level.map:checkEntity(i+1, j+1, Map.TERRAIN, kind) or type
if nt.forbid then
if nt.forbid[g5] then g5 = type end
if nt.forbid[g4] then g4 = type end
if nt.forbid[g6] then g6 = type end
if nt.forbid[g8] then g8 = type end
if nt.forbid[g2] then g2 = type end
if nt.forbid[g1] then g1 = type end
if nt.forbid[g3] then g3 = type end
if nt.forbid[g7] then g7 = type end
if nt.forbid[g9] then g9 = type end
end
local id = "genwall:"..table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
-- Sides
if g5 ~= g8 then self:edit(i, j, id, nt[g8.."8"] or nt["default8"]) end
if g5 ~= g2 then self:edit(i, j, id, nt[g2.."2"] or nt["default2"]) end
if g5 ~= g4 and g5 ~= g7 and g5 ~= g1 then self:edit(i, j, id, nt[g4.."4"] or nt["default4"])
elseif g5 ~= g4 and g5 == g7 and g5 ~= g1 then self:edit(i, j, id, nt[g1.."1"] or nt["default1"])
elseif g5 ~= g4 and g5 ~= g7 and g5 == g1 then self:edit(i, j, id, nt[g7.."7"] or nt["default7"])
elseif g5 ~= g4 and g5 == g7 and g5 == g1 then self:edit(i, j, id, nt[g4.."4i"] or nt["default4i"])
end
if g5 ~= g6 and g5 ~= g9 and g5 ~= g3 then self:edit(i, j, id, nt[g6.."6"] or nt["default6"])
elseif g5 ~= g6 and g5 == g9 and g5 ~= g3 then self:edit(i, j, id, nt[g3.."3"] or nt["default3"])
elseif g5 ~= g6 and g5 ~= g9 and g5 == g3 then self:edit(i, j, id, nt[g9.."9"] or nt["default9"])
elseif g5 ~= g6 and g5 == g9 and g5 == g3 then self:edit(i, j, id, nt[g6.."6i"] or nt["default6i"])
end
-- Tops
if g5 ~= g4 and g5 ~= g7 and g5 ~= g8 then self:edit(i, j, id, nt[g7.."7i"] or nt["default7i"]) end
if g5 ~= g6 and g5 ~= g9 and g5 ~= g8 then self:edit(i, j, id, nt[g9.."9i"] or nt["default9i"]) end
end
function _M:editTileBorders(level, i, j, g, nt)
self:editTileGenericBorders(level, i, j, g, nt, nt.type or "grass")
end
function _M:editTileBorders_def(level, i, j, g, nt)
self:editTileGenericBorders(level, i, j, g, defs[nt.def], defs[nt.def].type or "grass")
end
function _M:editTileWalls_def(level, i, j, g, nt)
self:editTileGenericWalls(level, i, j, g, defs[nt.def], defs[nt.def].type or "grass")
end
-- This array is precomputed, it holds the possible combinations of walls and the nice tile they generate
-- The data is bit-encoded
......
......@@ -17,21 +17,85 @@
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
local slime_wall_editer = {method="walls_def", def="slime_wall"}
newEntity{
define_as = "SLIME_FLOOR",
name = "slimy floor", image = "terrain/slime_floor.png",
type = "floor", subtype = "slime",
name = "slime floor", image = "terrain/slime/slime_floor_01.png",
display = '.', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
grow = "SLIME_WALL",
nice_tiler = { method="replace", base={"SLIME_FLOOR", 100, 1, 5} },
}
for i = 1, 5 do newEntity{ base="SLIME_FLOOR", define_as = "SLIME_FLOOR"..i, image = "terrain/slime/slime_floor_0"..i..".png"} end
newEntity{
define_as = "SLIME_WALL",
name = "slimy wall", image = "terrain/slime_wall.png",
type = "wall", subtype = "slime",
name = "slime wall", image = "terrain/slime/slime_wall_V2_5_01.png",
display = '#', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
always_remember = true,
does_block_move = true,
can_pass = {pass_wall=1},
block_sight = true,
air_level = -20,
dig = "SLIME_FLOOR",
nice_editer = slime_wall_editer,
nice_tiler = { method="replace", base={"SLIME_WALL", 100, 1, 5} },
}
for i = 1, 5 do newEntity{ base="SLIME_WALL", define_as = "SLIME_WALL"..i, image = "terrain/slime/slime_wall_V2_5_0"..i..".png"} end
-----------------------------------------
-- Level changers
-----------------------------------------
newEntity{
define_as = "SLIME_UP", image = "terrain/slime/slime_floor_01.png", add_mos = {{image="terrain/slime/slime_stairs_up_left_01.png"}},
type = "floor", subtype = "slime",
name = "previous level",
display = '<', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
notice = true,
always_remember = true,
change_level = -1,
}
newEntity{
define_as = "SLIME_DOWN", image = "tterrain/slime/slime_floor_01.png", add_mos = {{image="terrain/slime/slime_stair_down_01.png"}},
type = "floor", subtype = "slime",
name = "next level",
display = '>', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
notice = true,
always_remember = true,
change_level = 1,
}
-----------------------------------------
-- Doors
-----------------------------------------
newEntity{
define_as = "SLIME_DOOR",
type = "wall", subtype = "slime",
name = "slime door",
display = '+', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
nice_tiler = { method="door3d", north_south="SLIME_DOOR_VERT", west_east="SLIME_DOOR_HORIZ" },
notice = true,
always_remember = true,
block_sight = true,
-- nice_editer = slime_wall_editer,
door_opened = "SLIME_DOOR_OPEN",
dig = "FLOOR",
}
newEntity{
define_as = "SLIME_DOOR_OPEN",
type = "wall", subtype = "slime",
name = "open slime door",
display = "'", color=colors.LIGHT_GREEN, back_color=colors.GREEN,
always_remember = true,
-- nice_editer = slime_wall_editer,
door_closed = "SLIME_DOOR",
}
newEntity{ base = "SLIME_DOOR", define_as = "SLIME_DOOR_HORIZ", image = "terrain/slime/slime_floor_01.png", add_displays={class.new{image="terrain/slime/slime_door_hor_closed_lower_01.png", add_mos={{image="terrain/slime/slime_door_hor_open_upper_01.png", display_y=-1}, {image="terrain/slime/floor_wall_slime_doorways_01.png"}}}}, door_opened = "SLIME_DOOR_HORIZ_OPEN"}
newEntity{ base = "SLIME_DOOR_OPEN", define_as = "SLIME_DOOR_HORIZ_OPEN", image = "terrain/slime/slime_floor_01.png", add_displays={class.new{image="terrain/slime/slime_door_hor_open_lower_01.png", add_mos={{image="terrain/slime/slime_door_hor_open_upper_01.png", display_y=-1}}}}, door_closed = "SLIME_DOOR_HORIZ"}
newEntity{ base = "SLIME_DOOR", define_as = "SLIME_DOOR_VERT", image = "terrain/slime/slime_floor_01.png", add_mos={{image="terrain/slime/slime_door_ver_top_closed_01.png", display_y=-1}}, add_displays={class.new{z=17, image="terrain/slime/slime_door_ver_bottom_closed_01.png", add_mos={{image="terrain/slime/slime_wall_V2_top_01.png"}, {image="terrain/slime/slime_edge_ver_door_left_01.png", display_x=-1}, {image="terrain/slime/slime_edge_ver_door_right_01.png", display_x=1}}}}, door_opened = "SLIME_DOOR_OPEN_VERT", dig = "SLIME_DOOR_OPEN_VERT"}
newEntity{ base = "SLIME_DOOR_OPEN", define_as = "SLIME_DOOR_OPEN_VERT", image = "terrain/slime/slime_floor_01.png", add_mos={{image="terrain/slime/slime_door_ver_top_lower_part_01.png"}}, add_displays={class.new{z=17, image="terrain/slime/slime_door_ver_bottom_open_01.png", add_mos={{image="terrain/slime/slime_wall_V2_top_01.png"}, {image="terrain/slime/slime_edge_ver_door_left_01.png", display_x=-1}, {image="terrain/slime/slime_edge_ver_door_right_01.png", display_x=1}, {image="terrain/slime/slime_door_ver_top_upper_part_01.png", display_y=-1}}}}, door_closed = "SLIME_DOOR_VERT"}
game/modules/tome/data/gfx/shockbolt/terrain/slime/floor_wall_slime_01.png

2.14 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/floor_wall_slime_02.png

2.04 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/floor_wall_slime_doorways_01.png

1.81 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_hor_closed_lower_01.png

8.62 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_hor_open_lower_01.png

5.92 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_hor_open_upper_01.png

1.82 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_ver_bottom_closed_01.png

4.74 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_ver_bottom_open_01.png

1.23 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_ver_top_closed_01.png

3.36 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_ver_top_lower_part_01.png

4.09 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_door_ver_top_upper_part_01.png

3.39 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_edge_upper_left_01.png

1.3 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_edge_upper_right_01.png

1.27 KiB

game/modules/tome/data/gfx/shockbolt/terrain/slime/slime_edge_ver_door_left_01.png

494 B

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