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

Added lore to Tol Falas

git-svn-id: http://svn.net-core.org/repos/t-engine4@1210 51575b47-30f0-44d4-a5cc-537603b46e54
parent 933438f5
No related branches found
No related tags found
No related merge requests found
game/modules/tome/data/gfx/terrain/signpost.png

714 B

......@@ -310,11 +310,10 @@ on_grant = function(self, who)
-- Spawn actor
local npc = mod.class.NPC.new(self.kind.actor)
npc:resolve() npc:resolve(nil, true)
game.zone:addEntity(game.level, npc, "actor", x, y)
self.kind.actor = nil
-- Spawn the portal, far enough from the escort
local gx, gy = getPortalSpot(npc, 150, (game.level.map.w + game.level.map.h) / 2 / 2)
local gx, gy = getPortalSpot(npc, 150, 10)
if not gx then return true end
local g = mod.class.Grid.new{
show_tooltip=true,
......@@ -333,6 +332,7 @@ on_grant = function(self, who)
g:resolve() g:resolve(nil, true)
game.zone:addEntity(game.level, g, "terrain", gx, gy)
npc.escort_target = {x=gx, y=gy}
game.zone:addEntity(game.level, npc, "actor", x, y)
-- Setup quest
self.level_name = game.level.level.." of "..game.zone.name
......
......@@ -18,3 +18,14 @@
-- darkgod@te4.org
load("/data/general/grids/basic.lua")
newEntity{
define_as = "LORE_NOTE",
name = "sign post with a note", image = "terrain/marble_floor.png",
display = '_', color=colors.GREEN, back_color=colors.DARK_GREY,
add_displays = {class.new{image="terrain/signpost.png"}},
always_remember = true,
on_move = function(self, x, y, who)
if who.player then who:learnLore(self.lore) end
end,
}
......@@ -60,6 +60,22 @@ return {
},
post_process = function(level)
for uid, e in pairs(level.entities) do e.faction="tol-falas" end
-- Put lore near the up stairs
if game.zone.created_lore and game.zone.created_lore[level.level] then
local post = game.zone:makeEntityByName(level, "terrain", "LORE_NOTE")
post.lore = "tol-falas-note-"..game.zone.created_lore[level.level]
local x, y = rng.range(0, level.map.w-1), rng.range(0, level.map.h-1)
local tries = 0
while (level.map:checkEntity(x, y, engine.Map.TERRAIN, "block_move") or level.map:checkEntity(x, y, engine.Map.TERRAIN, "change_level") or (level.map.room_map[x][y] and level.map.room_map[x][y].special)) and tries < 100 do
x, y = rng.range(0, level.map.w-1), rng.range(0, level.map.h-1)
tries = tries + 1
end
if tries < 100 then
game.zone:addEntity(level, post, "terrain", x, y)
end
end
end,
levels =
{
......@@ -69,6 +85,17 @@ return {
}, },
},
},
on_enter = function(_, _, newzone)
if newzone and not game.zone.created_lore then
local levels = {2,3,4,5,6,7,8}
game.zone.created_lore = {}
for i = 1, 5 do
local lev = rng.tableRemove(levels)
game.zone.created_lore[lev] = i
print("Lore "..i.." on level "..lev)
end
end
end,
on_leave = function(lev, old_lev, newzone)
if not newzone then return end
-- Ambushed!
......
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