From 6f671debd6af3d0cb68d61336e3473feaf7acfea Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sat, 25 Aug 2012 19:21:51 +0000
Subject: [PATCH] New Unique: Void Spectre. New Artifact: Void Orb, the Arcane
 Ring. Slight buff to fists of the desert scorpion. Mindpower on Nexus of Way
 nerfed for yeeks and buffed for non yeeks. Eye of the Wyrm infinite power
 fixed. Surefire nerfed Mindpower on focus whip nerfed, but it now counts as a
 gem for mindslayers. As well, damage, level range, and material level
 increased. Mindpower on Serpent's Glare nerfed, but it now activates for spit
 poison. on_takeoff removed from Inner Eye due to uselessness. Corpus'
 Vilespawn weakened. Hydra's Bite damage increased. Ward removed from
 spellhunt remnants. Dawn's Blade given old summertide features :)

git-svn-id: http://svn.net-core.org/repos/t-engine4@5560 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Object.lua            |  4 ++
 game/modules/tome/data/general/npcs/wight.lua | 37 +++++++++++
 .../data/general/objects/boss-artifacts.lua   | 47 ++++++++++++--
 .../objects/world-artifacts-far-east.lua      | 12 +++-
 .../data/general/objects/world-artifacts.lua  | 65 ++++++-------------
 .../tome/data/talents/psionic/psionic.lua     |  2 +-
 6 files changed, 114 insertions(+), 53 deletions(-)

diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index 627e3f5b19..ecfebe48a6 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -462,6 +462,10 @@ function _M:getTextualDesc(compare_with)
 		if combat.wil_attack then
 			desc:add("Accuracy is based on willpower for this weapon.", true)
 		end
+		
+		if combat.is_psionic_focus then
+			desc:add("This weapon will act as a psionic focus.", true)
+		end
 
 		compare_fields(combat, compare_with, field, "atk", "%+d", "Accuracy: ", 1, false, false, add_table)
 		compare_fields(combat, compare_with, field, "apr", "%+d", "Armour Penetration: ", 1, false, false, add_table)
diff --git a/game/modules/tome/data/general/npcs/wight.lua b/game/modules/tome/data/general/npcs/wight.lua
index 713ac80133..ef65e4c2c5 100644
--- a/game/modules/tome/data/general/npcs/wight.lua
+++ b/game/modules/tome/data/general/npcs/wight.lua
@@ -122,3 +122,40 @@ newEntity{ base = "BASE_NPC_WIGHT",
 		[Talents.T_MIND_DISRUPTION]={base=4, every=5, max=8},
 	},
 }
+
+-- The Void Spectre, the Aether Wight. Minor talents in all elements, but arcane through and through.
+newEntity{ base = "BASE_NPC_WIGHT",
+	name = "Void Spectre", color=colors.RED, image="npc/emperor_wight.png", unique=true,
+	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/emperor_wight.png", display_h=2, display_y=-1}}},
+	desc=[[Intense Arcane energy whirls in the air around this ethereal form. ]],
+	level_range = {45, nil}, exp_worth = 2,
+	life_rating=16,
+	rarity = 50,
+	rank = 3.5,
+	max_life = resolvers.rngavg(200,300),
+	max_mana = resolvers.rngavg(800,1200),
+	mana_regen = 5,
+	combat_armor = 12, combat_def = 30, combat_atk=30,
+	
+		combat = { dam=resolvers.mbonus(40, 20), atk=20, apr=15, damtype=DamageType.ARCANE },
+	
+		resists = { [DamageType.COLD] = 30, [DamageType.FIRE] = 30, [DamageType.LIGHTNING] = 30, [DamageType.PHYSICAL] = 0, [DamageType.LIGHT] = 0, [DamageType.ARCANE] = 100},
+
+	ai = "tactical",
+	resolvers.talents{ [Talents.T_FLAMESHOCK]={base=3, every=5, max=7}, [Talents.T_LIGHTNING]={base=4, every=5, max=8}, [Talents.T_GLACIAL_VAPOUR]={base=3, every=5, max=7}, [Talents.T_STRIKE]={base=3, every=5, max=7},
+		[Talents.T_ARCANE_POWER]={base=6, every=2, max=12},
+		[Talents.T_MANATHRUST]={base=6, every=4, max=10},
+		[Talents.T_ARCANE_VORTEX]={base=4, every=4, max=7},
+		[Talents.T_SPELLCRAFT]=5,
+		[Talents.T_AETHER_BEAM]={base=6, every=7, max=9},
+		[Talents.T_AETHER_BREACH]={base=3, every=6, max=6},
+		[Talents.T_HEAL]={base=2, every=6, max=6},
+		[Talents.T_SHIELDING]={base=3, every=6, max=6},
+		[Talents.T_ARCANE_SHIELD]={base=2, every=5, max=5},
+		[Talents.T_PURE_AETHER]={base=3, every=7, max=5},
+		[Talents.T_PHASE_DOOR]=10,
+	},
+	resolvers.sustains_at_birth(),
+	resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
+	resolvers.drops{chance=100, nb=1, {defined="AETHER_RING"} },
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 0edcc5d9d0..6f05c7260f 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -1428,11 +1428,11 @@ newEntity{ base = "BASE_GREATMAUL", define_as="ROTTING_MAUL",
 --Molten Skin, dropped by Heavy Sentinel.
 newEntity{ base = "BASE_LIGHT_ARMOR",
 	power_source = {arcane=true},
-	define_as = "ARMOR_MOLTEN", rarity=false,
+	define_as = "ARMOR_MOLTEN",
 	unided_name = "melting bony armour",
 	name = "Molten Skin", unique=true,
 	desc = [[This mass of fused molten bone from the Heavy Sentinel radiates intense power. It still glows red with the heat of the Sentinel's core, and yet seems to do you no harm.]],
-	require = { stat = { mag=60 }, },
+--	require = { stat = { mag=60 }, },
 	level_range = {40, 50},
 	rarity = 250,
 	cost = 300,
@@ -1441,15 +1441,18 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 		combat_spellpower = 15,
 		combat_spellcrit = 10,
 		combat_physcrit = 8,
+		combat_damage = 10,
 		combat_critical_power = 20,
 		combat_def = 15,
 		combat_armor = 12,
 		inc_stats = { [Stats.STAT_MAG] = 6,[Stats.STAT_CUN] = 6,},
-		melee_project={[DamageType.FIRE] = 30,},
+		melee_project={[DamageType.FIRE] = 30,[DamageType.LIGHT] = 15,},
+		ranged_project={[DamageType.FIRE] = 30,[DamageType.LIGHT] = 15,},
+		on_melee_hit = {[DamageType.FIRE]=30},
  		inc_damage={
-			[DamageType.FIRE] = 25,
-			[DamageType.LIGHT] = 10,
-			all=5,
+			[DamageType.FIRE] = 20,
+			[DamageType.LIGHT] = 5,
+			all=10,
  		},
  		resists={
 			[DamageType.FIRE] = 20,
@@ -1470,6 +1473,38 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 	use_talent = { id = Talents.T_BLASTWAVE, level = 4, power = 12 },
 }
 
+newEntity{ base = "BASE_RING",
+	power_source = {arcane=true},
+	define_as = "AETHER_RING",
+	name = "Void Orb", unique=true,
+	desc = [[This thin grey ring is adorned with a deep black orb. Tiny white dots swirl slowly within it, and a faint purple light glows from its core.]],
+	unided_name = "ethereal ring",
+	level_range = {40, 50},
+	rarity = 250,
+	cost = 300,
+	material_level = 5,
+	wielder = {
+		max_mana = 35,
+		combat_spellresist = 18,
+		combat_spellpower = 5,
+		silence_immune = 0.3,
+		mana_regen=0.2,
+		talent_cd_reduction={
+			[Talents.T_AETHER_AVATAR]=5,
+		},
+		inc_damage={ [DamageType.ARCANE] = 15, [DamageType.PHYSICAL] = 7, [DamageType.FIRE] = 7, [DamageType.COLD] = 7, [DamageType.LIGHTNING] = 7},
+		resists={ [DamageType.ARCANE] = 15,},
+		resists_pen={ [DamageType.ARCANE] = 20,},
+		melee_project={ [DamageType.ARCANE] = 15,},
+		talents_types_mastery = {
+ 			["spell/arcane"] = 0.1,
+ 			["spell/aether"] = 0.1,
+ 		},
+	},
+	max_power = 6, power_regen = 1,
+	use_talent = { id = Talents.T_MANATHRUST, level = 4, power = 6 },
+}
+
 newEntity{ base = "BASE_BATTLEAXE",
 	power_source = {arcane=true},
 	define_as = "KHULMANAR_WRATH",
diff --git a/game/modules/tome/data/general/objects/world-artifacts-far-east.lua b/game/modules/tome/data/general/objects/world-artifacts-far-east.lua
index 799761c289..afdb8bd49f 100644
--- a/game/modules/tome/data/general/objects/world-artifacts-far-east.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts-far-east.lua
@@ -328,16 +328,18 @@ newEntity{ base = "BASE_LONGSWORD",
 		},
 		talents_types_mastery = {
 			["celestial/sun"] = 0.2,
+			["celestial/light"] = 0.1,
 		},
 		talent_cd_reduction= {
 			[Talents.T_HEALING_LIGHT] = 2,
 			[Talents.T_BARRIER] = 2,
 			[Talents.T_SUN_FLARE] = 2,
+			[Talents.T_PROVIDENCE] = 4,
 		},
 		lite=2,
 	},
-	max_power = 40, power_regen = 1,
-	use_power = { name = "invoke dawn", power = 40,
+	max_power = 35, power_regen = 1,
+	use_power = { name = "invoke dawn", power = 35,
 		use = function(self, who)
 			local radius = 4
 			local dam = (75 + who:getMag()*2)
@@ -361,6 +363,12 @@ newEntity{ base = "BASE_LONGSWORD",
 			demon=25,
 		},
 	},
+	on_wear = function(self, who)
+		if who.descriptor and who.descriptor.subclass == "Sun Paladin" then
+			self:specialWearAdd({"wielder", "positive_regen"}, 0.2)
+			game.logPlayer(who, "#GOLD#You feel a swell of positive energy!")
+		end
+	end,
 }
 
 newEntity{ base = "BASE_AMULET",
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index 65197d0eab..fe4299d75d 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -1316,6 +1316,7 @@ Finally The Scorpion was defeated by the alchemist Nessylia, who went to face th
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_WIL] = 3, [Stats.STAT_CUN] = 3, },
 		inc_damage = { [DamageType.PHYSICAL] = 8 },
+		combat_mindpower=3,
 		combat_armor = 4,
 		combat_def = 8,
 		disarm_immune = 0.4,
@@ -1330,8 +1331,8 @@ Finally The Scorpion was defeated by the alchemist Nessylia, who went to face th
 			talent_on_hit = { [Talents.T_BITE_POISON] = {level=3, chance=20} },
 		},
 	},
-	max_power = 30, power_regen = 1,
-	use_talent = { id = Talents.T_MINDHOOK, level = 4, power = 20 },
+	max_power = 24, power_regen = 1,
+	use_talent = { id = Talents.T_MINDHOOK, level = 4, power = 16 },
 }
 
 newEntity{ base = "BASE_GLOVES",
@@ -2822,7 +2823,7 @@ newEntity{ base = "BASE_MINDSTAR",
 		damtype = DamageType.MIND,
 	},
 	wielder = {
-		combat_mindpower = 15,
+		combat_mindpower = 20,
 		combat_mindcrit = 9,
 		confusion_immune=0.3,
 		inc_damage={
@@ -2842,7 +2843,7 @@ newEntity{ base = "BASE_MINDSTAR",
 		if who.descriptor and who.descriptor.race == "Yeek" then
 			local Talents = require "engine.interface.ActorStats"
 			self:specialWearAdd({"wielder", "talents_types_mastery"}, { ["race/yeek"] = 0.2 })
-			self:specialWearAdd({"wielder","combat_mindpower"}, 15)
+			self:specialWearAdd({"wielder","combat_mindpower"}, 5)
 			self:specialWearAdd({"wielder","combat_mentalresist"}, 15)
 			game.logPlayer(who, "#LIGHT_BLUE#You feel the power of the Way within you!")
 		end
@@ -3094,7 +3095,9 @@ newEntity{ base = "BASE_MINDSTAR",
 	end,
 	act = function(self)
 		self:useEnergy()
+		if self.power < self.max_power then
 		self.power=self.power + 1
+		end
 		if not self.worn_by then return end
 		if game.level and not game.level:hasEntity(self.worn_by) and not self.worn_by.player then self.worn_by = nil return end
 		if self.worn_by:attr("dead") then return end
@@ -3246,10 +3249,9 @@ newEntity{ base = "BASE_LONGBOW",
 	combat = {
 		range = 9,
 		physspeed = 0.75,
-		travel_speed = 2,
 	},
 	wielder = {
-		inc_damage={ [DamageType.PHYSICAL] = 6, },
+		inc_damage={ [DamageType.PHYSICAL] = 5, },
 		inc_stats = { [Stats.STAT_DEX] = 3},
 		combat_atk=12,
 		combat_physcrit=5,
@@ -3350,10 +3352,11 @@ newEntity{ base = "BASE_WHIP",
 	require = { stat = { dex=15 }, },
 	cost = 90,
 	rarity = 250,
-	level_range = {8, 18},
-	material_level = 2,
+	level_range = {18, 28},
+	material_level = 3,
 	combat = {
-		dam = 13,
+		is_psionic_focus=true,
+		dam = 19,
 		apr = 7,
 		physcrit = 5,
 		dammod = {dex=0.7, wil=0.2, cun=0.1},
@@ -3361,7 +3364,7 @@ newEntity{ base = "BASE_WHIP",
 		damtype=DamageType.MIND,
 	},
 	wielder = {
-		combat_mindpower = 10,
+		combat_mindpower = 8,
 		combat_mindcrit = 3,
 	},
 	max_power = 10, power_regen = 1,
@@ -3501,13 +3504,15 @@ newEntity{ base = "BASE_MINDSTAR",
 		convert_damage={[DamageType.POISON] = 30,}
 	},
 	wielder = {
-		combat_mindpower = 10,
+		combat_mindpower = 5,
 		combat_mindcrit = 5,
 		poison_immune = 0.5,
 		resists = {
 			[DamageType.NATURE] = 10,
 		}
 	},
+	max_power = 8, power_regen = 1,
+	use_talent = { id = Talents.T_SPIT_POISON, level = 2, power = 8 },
 }
 
 newEntity{ base = "BASE_LEATHER_CAP",
@@ -3542,9 +3547,6 @@ You suspect the effects will require a moment to recover from.]],
 		who:resetCanSeeCache()
 		if who.player then for uid, e in pairs(game.level.entities) do if e.x then game.level.map:updateMap(e.x, e.y) end end game.level.map.changed = true end
 	end,
-	on_takeoff = function(self, who)
-		game.logPlayer(who, "#CRIMSON#As you remove the eye, your mind feels unprotected!")
-	end,
 }
 
 newEntity{ base = "BASE_LONGSWORD", define_as="CORPUS",
@@ -3599,8 +3601,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as="CORPUS",
 				image="npc/horror_eldritch_oozing_horror.png",
 				desc = "This mass of putrid slime burst from Corpus, and seems intent to kill you.",
 				body = { INVEN = 10, MAINHAND=1, OFFHAND=1, },
-				rank = 3,
-				life_rating = 10, exp_worth = 0,
+				rank = 2,
+				life_rating = 8, exp_worth = 0,
 				max_vim=200,
 				max_life = resolvers.rngavg(50,90),
 				infravision = 20,
@@ -3741,7 +3743,7 @@ newEntity{ base = "BASE_WHIP", define_as = "HYDRA_BITE",
 	material_level = 4,
 	running = 0, --For the on hit
 	combat = {
-		dam = 38,
+		dam = 45,
 		apr = 7,
 		physcrit = 4,
 		dammod = {str=1.1},
@@ -3789,8 +3791,8 @@ newEntity{ base = "BASE_GAUNTLETS",
 	name = "Spellhunt Remnants", color = colors.GREY,
 	unided_name = "rusted voratun gauntlets",
 	desc = [[These once brilliant voratun gauntlets have fallen into a deep decay. Originally used in the spellhunt, it was often used to destroy arcane artifacts, curing the world of their influence.]],
-	level_range = {20, 40},
-	rarity = 300,
+	level_range = {1, 25}, --Relevent at all levels, though of course mat level 1 limits it to early game.
+	rarity = 450, -- But rare to make it not ALWAYS appear.
 	cost = 1000,
 	material_level = 1,
 	wielder = {
@@ -3799,11 +3801,6 @@ newEntity{ base = "BASE_GAUNTLETS",
 		combat_spellresist=4,
 		combat_def=1,
 		combat_armor=2,
-		learn_talent = {[Talents.T_WARD] = 1},
-		wards = {
-			[DamageType.ARCANE] = 1,
-			[DamageType.BLIGHT] = 1,
-		},
 		combat = {
 			dam = 12,
 			apr = 4,
@@ -3828,11 +3825,6 @@ newEntity{ base = "BASE_GAUNTLETS",
 			combat_spellresist=6,
 			combat_def=2,
 			combat_armor=3,
-			learn_talent = {[Talents.T_WARD] = 1},
-			wards = {
-				[DamageType.ARCANE] = 2,
-				[DamageType.BLIGHT] = 2,
-			},
 			combat = {
 				dam = 17,
 				apr = 8,
@@ -3851,11 +3843,6 @@ newEntity{ base = "BASE_GAUNTLETS",
 			combat_spellresist=8,
 			combat_def=3,
 			combat_armor=4,
-			learn_talent = {[Talents.T_WARD] = 1},
-			wards = {
-				[DamageType.ARCANE] = 3,
-				[DamageType.BLIGHT] = 3,
-			},
 			combat = {
 				dam = 22,
 				apr = 12,
@@ -3874,11 +3861,6 @@ newEntity{ base = "BASE_GAUNTLETS",
 			combat_spellresist=10,
 			combat_def=4,
 			combat_armor=5,
-			learn_talent = {[Talents.T_WARD] = 1},
-			wards = {
-				[DamageType.ARCANE] = 4,
-				[DamageType.BLIGHT] = 4,
-			},
 			combat = {
 				dam = 27,
 				apr = 15,
@@ -3897,11 +3879,6 @@ newEntity{ base = "BASE_GAUNTLETS",
 			combat_spellresist=12,
 			combat_def=5,
 			combat_armor=6,
-			learn_talent = {[Talents.T_WARD] = 1},
-			wards = {
-				[DamageType.ARCANE] = 5,
-				[DamageType.BLIGHT] = 5,
-			},
 			combat = {
 				dam = 32,
 				apr = 18,
diff --git a/game/modules/tome/data/talents/psionic/psionic.lua b/game/modules/tome/data/talents/psionic/psionic.lua
index 98e721c158..9c405e2f1c 100644
--- a/game/modules/tome/data/talents/psionic/psionic.lua
+++ b/game/modules/tome/data/talents/psionic/psionic.lua
@@ -155,7 +155,7 @@ function getGemLevel(self)
 	local gem_level = 0
 	if self:getInven("PSIONIC_FOCUS") then
 		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item and ((tk_item.type == "gem") or (tk_item.subtype == "mindstar")) then
+		if tk_item and ((tk_item.type == "gem") or (tk_item.subtype == "mindstar") or tk_item.combat.is_psionic_focus == true) then
 			gem_level = tk_item.material_level or 5
 		end
 	end
-- 
GitLab