Skip to content
Snippets Groups Projects
world-artifacts-far-east.lua 20.6 KiB
Newer Older
dg's avatar
dg committed
-- ToME - Tales of Maj'Eyal
DarkGod's avatar
DarkGod committed
-- Copyright (C) 2009 - 2017 Nicolas Casalini
dg's avatar
dg committed
--
-- 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

local Stats = require "engine.interface.ActorStats"
local Talents = require "engine.interface.ActorTalents"

DarkGod's avatar
DarkGod committed
--[=[
dg's avatar
dg committed
newEntity{ base = "BASE_GEM", define_as = "ANCIENT_STORM_SAPHIR",
	power_source = {unknown=true},
	unique = true,
	unided_name = "strange sapphire",
	name = "Ancient Storm Sapphire", subtype = "blue", image = "object/ancient_storm_saphir.png",
dg's avatar
dg committed
	color = colors.ROYAL_BLUE,
	level_range = {30, 50},
	desc = [[This seemingly normal sapphire seems to be charged with the destructive power of a raging storm.]],
dg's avatar
dg committed
	rarity = 300,
	cost = 0,
	material_level = 4,
	identified = false,
}
DarkGod's avatar
DarkGod committed
]=]
dg's avatar
dg committed

dg's avatar
dg committed
-- Not a random drop, used by the quest started above
newEntity{ base = "BASE_SCROLL", define_as = "JEWELER_SUMMON", subtype="tome", no_unique_lore=true,
	power_source = {unknown=true},
dg's avatar
dg committed
	unique = true, quest=true, identified=true,
	name = "Scroll of Summoning (Limmir the Jeweler)",
	color = colors.VIOLET,
	fire_proof = true,

	max_power = 1, power_regen = 1,
	use_power = { name = "summon Limmir the jeweler at the center of the lake of the moon", power = 1,
		use = function(self, who) who:hasQuest("master-jeweler"):summon_limmir(who) return {id=true, used=true} end
dg's avatar
dg committed
	},
}
dg's avatar
dg committed

newEntity{ base = "BASE_AMULET",
	power_source = {arcane=true},
dg's avatar
dg committed
	unique = true,
DarkGod's avatar
DarkGod committed
	name = "Pendant of the Sun and Moons", color = colors.LIGHT_SLATE, image = "object/artifact/amulet_pendant_of_sun_and_the_moon.png",
	unided_name = "a gray and gold pendant",
DarkGod's avatar
DarkGod committed
	desc = [[This small pendant depicts a hematite moon eclipsing a golden sun and according to legend was worn by one of the Sunwall's founders.]],
dg's avatar
dg committed
	level_range = {35, 45},
	rarity = 300,
	cost = 200,
	material_level = 4,
DarkGod's avatar
DarkGod committed
	special_desc = function(self) return "All your damage is converted and split into light and darkness." end,
dg's avatar
dg committed
	wielder = {
DarkGod's avatar
DarkGod committed
		twilight_mastery = 0.5,
		combat_spellpower = 8,
dg's avatar
dg committed
		combat_spellcrit = 5,
		inc_damage = { [DamageType.LIGHT]= 8,[DamageType.DARKNESS]= 8 },
dg's avatar
dg committed
		resists = { [DamageType.LIGHT]= 10, [DamageType.DARKNESS]= 10 },
		resists_cap = { [DamageType.LIGHT]= 5, [DamageType.DARKNESS]= 5 },
		resists_pen = { [DamageType.LIGHT]= 15, [DamageType.DARKNESS]= 15 },
dg's avatar
dg committed
	},
	max_power = 60, power_regen = 1,
	use_talent = { id = Talents.T_CIRCLE_OF_SANCTITY, level = 3, power = 30 },
dg's avatar
dg committed
}
dg's avatar
dg committed
newEntity{ base = "BASE_SHIELD", define_as = "SHIELD_UNSETTING",
	power_source = {arcane=true},
	unique = true,
	unided_name = "shimmering gold shield",
dg's avatar
dg committed
	name = "Unsetting Sun", image = "object/artifact/shield_unsetting_sun.png",
	moddable_tile = "special/%s_unsetting_sun",
	moddable_tile_big = true,
dg's avatar
dg committed
	desc = [[When Elmio Panason, captain of the Vanguard, first sought shelter for his shipwrecked crew, he reflected the last rays of the setting sun off his shield.  Where the beam hit they rested and built the settlement that would become the Sunwall.  In the dark days that followed the shield became a symbol of hope for a better future.]],
	color = colors.YELLOW,
	rarity = 300,
	level_range = {35, 45},
	require = { stat = { str=40 }, },
	cost = 400,
	material_level = 5,
	special_combat = {
dg's avatar
dg committed
		dam = 50,
dg's avatar
dg committed
		physcrit = 4.5,
		dammod = {str=1},
		damtype = DamageType.LIGHT,
	},
	wielder = {
		lite = 2,
DarkGod's avatar
DarkGod committed
		combat_armor = 20,
		combat_def = 16,
		combat_def_ranged = 17,
		combat_spellresist = 19,
		resists = {[DamageType.BLIGHT] = 30, [DamageType.DARKNESS] = 30},
		learn_talent = { [Talents.T_BLOCK] = 5, },
dg's avatar
dg committed
	set_list = { {"define_as","SWORD_DAWN"} },
	set_desc = {
		dawn = "Glows brightly in the light of dawn.",
	},
dg's avatar
dg committed
	on_set_complete = function(self, who)
		self:specialSetAdd({"wielder","life_regen"}, 0.25)
		self:specialSetAdd({"wielder","lite"}, 1)
	end,
	on_set_broken = function(self, who)
		
	end,
}

newEntity{ base = "BASE_HEAVY_BOOTS",
	power_source = {arcane=true},
	unique = true,
	name = "Scorched Boots", image = "object/artifact/scorched_boots.png",
	unided_name = "pair of blackened boots",
dg's avatar
dg committed
	desc = [[The master blood mage Ru'Khan was the first orc to experiment with the power of the Sher'Tul farportals in the Age of Pyre.  However, that first experiment was not particularly successful, and after the explosion of energy all that could be found of Ru'Khan was a pair of scorched boots.]],
	color = colors.DARK_GRAY,
	level_range = {30, 40},
	rarity = 250,
	cost = 200,
dg's avatar
dg committed
	material_level = 5,
	wielder = {
		combat_armor = 4,
		combat_def = 4,
		fatigue = 8,
		combat_spellpower = 13,
		combat_spellcrit = 6,
		inc_damage = { [DamageType.BLIGHT] = 15, [DamageType.FIRE] = 15, [DamageType.DARKNESS] = 15 },

	max_power = 40, power_regen = 1,
	use_talent = { id = Talents.T_POISON_STORM, level = 3, power = 30 },
dg's avatar
dg committed

newEntity{ base = "BASE_GEM",
	power_source = {arcane=true},
	unique = true,
	unided_name = "unearthly black stone",
DarkGod's avatar
DarkGod committed
	name = "Goedalath Rock", subtype = "demonic", image = "object/artifact/goedalath_rock.png",
Grayswandir's avatar
Grayswandir committed
	define_as = 'GOEDALATH_ROCK',
	color = colors.PURPLE,
dg's avatar
dg committed
	level_range = {42, 50},
	desc = [[A small rock that seems from beyond this world, vibrating with a fierce energy.  It feels warped and terrible and evil... and yet oh so powerful.]],
	rarity = 300,
	cost = 300,
	material_level = 5,
	identified = false,
	auto_pickup = false,  -- why would you do such a thing.
	encumber = 0.1,  -- at least they'll see it on transmo screen.
dg's avatar
dg committed
	carrier = {
		on_melee_hit = {[DamageType.HEAL] = 34},
		life_regen = -2,
		lite = -2,
		combat_mentalresist = -18,
		healing_factor = -0.5,
	},
	imbue_powers = {
		combat_dam = 12,
		combat_spellpower = 16,
		see_invisible = 14,
		infravision = 3,
		inc_damage = {all = 9},
		inc_damage_type = {demon = 20},
		esp = {["demon/major"]=1, ["demon/minor"]=1},
		on_melee_hit = {[DamageType.DARKNESS] = 34},
		healing_factor = 0.5,
	},
	on_pickup = function(self, who)
		if who == game.player then
			who:runStop("evil touch")
			who:restStop("evil touch")
		end
	end,
Grayswandir's avatar
Grayswandir committed
	color_attributes = {damage_type = 'SHADOWFLAME',},}
dg's avatar
dg committed
	power_source = {arcane=true}, define_as = "THREADS_FATE",
	name = "Threads of Fate", image = "object/artifact/cloak_threads_of_fate.png",
	unided_name = "a shimmering white cloak",
dg's avatar
dg committed
	desc = [[Untouched by the ravages of time, this fine spun white cloak appears to be crafted of an otherworldly material that shifts and shimmers in the light.]],
	level_range = {45, 50},
	color = colors.WHITE,
	rarity = 500,
	cost = 300,
	material_level = 5,

	wielder = {
		combat_def = 10,
		combat_spellpower = 8,
		confusion_immune = 0.4,
		inc_stats = { [Stats.STAT_MAG] = 6, [Stats.STAT_WIL] = 6, [Stats.STAT_LCK] = 10, },

		inc_damage = { [DamageType.TEMPORAL]= 10 },
		resists_cap = { [DamageType.TEMPORAL] = 10, },
		resists = { [DamageType.TEMPORAL] = 20, },
		combat_physresist = 20,
		combat_mentalresist = 20,
		combat_spellresist = 20,

		talents_types_mastery = {
			["chronomancy/timeline-threading"] = 0.1,
			["chronomancy/chronomancy"] = 0.1,
			["spell/divination"] = 0.1,
		},
	},

	max_power = 50, power_regen = 1,
	use_talent = { id = Talents.T_SEE_THE_THREADS, level = 1, power = 50 },
dg's avatar
dg committed

newEntity{ base = "BASE_LONGSWORD", define_as = "BLOODEDGE",
	power_source = {arcane=true},
	unique = true,
dg's avatar
dg committed
	name = "Blood-Edge", image = "object/artifact/sword_blood_edge.png",
dg's avatar
dg committed
	unided_name = "red crystalline sword",
	moddable_tile = "special/%s_sword_blood_edge",
	moddable_tile_big = true,
	level_range = {36, 48},
dg's avatar
dg committed
	color=colors.RED,
	rarity = 260,
dg's avatar
dg committed
	desc = [[This deep red sword weeps blood continuously. It was born in the labs of the orcish corrupter Hurik, who sought to make a crystal that would house his soul after death. But his plans were disrupted by a band of sun paladins, and though most died purging his keep of dread minions, their leader Raasul fought through to Hurik's lab, sword in hand. There the two did battle, blade against blood magic, till both fell to the floor with weeping wounds. The orc with his last strength crawled towards his fashioned phylactery, hoping to save himself, but Raasul saw his plans and struck the crystal with his light-bathed sword. It shattered, and in the sudden impulse of energies the steel, crystal and blood were fused into one.
Now the broken fragments of Raasul's soul are trapped in this terrible artifact, his mind warped beyond all sanity by decades of imprisonment. Only the taste of blood calls him forth, his soul stealing the lifeblood of others to take on physical form again, that he may thrash and wail against the living.]],
	cost = 1000,
	require = { stat = { mag=20, str=32,}, },
dg's avatar
dg committed
	material_level = 5,
	wielder = {
		esp = {["undead/blood"]=1,},
dg's avatar
dg committed
		combat_spellpower = 21,
		combat_spellcrit = 8,
dg's avatar
dg committed
		inc_damage={
dg's avatar
dg committed
			[DamageType.PHYSICAL] = 15,
			[DamageType.BLIGHT] = 15,
dg's avatar
dg committed
		},
dg's avatar
dg committed
		max_vim = 25,
dg's avatar
dg committed
	},

	max_power = 20, power_regen = 1,
	use_talent = { id = Talents.T_BLEEDING_EDGE, level = 4, power = 20 },
dg's avatar
dg committed
	combat = {
		dam = 46,
		apr = 7,
		physcrit = 6,
		dammod = {str=1, mag=0.1},
dg's avatar
dg committed
		convert_damage = {[DamageType.BLIGHT] = 50},
		lifesteal=5,
dg's avatar
dg committed
		special_on_hit = {desc="15% chance to animate a bleeding foe's blood", fct=function(combat, who, target)
			if not rng.percent(15) then return end
			local cut = false

			-- Go through all timed effects
			for eff_id, p in pairs(target.tmp) do
				local e = target.tempeffect_def[eff_id]
				if e.subtype.cut then
					cut = true
				end
			end

			if not (cut) then return end

			local tg = {type="hit", range=1}
			who:project(tg, target.x, target.y, engine.DamageType.DRAIN_VIM, 80)

			local x, y = util.findFreeGrid(target.x, target.y, 5, true, {[engine.Map.ACTOR]=true})
			local NPC = require "mod.class.NPC"
			local m = NPC.new{
				type = "undead", subtype = "blood",
				display = "L",
				name = "animated blood", color=colors.RED,
DarkGod's avatar
DarkGod committed
				resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_animated_blood.png", display_h=1, display_y=0}}},
dg's avatar
dg committed
				desc = "A haze of blood, vibrant and pulsing through the air, possessed by a warped and cracked soul. Every now and then a scream or wail of agony garbles through it, telling of the mindless suffering undergone by its possessor.",
				body = { INVEN = 10, MAINHAND=1, OFFHAND=1, },
				rank = 3,
				life_rating = 10, exp_worth = 0,
				max_vim=200,
				max_life = resolvers.rngavg(50,90),
				infravision = 20,
				autolevel = "dexmage",
				ai = "summoned", ai_real = "tactical", ai_state = { talent_in=2, ally_compassion=10},
				stats = { str=15, dex=18, mag=18, wil=15, con=10, cun=18 },
				level_range = {1, nil}, exp_worth = 0,
				silent_levelup = true,
				combat_armor = 0, combat_def = 24,
				combat = { dam=resolvers.rngavg(10,13), atk=15, apr=15, dammod={mag=0.5, dex=0.5}, damtype=engine.DamageType.BLIGHT, },

				resists = { [engine.DamageType.BLIGHT] = 100, [engine.DamageType.NATURE] = -100, },

				negative_status_effect_immune = 1,

				on_melee_hit = {[engine.DamageType.DRAINLIFE]=resolvers.mbonus(10, 30)},
				melee_project = {[engine.DamageType.DRAINLIFE]=resolvers.mbonus(10, 30)},

				resolvers.talents{
					[who.T_WEAPON_COMBAT]={base=1, every=7, max=10},
					[who.T_EVASION]={base=3, every=8, max=7},

					[who.T_BLOOD_SPRAY]={base=1, every=6, max = 10},
					[who.T_BLOOD_GRASP]={base=1, every=5, max = 9},
					[who.T_BLOOD_BOIL]={base=1, every=7, max = 7},
					[who.T_BLOOD_FURY]={base=1, every=8, max = 6},
				},
				resolvers.sustains_at_birth(),
				faction = who.faction,
				summoner = who, summoner_gain_exp=true,
dg's avatar
dg committed
				summon_time = 9,
dg's avatar
dg committed
			}

			m:resolve()
			game.zone:addEntity(game.level, m, "actor", x, y)
			m.remove_from_party_on_death = true,
			game.party:addMember(m, {
				control=false,
				type="summon",
				title="Summon",
				orders = {target=true, leash=true, anchor=true, talents=true},
			})

			game.logSeen(who, "#GOLD#As the blade touches %s's spilt blood, the blood rises, animated!", target.name:capitalize())
			if who:knowTalent(who.T_VIM_POOL) then
				game.logSeen(who, "#GOLD#%s draws power from the spilt blood!", who.name:capitalize())
			end

		end},
	},
}
dg's avatar
dg committed

dg's avatar
dg committed
newEntity{ base = "BASE_LONGSWORD", define_as = "SWORD_DAWN",
dg's avatar
dg committed
	power_source = {arcane=true},
	unique = true,
	name = "Dawn's Blade",
	unided_name = "shining longsword",
	moddable_tile = "special/%s_dawn_blade",
	moddable_tile_big = true,
dg's avatar
dg committed
	level_range = {35, 42},
	color=colors.YELLOW, image = "object/artifact/dawn_blade.png",
dg's avatar
dg committed
	rarity = 260,
	desc = [[Said to have been forged in the earliest days of the Sunwall, this longsword shines with the light of daybreak, capable of banishing all shadows.]],
	cost = 1000,
	require = { stat = { mag=18, str=35,}, },
	material_level = 5,
	wielder = {
		combat_spellpower = 10,
		combat_spellcrit = 4,
		inc_damage={
			[DamageType.LIGHT] = 18,
		},
		resists_pen={
dg's avatar
dg committed
			[DamageType.LIGHT] = 25,
dg's avatar
dg committed
		},
		talents_types_mastery = {
			["celestial/sun"] = 0.2,
DarkGod's avatar
DarkGod committed
			["celestial/light"] = 0.2,
			["celestial/combat"] = 0.2,
dg's avatar
dg committed
		},
		talent_cd_reduction= {
			[Talents.T_HEALING_LIGHT] = 2,
			[Talents.T_BARRIER] = 2,
DarkGod's avatar
DarkGod committed
			[Talents.T_SUNCLOAK] = 3,
dg's avatar
dg committed
			[Talents.T_PROVIDENCE] = 4,
dg's avatar
dg committed
		},
		lite=2,
	},
dg's avatar
dg committed
	max_power = 35, power_regen = 1,
	use_power = {
		name = function(self, who) return ("invoke dawn, inflicting %0.2f light damage in radius %d (based on Magic) and lighting the area within radius %d"):format(engine.interface.ActorTalents.damDesc(who, engine.DamageType.LIGHT, self.use_power.damage(who)), self.use_power.radius, self.use_power.radius*2) end,
		power = 35,
		radius = 5,
		damage = function(who) return 75 + who:getMag()*2 end,
dg's avatar
dg committed
		use = function(self, who)
			local dam = self.use_power.damage(who)
			local blast = {type="ball", range=0, radius=self.use_power.radius, selffire=false}
dg's avatar
dg committed
			who:project(blast, who.x, who.y, engine.DamageType.LIGHT, dam)
			game.level.map:particleEmitter(who.x, who.y, blast.radius, "sunburst", {radius=blast.radius})
			who:project({type="ball", range=0, radius=self.use_power.radius*2}, who.x, who.y, engine.DamageType.LITE, dam/2)
dg's avatar
dg committed
			game:playSoundNear(self, "talents/fireflash")
			game.logSeen(who, "%s raises %s and sends out a burst of light!", who.name:capitalize(), self:getName())
			return {id=true, used=true}
		end
	},
	combat = {
dg's avatar
dg committed
		dam = 50,
		apr = 7,
dg's avatar
dg committed
		physcrit = 5,
dg's avatar
dg committed
		dammod = {str=0.8, mag=0.25},
dg's avatar
dg committed
		convert_damage = {[DamageType.LIGHT] = 30},
		inc_damage_type={
			undead=25,
			demon=25,
dg's avatar
dg committed
	},
dg's avatar
dg committed
	on_wear = function(self, who)
		if who.descriptor and who.descriptor.subclass == "Sun Paladin" then
			self:specialWearAdd({"wielder", "positive_regen"}, 0.2)
DarkGod's avatar
DarkGod committed
			self:specialWearAdd({"wielder", "positive_regen_ref_mod"}, 0.2)
dg's avatar
dg committed
			game.logPlayer(who, "#GOLD#You feel a swell of positive energy!")
		end
	end,
dg's avatar
dg committed
	
	set_list = { {"define_as","SHIELD_UNSETTING"} },
	set_desc = {
		dawn = "If the sun doesn't set, dawn's power lasts forever.",
	},
dg's avatar
dg committed
	on_set_complete = function(self, who)
		self:specialSetAdd({"combat","melee_project"}, {[engine.DamageType.LIGHT]=15, [engine.DamageType.FIRE]=15})
		self:specialSetAdd({"wielder","inc_damage"}, {[engine.DamageType.LIGHT]=12, [engine.DamageType.FIRE]=10})
		game.logPlayer(who, "#GOLD#As you wield the sword and shield of the Sunwall, you feel the Sun's light radiating from your core.")
	end,
	on_set_broken = function(self, who)
		game.logPlayer(who, "#GOLD#You feel the Sun's light vanish from within you.")
	end,
dg's avatar
dg committed
}

newEntity{ base = "BASE_AMULET",
	power_source = {arcane=true},
	unique = true,
	name = "Zemekkys' Broken Hourglass", color = colors.WHITE,
	unided_name = "a broken hourglass", image="object/artifact/amulet_zemekkys_broken_hourglass.png",
	desc = [[This small broken hourglass hangs from a thin gold chain.  The glass is cracked and the sand has long since escaped.]],
	level_range = {30, 40},
	rarity = 300,
	cost = 200,
	material_level = 4,
	metallic = false,
Eric Wykoff's avatar
Eric Wykoff committed
	use_no_energy = true,
	wielder = {
		inc_stats = { [Stats.STAT_WIL] = 4, },
		inc_damage = { [DamageType.TEMPORAL]= 10 },
		resists = { [DamageType.TEMPORAL] = 20 },
		resists_cap = { [DamageType.TEMPORAL] = 5 },
		spell_cooldown_reduction = 0.1,
	},
Eric Wykoff's avatar
Eric Wykoff committed
	max_power = 80, power_regen = 1,
	use_talent = { id = Talents.T_TIME_STOP, level = 1, power = 50 },
dg's avatar
dg committed

newEntity{ base = "BASE_KNIFE", define_as = "MANDIBLE_UNGOLMOR",
	power_source = {nature=true},
	unique = true,
dg's avatar
dg committed
	name = "Mandible of Ungolmor", image = "object/artifact/mandible_of_ungolmor.png",
dg's avatar
dg committed
	unided_name = "curved, serrated black dagger",
Amagad's avatar
Amagad committed
	moddable_tile = "special/%s_mandible_of_ungolmor",
	moddable_tile_big = true,
dg's avatar
dg committed
	desc = [[This obsidian-crafted, curved blade is studded with the deadly fangs of the Ungolmor. It seems to drain light from the world around it.]],
	level_range = {40, 50},
	rarity = 270,
	require = { stat = { cun=38 }, },
	cost = 650,
dg's avatar
dg committed
	material_level = 5,
	combat = {
		dam = 40,
		apr = 12,
		physcrit = 22,
		dammod = {cun=0.30, str=0.35, dex=0.35},
		convert_damage ={[DamageType.DARKNESS] = 30},
		special_on_crit = {desc="inflicts pinning spydric poison upon the target", fct=function(combat, who, target)
			if target:canBe("poison") then
				local tg = {type="hit", range=1}
				who:project(tg, target.x, target.y, engine.DamageType.SPYDRIC_POISON, {src=who, dam=30, dur=3})
			end
		end},
	},
	wielder = {
		inc_damage={[DamageType.NATURE] = 30, [DamageType.DARKNESS] = 20,},
		inc_stats = {[Stats.STAT_CUN] = 8, [Stats.STAT_DEX] = 4,},
		combat_armor = 5,
		combat_armor_hardiness = 5,
		lite = -2,
	},
	max_power = 40, power_regen = 1,
	use_talent = { id = Talents.T_CREEPING_DARKNESS, level = 3, power = 25 },
}

newEntity{ base = "BASE_KNIFE", define_as = "KINETIC_SPIKE",
	power_source = {psionic=true},
	unique = true,
dg's avatar
dg committed
	name = "Kinetic Spike", image = "object/artifact/kinetic_spike.png",
dg's avatar
dg committed
	unided_name = "bladeless hilt",
Amagad's avatar
Amagad committed
	moddable_tile = "special/%s_kinetic_spike",
	moddable_tile_big = true,
dg's avatar
dg committed
	desc = [[A simple, rudely crafted stone hilt, this object manifests a blade of wavering, nearly invisible force, like a heat haze, as you grasp it. Despite its simple appearance, it is capable of shearing through solid granite, in the hands of those with the necessary mental fortitude to use it properly.]],
	level_range = {42, 50},
	rarity = 310,
	require = { stat = { wil=42 }, },
	cost = 450,
dg's avatar
dg committed
	material_level = 5,
	combat = {
		dam = 38,
		apr = 40, -- Hard to imagine much being harder to stop with armor.
		physcrit = 10,
		dammod = {wil=0.30, str=0.30, dex=0.40},
	},
	wielder = {
		combat_atk = 8,
		combat_dam = 15,
		resists_pen = {[DamageType.PHYSICAL] = 30},
HousePet's avatar
HousePet committed
		talents_types_mastery = {
			["psionic/augmented-striking"] = 0.2,
		},
dg's avatar
dg committed
	},
	max_power = 10, power_regen = 1,
stuntofthelitter's avatar
stuntofthelitter committed
		name = function(self, who) return ("fire a bolt of kinetic force (range %d), dealing 150%% (physical) weapon damage"):format(self.use_power.range) end,
dg's avatar
dg committed
		use = function(self, who)
			local tg = {type="bolt", range=self.use_power.range}
dg's avatar
dg committed
			local x, y = who:getTarget(tg)
			if not x or not y then return nil end
			local _ _, x, y = who:canProject(tg, x, y)
			local target = game.level.map(x, y, engine.Map.ACTOR)
			if target then
				who:attackTarget(target, engine.DamageType.PHYSICAL, 1.5, true)
			game.logSeen(who, "The %s fires a bolt of kinetic force!", self:getName())
			else
				return
			end
			return {id=true, used=true}
		end
	},
}
dg's avatar
dg committed

newEntity{ base = "BASE_STAFF",
	power_source = {unknown=true},
	unique = true,
DarkGod's avatar
DarkGod committed
	name = "Rod of Sarrilon", image = "object/artifact/rod_of_sarrilon.png",
dg's avatar
dg committed
	unided_name = "ceremonial staff",
	flavor_name = "starstaff",
	level_range = {37, 50},
	color=colors.VIOLET,
	rarity = 250,
DarkGod's avatar
DarkGod committed
	desc = [[A plain looking ceremonial rod. It has connections with Time that even chronomancers do not yet understand.]],
dg's avatar
dg committed
	cost = 400,
	material_level = 5,

	require = { stat = { mag=48 }, },
	combat = {
		is_greater = true,
		dam = 30,
		apr = 4,
		dammod = {mag=1.5},
Alex Ksandra's avatar
Alex Ksandra committed
		element = DamageType.TEMPORAL,
dg's avatar
dg committed
	},
	wielder = {
		inc_stats = { [Stats.STAT_WIL] = 7, [Stats.STAT_MAG] = 8 },
Eric Wykoff's avatar
Eric Wykoff committed
		paradox_reduce_anomalies = 25,
dg's avatar
dg committed
		combat_spellpower = 40,
		combat_spellcrit = 15,
		inc_damage = { [DamageType.TEMPORAL] = 40,  },
		resists_pen = { [DamageType.TEMPORAL] = 30,  },
		teleport_immune = 1,
		talent_cd_reduction = {
Eric Wykoff's avatar
Eric Wykoff committed
			[Talents.T_CHRONO_TIME_SHIELD] = 3,
			[Talents.T_TIME_SHIELD] = 3,
			[Talents.T_STOP] = 2,
			[Talents.T_ATTENUATE] = 1,
dg's avatar
dg committed
		},
		talents_types_mastery = {
Eric Wykoff's avatar
Eric Wykoff committed
			["chronomancy/stasis"] = 0.1,
			["chronomancy/flux"] = 0.1,
			["spell/temporal"] = 0.1,