Skip to content
Snippets Groups Projects
Commit 3d0a8372 authored by DarkGod's avatar DarkGod
Browse files

Updated and re-enabled the background animation on the main menu

parent f8a7a22f
No related branches found
No related tags found
No related merge requests found
Showing
with 129 additions and 43 deletions
......@@ -29,6 +29,7 @@ local Dialog = require "engine.ui.Dialog"
local Tooltip = require "engine.Tooltip"
local MainMenu = require "mod.dialogs.MainMenu"
local Downloader = require "engine.dialogs.Downloader"
local FontPackage = require "engine.FontPackage"
local Shader = require "engine.Shader"
local Zone = require "engine.Zone"
......@@ -76,8 +77,8 @@ function _M:init()
-- self.refuse_threads = true
self.normal_key = self.key
-- self.stopped = config.settings.boot_menu_background
self.stopped = true
self.stopped = config.settings.boot_menu_background
-- self.stopped = true
if core.display.safeMode() then self.stopped = true end
if self.stopped then
core.game.setRealtime(0)
......@@ -113,7 +114,9 @@ function _M:run()
self:makeWebtooltip()
end
self.flyers = FlyingText.new()
local flyfont, flysize = FontPackage:getFont("flyer")
self.flyers = FlyingText.new(flyfont, flysize, flyfont, flysize + 3)
self.flyers:enableShadow(0.6)
self:setFlyingText(self.flyers)
self.log = function(style, ...) end
self.logSeen = function(e, style, ...) end
......
......@@ -30,7 +30,7 @@ end
function _M:block_move(x, y, e, act, couldpass)
-- Open doors
if self.door_opened and act then
game.level.map(x, y, engine.Map.TERRAIN, game.zone.grid_list.DOOR_OPEN)
game.level.map(x, y, engine.Map.TERRAIN, game.zone.grid_list[self.door_opened])
return true
elseif self.door_opened and not couldpass then
return true
......@@ -56,36 +56,78 @@ function _M:on_move(x, y, who, forced)
end
--- Generate sub entities to make nice trees
function _M:makeTrees(base, max, bigheight_limit, tint)
function _M:makeNewTrees(g, kindsdefs, max_trees, basedir)
basedir = basedir or "terrain/trees/"
max_trees = max_trees or 3
g.add_displays = g.add_displays or {}
g.add_mos = g.add_mos or {}
local basemos = g.add_mos
local add = g.add_displays
add[#add+1] = engine.Entity.new{image="invis.png", z=3, display_on_seen = true, display_on_remember = true, add_mos={}}
local mos = add[#add].add_mos
local function getname(n)
if type(n) == "string" then return n end
return n[1]:format(rng.range(n[2], n[3]))
end
local function makeTree(nb, z)
local inb = 4 - nb
local treeid = rng.range(1, max or 5)
return engine.Entity.new{
local treedef = rng.table(kindsdefs)
local treeid = treedef[1]
local parts = treedef[2]
if not parts.tall then parts.tall = 0 end
local scale = rng.float(0.5 + inb / 6, 1)
local x = rng.float(-1 / 3 * nb / 3, 1 / 3 * nb / 3)
local y = rng.float(-1 / 5 * nb / 3, 1 / 4 * nb / 3)
for i = 1, #parts - 1 do
mos[#mos+1] = {image=basedir..treeid.."_"..getname(parts[i])..".png", display_x=x, display_y=y, display_w=scale, display_h=scale}
end
if parts.base then
basemos[#basemos+1] = {image=basedir..treeid.."_"..getname(parts.base)..".png", display_x=x, display_y=y, display_w=scale, display_h=scale}
end
if parts.adds then
local name = parts.adds[1]
local t = {
z = z,
display_x = x,
display_y = y,
display_w = scale,
display_h = scale,
display_on_seen = true,
display_on_remember = true,
image = basedir..treeid.."_"..getname(name)..".png",
}
table.merge(t, parts.adds)
add[#add+1] = engine.Entity.new(t)
end
add[#add+1] = engine.Entity.new{
z = z,
display_scale = 1,
display_scale = rng.float(0.5 + inb / 6, 1),
display_x = rng.float(-1 / 3 * nb / 3, 1 / 3 * nb / 3),
display_y = rng.float(-1 / 3 * nb / 3, 1 / 3 * nb / 3) - (treeid < (bigheight_limit or 9) and 0 or 1),
_st = y,
display_x = x,
display_y = y + scale * parts.tall,
display_w = scale,
display_h = scale * (1 - parts.tall),
display_on_seen = true,
display_on_remember = true,
display_h = treeid < (bigheight_limit or 9) and 1 or 2,
image = (base or "terrain/tree_alpha")..treeid..".png",
tint = tint,
image = basedir..treeid.."_"..getname(parts[#parts])..".png",
shader = "tree", shader_args = parts.shader_args,
}
return add[#add]
end
local v = rng.range(0, 100)
local tbl
if v < 33 then
if v < 33 and max_trees >= 3 then
tbl = { makeTree(3, 16), makeTree(3, 17), makeTree(3, 18), }
elseif v < 66 then
elseif v < 66 and max_trees >= 2 then
tbl = { makeTree(2, 16), makeTree(2, 17), }
else
tbl = { makeTree(1, 16), }
end
table.sort(tbl, function(a,b) return a.display_scale < b.display_scale end)
table.sort(tbl, function(a,b) return a._st < b._st end)
for i = 1, #tbl do tbl[i].z = 16 + i - 1 end
return tbl
return g
end
--- Generate sub entities to make nice crystals, same as trees but change tint
......
......@@ -162,13 +162,13 @@ end
--- Make walls have a pseudo 3D effect
function _M:niceTileWall3d(level, i, j, g, nt)
local s = level.map:checkEntity(i, j, Map.TERRAIN, "type") or "wall"
local gn = level.map:checkEntity(i, j-1, Map.TERRAIN, "type") or "wall"
local dn = level.map:checkEntity(i, j-1, Map.TERRAIN, "door_opened")
local gs = level.map:checkEntity(i, j+1, Map.TERRAIN, "type") or "wall"
local ds = level.map:checkEntity(i, j+1, Map.TERRAIN, "door_opened")
local gw = level.map:checkEntity(i-1, j, Map.TERRAIN, "type") or "wall"
local ge = level.map:checkEntity(i+1, j, Map.TERRAIN, "type") or "wall"
local s = (level.map:checkEntity(i, j, Map.TERRAIN, "type") or "wall").."/"..(level.map:checkEntity(i, j, Map.TERRAIN, "subtype") or "floor")
local gn = (level.map:checkEntity(i, j-1, Map.TERRAIN, "type") or "wall").."/"..(level.map:checkEntity(i, j-1, Map.TERRAIN, "subtype") or "floor")
local gs = (level.map:checkEntity(i, j+1, Map.TERRAIN, "type") or "wall").."/"..(level.map:checkEntity(i, j+1, Map.TERRAIN, "subtype") or "floor")
local gw = (level.map:checkEntity(i-1, j, Map.TERRAIN, "type") or "wall").."/"..(level.map:checkEntity(i-1, j, Map.TERRAIN, "subtype") or "floor")
local ge = (level.map:checkEntity(i+1, j, Map.TERRAIN, "type") or "wall").."/"..(level.map:checkEntity(i+1, j, Map.TERRAIN, "subtype") or "floor")
local dn = level.map:checkEntity(i, j-1, Map.TERRAIN, "is_door")
local ds = level.map:checkEntity(i, j+1, Map.TERRAIN, "is_door")
if gs ~= s and gn ~= s and gw ~= s and ge ~= s then self:replace(i, j, self:getTile(nt.small_pillar))
elseif gs ~= s and gn ~= s and gw ~= s and ge == s then self:replace(i, j, self:getTile(nt.pillar_4))
......@@ -248,20 +248,35 @@ end
local defs = {
grass = { method="borders", type="grass", forbid={lava=true, rock=true},
default8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=5},
default2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=5},
default4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=5},
default6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=4},
default1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=3},
default3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=3},
default7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3},
default9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=3},
default1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=3},
default3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=3},
default7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=3},
default9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=3},
default8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=2},
default2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=2},
default4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=2},
default6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=2},
default1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=1},
default3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=1},
default7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1},
default9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=1},
default1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=2},
default3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=2},
default7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=2},
default9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=2},
water8={add_mos={{image="terrain/grass/grass_2_%02d.png", display_y=-1}}, min=1, max=1},
water2={add_mos={{image="terrain/grass/grass_8_%02d.png", display_y=1}}, min=1, max=1},
water4={add_mos={{image="terrain/grass/grass_6_%02d.png", display_x=-1}}, min=1, max=1},
water6={add_mos={{image="terrain/grass/grass_4_%02d.png", display_x=1}}, min=1, max=1},
water1={add_mos={{image="terrain/grass/grass_9_%02d.png", display_x=-1, display_y=1}}, min=1, max=1},
water3={add_mos={{image="terrain/grass/grass_7_%02d.png", display_x=1, display_y=1}}, min=1, max=1},
water7={add_mos={{image="terrain/grass/grass_3_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1},
water9={add_mos={{image="terrain/grass/grass_1_%02d.png", display_x=1, display_y=-1}}, min=1, max=1},
water1i={add_mos={{image="terrain/grass/grass_inner_1_%02d.png", display_x=-1, display_y=1}}, min=1, max=1},
water3i={add_mos={{image="terrain/grass/grass_inner_3_%02d.png", display_x=1, display_y=1}}, min=1, max=1},
water7i={add_mos={{image="terrain/grass/grass_inner_7_%02d.png", display_x=-1, display_y=-1}}, min=1, max=1},
water9i={add_mos={{image="terrain/grass/grass_inner_9_%02d.png", display_x=1, display_y=-1}}, min=1, max=1},
},
}
......
......@@ -47,8 +47,12 @@ end
--- Makes the death happen!
function _M:attackTarget(target, mult)
if self.combat then
self:setMoveAnim(self.x, self.y, 3, blur, util.getDir(target.x, target.y, self.x, self.y), 0.2)
local dam = self.combat.dam + self:getStr() - target.combat_armor
DamageType:get(DamageType.PHYSICAL).projector(self, target.x, target.y, DamageType.PHYSICAL, math.max(0, dam))
game.level.map:particleEmitter(target.x, target.y, 1, "melee_attack", {color=target.blood_color})
end
-- We use up our own energy
......
......@@ -70,6 +70,7 @@ newEntity{
notice = true,
always_remember = true,
block_sight = true,
is_door = true,
door_opened = "DOOR_OPEN",
dig = "FLOOR",
}
......@@ -79,9 +80,10 @@ newEntity{
name = "open door", image="terrain/granite_door1_open.png",
display = "'", color_r=238, color_g=154, color_b=77, back_color=colors.DARK_GREY,
always_remember = true,
is_door = true,
door_closed = "DOOR",
}
newEntity{ base = "DOOR", define_as = "DOOR_HORIZ", image = "terrain/granite_door1.png", add_displays = {class.new{image="terrain/granite_wall3.png", z=18, display_y=-1}}, door_opened = "DOOR_HORIZ_OPEN"}
newEntity{ base = "DOOR", define_as = "DOOR_HORIZ", z=3, image = "terrain/granite_door1.png", add_displays = {class.new{image="terrain/granite_wall3.png", z=18, display_y=-1}}, door_opened = "DOOR_HORIZ_OPEN"}
newEntity{ base = "DOOR_OPEN", define_as = "DOOR_HORIZ_OPEN", image = "terrain/marble_floor.png", add_displays = {class.new{image="terrain/granite_door1_open.png", z=17}, class.new{image="terrain/granite_wall3.png", z=18, display_y=-1}}, door_closed = "DOOR_HORIZ"}
newEntity{ base = "DOOR", define_as = "DOOR_VERT", image = "terrain/marble_floor.png", add_displays = {class.new{image="terrain/granite_door1_vert.png", z=17}, class.new{image="terrain/granite_door1_vert_north.png", z=18, display_y=-1}}, door_opened = "DOOR_OPEN_VERT", dig = "DOOR_OPEN_VERT"}
newEntity{ base = "DOOR_OPEN", define_as = "DOOR_OPEN_VERT", image = "terrain/marble_floor.png", add_displays = {class.new{image="terrain/granite_door1_open_vert.png", z=17}, class.new{image="terrain/granite_door1_open_vert_north.png", z=18, display_y=-1}}, door_closed = "DOOR_VERT"}
......@@ -25,10 +25,27 @@ newEntity{
name = "grass", image = "terrain/grass.png",
display = '.', color=colors.LIGHT_GREEN, back_color={r=44,g=95,b=43},
grow = "TREE",
nice_tiler = { method="replace", base={"GRASS_PATCH", 70, 1, 12}},
nice_tiler = { method="replace", base={"GRASS_PATCH", 100, 1, 14}},
nice_editer = grass_editer,
}
for i = 1, 12 do newEntity{ base = "GRASS", define_as = "GRASS_PATCH"..i, image = "terrain/grass"..(i<7 and "" or "2")..".png" } end
for i = 1, 14 do newEntity{ base = "GRASS", define_as = "GRASS_PATCH"..i, image = ("terrain/grass/grass_main_%02d.png"):format(i) } end
local treesdef = {
{"small_elm", {"shadow", "trunk", "foliage_summer"}},
{"small_elm", {"shadow", "trunk", "foliage_summer"}},
{"elm", {tall=-1, "shadow", "trunk", "foliage_summer"}},
{"elm", {tall=-1, "shadow", "trunk", "foliage_summer"}},
{"light_pine", {tall=-1, "shadow", "trunk", {"foliage_%02d",1,4}}},
{"light_small_wider_pine", {"shadow", "trunk", {"foliage_%02d",1,4}}},
{"light_small_narrow_pine", {"shadow", "trunk", {"foliage_%02d",1,4}}},
{"cypress", {tall=-1, "shadow", "trunk", {"foliage_%02d",1,4}}},
{"small_cypress", {tall=-1, "shadow", "trunk", {"foliage_%02d",1,4}}},
{"tiny_cypress", {"shadow", "trunk", {"foliage_%02d",1,4}}},
{"oak", {tall=-1, "shadow", "trunk_01", {"foliage_summer_%02d",1,2}}},
{"oak", {tall=-1, "shadow", "trunk_02", {"foliage_summer_%02d",3,4}}},
{"small_oak", {"shadow", "trunk_01", {"foliage_summer_%02d",1,2}}},
{"small_oak", {"shadow", "trunk_02", {"foliage_summer_%02d",3,4}}},
}
newEntity{
define_as = "TREE",
......@@ -44,7 +61,9 @@ newEntity{
nice_tiler = { method="replace", base={"TREE", 100, 1, 30}},
nice_editer = grass_editer,
}
for i = 1, 30 do newEntity{ base="TREE", define_as = "TREE"..i, image = "terrain/grass.png", add_displays = class:makeTrees("terrain/tree_alpha", 13, 9)} end
for i = 1, 30 do
newEntity(class:makeNewTrees({base="TREE", define_as = "TREE"..i, image = "terrain/grass.png"}, treesdef))
end
newEntity{
define_as = "FLOWER",
......
......@@ -37,4 +37,5 @@ newEntity{
newEntity{ base="WATER_BASE",
define_as = "DEEP_WATER",
image="terrain/water_grass_5_1.png",
shader = "water",
}
game/engines/default/modules/boot/data/gfx/attacks/attack_white_01.png

6.13 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_02.png

3.75 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_03.png

4.71 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_04.png

3.21 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_05.png

4.37 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_06.png

4.1 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_07.png

3.69 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_08.png

3.89 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_09.png

4.99 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_10.png

3.38 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_11.png

4.34 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_12.png

4.56 KiB

game/engines/default/modules/boot/data/gfx/attacks/attack_white_13.png

6.31 KiB

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