From 74d1ec09d9ea47eb5bd7ccb2c4d5b9686f7ed905 Mon Sep 17 00:00:00 2001 From: DarkGod <darkgod@net-core.org> Date: Tue, 28 Jan 2014 01:50:50 +0100 Subject: [PATCH] add missing files, whoops :) Added social links to the main menu, to the forums, facebook and twitter --- game/engines/default/engine/ui/Button.lua | 30 ++- .../engines/default/engine/ui/ButtonImage.lua | 121 +++++++++ .../modules/boot/data/gfx/facebook.png | Bin 0 -> 3030 bytes .../default/modules/boot/data/gfx/forums.png | Bin 0 -> 2926 bytes .../default/modules/boot/data/gfx/twitter.png | Bin 0 -> 2369 bytes .../default/modules/boot/dialogs/MainMenu.lua | 8 + .../tome/data/gfx/talents/acidfire.png | Bin 0 -> 4857 bytes .../tome/data/gfx/talents/eyal_s_wrath.png | Bin 0 -> 3424 bytes .../data/gfx/talents/nature_s_defiance.png | Bin 0 -> 3774 bytes .../modules/tome/data/gfx/talents/reclaim.png | Bin 0 -> 4950 bytes .../tome/data/talents/gifts/eyals-fury.lua | 233 ++++++++++++++++++ 11 files changed, 379 insertions(+), 13 deletions(-) create mode 100644 game/engines/default/engine/ui/ButtonImage.lua create mode 100644 game/engines/default/modules/boot/data/gfx/facebook.png create mode 100644 game/engines/default/modules/boot/data/gfx/forums.png create mode 100644 game/engines/default/modules/boot/data/gfx/twitter.png create mode 100644 game/modules/tome/data/gfx/talents/acidfire.png create mode 100644 game/modules/tome/data/gfx/talents/eyal_s_wrath.png create mode 100644 game/modules/tome/data/gfx/talents/nature_s_defiance.png create mode 100644 game/modules/tome/data/gfx/talents/reclaim.png create mode 100644 game/modules/tome/data/talents/gifts/eyals-fury.lua diff --git a/game/engines/default/engine/ui/Button.lua b/game/engines/default/engine/ui/Button.lua index 3aca1dfb84..3004f9bbae 100644 --- a/game/engines/default/engine/ui/Button.lua +++ b/game/engines/default/engine/ui/Button.lua @@ -36,6 +36,7 @@ function _M:init(t) self.force_w = t.width if t.can_focus ~= nil then self.can_focus = t.can_focus end if t.can_focus_mouse ~= nil then self.can_focus_mouse = t.can_focus_mouse end + self.alpha_unfocus = t.alpha_unfocus or 1 Base.init(self, t) end @@ -47,6 +48,7 @@ function _M:generate() -- Draw UI self.font:setStyle("bold") local w, h = self.font:size(self.text) + self.iw, self.ih = w, h if self.force_w then w = self.force_w end self.w, self.h = w - frame_ox1 + frame_ox2, h - frame_oy1 + frame_oy2 @@ -84,28 +86,30 @@ function _M:display(x, y, nb_keyframes, ox, oy) oy = oy + 3 local mx, my, button = core.mouse.get() if self.focused then - if button == 1 and mx > ox and mx < ox+self.w and my > oy and my < oy+self.h then - self:drawFrame(self.frame, x, y, 0, 1, 0, 1) - elseif self.glow then - local v = self.glow + (1 - self.glow) * (1 + math.cos(core.game.getTime() / 300)) / 2 - self:drawFrame(self.frame, x, y, v*0.8, v, 0, 1) - else - self:drawFrame(self.frame_sel, x, y) - end + if button == 1 and mx > ox and mx < ox+self.w and my > oy and my < oy+self.h then + self:drawFrame(self.frame, x, y, 0, 1, 0, 1) + elseif self.glow then + local v = self.glow + (1 - self.glow) * (1 + math.cos(core.game.getTime() / 300)) / 2 + self:drawFrame(self.frame, x, y, v*0.8, v, 0, 1) + else + self:drawFrame(self.frame_sel, x, y) + end + if self.text_shadow then self.tex[1]:toScreenFull(x-frame_ox1+1, y-frame_oy1+1, self.rw, self.rh, self.tex[2], self.tex[3], 0, 0, 0, self.text_shadow) end + self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3]) else if self.glow then local v = self.glow + (1 - self.glow) * (1 + math.cos(core.game.getTime() / 300)) / 2 - self:drawFrame(self.frame, x, y, v*0.8, v, 0, 1) + self:drawFrame(self.frame, x, y, v*0.8, v, 0, self.alpha_unfocus) else - self:drawFrame(self.frame, x, y) + self:drawFrame(self.frame, x, y, 1, 1, 1, self.alpha_unfocus) end if self.focus_decay and not self.glow then - self:drawFrame(self.frame_sel, x, y, 1, 1, 1, self.focus_decay / self.focus_decay_max_d) + self:drawFrame(self.frame_sel, x, y, 1, 1, 1, self.alpha_unfocus * self.focus_decay / self.focus_decay_max_d) self.focus_decay = self.focus_decay - nb_keyframes if self.focus_decay <= 0 then self.focus_decay = nil end end + if self.text_shadow then self.tex[1]:toScreenFull(x-frame_ox1+1, y-frame_oy1+1, self.rw, self.rh, self.tex[2], self.tex[3], 0, 0, 0, self.alpha_unfocus * self.text_shadow) end + self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3], 1, 1, 1, self.alpha_unfocus) end - if self.text_shadow then self.tex[1]:toScreenFull(x-frame_ox1+1, y-frame_oy1+1, self.rw, self.rh, self.tex[2], self.tex[3], 0, 0, 0, self.text_shadow) end - self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3]) end diff --git a/game/engines/default/engine/ui/ButtonImage.lua b/game/engines/default/engine/ui/ButtonImage.lua new file mode 100644 index 0000000000..830b44c135 --- /dev/null +++ b/game/engines/default/engine/ui/ButtonImage.lua @@ -0,0 +1,121 @@ +-- TE4 - T-Engine 4 +-- Copyright (C) 2009 - 2014 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" +local Tiles = require "engine.Tiles" +local Base = require "engine.ui.Base" +local Focusable = require "engine.ui.Focusable" + +--- A generic UI button +module(..., package.seeall, class.inherit(Base, Focusable)) + +frame_ox1 = -5 +frame_ox2 = 5 +frame_oy1 = -5 +frame_oy2 = 5 + +function _M:init(t) + if t.tex then + self.tex = t.tex + else + self.file = tostring(assert(t.file, "no button file")) + self.image = Tiles:loadImage(self.file) + local iw, ih = 0, 0 + if self.image then iw, ih = self.image:getSize() end + self.iw, self.ih = iw, ih + end + if t.force_w then self.iw = t.force_w end + + self.fct = assert(t.fct, "no button fct") + self.on_select = t.on_select + if t.can_focus ~= nil then self.can_focus = t.can_focus end + if t.can_focus_mouse ~= nil then self.can_focus_mouse = t.can_focus_mouse end + self.alpha_unfocus = t.alpha_unfocus or 1 + self.no_decoration = t.no_decoration + + Base.init(self, t) +end + +function _M:generate() + self.mouse:reset() + self.key:reset() + + -- Draw UI + local w, h = self.iw, self.ih + self.w, self.h = w - frame_ox1 + frame_ox2, h - frame_oy1 + frame_oy2 + if self.image then self.tex = self.tex or {self.image:glTexture()} end + + -- Add UI controls + self.mouse:registerZone(0, 0, self.w+6, self.h+6, function(button, x, y, xrel, yrel, bx, by, event) + if self.hide then return end + if self.on_select then self.on_select() end + if button == "left" and event == "button" then self:sound("button") self.fct() end + end) + self.key:addBind("ACCEPT", function() self:sound("button") self.fct() end) + + self.rw, self.rh = w, h + self.frame = self:makeFrame("ui/button", self.w, self.h) + self.frame_sel = self:makeFrame("ui/button_sel", self.w, self.h) + + -- Add a bit of padding + self.w = self.w + 6 + self.h = self.h + 6 +end + +function _M:display(x, y, nb_keyframes, ox, oy) + self.last_display_x = ox + self.last_display_y = oy + + if self.hide then return end + + x = x + 3 + y = y + 3 + ox = ox + 3 + oy = oy + 3 + local mx, my, button = core.mouse.get() + if self.focused then + if not self.no_decoration then + if button == 1 and mx > ox and mx < ox+self.w and my > oy and my < oy+self.h then + self:drawFrame(self.frame, x, y, 0, 1, 0, 1) + elseif self.glow then + local v = self.glow + (1 - self.glow) * (1 + math.cos(core.game.getTime() / 300)) / 2 + self:drawFrame(self.frame, x, y, v*0.8, v, 0, 1) + else + self:drawFrame(self.frame_sel, x, y) + end + end + self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3]) + else + if not self.no_decoration then + if self.glow then + local v = self.glow + (1 - self.glow) * (1 + math.cos(core.game.getTime() / 300)) / 2 + self:drawFrame(self.frame, x, y, v*0.8, v, 0, self.alpha_unfocus) + else + self:drawFrame(self.frame, x, y, 1, 1, 1, self.alpha_unfocus) + end + + if self.focus_decay and not self.glow then + self:drawFrame(self.frame_sel, x, y, 1, 1, 1, self.alpha_unfocus * self.focus_decay / self.focus_decay_max_d) + self.focus_decay = self.focus_decay - nb_keyframes + if self.focus_decay <= 0 then self.focus_decay = nil end + end + end + self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3], 1, 1, 1, self.alpha_unfocus) + end +end diff --git a/game/engines/default/modules/boot/data/gfx/facebook.png b/game/engines/default/modules/boot/data/gfx/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..5912beea3abce00403fdbd14d4b3f61ab1b4fadc GIT binary patch literal 3030 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 Y2Zk#$ef7cEoB#j-07*qoM6N<$f?n^$RR910 literal 0 HcmV?d00001 diff --git a/game/engines/default/modules/boot/data/gfx/forums.png b/game/engines/default/modules/boot/data/gfx/forums.png new file mode 100644 index 0000000000000000000000000000000000000000..d679252e57602f4ed67c017a620cb8af7921d513 GIT binary patch literal 2926 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 Y|KAgpLa;H14FCWD07*qoM6N<$f^DOh=>Px# literal 0 HcmV?d00001 diff --git a/game/engines/default/modules/boot/data/gfx/twitter.png b/game/engines/default/modules/boot/data/gfx/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..ad364c674ad358d4b41e78fd87a487c7ad87e07f GIT binary patch literal 2369 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%0DS-c{q*<u zqf{z6bLPwt*#?7Qn7+u!NZQ-mNlHp0BqU_W{}@fjFK<==i9}+{78B)ro^_t1zrTM7 zUs+ihF)=a3#KbUf-aPvv(rcOmzlcS+`%cAuN-*BRv+RmM5fNi!HUGX)z|+njC$v%D zx^;_$galGjQYbAg9g(J{riS<4dyfYX9$+$=*tBWWkk-X)HZx<!43;lnKCZq~r%q8+ zRD@cs=ER8;Y}l{?qtQ5~4vj`*y9Tgk%^J?1KR@o;#^SSWNh6@LvXXb-eV2-g3fkM- ziH(ir$dM!CM`T~yT{>zn(cjaF%rD5=M~)KCf*@cqoA~L6OVsCYqp@i3gq`@j^@xdy zAtxt?h=>Tn!^4MFs(bhDrM|wN<m6-)Em|}rCFbYnGk5M>R4Nr;e)*+cRptHr_u0OE zJJY96=h(4h$YioHb*NM-%F4<}N=hOrDT(s(a`N)>#$DT3d}CqHo;_T<c8#2z9105y zS-g1hxI^<tyaMmC#>U2yo}Ny4csRYiy;N0IP1;9FFBu}xCnyvO4X|Xa!pDhM8fHK% z0X_pvPJ2vRn1Ih*y1Tn|a=F|Un2+;C<;jM}zyX87aKr_mySw|ETrSrE?!XkRpAR^{ n|9CZF0Xl(8z%GNqa2(*jK%NDjrzoKS00000NkvXXu0mjflkRdj literal 0 HcmV?d00001 diff --git a/game/engines/default/modules/boot/dialogs/MainMenu.lua b/game/engines/default/modules/boot/dialogs/MainMenu.lua index 6d9d330cb5..de2e954200 100644 --- a/game/engines/default/modules/boot/dialogs/MainMenu.lua +++ b/game/engines/default/modules/boot/dialogs/MainMenu.lua @@ -21,6 +21,7 @@ require "engine.class" local Dialog = require "engine.ui.Dialog" local List = require "engine.ui.List" local Button = require "engine.ui.Button" +local ButtonImage = require "engine.ui.ButtonImage" local Textzone = require "engine.ui.Textzone" local Textbox = require "engine.ui.Textbox" local Separator = require "engine.ui.Separator" @@ -61,10 +62,17 @@ function _M:init() self.c_list = List.new{width=self.iw, nb_items=#self.list, list=self.list, fct=function(item) end, font={"/data/font/DroidSans-Bold.ttf", 16}} + self.c_facebook = ButtonImage.new{no_decoration=true, alpha_unfocus=0.5, file="facebook.png", fct=function() util.browserOpenUrl("https://www.facebook.com/tales.of.maj.eyal") end} + self.c_twitter = ButtonImage.new{no_decoration=true, alpha_unfocus=0.5, file="twitter.png", fct=function() util.browserOpenUrl("https://twitter.com/darkgodone") end} + self.c_forums = ButtonImage.new{no_decoration=true, alpha_unfocus=0.5, file="forums.png", fct=function() util.browserOpenUrl("http://forums.te4.org/") end} + self.base_uis = { {left=0, top=0, ui=self.c_list}, {left=0, bottom=0, absolute=true, ui=self.c_background}, {right=0, top=0, absolute=true, ui=self.c_version}, + {right=0, bottom=self.c_facebook.h+self.c_twitter.h, absolute=true, ui=self.c_forums}, + {right=0, bottom=self.c_twitter.h, absolute=true, ui=self.c_facebook}, + {right=0, bottom=0, absolute=true, ui=self.c_twitter}, } self:updateUI() diff --git a/game/modules/tome/data/gfx/talents/acidfire.png b/game/modules/tome/data/gfx/talents/acidfire.png new file mode 100644 index 0000000000000000000000000000000000000000..72eaccfbf62f186efd46dbcc7cf48489a61b4ebe GIT binary patch literal 4857 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/talents/eyal_s_wrath.png b/game/modules/tome/data/gfx/talents/eyal_s_wrath.png new file mode 100644 index 0000000000000000000000000000000000000000..db7f8071eb3e0ab60ecf2d958d99447e8bc44863 GIT binary patch literal 3424 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 CI<H>< literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/talents/nature_s_defiance.png b/game/modules/tome/data/gfx/talents/nature_s_defiance.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac5a3d8dbe4d9464fbdd343690e06d46e230ec5 GIT binary patch literal 3774 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 literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/gfx/talents/reclaim.png b/game/modules/tome/data/gfx/talents/reclaim.png new file mode 100644 index 0000000000000000000000000000000000000000..66184e2dbc4f8d282b896e7a9b88ac464f5ba1c5 GIT binary patch literal 4950 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 U{zd)LLI3~&07*qoM6N<$f)YDeKmY&$ literal 0 HcmV?d00001 diff --git a/game/modules/tome/data/talents/gifts/eyals-fury.lua b/game/modules/tome/data/talents/gifts/eyals-fury.lua new file mode 100644 index 0000000000..6e8845c796 --- /dev/null +++ b/game/modules/tome/data/talents/gifts/eyals-fury.lua @@ -0,0 +1,233 @@ +-- ToME - Tales of Maj'Eyal +-- Copyright (C) 2009 - 2014 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 + +newTalent{ + name = "Reclaim", + type = {"wild-gift/eyals-fury", 1}, + require = gifts_req_high1, + points = 5, + equilibrium = 5, + range = 7, + cooldown = 5, + tactical = { ATTACK = { NATURE = 1, ACID = 1 } }, + target = function(self, t) + return {type="bolt", range=self:getTalentRange(t), talent=t, display = {particle=particle, trail=trail}, friendlyfire=false, friendlyblock=false} + end, + getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 320) end, + undeadBonus = 25, + action = function(self, t) + local tg = {type="hit", range=self:getTalentRange(t), talent=t} + local tx, ty, target = self:getTarget(tg) + if not (tx and ty) or core.fov.distance(self.x, self.y, tx, ty) > self:getTalentRange(t) then return nil end + if not target then return true end + local dam = self:mindCrit(t.getDamage(self, t))*(1 + ((target.undead or target.type == "construct") and t.undeadBonus/100 or 0)) + self:project(tg, tx, ty, DamageType.ACID, dam*0.5) + self:project(tg, tx, ty, DamageType.NATURE, dam*0.5) + game:playSoundNear(self, "talents/heal") + return true + end, + info = function(self, t) + local dam = t.getDamage(self, t) + return ([[You focus the inexorable pull of nature against a single creature, eroding it and allowing it to be reclaimed by the cycle of life. + This deals %0.1f Nature and %0.1f Acid damage to the target, and is particularly devastating against undead and constructs, dealing %d%% more damage to them. + The damage increases with your Mindpower.]]): + format(damDesc(self, DamageType.NATURE, dam/2), damDesc(self, DamageType.ACID, dam/2), t.undeadBonus) + end, +} + +newTalent{ + name = "Nature's Defiance", + type = {"wild-gift/eyals-fury", 2}, + require = gifts_req_high2, + points = 5, + mode = "passive", + getSave = function(self, t) return self:combatTalentMindDamage(t, 5, 50) end, + getResist = function(self, t) return self:combatTalentMindDamage(t, 5, 40) end, + getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end, + getAffinity = function(self, t) return self:combatTalentLimit(t, 50, 5, 20) end, -- Limit <50% + getPower = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end, + trigger = function(self, t, target, source_t) -- called in damage_types.lua default projector + self:setEffect(self.EFF_NATURE_REPLENISHMENT, t.getDuration(self, t), {power = t.getPower(self, t)}) + return true + end, + passives = function(self, t, p) + self:talentTemporaryValue(p, "combat_spellresist", t.getSave(self, t)) + self:talentTemporaryValue(p, "resists", {[DamageType.ARCANE]=t.getResist(self, t)}) + self:talentTemporaryValue(p, "damage_affinity", {[DamageType.NATURE]=t.getAffinity(self, t)}) + end, + info = function(self, t) + local p = t.getPower(self, t) + return ([[Your devotion to nature has made your body more attuned to the natural world and resistant to unnatural energies. + You gain %d Spell save, %0.1f%% Arcane resistance, and %0.1f%% Nature damage affinity. + You defy arcane forces, so that any time you take damage from a spell, you restore %0.1f Equilibrium each turn for %d turns. + The effects increase with your Mindpower.]]): + format(t.getSave(self, t), t.getResist(self, t), t.getAffinity(self, t), t.getPower(self, t), t.getDuration(self, t)) + end, +} + +newTalent{ + name = "Acidfire", + type = {"wild-gift/eyals-fury", 3}, + require = gifts_req_high3, + points = 5, + equilibrium = 20, + cooldown = 25, + range = 8, + radius = 4, + direct_hit = true, + requires_target = true, + target = function(self, t) + return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t)} + end, + tactical = { ATTACKAREA = { ACID = 2 }, DISABLE = {blind = 1} }, + getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 6, 10)) end, + getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 70) end, + getChance = function(self, t) return self:combatTalentLimit(t, 100, 20, 40) end, --Limit < 100% + removeEffect = function(target) -- remove one random beneficial magical effect or sustain + -- Go through all beneficial magical effects + local effs = {} + for eff_id, p in pairs(target.tmp) do + local e = target.tempeffect_def[eff_id] + if e.type == "magical" and e.status == "beneficial" then + effs[#effs+1] = {"effect", eff_id} + end + end + + -- Go through all sustained spells + for tid, act in pairs(target.sustain_talents) do + if act then + local talent = target:getTalentFromId(tid) + if talent.is_spell then effs[#effs+1] = {"talent", tid} end + end + end + if #effs == 0 then return end + local eff = rng.tableRemove(effs) + + if eff[1] == "effect" then + target:removeEffect(eff[2]) + else + target:forceUseTalent(eff[2], {ignore_energy=true}) + end + end, + action = function(self, t) + local tg = self:getTalentTarget(t) + local x, y = self:getTarget(tg) + if not x or not y then return nil end + local _ _, _, _, x, y = self:canProject(tg, x, y) + -- Add a lasting map effect + local eff = game.level.map:addEffect(self, + x, y, t.getDuration(self, t), -- duration + engine.DamageType.ACID_BLIND, t.getDamage(self, t), + self:getTalentRadius(t), -- radius + 5, nil, + {type="vapour"}, + function(eff) --update_fct(effect) + local act + for i, g in pairs(eff.grids) do + for j, _ in pairs(eff.grids[i]) do + act = game.level.map(i, j, engine.Map.ACTOR) + if act then + if rng.percent(eff.chance) then + eff.removeEffect(act) + end + end + end + end + end, + false, -- no friendly fire + false -- no self fire + ) + eff.chance = t.getChance(self, t) + eff.removeEffect = t.removeEffect + eff.name = "Acidfire cloud" + game:playSoundNear(self, "talents/cloud") + return true + end, + info = function(self, t) + return ([[You call upon the earth to create a blinding, corrosive cloud in an area of radius %d for %d turns. + Each turn, this cloud deals %0.1f Acid damage to each foe while (%d%% chance) burning away one beneficial magical effect. + The damage increases with your Mindpower.]]): + format(self:getTalentRadius(t), t.getDuration(self, t), damDesc(self, DamageType.ACID, t.getDamage(self, t)), t.getChance(self, t)) + end, +} + +newTalent{ + name = "Eyal's Wrath", + type = {"wild-gift/eyals-fury", 4}, + require = gifts_req_high5, + points = 5, + equilibrium = 20, + cooldown = 20, + radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 6)) end, --Limit < 10 + tactical = { ATTACKAREA = { Nature = 2 }, EQUILIBRIUM = 1 }, + getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end, + getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 100) end, + getDrain = function(self, t) return self:combatTalentMindDamage(t, 10, 30) end, + drainMagic = function(eff, act) + if act:attr("invulnerable") or act:attr("no_timeflow") then return end + local mana = math.min(eff.drain, act:getMana()) + local vim = math.min(eff.drain / 2, act:getVim()) + local positive = math.min(eff.drain / 4, act:getPositive()) + local negative = math.min(eff.drain / 4, act:getNegative()) + act:incMana(-mana); act:incVim(-vim); act:incPositive(-positive); act:incNegative(-negative) + local drain = mana + vim + positive + negative + if drain > 0 then + game:delayedLogMessage(eff.src, act, "Eyal's Wrath", ("#CRIMSON#%s drains magical energy!"):format(eff:getName())) + eff.src:incEquilibrium(-drain/10) + end + end, + action = function(self, t) + -- Add a lasting map effect + local eff = game.level.map:addEffect(self, + self.x, self.y, 7, + DamageType.NATURE, t.getDamage(self, t), + t.radius(self, t), + 5, nil, + {type="generic_vortex", args = {radius = t.radius(self, t), rm = 5, rM=55, gm=250, gM=255, bm = 180, bM=255, am= 35, aM=90, density = 100}, only_one=true }, + function(eff) + eff.x = eff.src.x + eff.y = eff.src.y + local act + for i, g in pairs(eff.grids) do + for j, _ in pairs(eff.grids[i]) do + act = game.level.map(i, j, engine.Map.ACTOR) + if act and act ~= eff.src and act:reactionToward(eff.src) < 0 then + eff.drainMagic(eff, act) + end + end + end + return true + end, + false, false + ) + eff.drain = t.getDrain(self, t) + eff.drainMagic = t.drainMagic + eff.name = "Eyal's Wrath" + game:playSoundNear(self, "talents/thunderstorm") + return true + end, + info = function(self, t) + local drain = t.getDrain(self, t) + return ([[You draw deeply from your connection with nature to create a radius %d storm of natural forces around you for %d turns. + This storm moves with you and deals %0.1f Nature damage each turn to all foes it hits. + In addtion, it will drain up to %d Mana, %d Vim, %d Positive, and %d Negative energy from each enemy within it's area every turn, while you restore Equilibrium equal to 10%% of the amount drained. + The damage and drain increase with your Mindpower.]]): + format(self:getTalentRadius(t), t.getDuration(self, t), damDesc(self, DamageType.NATURE, t.getDamage(self, t)), drain, drain/2, drain/4, drain/4) + end, +} -- GitLab