From 37c735a406251ed4a6478f8062f5dca6aa4d7ce8 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Wed, 28 Sep 2011 09:06:56 +0000
Subject: [PATCH] Reworked some imminuty artifacts

git-svn-id: http://svn.net-core.org/repos/t-engine4@4489 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Object.lua            |  5 +++
 game/modules/tome/data/damage_types.lua       |  3 +-
 .../data/general/objects/boss-artifacts.lua   | 22 +++++----
 .../data/general/objects/world-artifacts.lua  | 45 +++++++++++--------
 4 files changed, 45 insertions(+), 30 deletions(-)

diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index aff0d1720b..d15e12389c 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -524,6 +524,11 @@ function _M:getTextualDesc(compare_with)
 				return col[2], (" %s"):format(item == "all" and "all" or DamageType.dam_def[item].name), {"color","LAST"}
 			end)
 
+		compare_table_fields(w, compare_with, field, "damage_affinity", "%+d%%", "Damage affinity(heal): ", function(item)
+				local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
+				return col[2], (" %s"):format(item == "all" and "all" or DamageType.dam_def[item].name), {"color","LAST"}
+			end)
+
 
 		compare_fields(w, compare_with, field, "esp_range", "%+d", "Change telepathy range by : ")
 
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 26af2c78be..69eff24697 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -126,8 +126,7 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
 		-- affinity healing, we store it to apply it after damage is resolved
 		local affinity_heal = 0
 		if target.damage_affinity then
-			local aff = (target.damage_affinity[type] or 0) / 100
-			affinity_heal = (dam * aff)
+			affinity_heal = math.max(0, dam * ((target.damage_affinity.all or 0) + (target.damage_affinity[type] or 0)) / 100)
 		end
 
 		-- Reduce damage with resistance
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 0aa504847b..bb5171bba5 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -126,7 +126,10 @@ newEntity{ base = "BASE_AMULET",
 			[DamageType.FIRE] = 10,
 			[DamageType.COLD] = -5,
 		},
-		blind_immune = 1,
+		damage_affinity={
+			[DamageType.FIRE] = 30,
+		},
+		blind_immune = 0.4,
 	},
 	talent_on_spell = { {chance=10, talent=Talents.T_VOLCANO, level=3} },
 }
@@ -257,8 +260,8 @@ newEntity{ base = "BASE_HEAVY_ARMOR",
 		talent_cd_reduction={[Talents.T_ICE_BREATH]=3, [Talents.T_FIRE_BREATH]=3, [Talents.T_SAND_BREATH]=3, [Talents.T_LIGHTNING_BREATH]=3,},
 		inc_stats = { [Stats.STAT_WIL] = 6, [Stats.STAT_CUN] = 4, [Stats.STAT_STR] = 6, [Stats.STAT_LCK] = 10, },
 		blind_immune = 0.5,
-		stun_immune = 0.5,
-		knockback_immune = 1,
+		stun_immune = 0.25,
+		knockback_immune = 0.5,
 		esp = { dragon = 1 },
 		combat_def = 10,
 		combat_armor = 14,
@@ -276,7 +279,7 @@ newEntity{ base = "BASE_RING",
 	power_source = {technique=true},
 	define_as = "PRIDE_GLORY", rarity=false,
 	name = "Glory of the Pride", unique=true, image="object/artifact/glory_of_the_pride.png",
-	desc = [[The most prized treasure of the Battlemaster of the Pride, Grushnak. This gold ring is inscribed in the orc tongue, the black speech.]],
+	desc = [[The most prized treasure of the Battlemaster of the Pride, Grushnak. This gold ring is inscribed in the now lost orc tongue.]],
 	unided_name = "deep black ring",
 	level_range = {40, 50},
 	rarity = 280,
@@ -285,8 +288,8 @@ newEntity{ base = "BASE_RING",
 	wielder = {
 		max_mana = -40,
 		max_stamina = 40,
-		stun_immune = 1,
-		confusion_immune = 1,
+		combat_physresist = 45,
+		confusion_immune = 0.5,
 		combat_atk = 10,
 		combat_dam = 10,
 		combat_def = 5,
@@ -454,8 +457,9 @@ newEntity{ base = "BASE_CLOTH_ARMOR",
 	wielder = {
 		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
 		see_invisible = 10,
-		blind_immune = 1,
+		blind_immune = 0.5,
 		combat_spellpower = 30,
+		combat_spellresist = 25,
 		combat_dam = 10,
 		combat_def = 6,
 	},
@@ -933,8 +937,8 @@ newEntity{ base = "BASE_GEM", define_as = "CRYSTAL_HEART",
 			o.wielder.inc_stats[engine.interface.ActorStats.STAT_LCK] = 12
 			o.wielder.resists = o.wielder.resists or {}
 			o.wielder.resists = { [engine.DamageType.ARCANE] = 35, [engine.DamageType.PHYSICAL] = 15 }
-			o.wielder.poison_immune = 1
-			o.wielder.disease_immune = 1
+			o.wielder.poison_immune = 0.6
+			o.wielder.disease_immune = 0.6
 
 			o.set_list = { {"is_crystalline_weapon", true} }
 			o.on_set_complete = function(self, who)
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index 93374d2438..6a54374117 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -755,8 +755,8 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 		combat_def = 6,
 		combat_armor = 7,
 		fatigue = 7,
-		stun_immune = 0.7,
-		knockback_immune = 0.7,
+		stun_immune = 0.3,
+		combat_physresist = 35,
 		inc_stats = { [Stats.STAT_WIL] = 5, [Stats.STAT_CON] = 4, },
 		resists={[DamageType.BLIGHT] = 35},
 	},
@@ -1169,10 +1169,9 @@ newEntity{ base = "BASE_GLOVES",
 	wielder = {
 		talent_cd_reduction={[Talents.T_CLINCH]=2},
 		inc_stats = { [Stats.STAT_CON] = 4 },
-		combat_armor = 1,
-		disarm_immune=0.3,
+		combat_armor = 8,
+		disarm_immune=0.4,
 		knockback_immune=0.3,
-		stun_immune=0.3,
 		combat = {
 			dam = 18,
 			apr = 1,
@@ -1426,17 +1425,21 @@ newEntity{ base = "BASE_GEM",
 	cost = 200,
 	material_level = 5,
 	carrier = {
-		confusion_immune = 0.8,
-		fear_immune = 0.7,
-		resists={[DamageType.MIND] = 35,},
+		lite = 2,
 	},
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 5, [Stats.STAT_CUN] = 5, [Stats.STAT_CON] = 5, },
 		lite = 2,
+		confusion_immune = 0.3,
+		fear_immune = 0.3,
+		resists={[DamageType.MIND] = 30,},
 	},
 	imbue_powers = {
 		inc_stats = { [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 5, [Stats.STAT_CUN] = 5, [Stats.STAT_CON] = 5, },
 		lite = 2,
+		confusion_immune = 0.3,
+		fear_immune = 0.3,
+		resists={[DamageType.MIND] = 30,},
 	},
 
 	max_power = 1, power_regen = 1,
@@ -1539,16 +1542,16 @@ newEntity{ base = "BASE_BATTLEAXE",
 		inc_stats = { [Stats.STAT_CON] = 2, [Stats.STAT_DEX] = 2, },
 		combat_def = 6, combat_armor = 6,
 		inc_damage = { [DamageType.PHYSICAL]=10 },
-		stun_immune = 0.5,
-		knockback_immune = 0.5,
+		stun_immune = 0.3,
+		knockback_immune = 0.3,
 	},
 	on_wear = function(self, who)
 		if who.descriptor and who.descriptor.race == "Dwarf" then
 			local Stats = require "engine.interface.ActorStats"
 
 			self:specialWearAdd({"wielder","inc_stats"}, { [Stats.STAT_CON] = 7, [Stats.STAT_DEX] = 7, })
-			self:specialWearAdd({"wielder","stun_immune"}, 0.5)
-			self:specialWearAdd({"wielder","knockback_immune"}, 0.5)
+			self:specialWearAdd({"wielder","stun_immune"}, 0.7)
+			self:specialWearAdd({"wielder","knockback_immune"}, 0.7)
 			game.logPlayer(who, "#LIGHT_BLUE#You feel as surge of power as you wield the axe of your ancestors!")
 		end
 	end,
@@ -1888,8 +1891,11 @@ newEntity{ base = "BASE_MASSIVE_ARMOR",
 		max_stamina = 60,
 		combat_def = 15,
 		combat_armor = 20,
-		stun_immune = 0.5,
-		knockback_immune = 0.5,
+		stun_immune = 0.3,
+		knockback_immune = 0.3,
+		combat_mentalresist = 25,
+		combat_spellresist = 25,
+		combat_physresist = 15,
 		lite = 1,
 		fatigue = 26,
 	},
@@ -1914,8 +1920,9 @@ newEntity{ base = "BASE_MASSIVE_ARMOR",
 		},
 		combat_def = 20,
 		combat_armor = 29,
-		stun_immune = 0.5,
-		knockback_immune = 0.5,
+		stun_immune = 0.4,
+		knockback_immune = 0.4,
+		combat_physresist = 40,
 		healing_factor = -0.4,
 		fatigue = 15,
 	},
@@ -2218,12 +2225,12 @@ newEntity{ base = "BASE_AMULET",
 	material_level = 4,
 	metallic = false,
 	wielder = {
-		infravision = 4,
+		infravision = 5,
 		resists = { [DamageType.LIGHT] = -25 },
 		resists_cap = { [DamageType.LIGHT] = -25 },
 		blind_immune = 1,
-		confusion_immune = 1,
-		esp = { horror = 1 },
+		confusion_immune = 0.5,
+		esp = { horror = 1 }, esp_range = 10,
 	},
 	max_power = 60, power_regen = 1,
 	use_talent = { id = Talents.T_ARCANE_EYE, level = 2, power = 60 },
-- 
GitLab