Forked from
tome / Tales of MajEyal
7958 commits behind the upstream repository.
Projectile.lua 2.85 KiB
-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012, 2013 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
require "engine.class"
require "engine.Projectile"
local Combat = require "mod.class.interface.Combat"
module(..., package.seeall, class.inherit(engine.Projectile))
_M.logCombat = Combat.logCombat
function _M:init(t, no_default)
engine.Projectile.init(self, t, no_default)
end
--- Moves a projectile on the map
-- We override it to allow for movement animations
function _M:move(x, y, force)
local ox, oy = self.x, self.y
local moved = engine.Projectile.move(self, x, y, force)
if moved and not force and ox and oy and (ox ~= self.x or oy ~= self.y) and config.settings.tome.smooth_move > 0 then
-- self:setMoveAnim(ox, oy, config.settings.tome.smooth_move, 3 or self.project and self.project.def and self.project.def.typ.blur_move)
end
return moved
end
function _M:tooltip(x, y)
local tstr = tstring{"Projectile: ", self.name}
if self.src and self.src.name then
local hostile = self.src.faction and game.player:reactionToward(self.src) or 0
local color = {"color", "LIGHT_GREEN"}
if hostile < 0 then color = {"color", "LIGHT_RED"}
elseif hostile == 0 then color = {"color", "LIGHT_BLUE"}
end
tstr:add(true, "Origin: ", color, self.src.name, {"color", "LAST"})
end
if self.project and self.project.def and self.project.def.typ then
if self.project.def.typ.selffire then
local x = self.project.def.typ.selffire
if x == true then x = 100 end
tstr:add(true, "Affect origin chance: ", tostring(x), "%")
end
if self.project.def.typ.friendlyfire then
local x = self.project.def.typ.friendlyfire
if x == true then x = 100 end
tstr:add(true, "Affect origin's friends chance: ", tostring(x), "%")
end
end
if config.settings.cheat then
tstr:add(true, "UID: ", tostring(self.uid), true, "Coords: ", tostring(x), "x", tostring(y))
end
return tstr
end
function _M:resolveSource()
if self.src then
return self.src:resolveSource()
else
return self
end
end
--gets the full name of the projectile
function _M:getName()
local name = self.name or "projectile"
if self.src and self.src.name then
return self.src.name:capitalize().."'s "..name
else
return name
end
end