diff --git a/game/modules/tome/data/general/objects/brotherhood-artifacts.lua b/game/modules/tome/data/general/objects/brotherhood-artifacts.lua
index e1effb370a3140893475229bf12cde6b1dd114e3..5ae99007c4543caf79cb217c3f04bdd6d8731f79 100644
--- a/game/modules/tome/data/general/objects/brotherhood-artifacts.lua
+++ b/game/modules/tome/data/general/objects/brotherhood-artifacts.lua
@@ -296,7 +296,7 @@ newEntity{ base = "BASE_INFUSION",
 	inscription_kind = "utility",
 	inscription_data = {
 		cooldown = 15,
-		dur = 5,
+		dur = 10, -- to 10 from 5, because this should be really good
 		armor = 50,
 		hard = 30,
 	},
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index f83442de71cac410bed5355a24ac6185aa035592..fe39eb3c8943c4d32922828665b4b0e7d5211b22 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -26,8 +26,63 @@ for def, e in pairs(game.state:getWorldArtifacts()) do
 	print("Importing "..e.name.." into world artifacts")
 end
 
-
 -- This file describes artifacts not bound to a special location, they can be found anywhere
+
+newEntity{ base = "BASE_GEM", 
+	power_source = {arcane=true},
+	unique = true,
+	unided_name = "windy gem",
+	name = "Windborne Azurite", subtype = "blue",
+	color = colors.BLUE, image = "object/sapphire.png",
+	level_range = {18, 40},
+	desc = [[Air currents swirl around this bright blue jewel.]],
+	rarity = 240,
+	cost = 200,
+	identified = false,
+	material_level = 4,
+	wielder = {
+		inc_stats = {[Stats.STAT_DEX] = 10, [Stats.STAT_CUN] = 10 },
+		inc_damage = {[DamageType.LIGHTNING] = 20 },
+		cancel_damage_chance = 10, -- add to tooltip
+		damage_affinity={
+			[DamageType.LIGHTNING] = 20,
+		},
+		movement_speed = 0.2,
+	},
+	imbue_powers = {
+		inc_stats = {[Stats.STAT_DEX] = 10, [Stats.STAT_CUN] = 10 },
+		inc_damage = {[DamageType.LIGHTNING] = 20 },
+		cancel_damage_chance = 10, -- add to tooltip
+		damage_affinity={
+			[DamageType.LIGHTNING] = 20,
+		},
+		movement_speed = 0.2,
+	},
+	
+}
+
+-- Low base values because you can stack affinity and resist
+-- The 3rd type is pretty meaningless balance-wise.  Magic debuffs hardly matter.  The real advantage is the affinity.
+newEntity{ base = "BASE_INFUSION",
+	name = "Primal Infusion", unique=true, image = "object/artifact/tree_of_life.png",
+	desc = [[This wild infusion has evolved.]],
+	unided_name = "pulsing infusion",
+	level_range = {15, 40},
+	rarity = 300,
+	cost = 300,
+	material_level = 3,
+
+	inscription_kind = "protect",
+	inscription_data = {
+		cooldown = 20,
+		dur = 6,
+		power = 10,
+		use_stat_mod = 0.1, 
+		what = {physical=true, mental=true, magical=true},
+	},
+	inscription_talent = "INFUSION:_PRIMAL",
+}
+
 newEntity{ base = "BASE_STAFF",
 	power_source = {arcane=true},
 	unique = true,
@@ -5920,11 +5975,10 @@ newEntity{ base = "BASE_SHIELD",
 	end,
 }
 
--- Disrupt the backline by attacking the frontline
--- Effect works better fighting in the open
--- Damage stats are pretty bad, not entirely sure they need to be
--- Arcane if necessary, ideally nature scaling off dex.  Dex is thematic with wind.
--- Aesthetic Themes:  Blue, windy, lightning, storm, speed
+-- No longer hits your own projectiles
+-- Hopefully fixed LUA errors with DamageType require
+-- Significant rescaling.  Base damage cut by 50%, crit by 5%.  The reason these hilariously bad numbers happened was derping and not accounting for the awesomeness of the 100% dex scaling.  APR is still extremely high.
+-- Proc chance is now 100% up from 25%.  No matter how I test this--even at 100% and 500% global action speed--it is often a pain in the ass to get procs just to test.  This is supposed to be one of the main features of the item. 
 newEntity{ base = "BASE_KNIFE", --Shibari's #1
 	power_source = {nature=true},
 	unique = true,
@@ -5938,24 +5992,31 @@ newEntity{ base = "BASE_KNIFE", --Shibari's #1
 	color=colors.BLUE,
 	require = { stat = { dex=30}},
 	combat = {
-		dam = 30,
+		dam = 15,
 		apr = 20,
-		physcrit = 18,
+		physcrit = 10,
 		dammod = {dex=1},
-		special_on_hit = {desc="25% chance for lightning to strike and destroy any projectiles in a radius of 10, dealing damage and stunning enemies around the projectile.", on_kill=1, fct=function(combat, who, target)
-			if not rng.percent(25) then return end
+		special_on_hit = {desc="Causes lightning to strike and destroy any projectiles in a radius of 10 dealing damage and dazing enemies in a radius of 5 around it.", on_kill=1, fct=function(combat, who, target)
 			local grids = core.fov.circle_grids(who.x, who.y, 10, true)
 			for x, yy in pairs(grids) do for y, _ in pairs(grids[x]) do
 				local i = 0
 				local p = game.level.map(x, y, engine.Map.PROJECTILE+i)
-				while p do											   
+				while p do
+					local DamageType = require "engine.DamageType" -- I don't entirely follow why this is necessary
+					if p.src and (p.src == who) then return end -- Keep Arcane Blade procs from hitting them since the projectile is still on top of them.
+					if p.name then 
+						game.logPlayer(who, "#GREEN#Lightning strikes the " .. p.name .. "!")
+					else
+						game.logPlayer(who, "#GREEN#Shantiz strikes down a projectile!")
+					end
+					
 					p:terminate(x, y)
 					game.level:removeEntity(p, true)
 					p.dead = true
-					game.level.map:particleEmitter(x, y, 5, "ball_lightning_beam", {radius=5, tx=x, ty=y}) -- I'm terrible with graphical stuff but I thought I'd at least try?
+					game.level.map:particleEmitter(x, y, 5, "ball_lightning_beam", {radius=5, tx=x, ty=y})
 				   
 					local tg = {type="ball", radius=5, selffire=false}
-					local dam = who:mindCrit(30+(2*who:getDex())) -- generous because of the bad damage type, spell or phys crit would both be fine
+					local dam = 4*who:getDex() -- no more crit or base damage.  no real reason, just like it better.
 
 					who:project(tg, x, y, DamageType.LIGHTNING, dam)
 				   
@@ -5973,9 +6034,9 @@ newEntity{ base = "BASE_KNIFE", --Shibari's #1
 		},
 	},
 	wielder = {
-		inc_stats = { [Stats.STAT_DEX] = 12 },
-		slow_projectiles = 40, -- synergy with proc
-		quick_weapon_swap = 1, -- thematic, also makes this more useful when caught in the open.  In general I like this mechanic and would like to see more of it.
+		inc_stats = { [Stats.STAT_DEX] = 20 },
+		slow_projectiles = 40, 
+		quick_weapon_swap = 1, 
 	},
 }
 --[=[
diff --git a/game/modules/tome/data/talents/misc/inscriptions.lua b/game/modules/tome/data/talents/misc/inscriptions.lua
index 1c78b82d302b78b791ce675d0c583a79e8e4069c..d4f4874c9075684685108370140e74183ecc26ad 100644
--- a/game/modules/tome/data/talents/misc/inscriptions.lua
+++ b/game/modules/tome/data/talents/misc/inscriptions.lua
@@ -184,6 +184,80 @@ newInscription{
 	end,
 }
 
+-- fixedart wild variant
+newInscription{
+	name = "Infusion: Primal", image = "talents/infusion__wild.png",
+	type = {"inscriptions/infusions", 1},
+	points = 1,
+	no_energy = true,
+	tactical = {
+		DEFEND = 3,
+		CURE = function(self, t, target)
+			local nb = 0
+			local data = self:getInscriptionData(t.short_name)
+			for eff_id, p in pairs(self.tmp) do
+				local e = self.tempeffect_def[eff_id]
+				if data.what[e.type] and e.status == "detrimental" then
+					nb = nb + 1
+				end
+			end
+			return nb
+		end
+	},
+	action = function(self, t)
+		local data = self:getInscriptionData(t.short_name)
+
+		local target = self
+		local effs = {}
+		local force = {}
+		local known = false
+
+		-- Go through all temporary effects
+		for eff_id, p in pairs(target.tmp) do
+			local e = target.tempeffect_def[eff_id]
+			if data.what[e.type] and e.status == "detrimental" and e.subtype["cross tier"] then
+				force[#force+1] = {"effect", eff_id}
+			elseif data.what[e.type] and e.status == "detrimental" then
+				effs[#effs+1] = {"effect", eff_id}
+			end
+		end
+
+		-- Cross tier effects are always removed and not part of the random game, otherwise it is a huge nerf to wild infusion
+		for i = 1, #force do
+			local eff = force[i]
+			if eff[1] == "effect" then
+				target:removeEffect(eff[2])
+				known = true
+			end
+		end
+
+		for i = 1, 1 do
+			if #effs == 0 then break end
+			local eff = rng.tableRemove(effs)
+
+			if eff[1] == "effect" then
+				target:removeEffect(eff[2])
+				known = true
+			end
+		end
+		if known then
+			game.logSeen(self, "%s is cured!", self.name:capitalize())
+		end
+		self:setEffect(self.EFF_PRIMAL_ATTUNEMENT, data.dur, {power=data.power + data.inc_stat})
+		return true
+	end,
+	info = function(self, t)
+		local data = self:getInscriptionData(t.short_name)
+		local what = table.concat(table.keys(data.what), ", ")
+		return ([[Activate the infusion to cure yourself of %s effects and increase affinity for all damage by %d%% for %d turns.]]):format(what, data.power+data.inc_stat, data.dur)
+	end,
+	short_info = function(self, t)
+		local data = self:getInscriptionData(t.short_name)
+		local what = table.concat(table.keys(data.what), ", ")
+		return ([[affinity %d%%; cure %s]]):format(data.power + data.inc_stat, what)
+	end,
+}
+
 newInscription{
 	name = "Infusion: Movement",
 	type = {"inscriptions/infusions", 1},
@@ -210,6 +284,8 @@ newInscription{
 	end,
 }
 
+
+
 newInscription{
 	name = "Infusion: Sun",
 	type = {"inscriptions/infusions", 1},
@@ -306,6 +382,7 @@ newInscription{
 	end,
 }
 
+-- Opportunity cost for this is HUGE, it should not hit friendly, also buffed duration
 newInscription{
 	name = "Infusion: Wild Growth",
 	type = {"inscriptions/infusions", 1},
@@ -315,7 +392,7 @@ newInscription{
 	radius = 5,
 	direct_hit = true,
 	target = function(self, t)
-		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
+		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, friendlyfire = false, talent=t}
 	end,
 	getDamage = function(self, t) return 10 + self:combatMindpower() * 3.6 end,
 	action = function(self, t)
@@ -539,6 +616,7 @@ newInscription{
 	end,
 }
 
+
 newInscription{
 	name = "Rune: Vision",
 	type = {"inscriptions/runes", 1},
diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua
index d307ce92b463807867fc020f19346e1a12ad6fa7..f49de2deff2d84ae4de0cc9c43ec1e8b504429ad 100644
--- a/game/modules/tome/data/timed_effects/physical.lua
+++ b/game/modules/tome/data/timed_effects/physical.lua
@@ -182,6 +182,7 @@ newEffect{
 	end,
 }
 
+
 newEffect{
 	name = "CRIPPLING_POISON", image = "talents/crippling_poison.png",
 	desc = "Crippling Poison",
@@ -684,6 +685,25 @@ newEffect{
 	end,
 }
 
+-- artifact wild infusion
+newEffect{
+	name = "PRIMAL_ATTUNEMENT", image = "talents/infusion__wild.png",
+	desc = "Primal Attunement",
+	long_desc = function(self, eff) return ("The target is attuned to the wild, increasing all damage affinity by %d%%."):format(eff.power) end,
+	type = "physical",
+	subtype = { nature=true },
+	status = "beneficial",
+	parameters = { power=20 },
+	on_gain = function(self, err) return "#Target# attunes to the wild.", "+Primal" end,
+	on_lose = function(self, err) return "#Target# is no longer one with nature.", "-Primal" end,
+	activate = function(self, eff)
+		eff.pid = self:addTemporaryValue("damage_affinity", {all=eff.power})
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("damage_affinity", eff.pid)
+	end,
+}
+
 newEffect{
 	name = "PURGE_BLIGHT", image = "talents/infusion__wild.png",
 	desc = "Purge Blight",