diff --git a/game/engine/Actor.lua b/game/engine/Actor.lua index fbec3491b47525bef2ff335dadee52f8c674e29b..baa58b747ab96e4030d3a52b7fcbc242ad66f9bc 100644 --- a/game/engine/Actor.lua +++ b/game/engine/Actor.lua @@ -50,6 +50,8 @@ function _M:move(x, y, force) if self.x and self.y then map:remove(self.x, self.y, Map.ACTOR) + else + print("[MOVE] actor moved without a starting position", self.name) end if x < 0 then x = 0 end if x >= map.w then x = map.w - 1 end diff --git a/game/engine/generator/actor/Random.lua b/game/engine/generator/actor/Random.lua index 0219536d61d537849c60dc0609c6c6e85165a4a3..98ebd07b2215bc008a7f83716f0c4e24ce235350 100644 --- a/game/engine/generator/actor/Random.lua +++ b/game/engine/generator/actor/Random.lua @@ -9,9 +9,9 @@ function _M:init(zone, map, level) local data = level.data.generator.actor if data.adjust_level then - self.adjust_level = {base=zone.base_level, min=data.adjust_level[1], max=data.adjust_level[2]} + self.adjust_level = {base=zone.base_level, lev = self.level.level, min=data.adjust_level[1], max=data.adjust_level[2]} else - self.adjust_level = {base=zone.base_level, lev = self.level.level, min=0, 0} + self.adjust_level = {base=zone.base_level, lev = self.level.level, min=0, max=0} end self.filters = data.filters self.nb_npc = data.nb_npc or {10, 20} @@ -37,7 +37,7 @@ function _M:generate() -- Levelup ? if self.adjust_level then - local newlevel = self.adjust_level.base + rng.avg(self.adjust_level.min, self.adjust_level.max) + local newlevel = self.adjust_level.base + self.adjust_level.lev - 1 + rng.avg(self.adjust_level.min, self.adjust_level.max) m:forceLevelup(newlevel) end end diff --git a/game/engine/generator/map/Static.lua b/game/engine/generator/map/Static.lua index 0cf7d5bc1516f1f68ccbeafd1ad465e12d9d3612..71a2e39cb323f305ddae6db653d7b0c323e13092 100644 --- a/game/engine/generator/map/Static.lua +++ b/game/engine/generator/map/Static.lua @@ -9,6 +9,13 @@ function _M:init(zone, map, level, data) self.grid_list = zone.grid_list self.subgen = {} self.data = data + + if data.adjust_level then + self.adjust_level = {base=zone.base_level, lev = self.level.level, min=data.adjust_level[1], max=data.adjust_level[2]} + else + self.adjust_level = {base=zone.base_level, lev = self.level.level, min=0, max=0} + end + self:loadMap(data.map) end @@ -78,16 +85,16 @@ function _M:generate(lev, old_lev) local c = self.gen_map[i][j] self.map(i-1, j-1, Map.TERRAIN, self:resolve("grid", c)) - local actor = self.tiles[c].actor + local actor = self.tiles[c] and self.tiles[c].actor if actor then - local m = self.zone:makeEntityByName(self.level, "actor", f) + local m = self.zone:makeEntityByName(self.level, "actor", actor) if m then - m:move(x, y, true) + m:move(i-1, j-1, true) self.level:addEntity(m) m:added() if self.adjust_level then - local newlevel = self.adjust_level.base + rng.avg(self.adjust_level.min, self.adjust_level.max) + local newlevel = self.adjust_level.base + self.adjust_level.lev + rng.avg(self.adjust_level.min, self.adjust_level.max) m:forceLevelup(newlevel) end end diff --git a/game/engine/interface/ActorQuest.lua b/game/engine/interface/ActorQuest.lua index a27121c926a23f7340c1838df012839f99173e76..12a6eaa6ed44473450fbd4cd7356a29cc4e429e8 100644 --- a/game/engine/interface/ActorQuest.lua +++ b/game/engine/interface/ActorQuest.lua @@ -31,7 +31,7 @@ end --- Sets the status of a quest for an actor -- If the actor does not have the quest, does nothing function _M:setQuestStatus(quest, status, sub) - print("[QUEST] try update status on", self.name, quest, status, sub, "::", self.quests[quest]) + print("[QUEST] try update status on", self.name, quest, status, sub) if not self.quests then return end local q = self.quests[quest] if not q then return end diff --git a/game/engine/utils.lua b/game/engine/utils.lua index dec3819b9c2e3649d4f582d6de5d4566f11b44d7..496b92f34203b68130f31aa4e97986480107bb90 100644 --- a/game/engine/utils.lua +++ b/game/engine/utils.lua @@ -390,3 +390,15 @@ function rng.tableRemove(t) local id = rng.range(1, #t) return table.remove(t, id) end + +function util.show_backtrace() + local level = 2 + + print("backtrace:") + while true do + local stacktrace = debug.getinfo(level, "nlS") + if stacktrace == nil then break end + print((" function: %s (%s) at %s:%d"):format(stacktrace.name or "???", stacktrace.what, stacktrace.source or stacktrace.short_src or "???", stacktrace.currentline)) + level = level + 1 + end +end diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index dfea6faef06d465b0c0e4c831b354061f565da9b..556bf0ba55c7c48259a63be3b36a95b1241db645 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -562,21 +562,8 @@ function _M:setupMouse() -- Target stuff if button == "right" then local tmx, tmy = self.level.map:getMouseTile(mx, my) - - local actor = self.level.map(tmx, tmy, Map.ACTOR) - - if actor and self.level.map.seens(tmx, tmy) then - self.target.target.entity = actor - else - self.target.target.entity = nil - self.target.target.x = tmx - self.target.target.y = tmy - end - if tostring(self.target_mode) == "exclusive" then - self:targetMode(false, false) - else - self:targetMode(true, true) - end + -- DEBUG + game.player:move(tmx, tmy, true) -- Move map around elseif button == "left" and xrel and yrel then derivx = derivx + xrel diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index 360e4917f96f10719c6ed1f965c2b2a1462cc5ef..43ad9bd8423f7283f09850a972ced529b5d83ac9 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -164,7 +164,7 @@ function _M:getDesc() if w.on_melee_hit then local rs = {} for typ, dam in pairs(w.on_melee_hit) do - rs[#rs+1] = ("%d %s"):format(dam, DamageType.dam_def[res].name) + rs[#rs+1] = ("%d %s"):format(dam, DamageType.dam_def[typ].name) end desc[#desc+1] = ("Damage when hit: %s."):format(table.concat(rs, ',')) end @@ -172,7 +172,7 @@ function _M:getDesc() if w.resists then local rs = {} for res, i in pairs(w.resists) do - rs[#rs+1] = ("%d%% %s"):format(i, DamageType.dam_def[typ].name) + rs[#rs+1] = ("%d%% %s"):format(i, DamageType.dam_def[res].name) end desc[#desc+1] = ("Increases resistances: %s."):format(table.concat(rs, ',')) end diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index f5c375f02b76e8c4649fedf7ca0726697c67d230..41b6a3812e8d2f71de022062ec3348562ffd5e14 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -272,7 +272,6 @@ function _M:playerUseItem(object, item) self:removeObject(self:getInven(self.INVEN_INVEN), item) game.log("You have no more "..o:getName()) self:sortInven() - self:useEnergy() end end self:breakStealth() diff --git a/game/modules/tome/class/generator/map/Wilderness.lua b/game/modules/tome/class/generator/map/Wilderness.lua index 6a8705fdc2c29ee8f34a26df7b8b2e4853c40df9..2a402641ba33559421b0165c1fc51521c5ccbaad 100644 --- a/game/modules/tome/class/generator/map/Wilderness.lua +++ b/game/modules/tome/class/generator/map/Wilderness.lua @@ -4,9 +4,9 @@ require "engine.generator.map.Static" --- Make the wilderness map, loaded from the player's current wilderness module(..., package.seeall, class.inherit(engine.generator.map.Static)) -function _M:init(zone, map, grid_list, data) +function _M:init(zone, map, level, data) print("Loading wilderness map: ", game.player.current_wilderness) data.map = game.player.current_wilderness - engine.generator.map.Static.init(self, zone, map, grid_list, data) + engine.generator.map.Static.init(self, zone, map, level, data) end diff --git a/game/modules/tome/data/birth/races/dwarf.lua b/game/modules/tome/data/birth/races/dwarf.lua index 49f180fa0328d332e649d636b13c7db824a7b5bf..d14f58a3ff1900c8d087ceace133cab0212a33f8 100644 --- a/game/modules/tome/data/birth/races/dwarf.lua +++ b/game/modules/tome/data/birth/races/dwarf.lua @@ -28,7 +28,7 @@ newBirthDescriptor{ }, copy = { type = "humanoid", subtype="dwarf", - default_wilderness = {"wilderness/main", 39, 19}, + default_wilderness = {"wilderness/main", 39, 17}, starting_zone = "tower-amon-sul", starting_quest = "start-dunadan", starting_intro = "dwarf", diff --git a/game/modules/tome/data/birth/races/elf.lua b/game/modules/tome/data/birth/races/elf.lua index 995a14c5177c609186aab61cb7bb7ce5d8271912..a5a9ba357c717d18462aff22cd812c7380eb32ff 100644 --- a/game/modules/tome/data/birth/races/elf.lua +++ b/game/modules/tome/data/birth/races/elf.lua @@ -23,7 +23,7 @@ newBirthDescriptor{ }, copy = { type = "humanoid", subtype="elf", - default_wilderness = {"wilderness/main", 39, 19}, + default_wilderness = {"wilderness/main", 39, 17}, starting_zone = "tower-amon-sul", starting_quest = "start-dunadan", starting_intro = "elf", diff --git a/game/modules/tome/data/birth/races/hobbit.lua b/game/modules/tome/data/birth/races/hobbit.lua index 7d389f9c9a5779b88a4476e4ebe0d81b2d47da30..cc2c915e960fd43de7833cce03ea3b321e08ffcf 100644 --- a/game/modules/tome/data/birth/races/hobbit.lua +++ b/game/modules/tome/data/birth/races/hobbit.lua @@ -25,7 +25,7 @@ newBirthDescriptor{ copy = { type = "humanoid", subtype="hobbit", life_rating = 12, - default_wilderness = {"wilderness/main", 39, 19}, + default_wilderness = {"wilderness/main", 39, 17}, starting_zone = "tower-amon-sul", starting_quest = "start-dunadan", starting_intro = "hobbit", diff --git a/game/modules/tome/data/birth/races/human.lua b/game/modules/tome/data/birth/races/human.lua index 1ef70703769a6b6e1a47186ba6c3650230fd988b..293a011dc04518d97db125d6705463edcbd8e253 100644 --- a/game/modules/tome/data/birth/races/human.lua +++ b/game/modules/tome/data/birth/races/human.lua @@ -36,7 +36,7 @@ newBirthDescriptor "Humans hailing from the northen town of Bree. A common kind of man, unremarkable in all respects.", }, copy = { - default_wilderness = {"wilderness/main", 39, 19}, + default_wilderness = {"wilderness/main", 39, 17}, starting_zone = "tower-amon-sul", starting_quest = "start-dunadan", starting_intro = "bree-man", @@ -58,7 +58,7 @@ newBirthDescriptor [ActorTalents.T_DUNADAN_HEAL]=1, }, copy = { - default_wilderness = {"wilderness/main", 39, 19}, + default_wilderness = {"wilderness/main", 39, 17}, starting_zone = "tower-amon-sul", starting_quest = "start-dunadan", starting_intro = "dunadan",