From 398b4d0230a0a1c37e81f9f10ea35bfd23e7e3fb Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Thu, 1 Apr 2010 13:24:53 +0000
Subject: [PATCH] * new artifact ring: Elemental Fury * new ring egos: increase
 damage

git-svn-id: http://svn.net-core.org/repos/t-engine4@484 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Game.lua              |  2 -
 game/modules/tome/class/Object.lua            | 13 ++++
 game/modules/tome/data/damage_types.lua       |  5 --
 .../tome/data/general/objects/egos/rings.lua  | 74 +++++++++++++++++++
 .../data/general/objects/world-artifacts.lua  | 21 ++++++
 .../modules/tome/data/talents/spells/fire.lua |  8 +-
 6 files changed, 112 insertions(+), 11 deletions(-)

diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index eb1a7486e1..a05a163d72 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -35,8 +35,6 @@ local QuitDialog = require "mod.dialogs.Quit"
 
 module(..., package.seeall, class.inherit(engine.GameTurnBased, engine.interface.GameMusic))
 
-collectgarbage("stop")
-
 function _M:init()
 	engine.GameTurnBased.init(self, engine.KeyBind.new(), 1000, 100)
 	engine.interface.GameMusic.init(self)
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index 13b9fd472a..ea6b77219a 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -68,6 +68,9 @@ function _M:descAttribute(attr)
 	elseif attr == "STATBONUS" then
 		local stat, i = next(self.wielder.inc_stats)
 		return i > 0 and "+"..i or tostring(i)
+	elseif attr == "DAMBONUS" then
+		local stat, i = next(self.wielder.inc_damage)
+		return (i > 0 and "+"..i or tostring(i)).."%"
 	elseif attr == "COMBAT" then
 		local c = self.combat
 		return c.dam.."-"..(c.dam*(c.damrange or 1.1)).." dam, "..(c.apr or 0).." apr"
@@ -132,6 +135,8 @@ function _M:getDesc()
 		desc[#desc+1] = ("#67AD00#%0.2f Encumbrance."):format(self.encumber)
 	end
 
+	desc[#desc+1] = ("Type: %s / %s"):format(self.type, self.subtype)
+
 	-- Stop here if unided
 	if not self:isIdentified() then return table.concat(desc, "\n") end
 
@@ -182,6 +187,14 @@ function _M:getDesc()
 		desc[#desc+1] = ("Increases resistances: %s."):format(table.concat(rs, ','))
 	end
 
+	if w.inc_damage then
+		local rs = {}
+		for res, i in pairs(w.inc_damage) do
+			rs[#rs+1] = ("%d%% %s"):format(i, DamageType.dam_def[res].name)
+		end
+		desc[#desc+1] = ("Increases damage type: %s."):format(table.concat(rs, ','))
+	end
+
 	if w.esp then
 		local rs = {}
 		for type, i in pairs(w.esp) do
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 75d82b2c13..950d985072 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -114,11 +114,6 @@ newDamageType{
 	end,
 }
 
--- Irresistible fire damage
-newDamageType{
-	name = "netherflame", type = "NETHERFLAME", text_color = "#FIREBRICK#",
-}
-
 -- Blinds
 newDamageType{
 	name = "blindness", type = "BLIND",
diff --git a/game/modules/tome/data/general/objects/egos/rings.lua b/game/modules/tome/data/general/objects/egos/rings.lua
index 346a46f5da..7b6e35c116 100644
--- a/game/modules/tome/data/general/objects/egos/rings.lua
+++ b/game/modules/tome/data/general/objects/egos/rings.lua
@@ -167,3 +167,77 @@ newEntity{
 		inc_stats = { [Stats.STAT_CON] = resolvers.mbonus(8, 2) },
 	},
 }
+
+-------------------------- Damage increase rings
+newEntity{
+	name = " of massacre (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.PHYSICAL] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of arcane power (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.ARCANE] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of burning (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.FIRE] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of freezing (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.COLD] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of nature's blessing (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.NATURE] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of blight (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.BLIGHT] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of shock (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.LIGHTNING] = resolvers.mbonus(15, 5) },
+	},
+}
+newEntity{
+	name = " of corrosion (#DAMBONUS#)",
+	level_range = {6, 50},
+	rarity = 1,
+	cost = 4, identified=true,
+	wielder = {
+		inc_damage = { [DamageType.ACID] = resolvers.mbonus(15, 5) },
+	},
+}
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index a1f4f27920..30eb9b550b 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -64,6 +64,27 @@ newEntity{ base = "BASE_RING",
 	},
 }
 
+newEntity{ base = "BASE_RING",
+	unique = true,
+	name = "Elemental Fury", color = colors.PURPLE,
+	unided_name = "multi-hued ring",
+	desc = [[This ring shines with many colors.]],
+	level_range = {15, 30},
+	rarity = 150,
+	cost = 500,
+
+	wielder = {
+		inc_stats = { [Stats.STAT_CUN] = 3, },
+		inc_damage = {
+			[DamageType.ARCANE]    = 15,
+			[DamageType.FIRE]      = 15,
+			[DamageType.COLD]      = 15,
+			[DamageType.ACID]      = 15,
+			[DamageType.LIGHTNING] = 15,
+		},
+	},
+}
+
 newEntity{ base = "BASE_LITE",
 	unique = true,
 	name = "Phial of Galadriel",
diff --git a/game/modules/tome/data/talents/spells/fire.lua b/game/modules/tome/data/talents/spells/fire.lua
index dff08bf1ee..d9f83132eb 100644
--- a/game/modules/tome/data/talents/spells/fire.lua
+++ b/game/modules/tome/data/talents/spells/fire.lua
@@ -62,12 +62,12 @@ newTalent{
 		local tg = {type="ball", range=self:getTalentRange(t), radius=1 + self:getTalentLevelRaw(t), friendlyfire=self:spellFriendlyFire(), talent=t}
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
-		self:project(tg, x, y, DamageType.FIRE, self:spellCrit(28 + self:combatSpellpower(0.4) * self:getTalentLevel(t)), {type="flame"})
+		self:project(tg, x, y, DamageType.FIRE, self:spellCrit(28 + self:combatSpellpower(0.6) * self:getTalentLevel(t)), {type="flame"})
 		return true
 	end,
 	info = function(self, t)
 		return ([[Conjures up a flash of fire doing %0.2f fire damage in a radius of %d.
-		The damage will increase with the Magic stat]]):format(28 + self:combatSpellpower(0.4) * self:getTalentLevel(t), 1 + self:getTalentLevelRaw(t))
+		The damage will increase with the Magic stat]]):format(28 + self:combatSpellpower(0.6) * self:getTalentLevel(t), 1 + self:getTalentLevelRaw(t))
 	end,
 }
 
@@ -93,7 +93,7 @@ newTalent{
 		-- Add a lasting map effect
 		game.level.map:addEffect(self,
 			x, y, duration,
-			DamageType.NETHERFLAME, dam,
+			DamageType.FIRE, dam,
 			radius,
 			5, nil,
 			engine.Entity.new{alpha=100, display='', color_br=180, color_bg=30, color_bb=60},
@@ -102,7 +102,7 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[Raging flames burn foes and allies alike doing %0.2f netherflame damage in a radius of 5 each turn for %d turns.
+		return ([[Raging flames burn foes and allies alike doing %0.2f fire damage in a radius of 5 each turn for %d turns.
 		The damage and duration will increase with the Magic stat]]):format(15 + self:combatSpellpower(0.15) * self:getTalentLevel(t), 5 + self:getTalentLevel(t))
 	end,
 }
-- 
GitLab