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

plop

git-svn-id: http://svn.net-core.org/repos/t-engine4@76 51575b47-30f0-44d4-a5cc-537603b46e54
parent 2f18a275
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,7 @@ module(..., package.seeall, class.inherit(Entity))
function _M:init(t)
t = t or {}
self.name = t.name or "unknown npc"
self.level = t.level or 1
self.sight = t.sight or 20
......
require "engine.class"
--- Handles autoleveling schemes
-- Proably used mainly for NPCS, although it could also be used for player allies
-- or players themselves for lazy players/modules
module(..., package.seeall, class.make)
_M.schemes = {}
function _M:registerScheme(t)
assert(t.name, "no autolevel name")
assert(t.levelup, "no autolevel levelup function")
end
......@@ -65,6 +65,13 @@ function _M:display()
end
end
--- Returns the player
-- Reimplement it in your module, this can just return nil if you dont want/need
-- the engine adjusting stuff to the player or if you have many players or whatever
function _M:getPlayer()
return nil
end
--- This is the "main game loop", do something here
function _M:tick()
end
......
......@@ -104,6 +104,9 @@ function _M:newLevel(level_data, lev, game)
local level = self.level_class.new(lev, map)
level.start = {x=startx, y=starty}
-- Save level data
level.data = level_data
-- Setup the level in the game
game:setLevel(level)
......@@ -118,7 +121,5 @@ function _M:newLevel(level_data, lev, game)
generator:generate()
end
-- Save level data
level.data = level_data
return level
end
......@@ -7,7 +7,11 @@ function _M:init(map, level, npc_list, data)
engine.Generator.init(self, map)
self.level = level
self.npc_list = npc_list
if data.adjust_level_to_player and game:getPlayer() then
self.adjust_level_to_player = {base=game:getPlayer().level, min=data.adjust_level_to_player[1], max=data.adjust_level_to_player[2]}
end
self.nb_npc = data.nb_npc or {10, 20}
self.level_range = data.level_range or {level, level}
end
function _M:generate()
......@@ -22,6 +26,12 @@ function _M:generate()
if tries < 100 then
m:move(x, y, true)
self.level:addEntity(m)
-- Levelup ?
if self.adjust_level_to_player then
local newlevel = self.adjust_level_to_player.base + rng.avg(self.adjust_level_to_player.min, self.adjust_level_to_player.max)
m:forceLevelup(newlevel)
end
end
end
end
......@@ -16,7 +16,12 @@ _M.exp_chart = function(level)
end
function _M:init(t)
self.level = t.level or 1
if t.level_range then
self.level = t.level_range[1]
self.max_level = t.level_range[2]
else
self.level = t.level or 1
end
self.exp = t.exp or 0
self.exp_worth = t.exp_worth or 1
end
......@@ -45,6 +50,9 @@ end
function _M:gainExp(value)
self.exp = self.exp + value
while self:getExpChart(self.level + 1) and self.exp >= self:getExpChart(self.level + 1) do
-- At max level, if any
if self.max_level and self.level >= self.max_level then break end
self.level = self.level + 1
self.exp = self.exp - self:getExpChart(self.level)
self:levelup()
......@@ -60,3 +68,15 @@ end
--- Method called when leveing up, module author rewrite it to do as you please
function _M:levelup()
end
--- Forces an actor to levelup to "lev"
function _M:forceLevelup(lev)
while self.level < lev do
-- At max level, if any
if self.max_level and self.level >= self.max_level then break end
self.level = self.level + 1
self.exp = 0
self:levelup()
end
end
require "engine.class"
--- Handles actors temporary effects (temporary boost of a stat, ...)
module(..., package.seeall, class.make)
function _M:init(t)
self.tmp = {}
end
require "engine.class"
require "engine.Actor"
require "engine.interface.ActorTemporaryEffects"
require "engine.interface.ActorLife"
require "engine.interface.ActorLevel"
require "engine.interface.ActorStats"
......@@ -11,6 +12,7 @@ require "mod.class.interface.Combat"
module(..., package.seeall, class.inherit(
-- a ToME actor is a complex beast it uses may inetrfaces
engine.Actor,
engine.interface.ActorTemporaryEffects,
engine.interface.ActorLife,
engine.interface.ActorLevel,
engine.interface.ActorStats,
......@@ -22,6 +24,7 @@ module(..., package.seeall, class.inherit(
function _M:init(t)
engine.Actor.init(self, t)
engine.interface.ActorTemporaryEffects.init(self, t)
engine.interface.ActorLife.init(self, t)
engine.interface.ActorLevel.init(self, t)
engine.interface.ActorStats.init(self, t)
......@@ -75,6 +78,14 @@ function _M:levelup()
self.max_life = self.max_life + 7
self:incMaxMana(7)
self:incMaxStamina(7)
-- Healp up on new level
self.life = self.max_life
self.mana = self.max_mana
self.stamina = self.man_stamina
-- Auto levelup ?
if self.autolevel then
end
end
--- Notifies a change of stat value
......
......@@ -113,6 +113,9 @@ function _M:changeLevel(lev)
self.level:addEntity(self.player)
end
function _M:getPlayer()
return self.player
end
function _M:tick()
if self.target.target.entity and not self.level:hasEntity(self.target.target.entity) then self.target.target.entity = false end
......
......@@ -3,7 +3,8 @@ return {
{
name = "dragon of death",
display = "D", color_r=255,
level = 10, exp_worth = 1,
level_range = {1, 10}, exp_worth = 1,
autolevel = "warrior",
max_life = 20,
max_mana = 1000,
energy = { mod=0.5 },
......@@ -15,7 +16,8 @@ return {
name = "baby dragon",
display = "d", color_r=128,
faction = "poorsods",
level = 10, exp_worth = 1,
level_range = {1, 4}, exp_worth = 1,
autolevel = "caster",
max_life = 30,
max_mana = 1000,
energy = { mod=0.3 },
......
......@@ -17,7 +17,8 @@ return {
actor = {
class = "engine.generator.actor.Random",
nb_npc = {400, 400},
levelup = {5, 10},
level_range = {5, 10},
adjust_level_to_player = {-2, 2},
},
}
}
......@@ -557,8 +557,11 @@ static int rng_avg(lua_State *L)
int i;
if (lua_isnumber(L, 3)) nb = luaL_checknumber(L, 3);
for (i = 0; i < nb; i++)
res += x + rand_div(1 + y - x);
lua_pushnumber(L, res / nb);
{
int r = x + rand_div(1 + y - x);
res += r;
}
lua_pushnumber(L, res / (double)nb);
return 1;
}
......
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