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

thinking ...

git-svn-id: http://svn.net-core.org/repos/t-engine4@104 51575b47-30f0-44d4-a5cc-537603b46e54
parent d07fc7a8
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,30 @@ function _M:init(short_name)
self.object_list = self.object_class:loadList("/data/zones/"..self.short_name.."/objects.lua")
end
--- Parses the npc/objects list and compute rarities for random generation
-- ONLY entities with a rarity properties will be considered.<br/>
-- This means that to get a never-random entity you simply do not put a rarity property on it.
function _M:computeRarities(list, level, ood, filter)
local r = {}
for i, e in ipairs(list) do
if e.rarity and (not filter or filter(e)) then
local lev = level
-- Out of Depth chance
if ood and rng.percent(ood.chance) then
lev = level + rng.range(ood.range[1], ood.range[2])
print("OOD Entity !", e.name, ":=:", level, "to", lev)
end
-- if lev <
local genprob = 100 / e.rarity
r[#r+1] = { e=e, genprob=genprob, level_diff = lev - level }
end
end
table.sort(r, function(a, b) return a.genprob < b.genprob end)
return r
end
function _M:load()
local f, err = loadfile("/data/zones/"..self.short_name.."/zone.lua")
if err then error(err) end
......
......@@ -20,7 +20,7 @@ function _M:generate()
m:resolve()
local x, y = rng.range(0, self.map.w), rng.range(0, self.map.h)
local tries = 0
while self.map:checkAllEntities(x, y, "block_move") and tries < 100 do
while m:canMove(x, y) and tries < 100 do
x, y = rng.range(0, self.map.w), rng.range(0, self.map.h)
tries = tries + 1
end
......
newEntity{
group = "dragon",
name = "dragon of death",
display = "D", color_r=255,
level_range = {1, 10}, exp_worth = 100,
level_range = {3, 10}, exp_worth = 100,
rarity = 4,
autolevel = "warrior",
ai = "simple",
max_life = 20,
......@@ -14,13 +16,31 @@ newEntity{
}
newEntity{
group = "dragon",
name = "baby dragon",
display = "d", color_r=128,
-- faction = "poorsods",
level_range = {1, 4}, exp_worth = 100,
rarity = 2,
autolevel = "caster",
ai = "simple",
max_life = resolvers.rngavg(1,100),
max_life = resolvers.rngavg(20,30),
max_mana = 1000,
max_stamina = 1000,
energy = { mod=0.3 },
has_blood = {nb=3, color={50,255,120}},
combat = { dam=5, atk=6, def=2, apr=1, armor=2},
}
newEntity{
group = "icky things",
name = "white icky thing",
display = "i", color_r=255, color_g=255, color_b=255,
level_range = {3, 7}, exp_worth = 100,
rarity = 1,
autolevel = "warrior",
ai = "simple",
max_life = resolvers.rngavg(10,20),
max_mana = 1000,
max_stamina = 1000,
energy = { mod=0.3 },
......
return {
name = "ancient ruins",
level_range = {1, 5},
max_level = 5,
width = 50, height = 50,
-- all_remembered = true,
......@@ -17,8 +18,8 @@ return {
actor = {
class = "engine.generator.actor.Random",
nb_npc = {40, 40},
level_range = {5, 10},
adjust_level_to_player = {-2, 2},
ood = {chance=5, range={1, 10}},
adjust_level_to_player = {-1, 2},
},
}
}
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