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

fix level change

git-svn-id: http://svn.net-core.org/repos/t-engine4@303 51575b47-30f0-44d4-a5cc-537603b46e54
parent 25cba342
No related branches found
No related tags found
No related merge requests found
......@@ -97,7 +97,8 @@ function _M:tick()
end
--- Called when a zone leaves a level
function _M:leaveLevel(level)
-- Going from "old_lev" to "lev", leaving level "level"
function _M:leaveLevel(level, lev, old_lev)
end
--- Called by the engine when the user tries to close the window
......
......@@ -130,7 +130,7 @@ end
function _M:loadReal(load)
if self.loaded[load] then return self.loaded[load] end
local f = fs.open(self.load_dir..load, "r")
print("loading", load)
-- print("loading", load)
local lines = {}
while true do
local l = f:read()
......
......@@ -222,10 +222,10 @@ function _M:getLevelData(lev)
end
--- Leave the level, forgetting uniques and such
function _M:leaveLevel(no_close)
function _M:leaveLevel(no_close, lev, old_lev)
-- Before doing anything else, close the current level
if not no_close and game.level and game.level.map then
game:leaveLevel(game.level)
game:leaveLevel(game.level, lev, old_lev)
if game.level.data.persistant then
local save = Savefile.new(game.save_name)
......@@ -243,7 +243,7 @@ end
-- @param lev the level (from 1 to zone.max_level)
-- @return a Level object
function _M:getLevel(game, lev, old_lev, no_close)
self:leaveLevel(no_close)
self:leaveLevel(no_close, lev, old_lev)
local level_data = self:getLevelData(lev)
......@@ -283,11 +283,12 @@ function _M:newLevel(level_data, lev, old_lev, game)
self.grid_list,
level_data.generator.map
)
local startx, starty, spots = generator:generate(lev, old_lev)
local ux, uy, dx, dy, spots = generator:generate(lev, old_lev)
spots = spots or {}
local level = self.level_class.new(lev, map)
level.start = {x=startx, y=starty}
level.ups = {{x=ux, y=uy}}
level.downs = {{x=dx, y=dy}}
-- Save level data
level.data = level_data
......
......@@ -253,11 +253,7 @@ function _M:makeStairsInside(lev, old_lev)
end
end
if lev > old_lev then
return ux, uy
else
return dx, dy
end
return ux, uy, dx, dy
end
--- Create the stairs on the sides
......@@ -298,11 +294,7 @@ function _M:makeStairsSides(lev, old_lev, sides, rooms)
end
end
if lev > old_lev then
return ux, uy
else
return dx, dy
end
return ux, uy, dx, uy
end
--- Make rooms and connect them with tunnels
......
......@@ -148,24 +148,35 @@ function _M:getSaveDescription()
}
end
function _M:leaveLevel(level)
function _M:leaveLevel(level, lev, old_lev)
if level:hasEntity(self.player) then
level.exited = level.exited or {}
if lev > old_lev then
level.exited.down = {x=self.player.x, y=self.player.y}
else
level.exited.up = {x=self.player.x, y=self.player.y}
end
level:removeEntity(self.player)
end
end
function _M:changeLevel(lev, zone)
local old_lev = (self.level and not zone) and self.level.level or -1000
if zone then
if self.zone then self.zone:leaveLevel() end
if self.zone then self.zone:leaveLevel(false, lev, old_lev) end
self.zone = Zone.new(zone)
end
self.zone:getLevel(self, lev, (self.level and not zone) and self.level.level or -1000)
self.zone:getLevel(self, lev, old_lev)
-- Move back to old wilderness position
if self.zone.short_name == "wilderness" then
self.player:move(self.player.wild_x, self.player.wild_y, true)
else
self.player:move(self.level.start.x, self.level.start.y, true)
if lev > old_lev then
self.player:move(self.level.ups[1].x, self.level.ups[1].y, true)
else
self.player:move(self.level.downs[1].x, self.level.downs[1].y, true)
end
end
self.level:addEntity(self.player)
end
......
newTalent{
name = "Stealth",
type = {"cunning/stealth", 1},
require = cuns_req1,
mode = "sustained",
points = 5,
cooldown = 10,
require = { stat = { cun=12 }, },
activate = function(self, t)
local armor = self:getInven("BODY")[1]
if armor and (armor.subtype == "heavy" or armor.subtype == "massive") then
......@@ -43,21 +43,37 @@ newTalent{
newTalent{
name = "Shadowstrike",
type = {"cunning/stealth", 2},
require = cuns_req2,
mode = "passive",
points = 5,
require = { stat = { cun=18 }, },
info = function(self, t)
return ([[When striking from stealth, hits are automatically criticals if the target does not notice you.
Shadowstrikes do %.02f%% damage than a normal hit.]]):format((2 + self:getTalentLevel(t) / 5) * 100)
end,
}
newTalent{
name = "Steal",
type = {"cunning/stealth",3},
require = cuns_req3,
points = 5,
mana = 30,
cooldown = 10,
action = function(self, t)
game.log("IMPLEMENT ME!")
return true
end,
info = function(self, t)
return ([[Steal!]])
end,
}
newTalent{
name = "Unseen Actions",
type = {"cunning/stealth", 3},
type = {"cunning/stealth", 4},
require = cuns_req4,
mode = "passive",
points = 5,
require = { stat = { cun=18 }, },
info = function(self, t)
return ([[When you perform an action from stealth (attacking, using objects, ...) you have %d%% chances to not break stealth.]]):
format(10 + self:getTalentLevel(t) * 9)
......
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