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