From 3220678350351755d1d504dc69f50bbcf8ec70f0 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Tue, 5 Jan 2010 23:18:49 +0000 Subject: [PATCH] log flasher! git-svn-id: http://svn.net-core.org/repos/t-engine4@204 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engine/KeyCommand.lua | 6 +- game/engine/LogFlasher.lua | 74 ++++++++++++++++++ game/modules/tome/class/Game.lua | 32 +++++--- game/modules/tome/class/Player.lua | 3 + game/modules/tome/data/damage_types.lua | 23 +++++- .../tome/data/talents/spells/water.lua | 11 +-- ideas/spells.ods | Bin 17023 -> 17912 bytes 7 files changed, 125 insertions(+), 24 deletions(-) create mode 100644 game/engine/LogFlasher.lua diff --git a/game/engine/KeyCommand.lua b/game/engine/KeyCommand.lua index b56d75055a..b26f0715f8 100644 --- a/game/engine/KeyCommand.lua +++ b/game/engine/KeyCommand.lua @@ -36,9 +36,7 @@ function _M:receiveKey(sym, ctrl, shift, alt, meta, unicode) if not self.commands[sym] and not self.commands[self.__DEFAULT] then if self.on_input and unicode then self.on_input(unicode) end - return - end - if self.commands[sym] and (ctrl or shift or alt or meta) and not self.commands[sym].anymod then + elseif self.commands[sym] and (ctrl or shift or alt or meta) and not self.commands[sym].anymod then local mods = {} if alt then mods[#mods+1] = "alt" end if ctrl then mods[#mods+1] = "ctrl" end @@ -53,6 +51,8 @@ function _M:receiveKey(sym, ctrl, shift, alt, meta, unicode) elseif self.commands[self.__DEFAULT] and self.commands[self.__DEFAULT].plain then self.commands[self.__DEFAULT].plain(sym, ctrl, shift, alt, meta, unicode) end + + if self.atLast then self.atLast(sym, ctrl, shift, alt, meta, unicode) end end --- Adds a key/command combinaison diff --git a/game/engine/LogFlasher.lua b/game/engine/LogFlasher.lua new file mode 100644 index 0000000000..62c5a9f0cf --- /dev/null +++ b/game/engine/LogFlasher.lua @@ -0,0 +1,74 @@ +require "engine.class" + +--- Module that handles a single message line, with pausing and flashing +module(..., package.seeall, class.make) + +GOOD = 1 +NEUTRAL = 2 +BAD = 3 + +--- Creates the log zone +function _M:init(x, y, w, h, max, fontname, fontsize, color, bgcolor) + self.color = color or {255,255,255} + self.bgcolor = bgcolor or {0,0,0} + self.display_x, self.display_y = x, y + self.w, self.h = w, h + self.font = core.display.newFont(fontname or "/data/font/Vera.ttf", fontsize or 16) + self.font_h = self.font:lineSkip() + self.surface = core.display.newSurface(w, h) + self.log = {} + getmetatable(self).__call = _M.call + self.flashing_style = NEUTRAL + self.flashing = 0 + self.changed = true +end + +--- Appends text to the log +-- This method is set as the call methamethod too, this means it is usable like this:<br/> +-- log = LogDisplay.new(...)<br/> +-- log("foo %s", s) +function _M:call(style, str, ...) + if self.flashing == 0 and #self.log > 0 then self.log = {} end + + local base = "" + if #self.log > 0 then base = table.remove(self.log) end + + local lines = (base .. " " .. str:format(...)):splitLines(self.w - 4, self.font) + for i = 1, #lines do + table.insert(self.log, lines[i]) + end + self.flashing_style = style + self.flashing = 20 + self.changed = true +end + +--- Clear the log +function _M:empty(force) + if self.flashing == 0 or force then + self.log = {} + self.flashing = 0 + self.changed = true + end +end + +function _M:display() + -- If nothing changed, return the same surface as before + if not self.changed then return self.surface end + self.changed = false + + -- Erase and the display the map + if self.flashing_style == BAD then + self.surface:erase(self.bgcolor[1] + self.flashing * 10, self.bgcolor[2], self.bgcolor[3]) + elseif self.flashing_style == NEUTRAL then + self.surface:erase(self.bgcolor[1], self.bgcolor[2], self.bgcolor[3] + self.flashing * 10) + else + self.surface:erase(self.bgcolor[1], self.bgcolor[2] + self.flashing * 10, self.bgcolor[3]) + end + self.surface:drawColorString(self.font, self.log[1] or "", 0, 0, self.color[1], self.color[2], self.color[3]) + + self.flashing = self.flashing - 1 + if self.flashing > 0 then self.changed = true + else table.remove(self.log, 1) end + + return self.surface +end diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index be0e2c5e22..2fc05a8e2d 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -22,6 +22,7 @@ local PlayerDisplay = require "mod.class.PlayerDisplay" local TalentsDisplay = require "mod.class.TalentsDisplay" local LogDisplay = require "engine.LogDisplay" +local LogFlasher = require "engine.LogFlasher" local DebugConsole = require "engine.DebugConsole" local FlyingText = require "engine.FlyingText" local Tooltip = require "engine.Tooltip" @@ -43,17 +44,20 @@ function _M:init() end function _M:run() - self.log = LogDisplay.new(0, self.h * 0.8, self.w * 0.5, self.h * 0.2, nil, nil, nil, {255,255,255}, {30,30,30}) - self.player_display = PlayerDisplay.new(0, 0, 200, self.h * 0.8, {30,30,0}) + self.flash = LogFlasher.new(0, 0, self.w, 20, nil, nil, nil, {255,255,255}, {0,0,0}) + self.logdisplay = LogDisplay.new(0, self.h * 0.8, self.w * 0.5, self.h * 0.2, nil, nil, nil, {255,255,255}, {30,30,30}) + self.player_display = PlayerDisplay.new(0, 20, 200, self.h * 0.8 - 20, {30,30,0}) self.talents_display = TalentsDisplay.new(self.w * 0.5, self.h * 0.8, self.w * 0.5, self.h * 0.2, {30,30,0}) self.calendar = Calendar.new("/data/calendar_rivendell.lua", "Today is the %s %s of the %s year of the Fourth Age of Middle-earth.\nThe time is %02d:%02d.", 122) self.tooltip = Tooltip.new(nil, nil, {255,255,255}, {30,30,30}) self.flyers = FlyingText.new() self:setFlyingText(self.flyers) - self.log("Welcome to #00FF00#Tales of Middle Earth!") - self.logSeen = function(e, ...) if e and self.level.map.seens(e.x, e.y) then self.log(...) end end - self.logPlayer = function(e, ...) if e == game.player then self.log(...) end end + self.log = function(style, ...) if type(style) == "number" then self.logdisplay(...) self.flash(style, ...) else self.logdisplay(style, ...) self.flash(self.flash.NEUTRAL, style, ...) end end + self.logSeen = function(e, style, ...) if e and self.level.map.seens(e.x, e.y) then self.log(style, ...) end end + self.logPlayer = function(e, style, ...) if e == game.player then self.log(style, ...) end end + + self.log(self.flash.GOOD, "Welcome to #00FF00#Tales of Middle Earth!") -- Setup inputs self:setupCommands() @@ -93,24 +97,24 @@ function _M:loaded() engine.GameTurnBased.loaded(self) Zone:setup{npc_class="mod.class.NPC", grid_class="mod.class.Grid", object_class="mod.class.Object"} Map:setViewerActor(self.player) - Map:setViewPort(200, 0, self.w - 200, math.floor(self.h * 0.80), 32, 32, nil, 20, true) + Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 32, 32, nil, 20, true) self.key = engine.KeyCommand.new() end function _M:setupDisplayMode() self.gfxmode = self.gfxmode or 1 if self.gfxmode == 1 then - Map:setViewPort(200, 0, self.w - 200, math.floor(self.h * 0.80), 32, 32, nil, 20, true) + Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 32, 32, nil, 20, true) Map:resetTiles() Map.tiles.use_images = true self.level.map:recreate() elseif self.gfxmode == 2 then - Map:setViewPort(200, 0, self.w - 200, math.floor(self.h * 0.80), 16, 16, nil, 14, true) + Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 16, 16, nil, 14, true) Map:resetTiles() Map.tiles.use_images = true self.level.map:recreate() elseif self.gfxmode == 3 then - Map:setViewPort(200, 0, self.w - 200, math.floor(self.h * 0.80), 16, 16, nil, 14, false) + Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 16, 16, nil, 14, false) Map:resetTiles() Map.tiles.use_images = false self.level.map:recreate() @@ -180,7 +184,8 @@ function _M:onTurn() end function _M:display() - self.log:display():toScreen(self.log.display_x, self.log.display_y) + self.flash:display():toScreen(self.flash.display_x, self.flash.display_y) + self.logdisplay:display():toScreen(self.logdisplay.display_x, self.logdisplay.display_y) self.player_display:display():toScreen(self.player_display.display_x, self.player_display.display_y) self.talents_display:display():toScreen(self.talents_display.display_x, self.talents_display.display_y) @@ -510,6 +515,7 @@ function _M:setupCommands() end end, } + self.key:setCurrent() end @@ -559,9 +565,9 @@ function _M:setupMouse() end end) -- Scroll message log - self.mouse:registerZone(self.log.display_x, self.log.display_y, self.w, self.h, function(button) - if button == "wheelup" then self.log:scrollUp(1) end - if button == "wheeldown" then self.log:scrollUp(-1) end + self.mouse:registerZone(self.logdisplay.display_x, self.logdisplay.display_y, self.w, self.h, function(button) + if button == "wheelup" then self.logdisplay:scrollUp(1) end + if button == "wheeldown" then self.logdisplay:scrollUp(-1) end end, {button=true}) end diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index 85633b897e..705aef475a 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -70,6 +70,9 @@ end function _M:act() if not mod.class.Actor.act(self) then return end + -- Clean log flasher + game.flash:empty() + game.paused = true end diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua index 8822751e2c..45458a684f 100644 --- a/game/modules/tome/data/damage_types.lua +++ b/game/modules/tome/data/damage_types.lua @@ -8,15 +8,21 @@ setDefaultProjector(function(src, x, y, type, dam) else dam = dam * (100 / (100 - res)) end - game.logSeen(target, "%s hits %s for #aaaaaa#%0.2f %s damage#ffffff#.", src.name:capitalize(), target.name, dam, DamageType:get(type).name) + local flash = game.flash.NEUTRAL + if target == game.player then flash = game.flash.BAD end + if src == game.player then flash = game.flash.GOOD end + + game.logSeen(target, flash, "%s hits %s for #aaaaaa#%0.2f %s damage#ffffff#.", src.name:capitalize(), target.name, dam, DamageType:get(type).name) local sx, sy = game.level.map:getTileToScreen(x, y) if target:takeHit(dam, src) then if src == game.player or target == game.player then game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, "Kill!", {255,0,255}) end else - if src == game.player or target == game.player then - game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, tostring(-dam), {255,0,255}) + if src == game.player then + game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, tostring(-dam), {0,255,0}) + elseif target == game.player then + game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, tostring(-dam), {255,0,0}) end end end @@ -123,6 +129,17 @@ newDamageType{ end, } +-- Cold damage + freeze chance +newDamageType{ + name = "ice", type = "ICE", + projector = function(src, x, y, type, dam) + DamageType:get(DamageType.COLD).projector(src, x, y, DamageType.COLD, dam) + if rng.percent(25) then + DamageType:get(DamageType.FREEZE).projector(src, x, y, DamageType.FREEZE, 2) + end + end, +} + -- Irresistible fire damage newDamageType{ name = "netherflame", type = "NETHERFLAME", diff --git a/game/modules/tome/data/talents/spells/water.lua b/game/modules/tome/data/talents/spells/water.lua index 7432755d6d..fb22704b0e 100644 --- a/game/modules/tome/data/talents/spells/water.lua +++ b/game/modules/tome/data/talents/spells/water.lua @@ -50,7 +50,7 @@ newTalent{ action = function(self, t) local duration = 5 + self:combatSpellpower(0.01) * self:getTalentLevel(t) local radius = 1 - local dam = 5 + self:combatSpellpower(0.1) * self:getTalentLevel(t) + local dam = 5 + self:combatSpellpower(0.2) * self:getTalentLevel(t) -- Add a lasting map effect game.level.map:addEffect(self, self.x, self.y, duration, @@ -65,10 +65,10 @@ newTalent{ ) return true end, - require = { stat = { mag=34 }, level=25 }, + require = { stat = { mag=24 }, }, info = function(self, t) return ([[A furious ice storm rages around the caster doing %0.2f cold damage in a radius of 3 each turns for %d turns. - The damage and duration will increase with the Magic stat]]):format(5 + self:combatSpellpower(0.1) * self:getTalentLevel(t), 5 + self:combatSpellpower(0.01) * self:getTalentLevel(t)) + The damage and duration will increase with the Magic stat]]):format(5 + self:combatSpellpower(0.2) * self:getTalentLevel(t), 5 + self:combatSpellpower(0.01) * self:getTalentLevel(t)) end, } @@ -88,7 +88,7 @@ newTalent{ -- Add a lasting map effect game.level.map:addEffect(self, self.x, self.y, duration, - DamageType.COLD, dam, + DamageType.ICE, dam, radius, 5, nil, engine.Entity.new{alpha=100, display='', color_br=30, color_bg=60, color_bb=200}, @@ -100,9 +100,10 @@ newTalent{ ) return true end, - require = { stat = { mag=34 }, level=25 }, + require = { stat = { mag=34 }, }, info = function(self, t) return ([[A furious ice storm rages around the caster doing %0.2f cold damage in a radius of 3 each turns for %d turns. + It has 25%% chance to freeze damaged targets. The damage and duration will increase with the Magic stat]]):format(5 + self:combatSpellpower(0.15) * self:getTalentLevel(t), 5 + self:combatSpellpower(0.05) + self:getTalentLevel(t)) end, } diff --git a/ideas/spells.ods b/ideas/spells.ods index b30c48a9f9801fa0c380e749817b7105fd02245f..f6c8870614f04668f10f920137b3bcb47e76e9b2 100644 GIT binary patch delta 14014 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 V0m1w~nohzgs-o0T&m#Yk{(raqolXD% delta 13071 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 -- GitLab