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

added a rare small money vault to tol falas and amon sul

git-svn-id: http://svn.net-core.org/repos/t-engine4@392 51575b47-30f0-44d4-a5cc-537603b46e54
parent 6d3a323e
No related branches found
No related tags found
No related merge requests found
...@@ -297,6 +297,12 @@ function _M:newLevel(level_data, lev, old_lev, game) ...@@ -297,6 +297,12 @@ function _M:newLevel(level_data, lev, old_lev, game)
level:setEntitiesList("object", self:computeRarities("object", self.object_list, level, nil)) level:setEntitiesList("object", self:computeRarities("object", self.object_list, level, nil))
level:setEntitiesList("trap", self:computeRarities("trap", self.trap_list, level, nil)) level:setEntitiesList("trap", self:computeRarities("trap", self.trap_list, level, nil))
-- Save level data
level.data = level_data
-- Setup the level in the game
game:setLevel(level)
-- Generate the map -- Generate the map
local generator = require(level_data.generator.map.class).new( local generator = require(level_data.generator.map.class).new(
self, self,
...@@ -311,12 +317,6 @@ function _M:newLevel(level_data, lev, old_lev, game) ...@@ -311,12 +317,6 @@ function _M:newLevel(level_data, lev, old_lev, game)
level.downs = {{x=dx, y=dy}} level.downs = {{x=dx, y=dy}}
level.spots = spots level.spots = spots
-- Save level data
level.data = level_data
-- Setup the level in the game
game:setLevel(level)
-- Generate objects -- Generate objects
if level_data.generator.object then if level_data.generator.object then
local generator = require(level_data.generator.object.class).new( local generator = require(level_data.generator.object.class).new(
......
...@@ -3,7 +3,7 @@ local Map = require "engine.Map" ...@@ -3,7 +3,7 @@ local Map = require "engine.Map"
require "engine.Generator" require "engine.Generator"
module(..., package.seeall, class.inherit(engine.Generator)) module(..., package.seeall, class.inherit(engine.Generator))
function _M:init(zone, map, grid_list, data) function _M:init(zone, map, level, data)
engine.Generator.init(self, zone, map, level) engine.Generator.init(self, zone, map, level)
self.data = data self.data = data
self.data.tunnel_change = self.data.tunnel_change or 30 self.data.tunnel_change = self.data.tunnel_change or 30
...@@ -14,7 +14,11 @@ function _M:init(zone, map, grid_list, data) ...@@ -14,7 +14,11 @@ function _M:init(zone, map, grid_list, data)
self.rooms = {} self.rooms = {}
for i, file in ipairs(data.rooms) do for i, file in ipairs(data.rooms) do
table.insert(self.rooms, self:loadRoom(file)) if type(file) == "table" then
table.insert(self.rooms, {self:loadRoom(file[1]), chance_room=file[2]})
else
table.insert(self.rooms, self:loadRoom(file))
end
end end
end end
...@@ -307,7 +311,20 @@ function _M:generate(lev, old_lev) ...@@ -307,7 +311,20 @@ function _M:generate(lev, old_lev)
local nb_room = self.data.nb_rooms or 10 local nb_room = self.data.nb_rooms or 10
local rooms = {} local rooms = {}
while nb_room > 0 do while nb_room > 0 do
local r = self:roomAlloc(self.rooms[rng.range(1, #self.rooms)], #rooms+1, lev, old_lev) local rroom
while true do
rroom = self.rooms[rng.range(1, #self.rooms)]
if type(rroom) == "table" and rroom.chance_room then
if rng.percent(rroom.chance_room) then
rroom = rroom[1]
break
end
else
break
end
end
local r = self:roomAlloc(rroom, #rooms+1, lev, old_lev)
if r then rooms[#rooms+1] = r end if r then rooms[#rooms+1] = r end
nb_room = nb_room - 1 nb_room = nb_room - 1
end end
......
...@@ -99,10 +99,9 @@ function _M:onTakeHit(value, src) ...@@ -99,10 +99,9 @@ function _M:onTakeHit(value, src)
self:runStop("taken damage") self:runStop("taken damage")
self:restStop("taken damage") self:restStop("taken damage")
local ret = mod.class.Actor.onTakeHit(self, value, src) local ret = mod.class.Actor.onTakeHit(self, value, src)
if self.life < self.max_life * 0.3 and (not self.last_life_warning or self.last_life_warning < game.turn) then if self.life < self.max_life * 0.3 then
local sx, sy = game.level.map:getTileToScreen(self.x, self.y) local sx, sy = game.level.map:getTileToScreen(self.x, self.y)
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, 2, "LOW HEALTH!", {255,0,0}, true) game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, 2, "LOW HEALTH!", {255,0,0}, true)
self.last_life_warning = game.turn
end end
return ret return ret
end end
......
return function(gen, id)
local w = 5
local h = 5
return { name="money_vault"..w.."x"..h, w=w, h=h, generator = function(self, x, y, is_lit)
for i = 1, self.w do
for j = 1, self.h do
if i == 1 or i == self.w or j == 1 or j == self.h then
gen.map.room_map[i-1+x][j-1+y].can_open = true
gen.map(i-1+x, j-1+y, Map.TERRAIN, gen.grid_list[gen:resolve('#')])
else
gen.map.room_map[i-1+x][j-1+y].room = id
gen.map(i-1+x, j-1+y, Map.TERRAIN, gen.grid_list[gen:resolve('.')])
-- Add money
local e = gen.zone:makeEntity(gen.level, "object", {type="money"})
if e then
gen.map(i-1+x, j-1+y, Map.OBJECT, e)
end
-- Add guardians
if rng.percent(50) then
e = gen.zone:makeEntity(gen.level, "actor")
if e then
e:move(i-1+x, j-1+y, true)
gen.level:addEntity(e)
e:added()
end
end
end
if is_lit then gen.map.lites(i-1+x, j-1+y, true) end
end
end
end}
end
...@@ -11,7 +11,7 @@ return { ...@@ -11,7 +11,7 @@ return {
map = { map = {
class = "engine.generator.map.Roomer", class = "engine.generator.map.Roomer",
nb_rooms = 10, nb_rooms = 10,
rooms = {"simple", "pilar"}, rooms = {"simple", "pilar", {"money_vault",5}},
lite_room_chance = 100, lite_room_chance = 100,
['.'] = "FLOOR", ['.'] = "FLOOR",
['#'] = "WALL", ['#'] = "WALL",
......
...@@ -11,7 +11,7 @@ return { ...@@ -11,7 +11,7 @@ return {
map = { map = {
class = "engine.generator.map.Roomer", class = "engine.generator.map.Roomer",
nb_rooms = 10, nb_rooms = 10,
rooms = {"simple", "pilar"}, rooms = {"simple", "pilar", {"money_vault",5}},
lite_room_chance = 100, lite_room_chance = 100,
['.'] = "FLOOR", ['.'] = "FLOOR",
['#'] = "WALL", ['#'] = "WALL",
......
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